logo
Выч

3.3. Прямое программирование видеосистем.

Видеоадаптеры можно программировать прямыми методами, т.е. непосредственно адресовать данные в регистры адаптера, игнорируя программные прерывания. Прямое программирование позволяет существенно повысить скорость обновления изображение на мониторе.

Графический контроллер VGA программируется путем использования следующих основных регистров:

0

РУС

- регистр установки \ сброса,

1

РРУС

- регистр разрешения установки \ сброса,

2

РСЦ

- регистр сравнения цвета,

3

РВФ

- регистр выбора функции,

4

РВП

- регистр выбора плоскости,

5

РГР

- регистр графического режима,

6

РСВ

- регистр смешанного вывода,

7

РБЦ

- регистр безразличия цвета,

8

РМБ

- регистр битовой маски.

Запись и чтение команд и данных осуществляется через порты с адресами: 3CEh - регистр адреса, 3CFh - регистр данных.

Организация взаимодействия регистров графического контроллера в режиме записи 0А показана на рис.3.3.

Рис.3.3. Режим записи 0А (точечный) адаптера VGA.

Режим записи 0А позволяет устанавливать заданный в РУС цвет точкам изображения. Данная операция осуществляется с учетом содержимого РМБ, который содержит 1 в тех битах, куда заносится цвет из РУС. Для пикселов, соответствующих 0 в битах РМБ, цвет берется из соответствующих битов регистров-фиксаторов (РФ) и комбинируется с содержимым РУС. В РВФ задается номер логической операции, осуществляемой над содержимым РУС и РФ, для получения их комбинации. Новый фрагмент изображения формируется в четырех байтах битовых плоскостей (БП). РРУС содержит в младшей тетраде число Fh, что соответствует режиму 0А, если эта тетрада равна 0, то значит задан режим 0В, схема которого показана на рис.3.4.

Рис.3.4. Режим записи 0В (байтовый) адаптера VGA.

В этом режиме новый фрагмент изображения формируется на основе комбинирования содержимого РФ и младшего байта одного из регистров процессора (РП). Во всех режимах РВФ в битах 0-2 содержит величину сдвига, а в битах 3 и 4 - код логической операции: 00 - замена, 01 - AND, 10 - OR, 11 - XOR.

Самую простую схему имеет режим записи 1, которая приведена на рис.3.5. В этом режиме содержимое РФ просто копируется в БП.

Рис.3.5. Режим записи 1 адаптера VGA.

Режим записи 2 является упрощенным вариантом режима 0А, в котором новый цвет пикселов берется из РП. Функции РВФ, РМБ и РФ полностью аналогичны указанному режиму.

Рис.3.6. Режим записи 2 адаптера VGA.

Режим записи 3 аналогичен режиму 0А. В этом режиме положение копируемых и комбинируемых пикселов определяется помимо РМБ содержимым РП и РВФ в соответствии с рис.3.7.

Рис.3.7.Режим записи 3 адаптера VGA.

Режимы чтения предназначены для копирования в регистр процессора определенной компоненты изображения. Режим чтения 0 копирует в РП байт одной из битовых плоскостей, номер которой задается в РВП, как показано рис.3.8.

Рис.3.8. Режим чтения 0 адаптера VGA.

В режиме чтения 1 в РП попадает результат сравнения цвета восьми пикселов с цветом, код которого занесен в РСЦ. Если цвет совпадает, то соответствующий бит РП оказывается равным 1. Если определенные биты РБЦ равны 0, то соответствующие битовые плоскости не участвуют в процессе сравнения. Схема режима приведена на рис.3.9.

Рис.3.9. Режим чтения 1 адаптера VGA.

Инициализация указанных режимов происходит при выполнении байтовых команд MOV, LODS, CMP, STOS, XOR, OR, AND c соответствующей их формату адресацией.

Прямое программирование адаптеров в режимах SVGA имеет подобную структуру, но состав, структура и адресация дополнительных регистров видеопроцессора не стандартизованы и зависят от конкретного разработчика.