Видеоадаптеры EGA, VGA

EGA поддерживает два размера для матриц символов: 8×8 и 8×14 пикселов. Один из этих наборов символов автоматически загружается BIOS в видеопамять при выборе текстового режима. Так как VGA имеет большую разрешающую способность, то его матрица символа имеет размеры 9×16. На каждый символ отводится 32 байта. Первая таблица имеет в видеопамяти адреса: 0000h—1FFFh, вторая: 2000h—3FFFh,…, восьмая: E000h—FFFFh.

Каждый символ, отображаемый на экране в текстовом режиме, определяется не только своим ASCII кодом, но и байтом атрибутов. Атрибуты задают цвет символа, цвет фона, а также некоторые другие параметры. Биты D0—D2 байта атрибутов задают цвет символа, D4—D6 цвет фона. Если активной является одна таблица знакогенератора, то D3 используется для управления интенсивностью цвета символа, что позволяет увеличить количество воспроизводимых цветов до 16. Если одновременно определены две таблицы знакогенератора, то D3 задает таблицу знакогенератора, которая будет использована для отображения данного символа. Бит D7 выполняет две различные функции в зависимости от состояния регистра режима контроллера атрибутов. Данный бит либо управляет интенсивностью цвета фона, увеличивая количество отображаемых цветов до 16, либо разрешением гашения символа, в результате чего символ на экране будет мигать. По умолчанию данный бит управляет разрешением гашения символа.

Видеопамять в графических режимах: Распределение видеопамяти в графических режимах работы адаптеров отличается от распределения видеопамяти в текстовых режимах. Ниже рассмотрена структура распределения видеопамяти отдельно для каждого графического режима.

Режимы 4 и 5.

Это режимы низкого разрешения (320×200), используются 4 цвета. Поддерживаются видеоадаптерами CGA, EGA и VGA. У EGA и VGA видеоданные расположены в нулевом цветовом слое, остальные слои не используются. Для совместимости с CGA отображение видеопамяти на экране не является непрерывным: первая половина видеопамяти (начальный адрес В800: 0000) содержит данные относительно всех нечетных линий экрана, а вторая (начальный адрес В800: 2000) — относительно всех четных линий. Каждому пикселу соответствует два бита видеопамяти. За верхний левый пиксел экрана отвечают биты D7 и D6 нулевого байта видеопамяти. В режимах 4 и 5 имеются два набора цветов: стандартный и альтернативный: 00 — черный; 01 — светло-синий (зеленый); 10 — малиновый (красный); 11 — ярко-белый (коричневый).

Режим 6.

Режим 6 является режимом наибольшего разрешения для CGA (640×200). Видеоадаптеры EGA и VGA используют для хранения информации только нулевой слой. Как и в режимах 4 и 5 первая половина видеопамяти отвечает за нечетные линии экрана, а вторая половина — за четные. В данном режиме на один пиксел отводится один бит видеопамяти. Если значение бита равно 0, то пиксел имеет черный цвет, а если единице — то белый.

Режимы 0Dh и 0Еh.

Разрешающая способность в режиме 0Dh составляет 320×200, а в режиме 0Eh 640×200 пикселов. Данный режим поддерживается только видеоадаптерами EGA и VGA. Для хранения видеоданных используются все четыре цветовых слоя. Адресу видеопамяти соответствуют четыре байта, которые вместе определяют восемь пикселов. Каждому пикселу соответствуют четыре бита — по одному из каждого цветового слоя. Четыре бита на пиксел, используемые в данных режимах, позволяют отображать 16 различных цветов. Запись в каждый из этих цветовых слоев можно разрешить или запретить при помощи разрешения записи цветового слоя. Управление доступом к цветовым плоскостям осуществляется при помощи регистров: Адресный регистр графического контроллера, порт вывода для этого регистра 3CEh; биты 0—3 содержат адрес регистра, остальные не используются. Регистр цвета: для доступа к этому регистру значение адресного регистра должно быть 00h, адрес порта вывода для этого регистра 3CFh; биты 0—3 определяют значение для соответствующей плоскости, остальные не используются. Регистр разрешения цвета: для доступа к этому регистру значение адресного регистра должно быть 01h, адрес порта вывода для этого регистра 3CFh; биты 0—3 означают разрешение соответствующего слоя, а остальные не используются. Регистр выбора плоскости для чтения: для доступа к этому регистру значение адресного регистра должно быть 04h, адрес порта вывода для этого регистра 3CFh; биты 0—2 содержат номер плоскости для чтения, а остальные не используются.