Spectrum Progress
#02
19 января 1997 |
|
Железяка - "SPRINTER-97": Видеосистема.
Первый взгляд при знакомстве с новым компью-
тером всегда бросаешь на его экран. Ну, может
быть, второй, если до этого никогда не видел
"MiniTower" и AT-клавиатуру.
(C) "Петерс", 1997.
В процессе разработки видеосистема компьютера
претерпела значительные изменения. 16-цветовой
экран, представленный на Enlight-96, остался в
далёком прошлом и на данный момент от него ос-
тался лишь принцип переключения режима экрана.
Как меняется видеорежим?
Концепция: экран по-прежнему разбит на знако-
места 8х8 пикселей. В каждом знакоместе опре-
делён свой графический режим. В каждом знако-
месте определён свой режим вывода изображения.
Весь экран представляет собой блок из 1280-ти
знакомест - 40 знакомест по горизонтали и 32 по
вертикали.
Каковы эти режимы?
1. Стандартный ZX-Spectrum (ZX-40). В знако-
место в этом режиме выводится обычный символ в
стандарте ZX-Spectrum - 8 байт образа символа и
1 байт атрибутов.
2. Режим ZX-80. В каждом знакоместе находятся
два сжатых по горизонтали символа стандарта
ZX-Spectrum. Вывод пикселей этих символов про-
изводится с частотой 14 МГц, что приводит к
увеличению количества символов в строке до
восьмидесяти.
3. Графический режим G256-7. Знакоместо
представляет собой графическое изображение 8х8
точек, каждая из которых может иметь любой из
256-и цветов, выбираемых из палитры (16 млн.
цветов).
4. Графический режим G16-14. Режим высокого
разрешения. В каждом знакоместе по горизонтали
располагается 16 пикселей, 16 цветов на пик-
сель. По вертикали количество пикселей остаётся
равным восьми и увеличивается до шестнадцати
только вводом режима INTERLIVE.
5. Графический режим G16-7. Фактически, это
подрежим G256-7, в котором сокращено количество
цветов на пиксель с целью сокращения объёма ви-
деоинформации.
Как адресуется информация в знакоместе?
Для режима ZX-40 всё остаётся по-прежнему.
Форма и атрибут располагаются как в стандартном
ZX-Spectrum для всех знакомест.
ZX-80. Первый символ - это тот же символ, что
и в режиме ZX-40, второй - символ режима ZX-40,
взятый из альтернативного экрана.
Графические режимы. Во всех трёх режимах ад-
реса совпадают. По многочисленным пожеланиям
программистов, адресация пикселей была измене-
на. По горизонтали пиксели представляют собой
сплошной массив в одной видеостранице, но по
вертикали пиксели располагаются в разных виде-
остраницах. Хотя вполне возможно расположение в
одной странице. Это будет рассматриваться как
альтернатива существующей реализации.
Адресация в знакоместе в определённом роде
является относительной адресацией. Конкретный
адрес пикселя - это сумма адресов знакоместа в
экране и пикселя в знакоместе.
Как адресовать знакоместа?
Для определения режима экрана необходимо три
бита информации. В рабочей версии Sprinter'а
каждое знакоместо имеет 2 байта информации ре-
жима. Подобное увеличение количества информации
даёт принципиально новую возможность. 12 бит
информации видеорежима определяют адрес блока
данных, из которого выводится информация на
данное знакоместо.Таким образом, вопрос об ад-
ресации становится вопросом о том, какой адрес
записан в режиме данного знакоместа. Этот адрес
определяется системной или пользовательской
программой.
Экран оказывается состоящим из знаков, выби-
раемых из знакогенератора, занимающего всё
пространство видео-ОЗУ. Количество этих знаков
(3072) превышает число знакомест экрана более
чем вдвое. Это даёт большую свободу для выбора
графических и символьных изображений. В режиме
же ZX-40 число таких символов возрастает до
12288.
Где находится информация видеорежима?
Для видеорежима отведена специальная страница
видео-ОЗУ размером 16 кБ. Данные режима знако-
мест располагаются сплошным массивом, включаю-
щим в себя и заэкранные области размером 5120
байт на экран. Данные видимой области занимают
2560 байт.
В этих данных также содержится и некоторая
иная информация - расположение строчных и кад-
ровых синхроимпульсов, положение бордюра, нача-
ла и концы гасящих импульсов, поэтому програм-
мированием этой области займётся ПЗУ.
Открывается новая возможность. Теперь прог-
раммируются сигналы синхронизации с телевизо-
ром/монитором, что даёт простой способ аппарат-
ного скроллинга всего изображения вверх, вниз,
вправо и влево. Меняя сигналы синхронизации,
можно менять положение общего фона, на котором
и развернётся битва байтов новой SUPER-игрушки
для SPRINTER-97.
Как применять подобное расширение?
В режиме G256-7 каждый пиксель представляет
собой один байт, задающий цвет пикселя. По го-
ризонтали пиксели представляют собой сплошной
массив (320 байт), что даёт простую возможность
записи данных на экран построчно LDI/LDD-подоб-
ными командами.
Использование суперзнакогенератора, как гене-
ратора образов, и управление выводом знаков на
экран путём программирования режима знакоместа
резко ускоряет вывод, если используется ограни-
ченный набор символов или графических образов.
Режимы можно смешивать!!! Режим каждого зна-
коместа определяется совершенно независимо. Его
изменение не требует изменения режима
развёртки, следовательно, для смешения нет ни-
каких препятствий. Графические катринки высоких
разрешений можно стыковать с простой графикой
Spectrum. Это даст дополнительные возможности
для ускорения таких графических программ, где в
одном знакоместе достаточно иметь два цвета.
Как адресуются страницы видео-ОЗУ?
Следует отметить, страница видео-ОЗУ - это
просто страница памяти объёмом 16 кБ, занятая
под нужды видеосистемы. Видеостраница - это ин-
формация, выводимая на экран.
Для режима G256-7 видеостраница содержит 80
кБ. В режиме стандартного ZX-Spectrum она зани-
мает всего 6,75 кБ. Результат - количество ви-
деостраниц ZX-Spectrum значительно превышает
количество графических видеостраниц.
Массив видео-ОЗУ является общим для всех ре-
жимов, поэтому одна и та же информация может
выводиться по-разному. Информация для режимов
ZX-40 и ZX-80, естественно, не совместима с ин-
формацией графических режимов, т.е. переключе-
ние данного знакоместа из режима ZX-40 в графи-
ческий режим потребует изменения содержания
данных этого знакоместа. Чтобы не переписывать
данные после переключения, достаточно использо-
вать разные адреса данных знакоместа, записыва-
емые в режим этого знакоместа.
Страницы видео-ОЗУ переключаются отдельно от
страниц основного ОЗУ. Определённые страницы
основного ОЗУ проецируются на видео-ОЗУ. Запись
в эти страницы производится одновременно в оба
ОЗУ. Считывание производится только из основно-
го ОЗУ, что уменьшает количество обращений к
видео-ОЗУ и позволяет получить максимальную
скорость работы процессора (работа с основным
ОЗУ не требует циклов ожидания).
Что произойдёт, если переключить страницу ви-
део-ОЗУ и оставить прежней страницу основного?
Информация пойдёт в соответствующую страницу
видео-ОЗУ и в прежнюю страницу основного ОЗУ
(данные основного ОЗУ будут перезаписаны).
Переключение страницы видео-ОЗУ производится
выводом в порт, адрес которого будет выдаваться
спецфункцией из ПЗУ.
Какова разница адресации данных знакомест
между графическим и ZX-40/80 режимами?
Переключение адресации видео-ОЗУ производится
одновременно с выводом номера страницы.
Вывод в порт адреса страницы видео-ОЗУ значе-
ния 00h..3Fh подключает различные страницы эк-
рана ZX-Spectrum. Значения 40h..7Fh подключают
то же видео-ОЗУ, но с иной адресацией. Значения
80h..BFh подключают на место видео-ОЗУ страницу
цветовой палитры. Это отдельная страница
объёмом 16 кБ, которая не входит в 192 кБайтное
видео-ОЗУ, но адресуется так же. Вывод в порт
страницы видео-ОЗУ значений C0h..FFh просто
отключает запись в видео-ОЗУ.
ВHИМАHИЕ!!! Переключение адресации данных
знакомест приводит к переключению адресации
страниц, т.к. номер страницы является частью
адреса видео-ОЗУ. Таким образом, запись в гра-
фическом режиме полной строки длиной 400h байт
приведёт к записи данных в разные страницы ре-
жима ZX-Spectrum. Именно это не даёт возможнос-
ти конкретной привязки теневых страниц видео-О-
ЗУ к станицам основного. Они переключаются не-
зависимо друг от друга.
Кроме того, адресация страниц видео-ОЗУ в ре-
жиме ZX-Sprectrum производится 24-мя страницами
по 8 кБ. В графическом режиме страницы имеют
объём 16 кБ, и их количество равно шестнадцати.
Используются только чётные номера страниц из
диапазона 40h..7Fh.
16кБ х 16 = 256. Откуда появились лишние 64кБ?
Каждая строка графического режима содержит
400 байт. Они "прошивают" насквозь все 24 стра-
ницы режима ZX-Sprectrum, и захватывают в своём
стремлении ещё 8 несуществующих страниц. Факти-
чески, запись последних 100h байт этой строки
не приводит к записи в какие-либо ячейки видео-
-ОЗУ.
Каковы конкретные адреса знакомест?
Для ZX-40/80 это те же адреса экрана, которые
имеет ZX-Sprectrum. Все знакоместа на расширен-
ном экране адресуются точно так же, плюс изме-
няется адрес видеостраницы.
В графических режимах адресация иная. Всё ви-
део-ОЗУ представляет собой набор из 32 строк по
96 знакомест. Строки знакомест имеют смежные
адреса пикселей. Каждая такая строка представ-
ляет собой набор из восьми линий по 8х96=768
байт, расположенных в разных страницах видео-О-
ЗУ и имеющих одинаковый начальный адрес.
Строки знакомест составляют 2 группы по 16
строк. Данные каждой из 16 строк одной группы
находятся в одних и тех же страницах видео-ОЗУ.
Вся эта информация относится к конкретной ра-
бочей версии компьютера Sprinter-97. В процессе
дальнейшей работы возможны некоторые изменения,
поэтому здесь не даются более точные описания
адресов, портов, функций ПЗУ и т.д.
Каковы возможности нового экрана?
1. Экран имеет всё для создания оконной сис-
темы. В каждом окне информация может выводится
в своём режиме и эти режимы могут одновременно
сосуществовать в одном окне.
2. Окна имеют свои собственные области дан-
ных, что позволяет переключать их без потери
информации. Ограничение накладывается только
общим объёмом видео-ОЗУ. Достаточно сказать,
что экран будет иметь возможность включения до
22-х окон с объёмом, равным объёму информации
на экране ZX-Sprectrum.
3. Произвольная адресация информации знако-
мест позволяет производить быстрый вывод одно-
родных картинок, например, фоновых узоров ("о-
боев"). Для графического режима это резко сни-
жает количество выводимых данных.
Пример: надо вывести повторяющийся 256-цвет-
ный узор размером 16х16 пикселей на весь экран
320х256 точек. Что в этом случае делает IBM?
Рисует эту картинку 320 раз. А что же делает
Sprinter? Рисует картинку один раз, а затем за-
писывает в адреса экрана адрес картинки. Таким
образом скорость вывода изображения при гораздо
меньшей производительности компьютера позволяет
значительно обогнать IBM в графике.
Далее возникает вопрос, как на таком экране
рисовать дальше, если вывод в небольшую картин-
ку тут же размножится во всех её 320-ти копиях?
Ответ очень прост.В нужном месте экрана адрес
меняется на адрес выводимой картинки.
Если вы имеете на экране хотя бы 40 знакомест
с повторяющимися картинками, количество выводи-
мой информации становится равным общему объёму
информации экрана. Если же таких знакомест
больше (а это очень часто встречается в прог-
раммах), количество информации будет быстро
снижаться по мере увеличения количества одина-
ковых знакомест.
Кроме того, подобный вывод экономит место ви-
део-ОЗУ, что позволит увеличить количество гра-
фических окон с неперекрывающейся информацией.
О цветовой палитре.
Цветовая палитра Sprinter-97 доведена до мак-
симально разумного предела. Каждый цвет выбира-
ется из набора 16 млн. цветов, определяемых
данными ОЗУ палитры (24 бита/цвет).
Палитра - это ещё одна целая страница ОЗУ.
Она адресуется подобно другим страницам видео-
памяти, но имеет совершенно другую структуру и
назначение.
Каждый определяемый цвет имеет три байта в
ОЗУ палитры. Каждый из этих трёх байтов опреде-
ляет вес синего, красного и зелёного в опреде-
ляемом цвете.
─────
Другие статьи номера:
Похожие статьи:
В этот день... 10 ноября