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