Работа оболочки tr-dos в отличном от "стандартного" режиме прерываний реализована на уровне - совсем никак.
Реализовать второй режим прерываний с работой tr-dos - возможна, но это "костыли" в чистом виде (что, в общем-то не помешало codebusters реализовать дему с процедурой чтения дискеты в реальном времени, да и ряду других программистов проделывать нечто подобное).
Большим приоритетеом обладает только момент вызова через "волшебную кнопку".
Определитесь, что вас интересует: гипотетическое устройство с реализованной, развитой системой векторов прерывания; или спектруем - где подобный программно-аппаратный комплекс незадействован?
Когда есть, но не знаешь где - это все равно, что нету.
Это классические прерывание VSYNC, чтоб запускать процесс обновление изображения на экране, когда этом меньше всего будет приводить к видимым искажениям.
Просто на Спектруме это было вообще единственным прерыванием. И оно не для "жесткого реалтайма" (это уже потом особым шиком для мультколор эффектов использовали). По нему обрабатывались программные таймера (аппаратных ведь нет), сканировалась клавиатура и прочее...
Чтоб не терялись прерывания нужно увеличивать скорость обработки (повышать частоту процессора), уменьшать темп прерываний (использовать периферию с FIFO или с DMA доступом).
А ты не обязан его обрабатывать. Поставь RETI по 0x0038 или вообще запрети прерывания по DI.
Но любая задача, которая сводится к тому, что надо как-то реализовать два потока исполнения, неизменно приведёт к использованию этого прерывания.
А то, что оно приходит в начале отрисовки экрана - ну, так проще схемотехнически. А через несклолько лет существования спектрума, когда начали париться за красоту картинки и плавность, оказалось, что это ещё и удобно.
Граф Дракула наш кумир, патамушта он вомпир!
VKINK 9 : BORDER NOT PI
Сейчас смотрел схему "Ириши". Система прерываний там сделана через контроллер ВН59. Но с модуля графического дисплея на этот контроллер ничего не приходит. Получается покадровые прерывания там отсутствуют? Это вообще единственный советский бытовой компьютер, использующий контроллер приоритетных прерываний?
---------- Post added at 13:09 ---------- Previous post was at 13:00 ----------
To troosh:
Если я вас правильно понял, то на спектрум можно воткнуть произвольный генератор импульсов прерываний с известным интервалом и это будет работать вместо покадровых прерываний? Забудем на минутку о красивости бордюра и мультиколоре. Просто спеку нужен был хоть какой то таймер и в качестве его использовали покадровое прерывание?
Теперь точно разобрался. Покадрового прерывания может и не быть, но его удобно использовать что бы знать в какой момент времени начнется отрисовка кадра. И как следствие - рассчитать положение луча на экране в любой момент времени отображения одного кадра.
Я тут подумал, как быть, когда прерываний несколько и контроллер прерываний ими командует. Длительность КСИ, она же примерно 110 микросекунд. Если КСИ подать на контроллер прерываний и настроить его на реагирование по уровню импульса, то для контроллера прерываний это будет означать длительность присутствия сигнала запроса прерывания равной длительности КСИ. Теперь, если любое другое прерывание с более высоким приоритетом будет обработано менее чем за время длительности КСИ, то запрос прерывания от кадровой потерян не будет. Z80 обрабатывает одну инструкцию за четыре такта и имеет, при частоте 4 Мгц, одну обработанную инструкцию в микросекунду. Таким образом, за время длительности сигнала КСИ можно выполнить до 100 инструкций. После чего успеть принять запрос прерывания от кадровой и обработать уже его. Если я верно понимаю принцип работы ВН59.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)