Меня одна интересная мысль тут давно посетила, и я к ней частенько возвращаюсь...
Но никак нет времени её проверить... (лето вот опять началось с ремонтов - замена электропроводки).
А мысль вот какая: довольно часто в простых конструкциях на
i8080 aka
K580BM80А в прерывании
используются nedo-вектора
RST N, а уж
RST 7 - самый популярный, поскольку код его
0FFHи это легко реализуется аппаратно, резисторами к
+5В.
Неудобно, что передача управления этих nedo-векторов идет на адреса
0000Н-0038Н,
а большинство популярных отечественных машин имеют на этих адресах ОЗУ.
RST N активно используют в
Васиках, но хотелось бы, чтобы вызовы
RST N приходили
в системную ПЗУ. А она у нас - вверху, с
0F800H по стандарту вызовов
РК-86 ну и у
всех остальных популярных недо-компов
Монитор вверху
Так вот идея у меня следующая: все такие недо-компы имеют аппаратный механизм,
который по
RESET "прижимает" системную ПЗУ на адрес
0000Н.
По этому адресу записано:
JMP [ADDR в ПЗУ] и по адресу
JMP следующая операция
восстанавливает нормальную карту памяти, далее выполняя холодный старт
Монитора.
А что если распространить этот механизм и на обработку
INT по
RST N ?
Ну, скажем так: приходит
INT и если он разрешен (
INTЕ) системная ПЗУ "прижимается" аппаратно
на адрес
0000Н.
Ну, скажем, сработало аппаратно
RST 7 = CALL 0038H. По адресу
0038H (он же
0F838H)
в системной ПЗУ записано:
JMP [в ПЗУ на адрес обработчика прерывания] .
По этому адресу восстанавливается нормальная карта памяти, и далее идет тело обработчика
с возвратом по
RET.
Получается, что вектора
RST N будут указывать в системную ПЗУ в старших адресах.
Как такая мысль?