МониторчикиВидеорежимы

В этом разделе приведено описание некоторых видеорежимов для видеоадаптеров 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

Hosted by uCoz