Низкоуровневое програмирование Главная - Полезная информация - Использование VBE в реальном режиме

Использование VBE 3.0

Для VBE отведена функция 4Fh прерывания int 13h.
Необходима VESA BIOS Extension-совметимая видеокарточка и совместимый BIOS (изготовленый после 10 января 1986)
Вот её подфункции:
ALФункция
00Информация о VBE
Вход: ES:DI - Указывает на структуру 512 байт
Выход: AL=4f (иначе - VBE отсутствует)
      AH=0 (иначе - VBE отсутствует)
      заполненая структура, по адресу, переданному на входе:
СмещениеРазмерОписание
00h4 байтаASCII строка "VESA" или "VBE2"
если её нет, то VBE не поддерживается.
04h2 байтаНомер версии (0100 => 1.0)(если ниже, чем 0100, то VBE отсутствует)
06h4 байтаУказатель на OEM-строку
0Ah4 байтаВозможности контроллера:
бит 0: ==0 6-битный ЦАП иначе 8-битный
бит 1: ==0 VGA-местимый контроллер , иначе - не совместим
бит 2: ==1 при работе с большими блоками информации в RAMDAC следует использовать бит очистки функции 09h
прочие биты - в резерве.
0Eh4 байтаУказатель на список видеорежимов
12h2 байтачисло блоков видеопамяти по 64 КБ в каждом
14h2 байтаРевизия VBE
VBE2 или выше
16h4 байтаУказатель на строку названия фирмы-изготовителя.
VBE2 или выше
1Ah4 байтаУказатель на строку названия изделия
VBE2 или выше
1Eh4 байтаУказатель на строку версии
VBE2 или выше
22h222 байтаРЕЗЕРВ
100h256 байтОбласть OEM-данных
Куда-то сюда ссылаются все указатели это структуры
01hПолучить информацию о видео-параметрах
Вход: CX - Номер видеорежима (см. ф-ю 2)
     ES:DI - Указывает на структуру в 256 байт
Выход: AH и AL согласно общему правилу возврата значений значений VBE
     Заполненая структура, по адресу, переданном на входе:
СмещениеРазмерОписание
00h2 байта Аттрибут:
битзначение
0==0 : режим не поддерживается
==1 : режим поддерживается
1=1
2==0 : функции TTY не поддерживаются
==1 : функции TTY поддерживаются
3==0 : монохромный режим
==1 : цветной режим
4==0 : текстовый режим
==1 : графический режим
5==0 : VGA-совместимый режим
==1 : VGA-несовместимый режим
6-7==00 : поддерживается только режим оконной(страничной) адресации видеопамяти
==10 : не поддерживается
==01 : поддерживается режимы оконной(страничной) и линейной адресации видеопамяти
==11 : поддерживается
только режим линейной адресации видеопамяти
8Режим двойного сканирования
==0 не поддерживается

