Программирование видеоадаптеров

       

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


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

Графический контроллер содержит девять регистров. Обращение к ним происходит через индексный порт с адресом 3CEh и порт данных с адресом 3CFh. Адаптер 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)

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

Байт, записываемый центральным процессором в видеопамять (11100001b), поступает в графический контроллер. В соответствии со значением регистра циклического сдвига и выбора функции, происходит циклический сдвиг на один бит содержимого байта, записываемого в видеопамять.

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

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


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

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

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

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

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



PICTURE._FIG_40.PCX;6";4.308";PCX

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

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


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