Код режима | Количество точек в строке | Количество строк по вертикали | Размер точки в битах | Размер строки в байтах | Количество цветов |
VESA редакции 1.0 и 1.1 | |||||
100h | 640 | 400 | 8 | 640 | 256 |
101h | 640 | 480 | 8 | 640 | 256 |
102h | 800 | 600 | 4 | 100 | 16 |
103h | 800 | 600 | 8 | 800 | 256 |
104h | 1024 | 768 | 4 | 128 | 16 |
105h | 1024 | 768 | 8 | 1024 | 256 |
106h | 1280 | 1024 | 4 | 160 | 16 |
107h | 1280 | 1024 | 8 | 1280 | 256 |
108h | 80 | 60 | — | 160 | 16 |
109h | 132 | 25 | - | 264 | 16 |
10Ah | 132 | 43 | - | 264 | 16 |
10Bh | 132 | 50 | — | 264 | 16 |
10Ch | 132 | 60 | - | 264 | 16 |
VESA peдакции 1.2 | |||||
10Dh | 320 | 200 | 15 | 640 | 32К |
1QEh | 320 | 200 | 16 | 640 | 64К |
10Fh | 320 | 200 | 32/24 | 1280/960 | 16М |
110h | 640 | 480 | 15 | 1280 | 32К |
111h | 640 | 480 | 16 | 1280 | 64К |
11 2h | 640 | 480 | 32/24 | 2560/1920 | 16М |
113h | 800 | 600 | 15 | 1600 | 32К |
114h | 800 | 600 | 16 | 1600 | 64К |
115h | 800 | 600 | 32/24 | 3200/2400 | 16М |
116h | 1024 | 768 | 15 | 2048 | 32К |
117h | 1024 | 768 | 16 | 2048 | 64К |
118h | 1024 | 768 | 32/24 | 4096/3072 | 16М |
119h | 1280 | 1024 | 15 | 2560 | 32К |
11Ah | 1280 | 1024 | 16 | 2560 | 64К |
11Bh | 1280 | 1024 | 32/24 | 5120/3840 | 16М |
В первом столбце табл. 1.1 перечислены коды видеорежимов. Это шестнад-цатеричные числа, поэтому в их записи могут встречаться не только цифры, но и латинские буквы от А до F, а в конце кода обязательно указывается латинская буква n (lOOh = 256). В остальных столбцах таблицы приведены десятичные числа. В последнем столбце, для сокращения записи количества цветов, использованы буквы к и м. Они обозначают степени числа два, наиболее близкие по значению к тысяче (к=1024) и миллиону (м=Ю4857б). Соответственно, количество цветов может быть следующим:
32К = 32768, 64К = 65536, 16М = 16777216.
В графических режимах размер строки указан в точках, а в текстовых — в виде количества символов. В текстовых режимах ширина символов постоянна и составляет 8 точек, а высота — 8 или 16 точек.
Классификация режимов. Перечисленные в табл. 1.1 видеорежимы делятся на следующие пять групп:
Этим группам соответствуют 4 разные модели видеопамяти, поскольку разновидности режимов direct color используют одну модель. В описании стандарта понятие "модель видеопамяти" четко не объясняется, но речь идет
о том, как видеоконтроллер интерпретирует содержимое байтов видеопамяти. Для программиста важно знать не модель, а способ доступа к видеопамяти и что при этом записывается в ее байты.
Три из четырех моделей допускают непосредственную работу с видеопамятью, т. е. запись и чтение содержимого ее байтов и слов с помощью обычных команд ассемблера. Исключением являются режимы EGA, в этом случае для чтения или записи необходима работа с внутренними регистрами видеокарты. Эти режимы морально устарели, кроме того, они хорошо описаны в литературе, поэтому в данной книге не рассматриваются.
Текстовые режимы VESA просто расширяют возможности аналогичных режимов IBM и позволяют использовать стандартные процедуры BIOS, предназначенные для работы с текстом. Программирование в текстовых режимах описано в первой части главы 5.
Режимы packed pixel graphics отличаются от режима VGA IBM тем, что введено сегментирование видеопамяти, все пространство которой делится на окна размером по 64 Кбайт. Своевременное переключение окон позволяет работать с большим пространством видеопамяти, которое требуется для поддержки видеорежимов с высоким разрешением. Напомним, что в режиме VGA IBM разрешение составляет 320x200 точек (сравните с табл. 1.1).
В режимах packed pixel graphics между кодами точки и цвета нет однозначного соответствия, поскольку они расположены в разных устройствах видеокарты. Коды точек хранятся в видеопамяти, а коды их цветов — в специальных регистрах видеокарты. Изменяя содержимое этих регистров, можно изменить все цвета, использованные в изображении, без обращения к видеопамяти, т. е. не изменяя кодов точек образа рисунка. Количество регистров (256) определяет размер кодов точек — 1 байт (8 разрядов). В главе 3 описано программирование рисования и построения графических объектов в этих режимах, а в главе 4 — работа с цветом.
В режимах direct color базовые цвета расположены непосредственно в коде точки, который может содержать 2, 3 или 4 байта. На момент написания данной книги трехбайтовый код был обнаружен только у одного семейства акселераторов фирмы ATI. Размещение базовых цветов в коде точки значительно расширяет возможности работы с цветом и позволяет создавать различные спецэффекты, которые широко распространены в современной графике. Программирование в режимах direct color описано в главе 7. В этих режимах увеличивается размер кода точки, а следовательно, и пространство видеопамяти, необходимое для хранения содержимого рабочей области экрана. Например, 1 Мбайт видеопамяти достаточно для работы во всех режимах packed pixel graphics, кроме I07h, с разрешением 1280x1024 точки.
В то время как для поддержки режима H2h с разрешением всего 640x480 точек требуется 2 Мбайт, а для режима 11Bh с разрешением 1280x1024 необходимо 6 Мбайт видеопамяти. Поэтому возможность использования режимов с высоким разрешением зависит не только от монитора, но и от объема видеопамяти.
Выбор конкретного режима зависит от программиста и от особенностей задачи, которую ему предстоит решать. В режимах packed pixel graphics достигается максимальная производительность видеосистемы, но ограничены возможности манипуляций с цветом. В режимах direct color увеличиваются затраты оперативной и видеопамяти и замедляется процесс построения графических объектов, но существенно расширяются возможности работы с цветом. Вариантов много, есть из чего выбирать.