Структура экрана, режимы экрана

Выше была описана адресация видео-ОЗУ так, как оно выглядит для процессора. Вывод же изображения на телевизор осуществляется с помощью записаной в ПЛМ видео-карты, которая позволяет менять режимы вывода простой перезаписью информации в видео-ОЗУ. Единственный порт, который меняет выводимое изображение – порт RGMOD, бит 0 которого переключает страницу режима и таким образом полностью меняет содержимое видео-экрана.

Режим экрана задается данными в видео-ОЗУ. Весь экран представляет собой набор квадратов раз- мером 8x8 точек режимa разрешения 320x256. При увеличении разрешения количество точек в квадрате увеличивается до 16x8.

Режим экрана для каждого квадратика прописывается в области 24..29 блоков видео-ОЗУ. Весь экран описывается страницей режима, которая может быть переключена битом 0 порта RGMOD. Каждому квадра- тику на одной странице режима соответствует 8 байт, часть из которых не используется (зарезервировано). Реально используется от 2-х до 6-ти байт.

Весь экран представляет собой набор из 56x39 (56x40) квадратиков, что соответствует телевизионным режимам 312(320) полных линий на кадр. Видимая область составляет 40x32 квадратика. Остальные соот- ветствуют квадратикам, попадающим в область бордера, обратного хода луча и синхроимпульсов. Приници- пиально возможно использование бордерных квадратиков для вывода изображения, но это не рекомендуется, так как не все телевизоры способны показывать эту область.

Для подробного объяснения адресов режима я воспользуюсь следующими обозначениями:

PM – страница режима (значения 0 или 1).
SQab – квадратик с номером по горизонтали a и номером по вертикали b. Line1 – номер графической линии для режима.
Line2 – номер графической линии для подрежима.
LA – адрес точки в графической линии.
Mode0 – первый байт режима.
Mode1 – второй байт режима.
Mode2 – третий байт режима.
Mode4 – четвертый байт режима.

Для каждого квадратика SQab:
Line1 =1+2·a+#80·PM; Line2 =Line1 +1; LA=#0300+4·b.
Параметры
a и b принимают значения от 0 до 55 и от 0 до 39 соответственно. SQ0.0 – квадратик в

верхнем левом углу видимой области графического экрана экрана. SQ4.4 – самый верхний левый квадратик спектрумовского экрана. SQ39.31 – нижний правый квадратик графического экрана. Как уже и было сказано, квадратики с номерами a больше 39 и b больше 31 соответствуют бордеру и области синхроимпульсов. Левый и верхний бордер соответствует квадратикам с a = 55 и b = 38(39) соответственно.

Положение байтов Modei в видео-ОЗУ соотстветсуют одинаковому Line и адресу в строке LA + i. Основной режим определяется в Line1, а подрежим используется при определении основного режима с разрешением 640 точек по горизонтали. Если в основном режиме появилось указание на 640 точек, то после вывода первых 8-ми точек, производится считывание дополнительного режима, с Line2, которое переопределяет режим второй половинки квадратика. Это позволяет в текстовом 80-символьном режиме иметь независимое программирование символа и знакогенератора.

Режим вывода в каждый момент времени полностью определяется считанными байтами Mode0..3. Байт Mode3 реально не используется и зарезервирован, поэтому режим определяется тремя байтами.

Собственно, сам режим определяется байтом M ode0 , байт M ode1 является просто байтом адреса данных, а Mode2 используется в спектрумовском режиме как адрес атрибутов, а в текстовом собственно как атрибут символа.

Распишу все режимы:

Z X 40 – текстовый режим 40 символов в строке или 1 символ на знакоместо. Используется в спектру- мовском режиме. На экране оказываются три различных знакогенератора, которые расположены в памяти ровно так, как полагается для Спектрума.

Z X 80 – текстовый режим 80 символов в строке или 2 символа на знакоместо. Отличительной особен- ностью является возможность на одном экране иметь до 36 знакогенераторов, указываемых для каждого символа.

GR 256 8 – графический режим 320x256 точек, 256 цветов. Он же 8x8 точек 256 цветов на одно знакоместо. В этом режиме (а так же в GR-16-16) экран можно представить как «текстовый»40-символьный, в котором каждый символ имеет графический образ в 64 байта. Всего таких символов 3072. При опреде- ленном задании режима графические символы сливаются в одно графическое поле, на котором достаточно просто рисуются линии и другие графические примитивы.

GR 16 16 – графический режим 640x256 точек, 16 цветов. Он же 16x8 точек 16 цветов на одно знакоместо.

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