Функция 61 - получить параметры для прямого доступа к графике.
Программе доступны данные графического экрана (область памяти, которая
собственно и отображает содержимое экрана) напрямую без вызовов
системных функций через селектор gs:
mov eax, [gs:0]
поместит в eax первый dword буфера, содержащий информацию о цвете
левой верхней точки (и, возможно, цвета нескольких следующих).
mov [gs:0], eax
при работе в режимах VESA c LFB
установит цвет левой верхней точки
(и возможно, цвета нескольких следующих).
Для интерпретации данных графического экрана требуется знание
некоторых параметров, которые возвращаются этой функцией.
Замечания:
- Параметры графики очень редко меняются при работе системы,
а именно, только в случаях, когда пользователь работает
с программой VRR.
- При изменении видеорежима система перерисовывает все окна
(событие с кодом 1) и перерисовывает фон (событие 5).
Эти же события происходят и в других случаях,
которые встречаются значительно чаще, чем изменение видеорежима.
- При работе в видеорежимах с LFB селектор gs указывает на
собственно LFB, так что чтение/запись по gs приводят
непосредственно к изменению содержимого экрана. При работе в
видеорежимах без LFB gs указывает на некоторую область данных
ядра, причём все функции вывода на экран добросовестно выполняют
двойную работу по записи непосредственно на экран и по записи
в этот буфер. В результате при чтении содержимого этого буфера
результаты соответствуют содержимому экрана
(с, вообще говоря, большим цветовым разрешением),
а запись игнорируется.
Исключением является режим 320*200, для которого в главном цикле
системного потока выполняется обновление экрана в соответствии
с движениями курсора мыши.
Разрешение экрана
Параметры:
- eax = 61 - номер функции
- ebx = 1 - номер подфункции
Возвращаемое значение:
- eax = [разрешение по оси x]*65536 + [разрешение по оси y]
Замечания:
- Можно использовать функцию 14 с учётом того, что она возвращает
размеры на 1 меньше. Это полностью эквивалентный способ.
Число бит на пиксель
Параметры:
- eax = 61 - номер функции
- ebx = 2 - номер подфункции
Возвращаемое значение:
- eax = число бит на пиксель (24 или 32)
Число байт на строку
Параметры:
- eax = 61 - номер функции
- ebx = 3 - номер подфункции
Возвращаемое значение:
- eax = число байт, которое занимает одна строка развёртки
(горизонтальная линия на экране)