ВВЕДЕНИЕ
Изначально персональные компьютеры IBM PC комплек-товались видеоадаптером MDA с монохромным диплеем. Этот адаптер имел небольшую разрешающую способность, не мог оторажать графическую информацию и был монохром-ным. Через некоторое время небольшая фирма Hercules Computer Technology выпустила монохромный видеоадаптер Hercules, который имел возможность вывода графики и имел большую разрешающую способностью
CGA стал первым цветным видеоадаптером фирмы IBM. Он уже обеспечивал возможность отбражать цветную графи- ческую и текстовую информацию, но имел слишком маленькую разрешающую способность. Затем IBM выпустила два, наиболее распространенных в настоящее время видео- адаптера EGA и VGA. Они созданы на другой элементной базе и имеют лучшую, чем у CGA, разрешающую способность при большем числе отображаемых цветов.
В последнее время различные фирмы -- производители видеоадаптеров выпустили большое количество плат, превосходящим по своим возможностям VGA. Эти платы, которые можно объединить под общмим названием Super VGA, не имеют пока единого стандарта.
Фирма IBM начала выпуск нового видеоадаптера XGA, который, как предполагается, станет новым стандартом для компьютеров на базе процессоров Intel 386/486... Видеоадаптер содержит встроенный графический процессор, значительно увеличивающий его возможности и скорость работы. XGA аппаратно поддерживает перерисовку изображений в окнах экрана. При обмене данными между видеопамятью и основной памятью сам XGA вместо цетрального процессора реализует управление шиной данных, что позволяет быстро передавать изображение на экран.
Следует также отметить, что предусмотрена совмести-мость видеоадаптеров VGA и XGA на уровне регистров.
Базовая конфигурация XGA содержит 512 Кбайт видеопамяти, что обеспечивает разрешение 1024*768 пикселов при 16 цветах. Увеличение объема видеопамяти до 1Мбайта притой же разрешающей способности позволяет получить 256 цветов.
АРХИТЕКТУРА ВИДЕОАДАПТЕРОВ EGA И VGA
Видеоадаптеры EGA и VGA условно делятся на шесть логических блоков, описание которых приведены ниже:
1. Видеопамять. В видеопамяти размещаются данные, отбражаемые адаптером на экране дисплея. Для EGA и VGA видеопамять обычно имеет объем 256 Кбайт, на некоторых моделях SVGA и XGA объем видеопамяти может быть увеличен до 2Мбайт. Видеопамять находится в адресном пространстве процессора и программы могут непосредственно производить с ней обмен данными. Физически видеопамять разделена на четыре банка, или цветовых слоя, использующих совместное адресное пространство.
2. Графический контроллер. Посредством его происходит обмен данными между центральным процессором и видеопамятью. Аппаратура графического контроллера позволяет прозводить над данными, поступающими в видеопамять и расположенными в регистрах-защелках простейшие логические операции.
3. Последовательный преобразователь. Выбирает из видеопамяти один или несколько байт, преобразует их в поток битов, затем передает их контроллеру атрибутов.
4. Контроллер ЭЛТ. Контроллер генерирует временные синхросигналы, управляющие ЭЛТ.
5. Контроллер атрибутов. Преобразует информацию о цветах из формата. в котором она хранится в видеопамяти, в формат, необходимый для ЭЛТ.
6. Синхронизатор. Управляет всеми временными параметрами видеоадаптера. Синхронизатор также управляет доступом процессора к цветовым слоям видеоадаптера.
Видеопамять адаптеров EGA и VGA разделена на четыре
банка, или на четыре цветовых слоя. Эти банки размещаются в одном адресном пространстве таким образом, что по каждому адресу расположено четыре байта (по одному байту в каждом банке). Какой из банков памяти используется для записи или чтения данных процессором, определяется при помощи установки нескольких регистров адаптера.
Так как все четыре банка находятся в одном адресном пространстве, то процессор может производить запись во все четыре банка за один цикл записи. Благодаря этому некоторые операции, например заполнение экрана, происходят с большей скоростью. В том случае, когда записсь во все четыре банка не требуется, можно разрешать или запрещать запись во все четыре банка при помощи регистра разрешения записи цветового слоя.
Для операции чтения в каждый момент времени может быть разрешен с помощью регистра выбора читаемого цветового слоя только один цветовой слой.
В большинстве режимов видеоадаптера видеопамять разделена на несколько страниц. При этом одна из них является активной и отображается на экране. При помощи функций BIOS или программирования регистров видео-адаптера можно преключать активные страницы видеопамяти. Выводж информации может производиться как в активную, так и в неактивные страницы видеопамяти.
Текстовый режим.
В текстовых режимах на экране могут отображаться только текстовые символы. Стандартные текстовые режимы позволяют выводить на экран 25 строк по 40 или 80 символов. Для кодирования каждого знакоместа экрана используется два байта: первый из них содержит ASCII код отображаемого символа, второй -- атрибуты символа. ASCII коды символов экрана располагаются в нулевом цветовом слое, а их атрибуты -- в первом цветовом слое. Атрибуты определяют цвет символа и цвет фона. Благодаря такому режиму хранения информации достигается значительная экономия памяти. При отображении
символа на экране происходит преобразование его из формата ASCII в двумерный массив пикселов, выводимых на экран. Для этого преобразования используется таблица трансляциии символов (таблица знакогенератора). Таблица знакогенератора хранится во втором слое видеопамяти. При непосредственном доступе к видеопамяти нулевой и первый цветовые слои отображаются на общее адресное пространство с чередованием байтов из слоев. Коды символов имеют четные адреса, а их атрибуты -- нечетные.
При установке текстовых режимов работы видеоадаптеров EGA и VGA BIOS загружает таблицы знакогенератора из ПЗУ во второй цветовой слой видеопамяти. Впоследствие таблицы используются при отображении символов на экране. Благодаря этому можно легко заменить стандартную таблицу знакогенератора своей собственной. Это широко применяется при русификации компьютеров.
EGA и VGA обеспечивают возможность одновременной загрузки соответственно четырех и восьми таблиц знакогенераторов в память. Каждая таблица содержит описание 256 символов. Одновременно активными могут быть одна или две таблицы знакогенератора. Это дает возможность одновременно отображать на экране до 512 символов. При этом один бит из байта атрибутов указывает, какая из активных таблиц знакогенератора используется при отображении данного символа. Номера активных таблиц знакогенератора определяются регистром выбора знакогенератора.
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 содержат номер плоскости для чтения, а остальные не используются.