Code: Select all
Интерфейс для работы с мышью:
Взаимодействие с драйвером мыши осуществляется при помощи инструкции RST 30h.
В зависимости от конкретной функции, в качестве входных и выходных параметров
используются различные регистры, при этом номер функции задается в регистре C.
Любые перемещения мыши и нажатие на клавиши воспринимает специальная программа
драйвер мыши. Каждое нажатие и отпускание клавиш или перемещение мыши вызывает
прерывание. Программа, обслуживающая это прерывание, читает пакет данных от мыши
и перемещает курсор мыши в зависимости от полученных данных.
00h (00) INITIALIZATION (Инициализация драйвера мыши)
входные данные:
C - 00h
выходные данные:
A - драйвер не установлен, если CF=1
A - успешная инициализация, драйвер установлен, если CF=0
Функция производит начальную инициализацию драйвера мыши. При возвращении флага
переноса драйвер не установлен.
01h (01) SHOW MOUSE CURSOR (Вывести курсор мыши на экран)
входные данные:
C - 01h
выходные данные:
A - код ошибки, если CF=1
Функция выводит на экран курсор мыши и отслеживает все перемещения курсора и
перерисовывает его.
02h (02) HIDE MOUSE CURSOR (Убрать курсор мыши с экрана)
входные данные:
C - 02h
выходные данные:
A - код ошибки, если CF=1
Функция стирает курсор мыши с экрана, но драйвер продолжает отслеживание
перемещения мыши и нажатие на кнопки.
03h (03) READ MOUSE STATE (Чтение состояния мыши)
входные данные:
C - 03h
выходные данные:
A - код ошибки, если CF=1
A - состояние кнопок
D0 - левая
D1 - правая
HL - x-координата
DE - y-координата
Функция возвращает текущие координаты курсора мыши и состояние ее кнопок.
Координаты возвращаются в точках и для текстовых режимов необходимо их делить
на восемь для получения координат в знакоместах.
04h (04) GOTO MOUSE CURSOR (Установка координат курсора мыши)
входные данные:
C - 04h
HL - x-координата
DE - y-координата
выходные данные:
A - код ошибки, если CF=1
Установка координат курсора мыши. Функция перемещает курсор мыши в заданные
координаты.
07h (07) VERT. BOUNDS (Задание вертикальных границ перемещения курсора)
входные данные:
C - 07h
HL - y-минимальная
DE - y-максимальная
выходные данные:
A - код ошибки, если CF=1
Функция задает верхнюю минимальную и нижнюю максимальную координаты в которых
может перемещаться курсор мыши по вертикали.
08h (08) HORZ. BOUNDS (Задание горизонтальных границ перемещения курсора)
входные данные:
C - 08h
HL - x-минимальная
DE - x-максимальная
выходные данные:
A - код ошибки, если CF=1
Функция задает левую минимальную и правую максимальную координаты в которых
может перемещаться курсор мыши по горизонтали.
09h (09) LOAD CURSOR (Загрузка изображения курсора мыши)
входные данные:
C - 09h
B = 0
IX - изображение курсора
H - высота курсора
L - ширина курсора
D - Y активная точка
E - X активная точка
выходные данные:
A - код ошибки, если CF=1
Функция загружает новое изображение курсора мыши в драйвер и задать активную
точку изображения.
0Ah (10) CURSOR TEXT MODES (Установка курсора мыши в текстовом режиме)
входные данные:
C - 0Ah
B = 0
H - AND SIMBOL MASK
L - XOR SIMBOL MASK
D - AND ATTRIBUT MASK
E - XOR ATTRIBUT MASK
выходные данные:
A - код ошибки, если CF=1
функция устанавливает символ и атрибут курсора мыши для текстового режима.
0Bh (11) RETURN CURSOR (Получение изображения курсора мыши)
входные данные:
C - 0Bh
IX - буфер для изображения курсора
выходные данные:
A - код ошибки, если CF=1
H - высота курсора
L - ширина курсора
D - Y активная точка
E - X активная точка
Функция возвращает изображение курсора мыши из драйвера.
0Eh (14) GET SENSETIVE (Чтение чувствительности мыши)
входные данные:
C - 0Eh
выходные данные:
A - код ошибки, если CF=1
H - чувствительность по вертикали
L - чувствительность по горизонтали
Функция возвращает значения чувствительности перемещения мыши по вертикали и
горизонтали.
0Fh (15) SET SENSETIVE (Установка чувствительности мыши)
входные данные:
C - 0Fh
H - чувствительность по вертикали
L - чувствительность по горизонтали
выходные данные:
A - код ошибки, если CF=1
Функция устанавливает значения чувствительности перемещения мыши по вертикали
и горизонтали.
80h (128) MOUSE HARDWARE INTERRUPT (Обработчик аппаратного прерывания от мыши)
входные данные:
C - 80h
выходные данные:
A - код ошибки, если CF=1
По приходу прерывания от мыши вызывается данная функция драйвера. В случае
когда требуется работа подпрограммы при запрещенных прерываниях, используйте
данную функцию, для избежания потерь пакетов данных от мыши.
81h (129) CHANGE VIDEO MODE (Информирование о смене режима экрана)
входные данные:
C - 81h
A - режим экрана
выходные данные:
A - код ошибки, если CF=1
Функция информирует драйвер мыши об изменении режима экрана. Номера режимов
соответствуют функции установка режима экрана.
83h (131) MOUSE REFRESH (Принудительная перерисовка курсора)
входные данные:
C - 83h
выходные данные:
A - код ошибки, если CF=1
Функция перерисовывает изображение курсора мыши на экране не дожидаясь
очередного прерывания.
коды ошибок от драйвера мыши:
0 - нет ошибок
1 - неизвестная функция
2 - зарезервирована
3 - курсор уже на экране
4 - курсор отсутствует на экране
5 - изображение курсора слишком велико