Организация видео озу
🕛 28.12.2008, 20:30
В режиме 640х350 видео память представляет собой 4битовых плоскости, расположенные в одном адресном пространстве,
когда одному разряду байта соответствует одна точка. Организация
отображения видео буфера на экран в режиме EGA 16 цветов
следующая:
адрес А0000 А0001 А0002.. +- разряд |765432107654321076543.. <= 1-я линия
Запись и представление точки на экране определяется состоянием
дополнительных регистров: регистра разрядной маски (8 бит), а
также регистра Разрешения Установки/сброса (4 бита) и регистра
Установки/сброса (4 бита) в режиме записи 0 (см. п.1.3.4).
4.1. Режим записи 0
Регистр разрядной маски (3CF/8) определяет разряды байта,
которые могут быть изменены в видео ОЗУ при записи. Установленный
разряд в регистре Разрешения Установки/сброса (3CF/1) при
обращении к видео ОЗУ устанавливает или сбрасывает все 8 разрядов
в зависимости от состояния соотвествующего разряда регистра
Установки/Сброса (3CF0).
Байт плоскости, не выбранной маской, останется неизменным (на
рис.4.1 - плоскость, заполненная "u"), если установлен
соответствующий разряд регистра Установки/сброса и не установлен
регистр маски плоскости.
Взаимодействие регистров граф.контроллера в режиме 0 [2]
Плоскости 3 2 1 0 видео +-+ +-+ +-+ +-+ ОЗУ +-+ +-+ +-+ +-+ A000:0002 +-+ +-+ +-+ +-+ A000:0001 | | | | | | | | A000:0000 | | | | | | | | Адреса +-+ +-+ +-+ +-+ видео | | | | ОЗУ +-+ +-+ +-+ +-+ +-+ : |0|7 | | | | | | | | : останутся : |0| | | | | | | | | : неизменными |1| |0| |u| |1| |1| / 10111101B
Регистр |1| |0| |u| |1| |1| < данные
разрядной |1| |0| |u| |1| |1| < \ процессора
маски -> |1| |0| |u| |1| |1| <
3CF/8 |1| |0| |u| |0| |0| < |1|0 |0| |u| |1| |1| < регистры-защелки +-+ +-+ +-+ +-+ +-+ | | | | u-останется неизменным
00000000B-> + + +<-10111101B / / / / \ \ \ \
3CF/1 +-+ +-+ 3C5/2
Регистр Разрешения | 1 0 0 0 | | 0 0 1 1 | Регистр
Установки/сброса +-+ +-+ маски цвета | | | | +-+
3CF/0 Регистр | 0 1 1 0 | Установки/сброса +-+
Рис. 4.1
Важно отметить, что обмен с видео памятью происходит
через регистры-защелки и требует независимо от производимой
операции выполнять и чтение и запись.
4.2. Режим записи 2
Альтернативный режим установки цвета точки [2] безусловно
окрашивает выбранные разрядной маской точки видео ОЗУ, при записи
по выбранному адресу не байта данных, а 4-х разрядов атрибута.
Взаимодействие регистров граф.контроллера в режиме 2 [2]
Плоскость 3 2 1 0 видео +-+ +-+ +-+ +-+ ОЗУ +-+ +-+ +-+ +-+ A000:0002 +-+ +-+ +-+ +-+ A000:0001 | | | | | | | | A000:0000 | | | | | | | | +-+ +-+ +-+ +-+ Адреса | | | | видео +-+ +-+ +-+ +-+ +-+ ОЗУ : |0| | | | | | | | | : : |0| | | | | | | | | : <- останутся : |0| | | | | | | | | : неизменными : |0| | | | | | | | | : <= 1101B данные |1| |1| |1| |0| |1| <
Регистр : |0| | | | | | | | | : <
разрядной : |0| | | | | | | | | : <
маски -> : |0| | | | | | | | | : < регистры-защелки +-+ +-+ +-+ +-+ +-+ | | | | +-+ | 1 1 1 1 | Регистр маски +-+ цвета
Рис. 4.2
Пример по использованию режимов записи 0 и 2 Draw_Point
дан в приложении 1.
4.3. Режимы чтения атрибутов точки
Возможны 2 режима чтения атрибутов точки видео-буфера. В
режиме чтения 0 последовательно могут быть прочитаны абсолютные
значения разрядов каждой плоскости видео буфера. В режиме чтения 1, как правило, выполняется логическое
чтение атрибутов точки, т.е. проверяется факт совпадения атрибута
читаемой точки с установленным значением регистра цветового
сравнения. В случае совпадения в соответствующем разряде байта
при чтении возвращается единица. Дополнительно может
использоваться регистр игнорирования цвета при сравнении,
обеспечивающий функцию ИЛИ при этой логической операции. Подробно
чтение в режиме 1 рассмотрено в приложении 1 программа Check_Color .