У спектрума только одно прерывание - кадровое. Других нет. Когда приходит прерывание, то происходит call на обрпботчик, выполняется код обработчика, потом ret и проодолжается выполняться основная программа.
У спектрума только одно прерывание - кадровое. Других нет. Когда приходит прерывание, то происходит call на обрпботчик, выполняется код обработчика, потом ret и проодолжается выполняться основная программа.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Оно используется "волшебной кнопкой" BDI, при его наличии.К сожалению, в ПЗУ «СПЕКТРУМА» в процедуре обработки немаскируемого прерывания «NMI» содержится грубая ошибка (кто знает - случайна ли она?), благодаря которой обработка «NMI» или приводит к рестарту компьютера с нулевого адреса, или не дает никаких результатов, производя обычный возврат в точку, откуда было вызвано прерывание.
А еще "второе прерывание" используется таким девайсом, как AMX-mouse
Последний раз редактировалось null_device; 30.09.2015 в 11:32.
Когда есть, но не знаешь где - это все равно, что нету.
Вообще, хотел только понять, в чем смысл иметь в компьютере прерывания с частотой обновления экрана и нельзя ли от них отказаться. Уяснил, что это прерывание очень нужное, что бы получить жесткий реалтайм при выполнении некоторых программ. Теперь вот пытаюсь понять, как быть с ситуациями, когда есть несколько прерываний с разными приоритетами и что делать что бы не терять прерывания.
Как то решалось же это на ibm pc xt....
Последний раз редактировалось Elvys; 30.09.2015 в 11:47. Причина: Дополнение
Это классические прерывание VSYNC, чтоб запускать процесс обновление изображения на экране, когда этом меньше всего будет приводить к видимым искажениям.
Просто на Спектруме это было вообще единственным прерыванием. И оно не для "жесткого реалтайма" (это уже потом особым шиком для мультколор эффектов использовали). По нему обрабатывались программные таймера (аппаратных ведь нет), сканировалась клавиатура и прочее...
Чтоб не терялись прерывания нужно увеличивать скорость обработки (повышать частоту процессора), уменьшать темп прерываний (использовать периферию с FIFO или с DMA доступом).
Не терять прерывания, это я о том, что скажем во время дисковых операций музыка не хрипела и картинка не тормозила. Т.к. прерывания от контроллера дисковода имеют более высокий приоритет и приходить будут часто. Пересылками то процессор занимается.
Работа оболочки tr-dos в отличном от "стандартного" режиме прерываний реализована на уровне - совсем никак.
Реализовать второй режим прерываний с работой tr-dos - возможна, но это "костыли" в чистом виде (что, в общем-то не помешало codebusters реализовать дему с процедурой чтения дискеты в реальном времени, да и ряду других программистов проделывать нечто подобное).
Большим приоритетеом обладает только момент вызова через "волшебную кнопку".
Определитесь, что вас интересует: гипотетическое устройство с реализованной, развитой системой векторов прерывания; или спектруем - где подобный программно-аппаратный комплекс незадействован?
Когда есть, но не знаешь где - это все равно, что нету.
Как сказал бы ААА, прерывание нужно, чтобы VNN (помним тебя...) мог рисовать свои шедевры на бордюре... Таки да, другим путем это не сделать, даже если обвесить спектрум всякими контроллерами прерываний. Прерывание "начало кадра" - самое важное на свете![]()
ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
Speccy-2007 128/AY/TR-DOS
Сайт с документацией к "Scorpion ZS 256"
А ты не обязан его обрабатывать. Поставь RETI по 0x0038 или вообще запрети прерывания по DI.
Но любая задача, которая сводится к тому, что надо как-то реализовать два потока исполнения, неизменно приведёт к использованию этого прерывания.
А то, что оно приходит в начале отрисовки экрана - ну, так проще схемотехнически. А через несклолько лет существования спектрума, когда начали париться за красоту картинки и плавность, оказалось, что это ещё и удобно.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)