ФЭНДОМ


VESA (англ. Video Electronics Standards Association) - Ассоциация Стандартов Видеоэлектроники. Появление новых видеоадаптеров SVGA с большими разрешениями и числим цветов привело к появлению новых стандартов, собранных под эгидой ассоциации VESA. Одним из таких стандартов является VBE (англ. VESA BIOS EXTENSION) - расширение VESA для BIOS.

Функции VBEПравить

Для вызова функций VBE используем прерывание 10h

mov ax,4Fxxh  
Int 10h
 
Где xx- номер функции весы.
После вызова функции в ax возвращается статус вызванной функции.
Статус это значения стандартны для всех функций VESA:
AL = 4Fh; Функция поддерживается
AL <>4Fh; Функция не поддерживается
AH = 00h; Вызов функции удачен
AH = 01h; Вызов функции не удачен

Функция AL=00- Return VBE Controller Information Получение Информации о VBE контролере. Input: AX = 4F00h ES:DI = Буфер 512 байт для структуры VbeInfoBlock Перед вызовом функции нужно записать в поле VESASignature=”VBE2” – дело совместимости.

+---------------+----------+----+----------------------------------+
|VESASignature  | 4 Байта  | 00h| "VESA"                           |
+---------------+----------+----+----------------------------------+
|VESAVersion    | 2 Байта  | 04h| номер версии VBA, BCD            |
+---------------+----------+----+----------------------------------+
|OEMStringPtr   | 4 Байта  | 06h| указатель на строку с названием  |
|               |          |    | производителя (OEM), ASCIIZ      |
+---------------+----------+----+----------------------------------+
|Capabilities   | 4 Байта  | 0Ah| флаги графических возможностей   |
+---------------+----------+----+----------------------------------+
|VideoModePtr   | 4 Байта  | 0Eh| указатель на список              |
|               |          |    | поддерживаемых  видеорежимов     |
+---------------+----------+----+----------------------------------+
|TotalMemory    | 2 Байта  | 12h| количество видеопамяти в         |
|               |          |    | 64-килобайтных блоках            |
+---------------+----------+----+----------------------------------+
|InVersion      | 2 Байта  | 14h| внутренняя версия реализации VBA |
+---------------+----------+----+----------------------------------+
|NameFirme      | 4 Байта  | 16h| указатель на название            |
|               |          |    | производителя, ASCIIZ            |
+---------------+----------+----+----------------------------------+
|NameVESA       | 4 Байта  | 1Ah| указатель на название            |
|               |          |    | видеоадаптера, ASCIIZ            |
+---------------+----------+----+----------------------------------+
|PTRVESAVersion | 4 Байта  | 1Eh| указатель на название версия     |
|               |          |    | видеоадаптера, ASCIIZ            |
+---------------+----------+----+----------------------------------+
|Reserved       | 222 Байт | 20h| зарезервировано                  |
+---------------+----------+----+----------------------------------+
|Reserved2      | 256 Байт |100h| зарезервировано для внутренних   |
|               |          |    |  данных                          |
+---------------+----------+----+----------------------------------+

Для тех, кто не знает: ASCIIZ – это строка, закачивающаяся на 0 BCD десятичный формат. Старшая часть хранится во втором байте, младшая - в первом байте. Каждые 4 бита это числа от 0 до 9. Примеры: 0102h=>1.02; 0300h=>3.0 VideoModePtr – указатель на список WORDов. Значение FFFFh - последний элемент в списке. Каждый Word это номер поддерживаемого видео режима (за исключением FFFFh). Capabilities – возможности видеоадаптера.

D0 = 0 DAC is fixed width, with 6 bits per primary color
   = 1 DAC width is switchable to 8 bits per primary color
D1 = 0 Controller is VGA compatible
   = 1 Controller is not VGA compatible
D2 = 0 Normal RAMDAC operation
   = 1 When programming large blocks of information to the RAMDAC,
       use the blank bit in Function 09h.
D3 = 0 No hardware stereoscopic signaling support
   = 1 Hardware stereoscopic signaling supported by controller
D4 = 0 Stereo signaling supported via external VESA stereo connector
   = 1 Stereo signaling supported via VESA EVC connector
D5-31 = Reserved

Reserved2 – предназначено для хранения OEM такой информации, как строки PTRVESAVersion, NameFirme, NameVESA.

Функция AL=01- Return VBE mode information Получение информации об одном из режимов VBE. Input: AX = 4F01h CX=MODE ES:DI = Указатель на буфер для структуры ModeInfoBlock


VBE в защищенном режимеПравить

В защищенном режиме поддержка функций VESA реализована крайне странно. Во второй версии стандарта введена функция 0AH - RETURN VBE PROTECTED MODE INTERFACE, которая позволяет вызывать ряд функций, но функционал её очень мал. Зато появился линейный буфер LFB. Почти вся видео память доступна одним окном в верхних адресах физической памяти. Есть расширение “PMID”, но оно может и отсутствовать. Расширение “PMID” введено в третьей версии стандарта.

Для проверки поддержки БИОСом видео карты “PMID”, следует произвести поиск сигнатуры “PMID” в диапазоне адресов 0C0000h-0DFFFFh “PMID” – это расширение VESA 3, поэтому может и отсутствовать. Структура PMID такова:

 
+-----------------------+--------+------+------------+
|Назначение поля        |Смещение|размер|  Значение  |
+-----------------------+--------+------+------------+
|Сигнатура              |  00h   |4Байта|”PMID”ASCII |
+-----------------------+--------+------+------------+
|точка входа            |  04h   |2Байта| смещение   |
+-----------------------+--------+------+------------+
|PM инициализация       |  06h   |2Байта| смещение   |
+-----------------------+--------+------+------------+
| BIOSDataSel           |  08h   |2Байта|     0      |
+-----------------------+--------+------+------------+
| A0000 Селектор        |  0Ah   |2Байта|   A000h    |
+-----------------------+--------+------+------------+
| B0000 Селектор        |  0Ch   |2Байта|   B000h    |
+-----------------------+--------+------+------------+
| B8000 Селектор        |  0Eh   |2Байта|   B800h    |
+-----------------------+--------+------+------------+
|Селектор сегмента кода |  10h   |2Байта|   C000h    |
+-----------------------+--------+------+------------+
|Защищенный режим       |  12h   | Байт |0 или 1 Bool|
+-----------------------+--------+------+------------+
|Контрольная сумма      |  13h   | Байт |  Сумма     |
+-----------------------+--------+------+------------+

СсылкиПравить

1. VBE версия 3.0 от ассоциации VESA
vbe3.pdf
2. VBE версия 2.0 от ассоциации VESA
vbe20.txt
3. VBE версия 1.2 от ассоциации VESA
vesasp12.txt