Работая на больших машинах мы уже привыкли к наличию режима аппаратной трассировки. Разговаривая с Caro по поводу синхронизации Magic с M1 в Пентагоне, навеялась мне идея...
Вот интересно, в случае двухбайтной команды (с префиксом) сигнал M1 вырабатывается два раза (для обоих байтов) или все равно один?
Если только один - а что если сделать схему, подающую NMI через определенное число сигналов M1? Вот вам и принцип работы пошаговой аппаратной трассировки на Z80. Работать это может например так:
Код:
Код на выходе из отладчика (предполагаем что остальные регистры
уже восстановлены):
LD A, #03 ;запрос NMI через 3 команды
OUT (#EC), A ;эта команда еще не считается (порт придумал на ходу)
POP AF ;восстанавливаем старое содержимое AF
;(лежит на стеке отлаживаемой программы) - 1 команда
RETN ;вернулись - 2 команда
Отлаживаемая программа (например):
LD A,(HL) ; вернулись сюда, эта команда будет выполнена (3 команда)
INC A ; перед этой командой будет NMI