Программирование видеоадаптеров CGA, EGA и VGA

       

Регистры графического контроллера


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

Графический контроллер содержит девять регистров. Обращение к ним происходит через индексный порт с адресом 3CEh и порт данных с адресом 3CFh. Список регистров приведен в таблице 8.14.

Адаптер EGA имеет еще два порта с адресами 3CAh и 3CCh, используемых при инициализации видеоадаптера.



Индекс регистра Регистр графического контроллера
0 регистр установки/сброса (Set/Reset Register - SRR)
1 регистр разрешения установки/сброса (Set/Reset Enable Register - SRER)
2 регистр сравнения цветов (Color Compare Register - CCR)
3 регистр циклического сдвига и выбора функции (Data Rotate & Function Select - DRFS)
4 регистр выбора читаемого слоя (Read Plane Select Register - RPSR)
5 регистр режима работы (Mode Register - MDR)
6 регистр смешанного назначения (Miscellaneous Register - MIR)
7 регистр маскирования цветовых слоев (Color Don't Care Register - CDCR)
8 регистр битовой маски (Bit Mask Register - BMR)

Таблица 8.14 Регистры графического контроллера.

Большинство регистров графического контроллера могут использоваться при программировании, поэтому регистры графического контроллера будут описаны полностью.

Ниже, на рисунке 8.10, демонстрируются функции, выполняемые графическим контроллером. Рассмотрм функционирование графического адаптера.

Байт, записываемый процесором в видеопамять (11100001b), поступает в графический контроллер. В соответствии со значением регистра циклического сдвига и выбора функции, происходит циклический сдвиг на один бит содержимого записываемого в видеопамять байта. Затем результат складывается по логике ИЛИ с содержимым регистров-защелок. Какая булева функция используется - ИЛИ, И, ИСКЛЮЧАЮЩЕЕ ИЛИ также определяется регистром циклического сдвига и выбора функции.


Дальнейшие преобразования происходят в соответствии со значениями регистра разрешения установки/сброса и регистра установки/сброса:

  • Если бит регистра разрешения установки/сброса, управляющий данным цветовым слоем равен нулю, то байт, записываемый в видеопамять не изменяется.


  • Если бит регистра разрешения установки/сброса, управляющий данным цветовым слоем равен единице, то в него записывается байт, все биты которого устанавливаются в соответствии со значением регистра установки/сброса для данного цветового слоя.


  • Затем в соответствии с состоянем регистра битовой маски происходит запись данных в видеопамять:

  • Если данный бит регистра битовой маски содержит единицу, то соответствующие биты для каждого из цветовых слоев поступают из видеопамяти.


  • Если данный бит регистра битовой маски содержит ноль, то соответствующие биты для каждого из цветовых слоев поступают от регистров-защелок.




  • Рисунок 8.10 Функции графического контроллера.

    Теперь рассмотрим регистры графического контроллера более подробно.


    Содержание раздела