Коль речь зашла о разработке нового ZX-клона, предлагаю реализовать следующие видеорежимы:
256x192: 0)16/64, 1)16/16, 2)16/4, 3)4/1 цветов на пиксель.
320x256: 4)16/16, 5)4/4, 6) 2/1 цветов на пиксель.
Все режимы (Screen Modes) должны иметь возможность отображаться в Телевизионном и VGA режимах как PAL (~15 kHz) и Double-PAL (~30kHz) соответственно (Screen Types).
Для режимов 0-3 должна быть возможность отображения памяти с любого адреса кратного 2кБ в любой странице памяти.
Для режимов 4-6 должна быть возможность отображения памяти с адресов #0000, #4000, #8000 и #C000 в любой странице памяти.
Таким образом, в памяти можно формировать видеоданные, и включать их на отображение через управляющие порты, а не гонять их на один единственный экран.
Управление экранами ZX-128 через порт #7FFD должно быть аппаратно согласовано с новыми портами.
Предлагаемая раскладка управляющих портов:
ScrModAdr port
Биты 7-3 - старшие 5-ть бит адреса экрана
Биты 2-0 - режим экрана
Для режимов 0-3 используются все 5 битов, для режимов 4-6 – только старшие 2. Можно использовать до 8 режимов. По RESET должен устанавливаться в %01000000 (#40), что означает стандартный спектрумовский экран с адреса #4000
ScrTypPage port
Бит 7 - тип экрана (PAL/DblPAL)
Биты 6-0 номер страницы
Тип экрана: 0 – PAL, 1 – DblPAL. Адресуется до 128 страниц – 2МБ ОЗУ, что более чем достаточно. Можно сократить до 64-32 страниц, высвободив дополнительно 1-2 бита на какие-либо нужды. По RESET должен быть установлен в %00000101 (#05), что соответствует 5-й странице, PAL, стандартный спектрумовский экран.
Все порты должны быть доступны и на запись, и на чтение.
Строение растра в видеорежимах, организацию палитры и спрайтов оставляю на усмотрение разработчика.
Сергей Москалёв aka Gris/RT.
22.12.2006г.




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