==1
поддерживается
9Черезстрочная развёртка
==0 не поподдерживается
==1 поддерживается
10Тройная аппаратная буферизация
==0 не поддерживается
==1 поддерживается
11Аппаратная поддержка стереоскопичекского дисплея
==0 отсутствует
==1 присутствует
12Двойной стартовый адрес
==0 поддерживается
==1 не поддерживается
13-15РЕЗЕРВ
02h1 байт Аттрибуты окна А
битзначение
0==0 : окно неперемещаемо
==1 : окно перемещаемо
1==0 : чтение разрешено
==1 : чтение запрещено
2==0 : запись разрешена
==1 : запись запрещена
3-7РЕЗЕРВ
03h1 байт Аттрибуты окна В
битзначение
0==0 : окно неперемещаемо
==1 : окно перемещаемо
1==0 : чтение разрешено
==1 : чтение запрещено
2==0 : запись разрешена
==1 : запись запрещена
3-7РЕЗЕРВ
04h2 байта Наименьшая величина в КБ, на которую можно переместить окно.
06h2 байта Размер окна в КБ
08h2 байта Начальный сегмент окна А в RAM
0Ah2 байта Начальный сегмент окна В в RAM
0Ch4 байта Указатель на функцию позиционирования окна.
10h2 байта Количество байт на строку развёртки
12h2 байта Разрешение экрана по горизонтали.
для графических режимов - в пикселах.
для текстовых режимов - в знакоместах.
VBE 1.2 или выше
14h2 байта Разрешение экрана по вертикали.
для графических режимов - в пикселах.
для текстовых режимов - в знакоместах.
VBE 1.2 или выше
16h1 байт Ширина знакоместа в пикселах
VBE 1.2 или выше
17h1 байт Высота знакоместа в пикселах
VBE 1.2 или выше
18h1 байт Число плоскостей памяти
VBE 1.2 или выше
19h1 байт Бит на пиксел
VBE 1.2 или выше
1Ah1 байт Количество банков памяти
VBE 1.2 или выше
1Bh1 байт Модель памяти
значениесмысл
0текстовый режим
1графический режим, тип CGA
2графический режим, тип HERCULES
3планарный режим
4режим упакованных пикселей
5нецепочечный режим 4, 256 цветов
6режим DirectColor (HiColor или TrueColor)
7режим YUV
8-0FhРЕЗЕРВ
10-FFhрежимы OEM
VBE 1.2 или выше
1Ch1 байт КБ в одном банке памяти
VBE 1.2 или выше
1Dh1 байт Число видеостраниц, помещающихся в памяти минус одна страница
VBE 1.2 или выше
1Eh1 байт =1
(резерв)
1Fh1 байт Размер компоненты красного цвета (в битах)
только для моделей памяти DirectColor и YUV
20h1 байт Начальная битовая позиция компоненты красного цвета.
только для моделей памяти DirectColor и YUV
21h1 байт Размер компоненты зелёного цвета (в битах)
только для моделей памяти DirectColor и YUV
22h1 байт Начальная битовая позиция компоненты зелёного цвета.
только для моделей памяти DirectColor и YUV
23h1 байт Размер компоненты синего цвета (в битах)
только для моделей памяти DirectColor и YUV
24h1 байт Начальная битовая позиция компоненты синего цвета.
только для моделей памяти DirectColor и YUV
25h1 байт Размер резервной компоненты (в битах)
только для моделей памяти DirectColor и YUV
26h1 байт Начальная битовая позиция резервной компоненты.
только для моделей памяти DirectColor и YUV
27h1 байт Аттрибуты режима DirectColor.
только для модели памяти DirectColor
28h4 байта Абсолютный, 32-х разрядный адрес буфера кадра
VBE2 или выше
2Сh4 байта Указатель на начало второй видеостраницы
VBE2 ТОЛЬКО
В VBE3 =0
30h2 байта Объём заэкранной памяти в КБ
VBE2 ТОЛЬКО
В VBE3 =0
32h2 байта Число байт в строке развёртки в линейном режиме
VBE3 или выше
34h1 байт Количество видеостраниц в страничном режиме
VBE3 или выше
35h1 байт Количество видеостраниц в линейном режиме
VBE3 или выше
36h1 байт Размер компоненты красного цвета в линейном режиме (в битах)
VBE3 или выше
37h1 байт Начальная битовая позиция компоненты красного цвета в линейном режиме.
VBE3 или выше
38h1 байт Размер компоненты зелёного цвета в линейном режиме (в битах)
VBE3 или выше
39h1 байт Начальная битовая позиция компоненты зелёного цвета в линейном режиме.
VBE3 или выше
3Ah1 байт Размер компоненты синего цвета в линейном режиме (в битах)
VBE3 или выше
3Bh1 байт Начальная битовая позиция компоненты синего цвета в линейном режиме.
VBE3 или выше
3Ch1 байт Размер резервной компоненты в линейном режиме (в битах)
VBE3 или выше
3Dh1 байт Начальная битовая позиция резервной компоненты в линейном режиме.
VBE3 или выше
3Eh189 битРЕЗЕРВ
02hУстановить видео-режим
Вход: BX:
биты 0-8:
Графические режимы
цвета1625632 тысячи64 тысячи16 миллионов
РазрешенияЗначение битов 0-8 BX
320x200    10Dh10Eh10Fh
640x400  100h    
640x480  101h 110h111h112h
800x600102h 103h 113h114h115h
1024x768104h 105h 116h117h118h
1280x1024106h 107h 119h11Ah11Bh

Текстовые режимы
Cтолбцы/СтрокиЗначение битов 0-8 BX
80x60108h
132x25109h
132x4310Ah
132x5010Bh
132x6010Ch

    бит 8         : 0 - режим, не описаный в стандарте VESA VBE; 1- режим, описанный в стандарте VESA VBE
    биты 9 и 10     =0
    бит  11        : Частота обновления (0-стандарт, 1-определёная CRTC)
    биты  12 и 13    = 0
    бит  14        : 0-оконная (страничная) модель буфера, 1-плоская(линейная) модель буфера
    бит    15         : 0-очистить экран, 1-не очищать экран
так же существует специальный видеорежим с кодом 81FFh. он служит для чтения всей имеющейся видеопамяти.
ES:SI - указатель на структуру CRTC
Выход: AH и AL согласно общему правилу возврата значений значений VBE
03hТекущий видео-режим
Выход: BX:
биты 0-13 = номер режима
бит 14 = 0 - оконная модель памяти, 1 - плоская модель памяти
бит 15 = при установке режима память: 0 - очишена, 1 - не очишена
04hСохранить или востановить состояние
Вход: DL =
0 - размер буфера
1 - Сохранить состоние
2 - Востановить состояние
CX :
бит 0: - Сохранять или востановить состояние аппаратуры
бит 1: - Сохранять или востановить данные BIOS
бит 2: - Сохранять или востановить состояние DAC
бит 2: - Сохранять или востановить состояние регистров
ES:BX - указатель на буфер
Выход:
при DX==0
BX - кол-во необходимых блоков по 64 байта

Правило возврата значений из функций VBE
если AL != 4Fh, то функция не поддерживается
если AL == 4Fh, то смотрим значение AH
   если AH == 0, то функция выполнена успешно
   если AH == 1, то функция не выполнена
   если AH == 2, то функция не поддерживается с текущими настройками аппаратной части
   если AH == 3, то функция невозможна в текущем видеорежиме