Базовые операции EGA
🕛 28.12.2008, 20:01
Алфавитноцифровые видеорежимы Формат данных для алфавитноцифровых режимов EGA совпадает с форматом данных адаптеров CGA и MDA. Однако, применительно к EGA третий бит байта атрибутов, может быть переопределен и использовать ся в качестве бита управления шрифтом при выводе символа на экран. Это дает пользователю возможность одновременного использования 512 символьного набора при условии, что размер видеобуфера не менее 128 Кб.
При установке одного из возможных алфавитноцифровых видеорежи мов, программы BIOS загружают шрифт из ПЗУ в битовую плоскость 2. Коды символов, поступающие со стороны процессора хранятся в 0 бито вой плоскости, а байты атрибутов в битовой плоскости 1. Блок управ ления ЭЛТ формирует последовательные адреса и одновременно выбирает соответствующие код символа и байт атрибута. По коду символа и но меру сканируемой строки растра из плоскости 2 выбирается соответст вующий байт из растра текущего символа. После этого этот байт пере дается контроллеру атрибутов и в нем, на основании значения байта атрибутов, формируется подаваемая на вход монитора последователь ность сигналов цветности.
  Графические режимы
4х цветные графические режимы с разрешением 320x200 (режимы 4,5)
Указанные видеорежимы аналогичны графическому режиму с разреше нием 320 x 200 адаптера CGA. Адрес начала видеобуфера B8000. Изобра жение хранится в битовых плоскостях 0 и 1.
Монохромный графический режим 640х200 (режим 6)
Адресация, распределение и формат данных такой же, как и в чер нобелом режиме 640 x 200 CGA. Адрес начала видеобуфера B8000. Изоб ражение хранится в 0 битовой плоскости.
Монохронная графика 640 x 350 (видеорежим F)
Данный режим может быть использован при наличии монохроннго мо нитора. В этом режиме каждая точка может быть одного из следующих типов: темная, видимая, мерцающая видимая и видимая повышенной яр кости. Для работы в этом режиме необходимо 56 Кб рамяти. Связывая в цепочки битовые плоскости 0, 1 и отдельно 2 и 3, можно сформировать две битовые плоскости размером по 32 Кб. Такое связывание выполняет ся только при необходимости (если размер видеобуфера менее 128 Кб) Первая битовая плоскость это битовая плоскость видимости, а вторая яркости. Обе плоскости находятся по адресу A0000. Два бита, по одному в каждой плоскости, определяют один элемент изображения (пиксел) на экране. Тип выводимой точки и соответствую щие ему значения приведены в таблице. Битовые плоскости обозначены C0 и C2.
┌─────┬─────┬───────────────────────┬─────────────────────────────┐ │ C2 │ C0 │ Цвет пиксела │ Значение атрибута │ ├─────┼─────┼───────────────────────┼─────────────────────────────┤ │ 0 │ 0 │ темный │ 0 │ │ 0 │ 1 │ видимый │ 3 │ │ 1 │ 0 │ мерцающий видимый │ C │ │ 1 │ 1 │ интенсивный видимый │ F │ └─────┴─────┴───────────────────────┴─────────────────────────────┘
Организация байтов в памяти последовательная. Первые 8 пикселов определяются значением байта в памяти A000:0, вторые восемь пикселов значением по адресу A000:1 и т.д. Первый пиксел в любом байте оп ределяется 7ым битом в байте, а последний пиксел байта битом 0. Монохромная графика работает в режиме чет/нечет. Это означает что данные с четными адресами, записывются в четную битовую плос кость, а с нечетными адресами в нечетную битовую плоскость. Так как обе битовые плоскости размещаются по адресу A0000, пользователь дол
 
жен определить в какой битовой плоскости необходимо произвести изме нение. Это выполняется при помощи регистра маски плоскости (map mask register) блока синхронизации. Цветной графический режим 16/64 (режим 10h)
В этом видеорежиме используются все 4 битовые плоскости. Соот ветствие цветов значениям в битовых плоскостях дается в приведенной ниже таблице. Битовые плоскости обозначены C0, C1, C2 и C3. C0 = синие пикселы С1 = зеленые пикселы С2 = красные пикселы С3 = повышенная яркость
Четыре бита (по одному из каждой плоскости) определяют цвет од ного пиксела на экране. ┌─────┬─────┬─────┬─────┬──────────────────────────────────────────┐ │ I │ R │ G │ B │ Цвет │ ├─────┼─────┼─────┼─────┼──────────────────────────────────────────┤ │ 0 │ 0 │ 0 │ 0 │ Черный │ │ 0 │ 0 │ 0 │ 1 │ Синий │ │ 0 │ 0 │ 1 │ 0 │ Зеленый │ │ 0 │ 0 │ 1 │ 1 │ Сероголубой │ │ 0 │ 1 │ 0 │ 0 │ Красный │ │ 0 │ 1 │ 0 │ 1 │ Малиновый │ │ 0 │ 1 │ 1 │ 0 │ Коричневый │ │ 0 │ 1 │ 1 │ 1 │ Белый │ │ 1 │ 0 │ 0 │ 0 │ Темносерый │ │ 1 │ 0 │ 0 │ 1 │ Светлосиний │ │ 1 │ 0 │ 1 │ 0 │ Светлозеленый │ │ 1 │ 0 │ 1 │ 1 │ Светлосероголубой │ │ 1 │ 1 │ 0 │ 0 │ Светлокрасный │ │ 1 │ 1 │ 0 │ 1 │ Светломалиновый │ │ 1 │ 1 │ 1 │ 0 │ Желтый │ │ 1 │ 1 │ 1 │ 1 │ Яркобелый │ └─────┴─────┴─────┴─────┴──────────────────────────────────────────┘
Видеобуфер раэмещается по адресу A0000. Для выбора плоскости в которую производится запись используется регистр маски плоскости (map mask register) блока синхронизации.
Отображение кодов цветов на экране
Расширенный графический адаптер поддерживает графику 640 x 350 как при использовании монохромного, так и при использовании усовер шенствованного цветного монитора IBM. Если в видеоадаптере не ис
 
пользуется плата расширения видеопамяти, возможности вывода ограни чены 4мя цветами. Если в адаптере установлено 128 Кб памяти и бо лее, могут быть использованы все 16 цветов. В данном разделе описы ваются особенности представления цветов в зависимости от объема ус тановленной в адаптере памяти. Заметим, что цвета с кодами 0,1,4 и 7 инвариантны к размеру графической памяти.
┌────────────┬────────────────┬───────────────┬────────────────────┐ │ Код │ Монохронный │ Режим 10Н │ Режим 10Н │ │ цвета │ │ 64Кбайт │ >64Кбайт │ ├────────────┼────────────────┼───────────────┼────────────────────┤ │ 00Н* │ Черный │ Черный │ Черный │ │ 01H* │ Видео │ Синий │ Синий │ │ 02H │ Черный │ Черный │ Зеленый │ │ 03H │ Видео │ Синий │ Сероголубой │ │ 04H* │ Мерцание │ Красный │ Красный │ │ 05H │ Интенсивный │ Белый │ Малиновый │ │ 06H │ Мерцание │ Красный │ Коричневый │ │ 07H │ Интенсивный │ Белый │ Белый │ │ 08H │ Черный │ Черный │ Темносерый │ │ 09H │ Видео │ Синий │ Светлосиний │ │ 0AH │ Черный │ Черный │ Светлозеленый │ │ 0BH │ Видео │ Синий │ Светлосероголубой│ │ 0CH │ Мерцание │ Красный │ Светлокрасный │ │ 0DH │ Интенсивный │ Белый │ Светломалиновый │ │ 0EH │ Мерцание │ Красный │ Желтый │ │ 0FH │ Интенсивный │ Белый │ Яркобелый │ └────────────┴────────────────┴───────────────┴────────────────────┘
Отмеченные "*" цвета не зависят от размера видеобуфера.