Вроде картина прояснилась, еще оден тест для очистки совести: все как выше, только вместо 17 записать 0.
Вроде картина прояснилась, еще оден тест для очистки совести: все как выше, только вместо 17 записать 0.
Есть ещё один момент, который можно проверить про работу с PSW. На всех дековских процессорах, при записи по адресу 177776 - там сначала устанавливаются биты признаков по итогам операции и только потом производится запись.
Каким будет содержимое PSW сразу после записи туда 000000 :
Код:Mov #000000, @#177776
Mov @#177776, @#100
Проще говоря - ВМ3 при всех операциях записи сначала устанавливает биты признаков и только затем производит запись.
Но откуда берётся бит C ?
Верно ли, что если замапить адрес 177776 в пустоту и выполнить MOV #000000, @#177776, то бит C не установится, а если выполнить MTPS #000 - установится ..
А если модифицировать тест так, чтобы при записи в PSW возникало не прерывание 250, а зависание - как тогда отработает MTPS ?
Ну это легко проверить. С тем же тестом выше - места хватит (CCC там просто так - реально не нужна):- - - Добавлено - - -Код:.GE MTPS
.D 1312=12737,0,177776
.ST
UISDR7=077406, PSW=170000, MTPS #357, PSW=000000
UISDR7=077400, PSW=170000, MTPS #357, PSW=170000, MMU FAULT
.
Можно так попробовать:Код:.GE MTPS
.D 42=160004
.ST
ВМ3 сохранил по 000002 нулевое значение: [http://s019.radikal.ru/i606/1601/1f/aff2f6f5b70et.jpg]
Получается что сначала поставил флаги, и только потом записал значение.
Хотя нет, не сильно ясно что получится - проще ввести фактор явно в программе.
Patron, я так понимаю, что в скором времени можно будет попробовать попросить вас сделать эмуляцию процессора СМ2420? :D
Судя по вот этой штуке, у СМ довольно шустрый проц...
- - - Добавлено - - -Код:ТЕСТ БЫСТРОДЕЙСТВИЯ
КОМАНДА СЛОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 1064
КОМАНДА СЛОЖЕНИЯ РЕГИСТР-ПАМЯТЬ
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 408
КОМАНДА УМНОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 136
КОМАНДА ДЕЛЕНИЯ РЕГИСТР-РЕГИСТР БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 336
Vslav, у меня только текстовое техописание на полтыщи страниц. Схемы надо тормошить dk_spb
;-)Цитата:
Сообщение от http://oldpc.su/pc/sm/sm1420/index.html
Про замутить движ в мае - реально, МБ к этому моменту уже музей будет физически существовать...
Про сканирование - программа эмулятор пульта уже есть вычитана в топике про запуск комплекса, РЭ там небольшое, пусконаладка тоже небольшая книга, монтажный чертёж я сегодня вечером отфоткаю, забрал домой чтобы разобраться с разведкой питания. Тех описание жирное, ещё есть описание контроллеров внешних ус-в, книга с описанием общей шины, куча книг с листингами тестов с комментариями...
Выложил новую программу. Теперь по идее можно вызвать double bus error в момент MTPS. Написанное серым делать не нужно - это чтобы у меня трапнулось. Ну понятно у меня вместо DBE получается RSA.Код:.GE MTPS
.D 1402=6506,12746,160004,6606
.D 1416=6606
.D 1412=5737,1
.ST
*** TRAP TO 4, PC=001416, PSW=140010 ***
.
.
Когда какой-то тест ВМ3 вылетает в пульт - можно сразу нажать M и узнать причину вылета.
Ну по адресу вроде как раз там где надо вылетело - должно быть double bus error. Или там есть отдельно для kernel stack ошибка?
Не знаю, сильно ли отличались разные выпуски СМ1420, или нет. Я году, так, в 96-м (плюс-минус год - не помню уже) имел дело с 1420 одного из последних выпусков, с тремя дисками DM. На ней, под ДИАМСом работала АСУ птицефабрики. Так вот, зарплата там считалась 2 часа с лишним. Говорили, что когда была исправна кэш-память, зарплата считалась минут 15-20. Потом кэш-память сдохла, ее отключили и начались тормоза... (В скобках замечу, что AMD 5x86-133, после того, как я перенес бухгалтерию этой птицефабрики с DSM-11 на MSM-PC, посчитал ту же зарплату за 30 сек, бухгалтера обалдели!..)
Так вот, к чему это я. Перечисленное в листинге быстродействие, похоже, без кэша. С работающим кэшем, по крайней мере сложения R-R и R-Mem должны быть намного быстрее. Не знаю, может не все СМ-ки комплектовались кэш-памятью, может ее отключили (в связи со смертью), как и на птицефабрике... В общем, глянь, может она просто выключена.
В 1801ВМ3 причину вылета вы не узнаете. После любой фатальной ситуации или HALT исполнение всегда начинается с нулевого адреса HALT-режима. Узнать можно по косвенным данным, например если SP больше 160000, то наверняка это DOUBLE BUS ERROR, если перед PC команда с кодом 0 - то исполнение HALT.