Видео подсистемы

09/27/94 06:45am video.lek
П.Нортон, Р.Уилтон "IBM PC и PS/2 руководство по программированию" перевод В.Н.Григорьева М "Радио и связь" 1994

Видео подсистемы.

ВИДЕОПОДСИСТЕМА - комплекс средств, предназначенный для формирования изображения на экране видеотерминала.

Ядром видеоподсистемы является ВИДЕОМИКРОСХЕМА, осуществляющая синхронизацию работы оборудования. Кроме этого видеоподсистема имеет ВИДЕОБУФЕР для хранения отображаемой информации.
Различают:

  1. Монохромный дисплейный адаптер (MDA);

  2. Цветной графический адаптер (CGA);

  3. Улучшенный графический адаптер (EGA);

  4. Многоцветный графический массив (MCGA);

  5. Видеографический массив (VGA).

Все (кроме MDA) видеоподсистемы могут работать в ТЕКСТОВОМ и ГРАФИЧЕСКОМ режимах. В текстовом режиме можно создавать простые картинки, используя псевдографические символы.

Память видеоподсистемы.

Буфермая память видеоподсистем подключена к видеомикросхеме. Однако она доступна и со стороны центрального процессора. Всего отведено 128К адресного пространства. MDA использует 4К начиная с сегмента B000h, а CGA 16К с B800h.

Другие подсистемы не имеют фиксированного адреса. Адрес зависит от текущего режима. В любом случае если аналогичный режим доступен в MDA или CGA, то адреса совподают; иначе используется сегмент A000h.

Формирование изображения на экране.

Каждая позиция на экране соответствует определенной ячейке видеобуфера. Видеомикросхема постоянно считывает информацию из памяти и регенерирует изображение на экране. В зависимости от режима информация обновляется от 50 до 70 и более раз в секунду.

При применении CGA необходимо обеспечить запись информации в видеобуфер во время "обратного хода луча" для устранения помех. В это время (1.25 мс) значение бита 3 порта 3DAh равно 1. При работе с другими адаптерами или через BIOS такой синхронизации не требуется.

Режимы работы адаптеров.

Первоначально существовал один режим для MDA и семь для CGA. Более сложные адаптеры обеспечили несколько новых режимов и ввели модификации существующих.

При создании программного продукта необходимо учитывать, что у потребителя может не оказаться соответствующего оборудования. Поэтому если нет принципиальных ограничений по качеству изображения следует применять более простой режим (CGA, EGA) или при установке продукта настраивать программу на существуюшее оборудование.

Служба 00h прерывания 10h обеспечивает возможность выбора режима по его номеру. Можно осуществлять установку режима командой MODE системы MS DOS.

Разрешающая способность дисплея.

Изображение складывается из большого числа близкорасположенных ПИКСЕЛОВ.
Разрешающая спрсобность определяется количеством СКАНИРУЕМЫХ СТРОК и оличеством пикселов в каждой строке; и ограничивается возможностями видеомонитора и видеомикросхемы.

Использование цвета.

В каждом видеорежиме имеется множество цветов. Цвета формируются из трех цветовых компонент: красной (R), зеленой (G), синей (B); и компонент интенсивности (I). В текстовых режимах раскраска осуществляется посимвольно, для чего отводится байт; в графических для каждого пиксела выделяется от 1 до 8 битов.

Возможно несколько способов кодирования цветов:

1 В наиболее простых случаях для обозначения цвета символа и фона отводится по 4 бита, каждый из которых отвечает за свою компоненту (IRGB);

2 В некоторых видеорежимах значение атрибута затает один из возможных регистров палитры. Именно содержимое регистра палитры определяет цвет, что позволяет практически мгновенно менять цвет картинки или убирать фрагменты изображения. Кроме этого такое решение позволяет иметь большую цветовую гамму, но требует наличия ЦИФРОАНАЛОГОВО ВИДЕОПРЕОБРАЗОВАТЕЛЯ (video Digital to Analog Converter).

адаптер

регистров

цветов

CGA

3

4

EGA

16

64

MCGA

256

64*3

3 В адаптере VGA осуществляется двойное преобразование: значение атрибута задает идин из 16 регистров палитры, по его содержимому выбирается один из 256 регистров цвета DAC, определяющий цвет на экране. Такое решение уменьшает размер видеобуфера и позволяет во всех режимах использовать все многообразие цветов (не одновременно!). При инициализации системы устанавливаются цвета совместимые с CGA.

Службы BIOS позволяют изменять палитры по желанию программиста.

Режимы с подавлением цвета.

Для обеспечения совместимости видеорежимов для цветных и монохромных мониторов введены режимы с подавлением цвета (0, 2, 5). В этих режимах цвета преобразуются в оттенки серого или иного основного цвета.

Цвет в текстовом режиме.

Оба режима используют одну микросхему кодирования цвета, но отличаются способом хранения атрибутов цвета. В текстовом режиме каждому знакоместу соответствует идин байт атрибутов:

Установка цвета.

В текстовых режимах для каждого символа отводится два смежных байта видеопамяти. Первый содержит ASCII код отображаемого символа, второй - атрибут. Назначение отдельных битов может быть изменено настройкой регистров адаптера.

В графических системах нет понятия фона, каждый пиксел непосредственно связан с цветом. В зависимости от режима 1, 2, 4 или 8 бит видеопамяти рассматриваются как одна точка с соответствующим кодом цвета (номером регистра текущей палитры).

Страници видеопамяти.

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

Управление страницами в текстовом режиме осуществляется службой 05h прерывания 10h.
Страница всегда начинается с границы четного килобайта!

Вывод знаков на экран.

Вывод знаков можно осуществлять через стандартные службы BIOS или непосредственно в видеопамять. Если использучется текстовый режим то знаки записываются последовательно с атрибутами начиная с начального адреса страницы в "нормальной форме". Разложение знаков на составляющие в этом случае осуществляется ЗНАКОГЕНЕРАТОРОМ.

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

1 В двухцветном режиме 640*200 пикселы строк счетными номерами хранятся с адреса B800:0000h, а нечетных строк с адреса B800:2000h.

2 В шестнадцатицветных режимах EGA и VGA видеобуфер организован в виде набора из 4-х параллельных областей по 64К садреса A000:0000h и имеется специальная микросхема для записи во все области одновременно.

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

Курсор.

Курсор генерируется видеомикросхемой и его вид может быть изменен. В любом случае курсор будет занимать некоторое количество строк. Номера начальной и конечной строки задаются программно службой 01h прерывания 10h. Можно управлять положением курсора службой 02h. Текущее положение и размер может быть получен через службу 03h. Указанные службы работают в текстовом и графическом режимах.

Иногда применяются псевдокурсоры. Для этого настоящий курсор устанавливается на несуществующую строку, а в качестве указания позиции используется один из допустимых символов.


Stay-at-home