rw6hrm, Вы, как главный по системе, оцените такой вариант:
1. в существующей схеме AU-Z80 ничего не меняем, при появлении запроса на прерывание система берёт адрес перехода с ячеек FFFA/FFFB, так как сейчас в биосе;
2. обработка прерывания немного изменяется: после команды DI считывается порт 18h и сохраняется в памяти (назовём StatInt). Потом считывается состояние ВВ51, выделяется по маске бит 1, инвертируем и выполняем И с содержимым StatInt.
В результате получаем состояние устройств, которые ДО считывания порта 18 выставляли запрос на прерывание:
бит 1 - ВВ51
бит 5 - клавиатура
бит 6 - внешнее устр. 1
бит 7 - внешнее устр. 2
Теперь можно анализировать в порядке приоритета. В базовой версии ОС по битам 6 и 7 можно оставить переходы к зарезервированным адресам, в которых изначально будет команда возврата из прерывания, а кому-надо - пусть сам пишет обработчик.
Набросок схемы, которая может реализовать такой алгоритм прилагаю: https://cloud.mail.ru/public/A6f4/5MJfNNA5o
Хотелось бы реализовать "по взрослому" режим IM2, но уж сильно нагромождённая схема получается. Неоправданно, если надо пару прерываний добавить.


Ответить с цитированием
