Графические устройства

         

Специальные функции



Специальные функции

Пять команд с кодами I5h, I6h, I7h, iFh и 20h выполняют специфические действия, которые нужны только в особых случаях. В первую очередь к ним относится смена драйвера при выполнении задачи (как правило, системной, а не прикладной). Простой замены содержимого вектора 33h в этом случае недостаточно, поскольку при первоначальной установке драйвера настраивается контроллер прерываний и изменить эти настройки можно только с помощью специальной функции iFh, которая выполняет полную дезактивацию драйвера и возвращает в регистрах es:bx (возможно es:dx) содержимое вектора 33h. Дезактивированный драйвер остается в оперативной памяти. После этого задача может устанавливать свой драйвер или использовать вектор ззь для других целей. Перед выходом из задачи работа драйвера восстанавливается с помощью функции 20Ь, которая не требует задания входных параметров.

В некоторых случаях может понадобиться сохранить текущие настройки драйвера перед их изменением и спустя некоторое время восстановить первоначальные значения. Все внутренние переменные и счетчики хранятся в специальном буфере состояния драйвера. Порядок действий при сохранении и восстановлении содержимого этого буфера следующий. С помощью функции 15Ь задача определяет размер буфера состояния, выделяет соответствующее пространство оперативной памяти и помещает адрес его начала в регистры es:dx. После этого она запрашивает выполнение функции 1бb, которая сохраняет текущее состояние. Теперь можно изменять текущие установки драйвера мыши.

Для восстановления исходного состояния адрес буфера, в котором оно записано, надо поместить в регистры es:dx и обратиться к драйверу с запросом 17b.

Такова общая характеристика базового набора функций, выполняемых драйвером мыши. Теперь мы переходим к рассмотрению способов программирования работы с ним в режимах VESA.

 



Содержание раздела