AH | сервис |
00h | Устанавливает видео режим. Очистить экран, установить поля BIOS, установить режим.
Вход:
AL=режим (приведены значения для VGA-совместимых адаптеров, для иных адаптеров параметры видеорежимов могут отличаться.
AL | Тип | Формат | Цвета | Адрес | Количество видеостраниц |
0 | текст | 40x25 | 16 ч/б | B8000h | 8 |
1 | текст | 40x25 | 16 | B8000h | 8 |
2 | текст | 80x25 | 16 ч/б | B8000h | 4 |
3 | текст | 80x25 | 16 | B8000h | 4 |
4 | графика | 320x200 | 4 | B8000h | 1 |
5 | графика | 320x200 | 4 ч/б | B8000h | 1 |
6* | графика | 640x200 | 2 | B8000h | 1 |
7* | текст | 80x25 | 2 | B0000h | 1 |
0Dh* | графика | 320x200 | 16 | A0000h | 8 |
0Eh* | графика | 640x200 | 16 | A0000h | 4 |
0Fh* | графика | 640x350 | 2 | A0000h | 2 |
10h* | графика | 640x350 | 16** | A0000h | 1 |
11h* | графика | 640x480 | 2 | A0000h | 1 |
12h* | графика | 640x480 | 16 | A0000h | 1 |
13h* | графика | 320x200 | 256 | A0000h | 1 |
Выход:
AL используется для диагностики ошибок. вот некоторые распространённые коды успешного выполнения:
0
20h - использован режим с номером больше 5
30h - код режим находится в диапозоне 0-5 или равен 7
3Fh - установлен шестой режим
Примечание:
* Этот режим может не поддерживаться
** На некоторых системах 4 цвета
На самом деле известных режимов великое множество, но большинство из них поддерживается только на некоторой конкретной аппаратной платформе или даже при наличии какой-то конкретной программы в памяти, поэтому я решил не описывать их здесь все.
Для установки режимов VESA BIOS Extension испульзуйте функцию 4Fh подфункцию 2 прерывания 10h |
01h | Установить размер/форму курсора в текстовом режиме.Курсор, если он видим, всегда мерцает.
Вход:
CH:
биты 0-4 : верхняя строка экрана, содержащая курсор
бит 5 : 0 - курсор виден, иначе - не виден
биты 6-7 : должен быть равным нулю
CL = нижняя строка экрана, содержащая курсор (0-1Fh, т.е. используются только биты 0-4)
Примечание:
Некоторые старые биосы требуют, что бы в AL был номер текущего видеорежима. Но это редкость.
Некоторые биосы используют тольео три бита для задания строки, но это редкость. Примеро может служить биос компьютера PEN*KEY-R 6400 Computer.
В графических режимах курсор нужно моделировать. Для этого можно использовать ASCII символ с кодом 0DFh (сплошной прямоугольник)
Строки экрана указываются как пиксели "внутри" символа |
02h | Устанавливает позицию курсора.
Вход:
BH = видео страница
DH = номер строки (считая от 0)
DL = номер столбца (считая от 0)
Примечание:
Некоторые биосы, в частности строго следующие спецификации Embedded BIOS 4.1, устанавливают AX в 0
Установка номера страницы производится при помощи функции 5h прерывания 10h |
03h | Узнать позицию и размер курсора
Вход:
BH = видео страница
Выход:
DH = текущая строка курсора (см. функцию 02H)
DL = текущий столбец курсора (см. функцию 02H)
CH = текущая начальная строка экрана, содержащая курсор (см. функцию 01H)
CL = текущая конечная строка экрана, содержащая курсор (см. функцию 01H)
Примечание:
Документация на PhoenixBios (rev6) гласит, что в CH возвращается конечная строка, а в CL начальная, однако, похоже, что это опечатка
Некоторые версии PhoenixBios, а так же биосы, строго следующие спецификации Embedded BIOS 4.1, устанавливают AX в ноль |
04h | Читать световое перо
Выход:
AH = триггер (0=нет значений; 1=возвращены значения светового пера)
DH,DL = строка,столбец символа (текст)
BX = столбец точки (графика)
CH = строка точки (для режимов, с количеством строк экрана больше 200 значение возвращается в CX)
Примечание:
Документация на PhoenixBios(rev6) не описывает эту функцию. возможно, она не поддерживается.
Эта функция не поддерживается на стандартных VGA видеоадаптерах.
Если функция не поддерживается, то в регистре AH должнен быть 0, но насколько боисы следуют этому правилу не известно.
Использовать эту функцию в настоящее время не рекомендуется |
05h | Выбрать активную страницу дисплея
Вход:
AL = номер страницы (Начиная с нуля)
Примечание:
На PCjr эта функция имеет другое значение.
|
06h | Листать окно вверх (или очистить). Листать на 1 или более строк вверх.
Вход:
CH,CL = строка,столбец верхнего левого угла окна (считая от 0)
DH,DL = строка,столбец нижнего правого угла окна (считая от 0)
AL = число пустых строк, вдвигаемых снизу (0=очистить все окно)
BH = видео атрибут, используемый для пустых строк
Примечание:
Значение в BP может быть изменено.
На Trident TVGA8900CL (BIOS датированный 1992/9/8) DS обращается в нуль. |
07h | Листать окно вниз (вдвинуть пустые строки в верхнюю часть окна)
Вход:
CH,CL = строка,столбец верхнего левого угла окна (считая от 0)
DH,DL = строка,столбец нижнего правого угла окна (считая от 0)
AL = число пустых строк, вдвигаемых сверху (0=очистить все окно)
BH = видео атрибут, используемый для пустых строк
Примечание:
Значение в BP может быть изменено.
На Trident TVGA8900CL (BIOS датированный 1992/9/8) DS обращается в нуль. |
08h | Читать символ и атрибут в текущей позиции курсора
Вход:
BH = номер видео страницы
Выход:
AL = прочитанный символ (ASCII код)
AH = прочитанный видео атрибут (только для текстовых режимов)
Примечание:
На настоящем IBM PC значение в BP может быть изменено.
На адаптере Tandy 2000 в графических режимах в AH возвращается цвет точки
На некоторых клонах IBM PC значения регистров SI, DI и BP может быь изменено
|
09h | Писать символ и атрибут в текущей позиции курсора
Вход:
BH = номер видео страницы
AL = записываемый символ (ASCII код)
CX = счетчик (сколько экземпляров символа записать)
BL = видео атрибут (текстовый режим) или цвет (графический режим)
Примечание:
При записи с помощью этой функции курсор не сдвигается!
В графических режимах не рекомендуется использовать значение CX, отличное от единицы, т.к. не везде правильно реализован повтор символа
Если программа работает под управлением PTS-DOS, то значения в BH, BL и CX могут быть проигнорированны |
0Ah | Писать символ в текущей позиции курсора
Вход:
BH = номер видео страницы (считая с нуля) , для видео режима 13h - цвет фона
AL = записываемый символ(ASCII код)
CX = счетчик (сколько экземпляров символа записать)
Примечание:
При записи с помощью этой функции курсор не сдвигается!
В графических режимах не рекомендуется использовать значение, отличное от единицы, т.к. не везде правильно реализован повтор символа
Если программа работает под управлением PTS-DOS, то значения в BH и CX могут быть проигнорированны |
0Bh | Настройки палитры
Вход:
BH | Подфункция |
0 | Цвет бордюра
BL = цвет бордюра (0-1Fh)
Примечание:
Для графических режимов - фонофый цвет, для текстовых - цвет бордюра. |
1 | Выбор палитры
BL - код палитры (0 - RedGreenYellow, 1 - CyanMagnetaWhite)
|
|
0Ch | Писать пиксель
Вход:
BH = номер видео страницы
DX,CX = строка,столбец , они же координаты x и y
AL = значение цвета
Примечание:
Только графический режим
При установленом бите 7 регистра AL точка будет иметь цвет, полученый в результате поразрядной операции XOR со старым цветом точки с координатами DX,CX |
0Dh | Читать пиксель
Вход:
BH = номер видео страницы
DX,CX = строка,столбец , они же координаты x и y
Выход:
AL = прочитанное значение цвета
Примечание:
Некоторые биосы игнорируют номер видеостраницы, переданный в BH и записывают точку в активную видеостраницу.
Только графический режим |
0Eh | Писать символ на активную видео страницу (эмуляция телетайпа)
Вход:
AL = записываемый символ (использует существующий атрибут)
BL = цвет фона (только в графических режимах)
Примечание:
Символы CR(0Dh) LF(0Ah) BELL(7) интерпритируются как управляющие. Атрубут устанавливается равным атрибуту текущего символа.
Некоторые ОЧЕНЬ старые БИОСы требуют, что бы в BH передавался номер активной видеостраницы. Впрочем, вы врядтли найдёте такие раритеты.
Спецификация Embedded BIOS 4.1 позволяет выбрать видеостраницу, на которую будет производится запись. Её номер ДОЛЖЕН быть передан в BH
На некоторых символах BP может быть изменён |
0Fh | Читать текущий видео режим
Выход:
AL = текущий режим (см. функцию 00h)
AH = число текстовых столбцов на экране
BH = текущий номер активной страницы дисплея
Примечание:
Не все Биосы возвращают корректное значение в AL |
10h | Установить регистры палитры для EGA. Работает при наличии EGA-совместимой карты.(включая VGA-совместимые)
Выбирает цвета, используемые данным атрибутом экрана. умалчиваемые цвета те же, что используются с CGA (см. атрибуты экрана ).
Вход:
AL | Подфункция |
0 | Установить один регистр палитры
BL = регистр (идентифицирует 4-битовый цвет; 0-15)
BH = значение регистра (6-битовый rgbRGB выдаваемый цвет)
Примечание:
Существует недокументированная особенность этой функции - возможны значения вышё 15, однако менять эти регистры крайне не реккомендуется. В частности в RBIL приведена следующая информация:
10h attribute mode control register (should let BIOS control this)
11h overscan color register
12h color plane enable register (bits 3-0 enable corresponding text attribute bit)
13h horizontal PEL panning register
14h color select register |
1 | Установить регистр рамки.
BH = значение регистра (6-битовый rgbRGB выдаваемый цвет)
Примечание:
На оригинальном IBM PC эта функция записывает данные в не правильный регистр |
2 | Установить все регистры палитры и регистр границы
ES:DX => 17 байт (регистры палитры (байты 0-15) и регистр границы (байты 16))
Примечание:
Некоторые Биосы не правильно работают, если BH не равен нулю |
3 | Выбрать яркость или мерцание
BL,бит7 = 0:яркость фона (16 возможных цветов фона)
BL,бит7 = 1: мерцание (8 цветов фона + мерцание переднего плана)
Примечание:
Некоторые Биосы не правильно работают, если BH не равен нулю |
7 | Чтение регистра палитры
BL = номер читаемого регистра палитры (0-15).
Выход:
BH = содержимое регистра палитры.
Примечание:
необходима VGA-совместимая видеокарточка
Существует недокументированная особенность этой функции - возможны значения вышё 15. подробнее в подфункции 0 |
8 | Чтение регистра цвета рамки
необходима VGA-совместимая видеокарточка
Выход:
BH = содержимое регистра цвета рамки |
9 | Чтение всех регистров палитры
ES:DX - указатель на 17-байтовую таблицу.(регистры палитры(байт 0-15) и регистр бордюра (байт 16))
Выход:
По адресу ES:DX содержится таблица, заполненная значениями из регистров палитры
Примечание:
необходима VGA-совместимая видеокарточка
Рекомендуется заполнить таблицу каким-либо известным вам значением, т.к. функция никак не сообщает о неудачном выполнении. |
10h | Установка одного регистра таблицы цветов (регистра ЦАП)
необходима VGA-совместимая видеокарточка
BX = номер регистра таблицы цветов (0-255);
DH = интенсивность красного цвета (6 бит);
CH = интенсивность зеленого цвета (6 бит);
CL = интенсивность синего цвета (6 бит). |
12h | Установка нескольких регистров таблицы цветов (регистров ЦАП)
необходима VGA-совместимая видеокарточка
BX = номер первого регистра таблицы цветов (0-255);
CX = число устанавливаемых регистров (1-256);
ES:DX - адрес записываемых данных. должен содержать cx блоков по три байта, где старший байт - интенсивность красного цвета, средний - залёного, младший - синего. |
13h | Выбор подмножества цветов необходима VGA-совместимая видеокарточка
BL = 0 | выбор режима:
BH = 0 : 4 подмножества из 64 цветов;
BH = 1 : 16 подмножеств из 16 цветов; |
BL = 1 | выбор активного подмножества:
BH = номер подмножества (0-4 или 0-15, в зависимости от установок, сделанных с помощью BL=0). |
Примечание:
Функция не поддерживается в видеорежимах с номером 13h или больше. |
15h | Чтение регистра таблицы цветов (регистра ЦАП)
BL = номер читаемого регистра (0-255).
Выход:
DH = интенсивность красного цвета (6 бит);
CH = интенсивность зеленого цвета (6 бит);
CL = интенсивность синего цвета (6 бит);
Примечание:
необходима VGA-совместимая видеокарточка
На некоторых старых боисах функция изменяет значение регистра AX |
17h | Чтение нескольких регистров таблицы цветов (регистров ЦАП)
BL = номер первого регистра таблицы цветов (0-255);цы цветов (0-255);
CX = число считываемых регистров (ES:DX - адрес таблицы цветов (CX блоков по 3 байта);
Выход:
Данные в таблице по адресу ES:DX.
Примечание
необходима VGA-совместимая видеокарточка
Таблица цветов содержит по три байта на один регистр таблицы цветов. В каждом байте значащимии являются только младшие 6 бит. Старший байт - интенсивность красного цвета, средний - залёного, младший - синего. |
18h | Установить PEL-маску
необходима VGA-совместимая видеокарточка
BL = Новое значение PEL |
19h | Читать PEL-маску
необходима VGA-совместимая видеокарточка
BL = Значение PEL BL = Значение PEL |
1Ah | Определение режима подмножества цветов
необходима VGA-совместимая видеокарточка
Выход:
BL = 0 - используются 4 цветовых подмножества по 64 цвета;
1 - используются 16 цветовых подмножеств по 16 цветов;
BH - номер подмножества, используемого в данный момент. |
1Bh | Установка палитры из градаций серого цвета
необходима VGA-совместимая видеокарточка
BX = номер первого регистра таблицы цветов (0-255);цы цветов (0-255);
CX = число модифицируемых регистров (1-256). |
Примечание:
Регистр палитры:
биты 7 и 6 не используются
используемые биты:
5 - r
4 - g
3 - b
2 - R
2 - G
0 - B
По некоторым сведениям, эта функция разрушает содержимое регистров si, di, bp, sp, bx, ax. Так что при ее использовании следует соблюдать осторожность и в случае ошибок сохранять и затем восстанавливать упомянутые регистры
Документация на PhoenixBios (rev 6) не описывает эту функцию. возможно, она не поддерживается |
11h | Настройка знакогенератора
Необходима EGA или VGA совместимая видеокарточка
AL | Функции |
0 | Установка пользовательского шрифта
Вход:
BH - число байт на один символ
BL - Номер загружаемого блока (шрифта) знакогенератора (0-3 для CGA и 0-7 для VGA)
CX - Число загружаемых символов
DX - Номер первого загружаемого символа по таблице кодов символов (ASCII)
ES:BP - указатель на загружаемую таблицу
Примечание:
Только текстовый режим
Эта функция может полностью изменить контекст видеокарты, что может привести к смене видеорежима или сбросу иных параметров. |
1 | Установить стандартный шрифт 8х14
Вход:
BL - номер шрифта(0-3 для CGA и 0-7 для VGA)
Примечание:
Только текстовый режим
Эта функция может полностью изменить контекст видеокарты, что может привести к смене видеорежима или сбросу иных параметров. |
2 | Установить стандартный шрифт 8х8
Вход:
BL - номер шрифта(0-3 для CGA и 0-7 для VGA)
Примечание:
Только текстовый режим
Эта функция может полностью изменить контекст видеокарты, что может привести к смене видеорежима или сбросу иных параметров. |
3 | Установка спецификатора блока шрифта
Только текстовый режим
Устанавливает 2 активных набора
Набор номер два используется если третий бит атрибута символа равен 1
Вход:
BL :
Для адаптеров EGA/MCGA
биты 0-1 : первый блок(номер)
биты 2-3 : второй блок(номер)
биты 4-7 : не используется
Для адаптеров VGA+:
бит 0,1,4 : номер первого блока
биты 2,3,5 : номер второго блока
биты 6-7 : не используются |
4 | Установить стандартный шрифт 8х16
Только текстовый режим
необходима VGA-совместимая видеокарточка
Вход:
BL - номер шрифта(0-4) |
10h | Загрузить пользовательский шрифт для текстового режима
Вход:
BH - число байт на один символ
BL - Номер загружаемого блока (шрифта) знакогенератора (0-3 для CGA и 0-7 для VGA)
CX - Число загружаемых символов
DX - Номер первого загружаемого символа по таблице кодов символов ASCII
ES:BP - указатель на загружаемую таблицу
Примечание:
Только текстовый режим
Активной видеостраницей должна быть страница номер 0
Эта функция может полностью изменить контекст видеокарты, что может привести к смене видеорежима или сбросу иных параметров.
Отличие от подфункции 0 в том, что выводимое изображение обновляется, а так же сбрасываются значения ряда регистров CRTC |
11h | Установить стандартный шрифт 8х14
Вход:
BL - номер шрифта(0-3 для CGA и 0-7 для VGA)
Примечание:
Только текстовый режим
Активной видеостраницей должна быть страница номер 0
Эта функция может полностью изменить контекст видеокарты, что может привести к смене видеорежима или сбросу иных параметров.
Отличие от подфункции 1 в том, что выводимое изображение обновляется, а так же сбрасываются значения ряда регистров CRTC |
12h | Установить стандартный шрифт 8х8
Вход:
BL - номер шрифта(0-3 для CGA и 0-7 для VGA)
Примечание:
Только текстовый режим
Активной видеостраницей должна быть страница номер 0
Эта функция может полностью изменить контекст видеокарты, что может привести к смене видеорежима или сбросу иных параметров.
Отличие от подфункции 2 в том, что выводимое изображение обновляется, а так же сбрасываются значения ряда регистров CRTC |
14h | Установить стандартный шрифт 8х16
Вход:
BL - номер шрифта(0-4)
Примечание:
Только текстовый режим
Необходима VGA-совместимая видеокарточка
Активной видеостраницей должна быть страница номер 0
Эта функция может полностью изменить контекст видеокарты, что может привести к смене видеорежима или сбросу иных параметров.
Отличие от подфункции 4 в том, что выводимое изображение обновляется, а так же сбрасываются значения ряда регистров CRTC |
20h | Установить пользовательский шрифт для графического режима
Вход:
ES:BP - 2048-байтовый шрифт 8х8, 8 байт на символ
Примечание:
Только графический режим
Функцию необходимо вызывать сразу после смены режима. |
21h | Установить пользовательский шрифт для графического режима (настриаваемый)
Вход:
ES:BP - указатель на шрифт 8х8
CX - байт на символ
BL:
0 : DL - кол-во строк в символе
1 - 14 строк в символе
2 - 25 строк в символе
3 - 43 строки в символе
Примечание:
Только графический режим
Функцию необходимо вызывать сразу после смены режима. |
22h | Установить шрифт 8x14 для графических режимов
Вход:
BL:
0 : DL - кол-во строк в символе
1 - 14 строк в символе
2 - 25 строк в символе
3 - 43 строки в символе
Примечание:
Только графический режим
Функцию необходимо вызывать сразу после смены режима. |
23 | Установить double-dot 8х8 шрифт для графических режимов
Вход:
BL:
0 : DL - кол-во строк в символе
1 - 14 строк в символе
2 - 25 строк в символе
3 - 43 строки в символе
Примечание:
Только графический режим
Функцию необходимо вызывать сразу после смены режима. |
24 | Установить double-dot 8х16 шрифт для графических режимов
Вход:
BL:
0 : DL - кол-во строк в символе
1 - 14 строк в символе
2 - 25 строк в символе
3 - 43 строки в символе
Примечание:
Только графический режим
необходима VGA-совместимая видеокарточка
Функцию необходимо вызывать сразу после смены режима. |
30h | Получить информацию о шрифте
Вход:
BH:
0 - int 1fh адрес шрифта
1 - int 44h адрес шрифта
2 - адрес шрифта 8х14
3 - адрес шрифта 8х8 double-dot
4 - адрес 8х8 double-dot (старшие 128 сbмволов)
5 - адрес шрифта 9х14
6 - адрес шрифта 8х16
7 - адрес шрифта 9х16 (толька VGA+)
Выход:
ES:BX - указывают на запрашиваемый шрифт
CX : байт на знак в шрифте, который используется для вывода на экран (а не в запрошенном шрифте!)
DL : наибольшая строка знака на экране (????) |
|
12h | Специальные функции
BL | функция |
10h | Информация о видео-карточке
Выход:
BH - Режим (0-цветной, 1-ч/б)
BL - Размер памяти (0 - 64Кбайт, 1 - 128Кбайт, 2 - 192Кбайт, 3 - 256Кбайт)
CH - зарезервировано
CL - настройки переключения
Примечание:
Необходима EGA или VGA совместимая видеокарточка
Если перед вызовом функции установить BH в значение, отличное от нуля и единицы, то если после вызова значение BH не изменилось - значит функция не поддерживается |
20h | Установить альтернативный обработчик события PrintScreen
Необходима EGA или VGA совместимая видеокарточка
Заменяет обработчик события PrintScreen на прошитый в графической карте. |
30h | Установить ко-во строк на видео-страницу
Вход:
AL = 0 : 200 строк
AL = 1 : 350 строк
AL = 2 : 400 строк
Выход:
AL=12, иначе функция не поддерживается.
Примечание:
Необходима VGA совместимая видеокарточка
Эфект появится только при следующей установке видеорежима |
31h | Управления палитрой
Определяет необходимость загрузки стандартной палитры при смене видео-режима
Вход:
AL=0 : загружать стандартную палитру
AL=1 : НЕ загружать стандартную палитру
Выход:
AL=12, иначе функция не поддерживается.
Примечание:
Необходима VGA совместимая видеокарточка |
32h | Доступ к видеопамяти
Вход:
AL=0 : включить доступ
AL=1 : выключить доступ
Выход:
AL=12, иначе функция не поддерживается.
Примечание:
Необходима VGA совместимая видеокарточка |
33h | Преобразование цветов в градации серого
Вход:
AL=0 : преобразование включёно
AL=1 : преобразование выключёно
Выход:
AL=12, иначе функция не поддерживается.
Примечание:
Необходима VGA совместимая видеокарточка |
34h | Управление пересчётом курсора
Определяет, должен ли BIOS автоматически пересчитывать параметры курсора
Вход:
AL=0 : пересчёт включён
AL=1 : пересчёт выключен
Выход:
AL=12, иначе функция не поддерживается.
Примечание:
Необходима VGA совместимая видеокарточка |
35h | Переключение между двумя видеоадаптерами
Вход:
AL:
0 - выключить основной видеоадаптер
1 - включить основной видеоадаптер
2 - выключить дополнительный видеоадаптер
3 - включить дополнительный видеоадаптер
ES:DX : 128-ми байтный буфер для контекста видеоадаптера.
Выход:
AL=12, иначе функция не поддерживается.
Примечание:
Необходима VGA совместимая видеокарточка
Включение одновременно двух видеоадаптеров может привести к значительным проблемам в системе, по этому строжайше запрещенно |
36h | Обновление экрана
Определяет, должна ли видео-карточка автоматически обновлять экран
Вход:
AL=0 : автоматическое обновление экрана включено
AL=1 : автоматическое обновление экрана выключено
Выход:
AL=12, иначе функция не поддерживается.
Примечание:
Необходима VGA совместимая видеокарточка Обычно, при отключении обновления экрана с него исчезает всякое изображение |
|
13H | Писать строку.
Вход:
ES:BP => выводимая строка
CX = длина строки (подсчитываются только символы)
DH,DL = строка,столбец начала вывода
BH = номер страницы
AL = код подфункции:
0 = использовать атрибут в BL; не трогать курсор
1 = использовать атрибут в BL; курсор - в конец строки
2 = После каждого знака записан атрибут, не трогать курсор
3 = После каждого знака записан атрибут, передвинуть курсор
Примечание:
Необходима EGA или VGA совметимая видеокарточка.
Работает только на AT-совместимых компьютерах.
Cимволы 0dH(CarRet), 0aH (LineFeed), 08H (backspace) и 07H (Beep) трактуются как команды управления и не высвечиваются.
Документация на PhoenixBios (rev6) не описывает параметр BH. Возможно, значение BH игнорируется
Если программа работает под управлением PTS-DOS, то значения в AL, BH, BL, DH и DL могут быть проигнорированны |
4Fh | VBE
Подробнее на странице VBE |