Прогоняя тест 791404 в своём эмуляторе процессора 1801ВМ1 - обнаружил, что тест успешно проходят две
разные реализации "нечётного PC":
1. Когда команды загрузки адреса ( JMP, JSR ) обнуляют младший бит PC при загрузке нечётных значений:
Код:
PC[012376] PSW[004] : JMP 012415
PC[012414] PSW[004] : DEC PC
PC[012415] PSW[000] : DEC PC
PC[012416] PSW[000] : INC @#000404
PC[012422] PSW[000] : CMP #59., @#000404
2. Когда младший бит PC загружается командами JMP и JSR "как есть":
Код:
PC[012376] PSW[004] : JMP 012415
PC[012415] PSW[004] : DEC PC
PC[012416] PSW[000] : INC @#000404
PC[012422] PSW[000] : CMP #59., @#000404
Думаю, что второй подход более правильный и (скорее всего) настоящий 1801ВМ1 работает именно так, но поскольку реального процессора у меня нет, а тест даёт неоднозначные результаты - буду рад, если кто-нибудь уточнит этот момент.
Всего-то и надо, что выполнить на реальном 1801ВМ1 примерно такой набор команд:
Код:
Mov #Metka+1, R0
Jmp (R0)
Metka: Mov PC, R1
И проверить содержимое R1 ( по идее - оно должно быть нечётным ).
[свернуть]