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.