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 -
Режим 320x200, 16 цветов, — это режим низкого разрешения, поэтому в нем доступны восемь страниц (по 8000 байт каждая) (рис. 22.8). Полный объем, занимаемый изображением на экране, составляет 32000 байт. Заметьте, что в табл. 19.4 при описании процедуры SetGraphMode модуля Graph этот режим не указан, однако включение его возможно.
Рис. 22.8
Режим 320x200, 256 цветов, доступен только для адаптеров, выходной сигнал которых представляется в аналоговом виде: VGA, MCGA, IBM8514. Из-за использования этими адаптерами незначительно измененного многоплоскостного способа хранения информации, одна страница занимает всего 16000 байт на каждой битовой плоскости. Таким образом, имеется возможность хранить четыре страницы видеоинформации (см. рис. 22.5).