Как мы уже указывали, графический контроллер поддерживает обмен данными между процессором и видеопамятью. При этом он может выполнять простейшие логические операции над записываемыми в видеопамять данными. Грфический контроллер передает также данные из цветовых слоев видеопамяти - контроллеру атрибутов в случае использования графического режима работы видеоадаптера.
Графический контроллер содержит девять регистров. Обращение к ним происходит через индексный порт с адресом 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), поступает в графический контроллер. В соответствии со значением регистра циклического сдвига и выбора функции, происходит циклический сдвиг на один бит содержимого записываемого в видеопамять байта. Затем результат складывается по логике ИЛИ с содержимым регистров-защелок. Какая булева функция используется - ИЛИ, И, ИСКЛЮЧАЮЩЕЕ ИЛИ также определяется регистром циклического сдвига и выбора функции.
Дальнейшие преобразования происходят в соответствии со значениями регистра разрешения установки/сброса и регистра установки/сброса:
Затем в соответствии с состоянем регистра битовой маски происходит запись данных в видеопамять: