Код:.EX TEST/LINK:SY:RSXLIB
CLR @#177776 ;PSW=000000
BISB #0,@#177777 ;PSW=000000
BISB #300,@#177777 ;PSW=140000
.
Код:.EX TEST/LINK:SY:RSXLIB
CLR @#177776 ;PSW=000000
MOVB #0,@#177777 ;PSW=000000
MOVB #1,@#177777 ;PSW=140000
.
Код:.EX TEST/LINK:SY:RSXLIB
CLR @#177776 ;PSW=000000
BISB #0,@#177777 ;PSW=000000
BISB #300,@#177777 ;PSW=140000
.
Код:.EX TEST/LINK:SY:RSXLIB
CLR @#177776 ;PSW=000000
MOVB #0,@#177777 ;PSW=000000
MOVB #1,@#177777 ;PSW=140000
.
Получается, что или 11/83 всегда эмулирует байтовые циклы через словные, или что цикл DATIO используется байтовыми командами только при работе с PSW ( специально - чтобы случайно не повлиять на содержимое соседнего байта ).
- - - Добавлено - - -
Интересно - учтена ли такая особенность 11/83 в SIMH и E11 ..
Это врядли очень много железа перестало бы работать без переделки софта.
- - - Добавлено - - -
Код:E11>set cpu 83
E11>a 1000
001000 clr @#177776
001004 movb #0,@#177777
001012 movb #300,@#177777
001020 clr @#177776
001024 bisb #0,@#177777
001032 bisb #300,@#177777
001040 ^C
E11>pc=1000
E11>sp=1000
E11>s
R0/000000 R1/000000 R2/000000 R3/000000 CM=K PM=K PRIO=0
R4/000000 R5/000000 SP/001000 PC/001004 N=0 Z=0 V=0 C=0
001004 movb #000000,@#177777
E11>s
R0/000000 R1/000000 R2/000000 R3/000000 CM=K PM=K PRIO=0
R4/000000 R5/000000 SP/001000 PC/001012 N=0 Z=0 V=0 C=0
001012 movb #000300,@#177777
E11>s
R0/000000 R1/000000 R2/000000 R3/000000 CM=U PM=K PRIO=0
R4/000000 R5/000000 SP/000000 PC/001020 N=0 Z=0 V=0 C=0
001020 clr @#177776
E11>s
R0/000000 R1/000000 R2/000000 R3/000000 CM=K PM=K PRIO=0
R4/000000 R5/000000 SP/001000 PC/001024 N=0 Z=0 V=0 C=0
001024 bisb #000000,@#177777
E11>s
R0/000000 R1/000000 R2/000000 R3/000000 CM=K PM=K PRIO=0
R4/000000 R5/000000 SP/001000 PC/001032 N=0 Z=0 V=0 C=0
001032 bisb #000300,@#177777
E11>s
R0/000000 R1/000000 R2/000000 R3/000000 CM=U PM=K PRIO=0
R4/000000 R5/000000 SP/000000 PC/001040 N=0 Z=0 V=0 C=0
001040 halt
E11>
Надеюсь, что реальный ВМ3 так не мудрит, ведь иначе придётся при эмуляции всех циклов с записью байта - вылавливать обращение к физическим адресам PSW и устанавливать флаг запрета модификации признаков.
Попросил выполнить PSW2. Ждем.
- - - Добавлено - - -
ВМ3:Код:RU HX1:PSW2
PSW test #2
vvvfж
INC @#177776
177776/000001
ROL @#177776
177776/000003
CLR @#177776
BIS #140000, @#177776
177776/140000
CLR @#177776
BISB #000300, @#177777
177776/140010
CLR @#177776
MOV #000000, @#160000
>>> Trap to 004 <<<
177776/000000
Program completed.
.
.
Новый тест: PSW3.SAV - проверяет мапинг PSW в команде MTPS и во время сохранения PSW при входе в прерывание.
Запускать на машинах с диспетчером памяти. На эмулируемой ДВК-3 ( где сохранение PSW при входе в прерывание пока не мапится через 177776 ) результат такой :
Код:.RU PSW3
PSW test #3
MOV #177400, @#177656
MOV #140340, @#177776
MTPS #000
>>> Trap to 004 <<<
177776/140351
MOV #000340, @#177776
MOV #140340, @#000022
IOT
177776/140350
Program completed.
.
Висит. Останов с пульта.Код:.RU PSW3
PSW test #3
MOV #177400, @#177656
MOV #140340, @#177776
MTPS #000
002036
@
- - - Добавлено - - -
Хинт: когда делаются тесты с включением MMU можно обойтись без сохранения-восстановления векторов :)
- - - Добавлено - - -
RESET здесь эффективный NOP. Еще не нашел в коде выключения MMU обратно и восстановления маппинга. Хотя нет - про ресет погорячился.Код:Mov @#057776, $PSW
Clr @#057776
Reset
- - - Добавлено - - -
Вобщем как раз в RESETе все дело видимо - MSCP контроллер после его выполнения становится неработоспособным до настройки.
UPD: не, видимо до него дело просто не доходит...
Обработчик TrapTo_4 вызывает подпрограмму, обращающуюся к странице I/O - и обращение вызывает новый TrapTo_4.
Но в векторе 06 записано 0340 - разве в обработчике страница I/O не должна мапиться куда надо..
- - - Добавлено - - -
Все предыдущие тесты тоже сбрасывают MMU через RESET.
Уже вижу что не в том дело - просто даже не доходит до этого места.
- - - Добавлено - - -
Вобщем работает если там где MTPS #0 возникает трап. У меня он не возникает. Воткнул туда HALT для трапа - все заработало...
- - - Добавлено - - -
Код:MTPS #0
HALT
1$:
Mov $PSW, R1
- - - Добавлено - - -Код:.RU P3
PSW test #3
MOV #177400, @#177656
MOV #140340, @#177776
MTPS #000
>>> Trap to 004 <<<
177776/140340
MOV #000340, @#177776
MOV #140340, @#000022
IOT
177776/140350
Program completed.
.
Попутно, на 11/34 (на всех без CPUERR регистра?) HALT трапается по 10 - интересно будет на ВМ3 проверить.
Перезалил исправленную версию: PSW3.SAV.