В этом разделе приведено описание некоторых видеорежимов для видеоадаптеров CGA, EGA, VGA и, конечно, SVGA. Видеорежимы для адаптеров SVGA указаны в соответствии со стандартом для SVGA адаптеров VESA. Кроме номера видеорежимов и их параметров приведены краткие инструкцие по установке того или иного видеорежима.
Примечание: старшие поколения видеоадаптеров поддерживают все видеорежимы младших поколений. Например, видеоадаптер VGA поддерживает все видеорежимы CGA, а видеоадаптер SVGA поддерживает все видеорежимы CGA, EGA и VGA. В дальнейшем, в таблицах, будут приведены только те видеорежимы, которые характерны для данного типа видеоадаптера.
I. Видеорежимы CGA (Color Graphics Adapter).
Стандартный видеоадаптер CGA имеет 16K байт видеопамяти. Это определяет все его возможные видеорежимы. Все видеорежимы CGA устанавливаются через сервис ROM BIOS 10h, причём в регистре AL должен находиться номер видеорежима, а в регистре AH - 0.
Номер видеорежима | Его атрибуты |
00 | 40 x 25 чёрно-белый текстовый режим |
01 | 40 x 25 стандартный 16-цветовой текстовый режим |
02 | 80 x 25 чёрно-белый текстовый режим |
03 | 80 x 25 стандартный 16-цветовой текстовый режим |
04 | 320 x 200 4-цветовой графический режим |
05 | 320 x 200 чёрно-белый графический режим |
06 | 640 x 200 чёрно-белый графический режим |
Пример установки видеорежима CGA 320x200 4 цвета:
mov ah, 0 mov al, 4 int 10h
II. Видеорежимы EGA (Enhanced Graphics Adapter).
Объём видеопамяти у стандартного видеоадаптера EGA - 128К байт. Установка видеорежимов EGA аналогична установке видеорежимов CGA - через int 10h.
Номер видеорежима | Его атрибуты |
0Dh | 320 x 200 16 цветов |
0Eh | 640 x 200 16 цветов |
0Fh | 640 x 350 4 цветов |
10h | 640 x 350 16 цветов |
III. Видеорежимы VGA (Video Graphics Array).
Стандартный видеоадаптер VGA имеет 256К байт видеопамяти. Установка видеорежимов VGA аналогична установке видеорежимов CGA и EGA - через int 10h.
Номер видеорежима | Его атрибуты |
11h | 640 x 480 2 цвета |
12h | 640 x 480 16 цветов (знаком программистам на Паскале. egavga.bgi. |
13h | 320 x 200 256 (самый культовый видеорежим времён VGA . |
IV. Видеорежимы SVGA (Super Video Graphics Array).
Видеоадаптер SVGA имеет от 512Kб до 32Мб видеопамяти. Большая часть видеопамяти может использоваться не только для хранения изображения, но и для хранения текстур в 3-х мерных играх.
Номер видеорежима | Разрешение | Количество цветов |
100h | 640 x 400 | 256 |
101h | 640 x 480 | 256 |
102h | 800 x 600 | 16 |
103h | 800 x 600 | 256 |
104h | 1024 x 768 | 16 |
105h | 1024 x 768 | 256 |
106h | 1280 x 1024 | 16 |
107h | 1280 x 1024 | 256 |
10Dh | 320 x 200 | 32768 (32K) |
10Eh | 320 x 200 | 65536 (64K) |
10Fh | 320 x 200 | 16777216 (16M) |
110h | 640 x 480 | 32768 (32K) |
111h | 640 x 480 | 65536 (64K) |
112h | 640 x 480 | 16777216 (16M) |
113h | 800 x 600 | 32768 (32K) |
114h | 800 x 600 | 65536 (64K) |
115h | 800 x 600 | 16777216 (16M) |
116h | 1024 x 768 | 32768 (32K) |
117h | 1024 x 768 | 65536 (64K) |
118h | 1024 x 768 | 16777216 (16M) |
119h | 1280 x 1024 | 32768 (32K) |
11Ah | 1280 x 1024 | 65536 (64K) |
11Bh | 1280 x 1024 | 16777216 (16M) |
Для установки видеорижима по стандарту VESA Super VGA служит прерывание BIOS 10h, но в этом случае всё будет немного посложней. В регистр BX заносится номер видеорежима, причём, если старший бит в номере видеорежима выключен, то видеопамять очищается, если включён, то видеопамять не очищается. В регистр AH заносится номер функции для работы с видеоадаптером SVGA - 4Fh, а в регистр AL - номер подфункции для установки видеорежима - 02h. Далее вызывается программное прерывание int 10h и если после этого в регистре AL будет 4Fh, то функция поддерживается BIOS. Если в AL будет 0, то операция установки видеорежима выполнена успешно, если 1, то произошла ошибка (либо у Вас нет видеоадаптера SVGA, либо он не поддерживает данный видеорежим).
Примерно определить, поддерживает ли Ваш видеоадаптер SVGA какой-либо из приведённых выше видеорежимов можно следующим образом: 1. Вычислите объём видеопамяти, необходимой для хранения изображения в данном видеорежиме: mem_needed = Width * Height * Log 2 Colors / 8 (в байтах) где Width - разрешение по горизонтали, Height - разрешение по вертикали, Colors - количество цветов. В данной формуле берётся логарифм по основанию 2 для определения количества бит на пиксель. 2. Сравните полученное число с объёмом видеопамяти Вашего видеоадаптера. Если mem_needed меньше чем объём памяти видеоадаптера, то режим, по идее, поддерживаться должен (правда, может и неподдерживаться. Например у меня есть видеоадаптер Avance Logic с 1Мб видеопамяти, но при установке видеорежима 800 x 600 64К цветов на экране почти ничего не видно. |
Про VESA. Стандарт VESA был разработан для поддержания совместимости видеоадаптеров SVGA. Когда эти видеоадаптеры только стали появляться на рынке, каждый видеоадаптер имел регистры, отличные от регистров других видеоадаптеров, поэтому для установки видеорежима SVGA приходилось писать код подпрограммы установки видеорежима для каждого конкретного видеоадаптера SVGA. Теперь в BIOSе имеется функция 4Fh для работы с видеоадаптерами SVGA по стандарту VESA (чтение и установка видеорежимов, установка активного банка памяти видеоадаптера, получение информации о видеорежиме и т.д.).
Пример установки видеорежима SVGA 800 x 600 256 цветов с очисткой видеопамяти:
mov ah, 4Fh mov al, 02h mov bx, 103h int 10h cmp al, 4Fh jne not_supported cmp ah, 0 jnz error . . . . . error: . . . . . not_supported: . . . . .
Замечание: существует несколько нестандартных видеорежимов (например, 320 x 240, 320 x 480, 360 x 480, 400 x 300, 512 x 384 и т.д.) которые либо характерны только для данной модели видеоадаптера (например, 1152 x 864 для некоторых видеоадаптеров S3), либо формируются из стандартных видеорежимов путём изменения нескольких регистров видеоадаптера (например, в Quake, есть такие режимы как 320 x 240, 360 x 480 и т.д., которые получаются из стандартного видеорежима 320 x 200). Если кто-то думает, что при загрузке Windows 95/98 картинка (logo) имеет разешение 320 x 200, то это не так - она имеет разрешение 320 x 400. Пример программы, устанавливающей видеорежим 320 x 400 и выводящей на экран содержимое logo.sys (картинка с эмблемой Windows и надписью Microsoft Windows 95/98) можно получить здесь.
Все стандартные видеорежимы можно разделить на две группы: поддерживающие коэффициент масштабирования 4:3 и не поддерживающие. Например, видеорежим 320 x 200 не поддерживает этот коэффициент, так как 320 / 200 = 1.6 < 1.3(3). А видеорежимы SVGA 640 x 480, 800 x 600, 1024 x 768 поддерживают этот коэффициент: 640 / 480 = 4 / 3, 800 / 600 = 4 / 3, 1024 / 768 = 4 / 3. Видеорежимы с таким коэффициентом хорошо использовать в инженерной графике, так как для инженерных графических работ идеальная форма точки - квадрат. Если померить ширину и высоту видимой части ЭЛТ монитора линейкой, то можно придти к выводу, что соотношение сторон монитора - 4:3. Поэтому, при использовании большинства видеорежимов SVGA форма точки - почти квадрат. Именно поэтому AutoCad на 286 использовал видеорежим VGA 640 x 480 16 цветов.
Copyright © 1999 by HackMaster