А причем тут ВМ1, если в БК нет регистров 177560-177566.
http://storage2.static.itmages.ru/i/...d4b62e8f6d.jpg
Съедается левая часть экрана - пока не победил, но планирую.
6105 подрубать лень, в ТВ быстрее подключаться, приходится терпеть неудобства.
Там видно, что в обоих случаях прерывание происходит не сразу, а минимум через одну команду ( так как на самом деле в тесте следующей идёт не команда Nop, а команда Trap 0 с выводом строчки "NOP" в обработчике - то даже отставание выставления IRQ на десять команд не даст другого результата ).
...
Как правильно эмулировать команду MARK, что происходит с R5, R6 и R7, когда команда MARK находится не в стеке, а среди других команд в потоке выполнения.
Ответ даёт тест: MARK.SAV
Результат запуска на V-модели процессора 1801ВМ1 такой:
Код:.RU MARK
MARK command test.
R5/001044
SP/001000
PC/001036
001036: MARK 1
001040: 123
001042: 456
001044:
R5/000456
SP/001044
PC/001044
Program completed.
.
Просто, если при эмуляции следовать некоторым описаниям команды MARK - новое значение SP должно получаться из старого значения SP, а на самом деле - старое значение SP выбрасывается, а новое значение SP получается из значения PC в момент выполнения команды MARK.
Когда команда MARK лежит в стеке - значения SP и PC в момент выполнения команды MARK совпадают, поэтому неправильная эмуляция MARK ( на основе неправильного описания ) даёт корректный результат. Но когда команда MARK не в стеке - неправильная эмуляция даёт неправильный результат.
...
Известно, что T-trap произойдёт через одну команду после команды RTT, даже если выполненная после RTT команда очистит T-бит.
http://pic.pdp-11.ru/images/rtt.png
Но что случится, если следующая команда - ещё одна RTT, которая снова установит бит T.
Ответ даёт тест: RTT.SAV
Результат выполнения на V-модели процессора 1801ВМ1 такой:
Код:.RU RTT
RTT command test.
RTT ; 020 -> PSW
RTT ; 020 -> PSW
RTT ; 020 -> PSW
RTI ; 000 -> PSW
>>> Trap to 014 <<<
Program completed.
.
При выполнении последовательности команд RTT, каждая из которых устанавливает бит T - процессор 1801ВМ1 полностью блокирует прерывания и выполняет первый T-trap только через одну команду после завершения последовательности.