Привeтствую!
Ужe создавал тему, но стоит подойти к вопросу под другим углом…
Если брать дамп оригинального «МОНИТОРа» и попытаться найти в нём все коды «FF» для «RST 7», то их насчитывается не так уж и мало:
Код:
FA56 FAB7 FAB9 FAC9 FACB FBF6 FC05 FDC3
.... .... .... .... .... ....-1019 -573
FDE7 FE4D FEB0 FEDD FF0F FF15 FF20 FF26
-537 -435 -336 -291 -241 -235 -224 -218
FF2F FF35 FF4D FFD5 FFEC FFFC FFFE FFFF
-209 -203 -179 -43 -20 -4 -2 -1
Причём, чем короче числовой индекс, тем легче его запомнить.
Так, в Бейсиках часто использовались функции МОНИТОРа «F803» и «F81B» с обращением к ним через «usr(-2045)» и «usr(-2021)» соответственно…
И я задумался, а что если пропатчить Бейсик так, чтобы по адресу «0038» располагалась особая процедура, которая будет использовать ближайший адрес возврата за опциональный индекс?
Или же вот так:
Код:
org 00100h
; Если за RST 7 следует КОИ-7 - просто печатаем текст
db 0FFh,'ПРИВЕТ!',0
; Если за RST 7 следует код 80h-91h - переходим на адрес
; jmp (0F800h + 3 * (код - 128))
db 0FFh,81h ; Вызов 0F803h
P.S.: Если тема интересна, обсудим всё более подробнее…