Vesa 1.2
6.7 Функция 05h - Управление оконной видеопамятью Super VGA
Эта функция восстанавливает и возвращает положение указанного окна в видеопамяти. Функция также обеспечивает непосредственный доступ к регистрам, управляющим аппаратным листованием видеопамяти. Для правильного использования этой функции программное обеспечение должно использовать функцию 01h VESA BIOS (Возврат информации о режиме Super VGA), чтобы определить размер, положение и зернистость окна.
Вход : AH = 4Fh Поддержка Super VGA
AL = 05h Управление окнами видеопамяти Super VGA
BH = 00h Выбор окна видеопамяти Super VGA
BL = Номер окна
0 = Окно A
1 = Окно B
DX = Положение окна в видеопамяти
(в единицах зернистости окна)
Выход : AX = Status
См. замечания, описанные ниже
Вход : AH = 4Fh Поддержка Super VGA
AL = 05h Управление окнами видеопамяти Super VGA
BH = 01h Выбор окна видеопамяти Super VGA
BL = Номер окна
0 = Окно A
1 = Окно B
Выход : AX = Состояние
DX = Положение окна в видеопамяти
(в единицах зернистости окна)
См. замечания, описанные ниже
Замечания:
Эта функция также доступна напрямую для дальнего (far) вызова из прикладной программы. Адрес функции BIOS может быть получен с помощью функции 01h VESA BIOS (Возврат информации о режиме Super VGA). Адрес этой функции содержится в одном из полей в ModelInfoBlock. Отметим, что адрес этой функции может различаться от режима к режиму в конкретных реализациях BIOS и поэтому указатель функции нужно получать всякий раз после установки режима.
В версии дальнего вызова информация о состоянии не возвращается в прикладную программу. Кроме того, в этой версии состояние регистров AX и DX будет испорчено. Следовательно, если регистры AX и/или DX нуждаются в сохранении, прикладная программа должна это сделать сама перед дальним вызовом.
При использовании версии дальнего вызова этой функции прикладная программа должна передать входные аргументы на регистрах BH, BL и DX (для установки окна), однако нет необходимости в заполнении регистров AH или AL.
6.8 Функция 06h - Установить/прочитать логическую длину скан-строк
Данная функция устанавливает длину логических строк растра. Эта функция позволяет прикладной программе устанавливать размер видеобуфера более широким, чем высвечиваемая область. Функция 07h позволяет затем указывать в таком буфере начало высвечиваемой области.
Вход : AH = 4Fh Поддержка Super VGA
AL = 06h Длина логических скан-строк
BL = 00h Выбор длины скан-строк
CX = Желаемая ширина в пикселах
Выход : AX = Состояние
BX = Число байтов на строку
CX = Фактическое число пикселов на строку
DX = Максимальное число строк
Вход : AH = 4Fh Поддержка Super VGA
AL = 06h Длина логических скан-строк
BL = 01h Возврат длины скан-строк
Выход : AX = Состояние
BX = Число байтов на строку
CX = Фактическое число пикселов на строку
DX = Максимальное число строк
Замечания:
Желаемая ширина в пикселах может быть недоступна на VGA по аппаратным причинам. Выбирается ближайшее большее значение к желаемому числу пикселов, и фактическое значение возвращается на регистре CX. На регистре BX возвращается значение, которое добавляется к указателю видеопамяти при переходе к следующей строке растра. Например, в режиме 13h оно будет равно 320, а в режиме 12h - 80. На регистре DX возвращается число логических строк, которое размещается в полной памяти и может использоваться в высвечиваемом режиме (при новой длине скан-строк). Эта функция также применима для текстовых режимов. В текстовых режимах прикладные программы должны определять ширину матрицы символа через обычные функции BIOS, умножать ее на желаемое число символов в строке и передавать получившиеся значение на регистре CX.
6.9 Функция 07h - Установить/прочитать начало высвечивания
Эта функция выбирает пиксел логической страницы, который высвечивается в левом верхнем углу экрана. Эта функция может использоваться для паннинга и скроллинга логического экрана, размеры которого превышают размер высвечиваемого экрана. Эта функция может также использоваться для быстрого переключения между двумя высвечиваемыми экранами для создания эффекта анимации с помощью двух буферов.
Вход : AH = 4Fh Поддержка Super VGA
AL = 07h Управление началом высвечивания
BH = 00h Зарезервировано и должно равняться 0
BL = 00h Выбор начала высвечивания
CX = Первый высвечиваемый пиксел в строке
DX = Первая высвечиваемая строка
Выход : AX = Состояние
Вход : AH = 4Fh Поддержка Super VGA
AL = 07h Управление началом высвечивания
BL = 01h Возврат начала высвечивания
Выход : AX = Состояние
BH = 00h Зарезервировано и должно равняться 0
CX = Первый высвечиваемый пиксел в строке
DX = Первая высвечиваемая строка
Замечания:
Эта функция применима также для текстовых режимов. В текстовых режимах прикладные программы должны определить ширину матрицы символа через обычные функции BIOS, умножить ее на номер колонки первого символа в строке и передавать получившиеся значение на регистре CX. Они должны также умножить высоту матрицы символа на номер первой высвечиваемой строки и передать получившееся значение на регистре DX.
6.10 Функция 08h - Установить/прочитать информацию о DAC-палитре
Эта функция опрашивает и устанавливает режим функционирования DAC-палитры. Некоторые DAC являются конфигурируемыми и предусматривают назначение 6, 8 или большего числа бит для красной, зеленой и синей компонент цвета. Подразумевается, что ширина палитры DAC сбрасывается в стандартное для VGA 6-битное на компоненту значение при вызове стандартной или VESA (AX=4F02h) функции установки режима.
Вход : AH = 4Fh Поддержка Super VGA
AL = 08h Установка/чтение DAC палитры
BL = 00h Установка ширины DAC палитры
BH = Желаемое число бит на цветовую компоненту
(Стандарт для VGA = 6)
Выход : AX = Состояние
BH = Текущее число бит на цветовую компоненту
(Стандарт для VGA = 6)
Вход : AH = 4Fh Поддержка Super VGA
AL = 08h Установка/чтение DAC палитры
BL = 01h Чтение ширины DAC палитры
Выход : AX = Состояние
BH = Текущее число бит на цветовую компоненту
(Стандарт для VGA = 6)
Прикладные программы могут определить переключаема ли ширина DAC, опросив бит D0 в поле Capabilities структуры VgaInfoBlock, которая возвращается VESA функцией опроса информации о Super VGA (AX=4F00h). Прикладные программы могут затем установить ширину палитры DAC в желаемое состояние. Если Super VGA не способна выбрать требуемую ширину палитры, то выбирается ближайшее меньшее значение, которое способна поддерживать Super VGA. Результирующая ширина палитры возвращается на регистре BH.
