А в чём разница, когда команду FADD эмулирует не EM.SYS, а процессор или подпрограмма из ПЗУ ВМ2 ?
Вид для печати
В том, что в ВМ2 происходит прерывание режима HALT которое не портит стек.
---------- Post added at 03:52 ---------- Previous post was at 03:52 ----------
Ну а в случае с процессором прерывания и вовсе не происходит.
---------- Post added at 03:55 ---------- Previous post was at 03:52 ----------
И кстати, вспоминается мне, что метод попадания в HALT из USER как раз основан на использовании FIS :)
В 1801ВМ2 есть HALT-режим и регистры копий CPC (копия счетчика команд) и CPSW (копия PSW). При исполнении инструкции FIS происходит переход в HALT-режим, который имеет свое адресное пространство, а в CPC и CPSW остается прерванный адрес USER-режима. Никакой стек не используется. А уже программа эмуляции с помощью спецкоманд процессора можем считывать данные из адресного пространства USER-режима и туда же записывать результат. Затем происходит переход в USER-режим. Вот как-то так. Есть же листинги ПЗУ УКНЦ, там все можно посмотреть. Листинги с комментариями.
---------- Post added at 00:58 ---------- Previous post was at 00:55 ----------
Да, так можно попасть только на МС 1201.02 с ПЗУ 1801РЕ2-055.
С УКНЦ все проще - системное ОЗУ доступно через регистры 176640/176642. Занес свою программу и с помощью RTI перешел в HALT-режим.
Я думаю авторы всех тонкостей ВМ2 и не знали. Может они думали, что инструкции FIS выполняются на микропрограммном уровне. Ну о таком баловстве вряд ли додумаешься, все рассчитывают, что аргументы находятся где-то в области программы, ну или в крайнем случае в стеке, но уже с адресацией по SP.
А толку запрещать прерывания. Результат ведь не используется. Просто при сложении будут другие аргументы. Максимум на что можно напороться - на прерывание по вектору 244.
Тут дизассемблер вряд ли врёт..
Но дело уже сделано:
Код:.SE EM ON
.SH CON
RT-11SB (S) V05.07 C
Booted from HD1:RT11SB
USR is set NOSWAP
EXIT is set SWAP
KMON is set NOIND
TT is set NOQUIET
ERROR is set ERROR
SL is set ON
EDIT is set K52
KMON nesting depth is 3
Global .SCCA flag is disabled
LSI 11 or PDP 11/03 Processor
56KB of memory
Extended Instruction Set (EIS)
Floating Instruction Set (FIS)
50 Cycle System Clock
Device I/O time-out support
Global .SCCA support
.