Система прерываний на ПК Специалист
Идея добавить прерывания в Специалист витает довольно давно. А в некоторых клонах на Z80 типа Эрика она и вовсе уже давно реализована.
Давайте на данном этапе откинем рассуждения о совместимости со всем предыдущим софтом, о том, что сигнал INTE процессора уже задействован в системе цветности, о том, что всё равно никто уже под это дело ничего писать не будет и т.д. Я предлагаю пока просто пофантазировать какими должны быть идеальные прерывания на Специалисте.
Как я понимаю, ни у кого не возникает сомнений, что прерывания должны быть частотой 50 Hz. Ну хотя бы для того, что можно было синхронизироваться с экраном и использовать, написанную на Спектруме, музыку.
Такие прерывания уже организовал @Pyk в Emu80:
Цитата:
Сообщение от
Pyk
- - -
zx_, для включения периодических прерываний в "Специалисте" добавьте в конец конфигурационного файла следующие строки:
Код:
PeriodicInt8080 periodicInt = &cpu, 7, 50
periodicInt.active = yes
Здесь 7 - это номер вектора прерывания (rst 7), а 50 - частота прерываний
Правда, чтобы не лезть в сам код эмулятора, Виктор сделал эти прерывания независимыми от обновления экрана. То есть прерывания просто приходят 50 раз в секунду, независимо ни от чего. Но и это уже хоть что-то! Я с делом поигрался и уже выкладывал результат:
https://plvideo.ru/watch?v=7adiG7WtPmaC
Отчётливо видно, что бегущая строка периодически рвётся, несмотря на то, что всё выводится по прерываниям и успевает по тактам уложиться между кадрами.
@RW9UAO, готов внедрить правильные прерывания свой FPGA Специалист, а Pyk готов аналогичным образом доработать свой эмулятор. Таким образом можно будет обкатать их. Если всё будет хорошо, то, возможно, кто-то (@Mick?) захочет это воплотить в реальном железе.
Собственно вопрос: Когда должны приходить прерывания и какой длительности сигнал должен быть? Дело в том, что полезность прерывания для, например, отрисовки спрайтов, зависит от того, на каком этапе строения кадра прерывание придёт. При этом не стоит забывать о том, чтобы реализовать в железе это было максимально просто.