Эти самые мануалы вобщем-то объясняют набор команд для эмуляции
i8080,
а также для интерфейса к вызовам
BIOS и
DOS:
NEC_V20 Mode Operation Instructions
Режимы работы
μPD70108 включат в себя режим работы в своей системе команд (нормальное функционирование) и режим эмуляции (эмуляция системы команд микропроцессора
μPD8080AF). Флаг переключения режимов, флаг режима (
MD) находится в бите 15 регистра флагов PSW. Режим переключается в нормальный режим работы, когда
MD = 1, и в режим эмуляции, когда
MD = 0. Флаг
MD может быть установлен/сброшен непосредственно или косвенно инструкцией установки режима.
Инструкции, изменяющие режим работы из нормального в режим эмуляции:
BRKEM (
Break for Emulation –
Прерывание для Эмуляции)
RETI (
Return from interrupt –
Возврат из прерывания)
RETEM (
Return from Emulation –
Возврат из Эмуляции)
CALLN (
Call Native routine –
Вызов собственной подпрограммы)
Также,
сигнал Сброса (
RESET) или вызов внешнего прерывания (
NMI, INT) переключают режим эмуляции обратно в режим работы в своей системе команд.
(1) BRKEM imm 8
Это – основная инструкция для активизации режима эмуляции. Эта инструкция сохраняет
PSW, PS, и PC, сбрасывает флаг
MD в '0', и загружает вектор прерывания определенный операндом в
PS и PC.
Эта инструкция не влияет ни на флаг разрешения прерываний (
IE), ни флаг прерываний (
BRK). Выбирая код инструкции обработки прерываний (для эмуляции), на которую осуществляется переход,
ЦПУ интерпретирует его уже как инструкцию микропроцессора
μPD8080AF и выполняет её соответственно.
ЦПУ интерпретирует режим эмуляции как обслуживание прерывания.
В режиме эмуляции, операции микропроцессора
μPD8080AF с регистрами и флагами осуществляются посредством регистров и флагов микропроцессора
μPD70108 в соответствии, показанном ниже.
Что касается операций со стеком, то либо
SP в режиме работы в своей системе команд, либо
BP в режиме эмуляции, работают как указатели вершины стека. Принятие независимых указателей вершины стека позволяет обоим режимам, как зарезервировать свою независимую область стека, так и предотвращает эти области от уничтожения в другом режиме ошибочными операциями работы со стеком.
Регистры
SP, IX, IY, и АХ нормального режима работы и четыре сегментных регистра (
PS, SS, DS0, и DS1) не задействованы в режиме эмуляции.
В режиме эмуляции начало сегмента инструкции определяется регистром
PS (автоматически определяемое вектором прерывания), и данными в регистре
DS0 (определяемыми программистом непосредственно перед входом в режим эмуляции).
(2) RETEM (
without operand –
без операнда)
Когда инструкция
RETEM выполняется в режиме эмуляции (эта инструкция интерпретируется как инструкция микропроцессора
μPD8080AF),
ЦПУ восстанавливает регистры
PS, PC и PSW и возвращается в нормальный режим работы (в своей системе команд), как если бы он возвращался из обслуживания прерывания. В этот момент содержимое этих регистров в нормальном режиме работы, которое сохранялось в стеке инструкцией
BRKEM, восстанавливается, что и переводит ЦПУ в режиме работы в своей системе команд.
(3) CALLN imm 8
Когда эта инструкция выполняется в режиме эмуляции (она интерпретируется как инструкция микропроцессора
μPD8080AF),
ЦПУ сохраняет регистры
PS, PC, и PSW в стеке, (
MD = 0 сохраняется в регистре флагов), флаг режима (
MD) устанавливается в
'1', и затем загружается вектор прерывания, определяемый операндом в
PS и
PC. Эта инструкция не оказывает влияния ни на флаг разрешения прерываний (
IE), ни флаг прерывания (
BRK).
Таким образом, программа обработки прерываний в системе команд
i8088 может вызываться из режима эмуляции микропроцессора
i8080.
Для того чтобы возвратиться из программы обработки прерывания в режим эмуляции, должна быть выполнена инструкция
RETI.
(4) RETI (
without operand –
без операнда)
Это - общая инструкция, для возврата из подпрограммы обработки прерывания, активизированной инструкцией
BRK (
INT) или внешним прерыванием в нормальном режиме работы, если же эта инструкция выполняется в конце подпрограммы обработки прерываний активизированной инструкцией
CALLN в режиме эмуляции, регистры
PS, PC, и PSW восстанавливаются точно так же как и в нормальном режиме. Поскольку величина флага режима работы (
MD = 0) в режиме эмуляции восстанавливается в
MD при восстановлении
PSW,
ЦПУ устанавливается в режим эмуляции микропроцессора
i8080, и затем все дальнейшие команды интерпретируются и выполняются как инструкции
μPD8080AF.
PS. Названия регистров и мнемокоды NEC_V20 действительно имеют отличия
от идентичных у i8088, но соостветствие весьма прозрачное...
PPS. Чтобы запустить под NEC_V20 операционную систему СР/М используют
специальные утилиты, в частности v2080.zip...
PPPS. Это я так ненавязчиво агитирую Виталия испробовать эмуляцию
i8080 на его NEC_V20 ХТ-шке...