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


Исполнение видеоадаптером операции записи


При чтении процессором данных из видеопамяти они также запоминаются в регистрах-защелках, расположенных на плате видеоадаптера. Когда затем выполняется цикл записи, то над данными, находящимися в этих регистрах, и над данными, поступающими от процессора могут производится следующие логические операции:

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

Таким образом, видеоадаптер может выполнять часть работы по обработке видеоданных.

Рисунок 6.16 иллюстрирует выполнение графическим контроллером операции записи данных в видеопамять:

Рисунок 6.16 Запись данных в видеопамять.

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

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

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

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

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

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




Начало  Назад  Вперед