Рассмотрим организацию оперативных запоминающих устройств видеоадаптеров (ОЗУВ) CGA, EGA и их подобных. Дело в том, что ОЗУВ работает по-разному в зависимости от того, в каком режиме находится адаптер. Например, CGA использует способ хранения информации, при котором на один пиксел экрана приходится несколько последовательных битов в ОЗУВ, а EGA и VGA использует способ так называемого многоплоскостного хранения информации.
22.1. Многобитовое и многоплоскостное ОЗУВ
Простейший способ хранения информации — последовательный. Для графического режима 320x200, 4 цвета, в ОЗУВ на каждый пиксел расходуется 2 бита, которые позволяют получить четыре значения: 00, 01, 10, 11. Таким образом, в одном байте ОЗУВ может храниться четыре пиксела. А для графического режима 640x200, 2 цвета, только один бит необходим для представления каждого пиксела (так как надо всего два значения: 0 и 1 — выключен и включен). При многоплоскостном ОЗУВ адаптеры VGA и EGA хранят изображение как четыре отдельные картинки. Каждая картинка называется битовой плоскостью. Каждая битовая плоскость хранит изображение в одном из трех основных цветов, используемых EGA и VGA — красном, зеленом, синем и в так называемой плоскости яркости. Адаптеры VGA и EGA одновременно читают соответствующие биты со всех четырех плоскостей и определяют, каким из 16 доступных цветов должен быть показан указанный пиксел на экране дисплея. Так как каждая битовая плоскость может принимать значение 0 или 1, то все четыре битовые плоскости дадут нам диапазон от 0000 до 1111 в двоичной системе счисления (т.е. от 0 до 15, итого 16 вариантов). Для наглядности можно представить, что эти четыре плоскости представляют своеобразный «бутерброд» (рис. 22.1).
Для адаптера VGA существуют некоторые особенности в методе показа точек на экране, так как он имеет аналоговое регулирование яркости, позволяющее плавно управлять яркостью каждой точки от
- 515 -
Рис. 22.1
максимальной до минимальной. Однако в режиме эмуляции EGA адаптер VGA полностью ему аналогичен.
22.2. Карта дисплейной памяти
На всех IBM-совместимых ПЭВМ область ОЗУ размером 256K, расположенная сразу за верхней границей оперативной памяти (640K), отведена под память видеоадаптеров дисплея (рис. 22.2).
Рис. 22.2
Отметим, что на ПЭВМ серии PS/2 пользователю доступен весь мегабайт ОЗУ, а оставшиеся 360K, отведенные под ОЗУВ, размещены сразу за ним и не отображаются на дисплейную память.
На рис. 22.3 показано, как используется 256-килобайтный блок ОЗУВ. Если на ПЭВМ стоит адаптер CGA, то задействовано только 16K ОЗУВ, начинающиеся с адреса $В8000 или $В800:$0 (736K). Если же на ПЭВМ установлен адаптер EGA и VGA, то тогда используются все 256K.
- 516 -
Рис. 22.3
На рис. 22.4 показано, как используются 16K ОЗУ В в адаптере CGA. Первые 8K ОЗУВ заняты четными строками изображения на экране. Вторые 8К заняты нечетными строками изображения. Такое построение ОЗУВ дает мерцание экрана и обусловливает медленную скорость работы адаптера и монитора. Так как каждый блок использует ровно 8000 байт, то остаются две области по 192 байт.
Рис. 22.4
Адаптеры VGA и EGA в своих стандартных режимах не используют метод хранения «четный-нечетный» — в них работает последовательно-параллельный способ хранения информации (слева-направо, сверху-вниз и по плоскостям). Однако в режимах эмуляции CGA эти адаптеры используют область памяти, начинающуюся с адреса $В800:0.
При разрешении экрана 640x200, 16 цветов, EGA и VGA работают в так называемом многостраничном режиме. В ОЗУВ располагаются четыре видеостраницы (рис. 22.5).
Рис. 22.5
- 517 -
Каждая из этих страниц представляет собой область, соответствующую экрану дисплея. Так как каждая страница на одной битовой плоскости занимает 640x200/8=16000 байт, а ОЗУВ предоставляет 16384 байт, то 384 байт на каждой битовой плоскости остается свободными.
Как видно из рисунка, первые 64K ОЗУВ содержат только битовую плоскость 0 каждой страницы. Каждый следующий блок содержит соответственно битовые плоскости 1, 2 и 3 для всех четырех страниц. Запомните, только первые 64K ОЗУВ могут быть непосредственно доступны для программ, использующих прямой доступ к памяти. При этом обращение происходит одновременно ко всем четырем битовым плоскостям. Поэтому любое изображение, выполненное таким способом, будет ярко-белым. Для раздельного доступа к битовым плоскостям используются специальные функции контроллера графического дисплея.
Если для разрешения 640x350, 16 цветов, произвести аналогичные расчеты, то получится, что каждая страница в этом режиме занимает 28000 байт ОЗУВ, поэтому здесь можно разместить только две страницы в одной битовой плоскости (рис. 22.6). Таким образом, одна полная страница занимает в ОЗУВ 28000x4=112000 байт.
Рис. 22.6
При работе с разрешением 640x480, 16 цветов, только одна страница ОЗУВ доступна для работы, так как на каждой битовой плоскости требуется 38400 байт, что больше половины сегмента
Рис. 22.7
- 518 -