"16C_SCROLL" 20090918

Реализован циклический вертикальный скроллинг 256 линии и циклический горизонтальный скроллинг 256 точек (шаг 2 пикселя). Используется участок памяти по смещению #1800, дополняющий экран до 256 точек по вертикали.

Для управления смещением на данный момент выбран следующий способ:
при включенном режиме "16C", после прихода кадрового прерывания (пока луч рисует бордюр), устанавливаем на некоторое время 7-ой (вертикаль) и/или 6-ой (горизонталь) бит(ы) в порте #EFF7. Количество циклов RFSH процессора и будет смещением по вертикали и/или по горизонтали при отображении экрана. По вертикали возможно смещение 0..255 . По горизонтали возможно смещение 0..127 ( шаг 2 пикселя, 256/2 ).
Кстати, сигнал RFSH выдаётся процессором Z80 сразу после цикла M1. А он в свою очередь возникает при чтении кода команды и префиксов команд. Т.о. считаем, сколько команд+префиксов выполнит процессор между установкой и сбросом бита #EFF7.



Оценить этот режим можно в специальной версии эмулятора UnrealSpectrum (~650kb)
В примерах жмите клавиши "Q", "A", "O", "P".


Я не призываю повсеместно внедрять и использовать этот скролл, но если решите делать софт, использующий эту фичу, то не "закапывайте" глубоко в коде установку смещения. Сделайте так, что бы была возможность изменить минимум кода для использования в другом компьютере с другим механизмом установки смещения.


DDp
18.09.2009
72 65 61 6C 64 64 70 40 79 61 6E 64 65 78 2E 72 75