Code: Интерфейс для работы с мышью:
Взаимодействие с драйвером мыши осуществляется при помощи инструкции 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 - изображение курсора слишком велико
|