Общая характеристика стандарта VESA. Стандартизация видеорежимов.
Коды режимов VESA и OEM
Код используется не только при установке видеорежима, но и во многих других случаях. Поэтому, со времен IBM, он хранится в специальном байте оперативной памяти, расположенном в области данных BIOS с абсолютным адресом 0449h. Старший разряд этого байта имеет специальное назначение, поэтому для записи кода видеорежима остается 7 разрядов и он может изменяться от о до 7Fh. Первые 20 значений (от 0 до 13h) отведены для кодов режимов IBM. Использование остальных значений кодов ничем не регламентировано.
Значения кодов видеорежимов, соответствующих стандарту VESA, изменяются от100 до 11Bh. Такие числа не могут быть записаны в байт и, тем более, в его семь разрядов. Поэтому разработчики видеокарт по своему усмотрению заменяют 9-разрядные коды VESA 7-разрядными кодами OEM. Original Equipment Manufacturer (OEM) в дословном переводе означает "изготовитель оригинального оборудования", в нашем случае – изготовитель видеокарты, которая может собираться из микросхем и деталей других фирм. После установки режимов VESA в байте с адресом 0449h хранятся коды OEM, а в состав BIOS входит специальная таблица их соответствия режимам VESA. Коды OEM уникальны для каждой модели и могут не совпадать даже у видеокарт одного семейства.
По своему усмотрению разработчики видеокарт могут вводить дополнительные режимы, отличающиеся по характеристикам от режимов VESA и IBM. Например, у акселераторов фирм ATI и S3 добавлены режимы с разрешением 320x400, 400x300 и 512x384 точек. Можно предположить, что их удобно использовать при работе с кадрами телевизионных изображений. В соответствии с требованиями VESA коды и характеристики дополнительных режимов должны быть указаны в информационных блоках, хранящихся в области BIOS. Структура этих блоков и способ доступа к ним описаны в следующем разделе данной главы.
Набор режимов, введенный в VBE 1.2, VESA больше никогда не изменяла. В настоящее время выпускаются 20-дюймовые мониторы и видеокарты с объемом памяти 4 Мбайт и более. Это позволяет вводить новые видеорежимы с разрешением 1600x1200 точек. Такие видеорежимы поддерживают, например, видеокарты фирм S3 (VIRGE) и Matrox, в обоих случаях объем видеопамяти составляет 4 Мбайт. При этом код режима packed pixel graphics с разрешением 1600x1200 точек в одном случае I20h, а в другом – нет. Кроме того, карты Matrox поддерживают режимы Hi-color с указанным разрешением.
Из всего сказанного следует, что работу с новой для вас видеокартой надо начинать с получения исчерпывающей информации о кодах поддерживаемых видеорежимов и их характеристиках. Для этого имеет смысл составить простую программу, которая будет выводить на экран (а лучше в файл) все нужные данные. Способ определения этих данных не сложен, он описан в следующем разделе данной главы.