- •3.1. Как устроена мышь? Оптико-механические мыши
- •Оптические мыши
- •3.2. Драйверы мыши в ms-dos
- •3.3. Прерывание для обслуживания мыши
- •3.3.1. Инициализация мыши
- •3.3.2. Включить курсор мыши
- •3.3.3. Выключить курсор мыши
- •3.3.4. Определить положение курсора
- •3.3.5. Установить курсор
- •3.3.6. Определить положение курсора при нажатии клавиши
- •3.3.7. Определить положение курсора при отпускании клавиши
- •3.3.8. Задать диапазон движения курсора по горизонтали
- •3.3.9. Задать диапазон движения курсора по вертикали
- •3.3.10. Задать форму курсора в графическом режиме
- •3.3.11. Задать форму курсора в текстовом режиме
- •3.3.12. Определить содержимое счетчиков перемещения
- •3.3.13. Установить драйвер событий
- •3.3.14. Включить эмуляцию светового пера
- •3.3.15. Выключить эмуляцию светового пера
- •3.3.16. Задать скорость перемещения курсора мыши
- •3.3.17. Установить область исключения для курсора
- •3.3.18. Задать увеличенный графический курсор (pc mouse)
- •3.3.19. Определить порог удвоения скорости
- •3.3.20. Заменить драйвер событий
- •3.3.21. Определить размер буфера состояния драйвера
- •3.3.22. Сохранить состояние драйвера
- •3.3.23. Восстановить состояние драйвера
- •3.3.24. Установить альтернативный драйвер событий
- •3.3.25. Получить адрес альтернативного драйвера событий
- •3.3.26. Установить чувствительность мыши
- •3.3.27. Определить чувствительность мыши
- •3.3.28. Установить частоту прерываний для Inport Mouse
- •3.3.29. Установить номер видеостраницы
- •3.3.30. Определить номер видеостраницы
- •3.3.31. Отключить драйвер мыши
- •3.3.32. Восстановить драйвер мыши
- •3.3.33. Сбросить драйвер мыши
- •3.3.34. Определить тип мыши
3.3.25. Получить адрес альтернативного драйвера событий
На входе: AX = 0019h;
CX = маска событий, для которой требуется
получить адрес драйвера (формат маски
соответствует функции 18h).
На выходе: CX = маска событий или 0000h, если заданной
маске не соответствует ни один
установленный драйвер событий;
ES:DX = адрес драйвера событий, использующий
заданную маску событий.
Эта функция предназначена для получения адреса драйвера событий с заданной маской событий. Получив адрес, вы можете установить новый драйвер, использующий эту же маску.
3.3.26. Установить чувствительность мыши
На входе: AX = 001Ah;
BX = горизонтальная чувствительность в
миках на точку (пиксель);
CX = вертикальная чувствительность в
миках на точку (пиксель);
DX = значение порога удвоения, мики в секунду.
На выходе: Не используются.
Эта функция является комбинацией функций 0Fh и 13h. Она позволяет одновременно устанавливать чувствительность мыши и порог удвоения скорости.
3.3.27. Определить чувствительность мыши
На входе: AX = 001Bh.
На выходе: BX = горизонтальная чувствительность в
миках на точку (пиксель);
CX = вертикальная чувствительность в
миках на точку (пиксель);
DX = значение порога удвоения, мики в секунду.
Функция позволяет определить текущие значения для чувствительности мыши и порога удвоения.
3.3.28. Установить частоту прерываний для Inport Mouse
На входе: AX = 001Ch
BX = код скорости прерываний:
1 - нет прерываний;
2 - 30 прерываний в секунду;
4 - 50 прерываний в секунду;
8 - 100 прерываний в секунду;
16 - 200 прерываний в секунду.
На выходе: Не используются
Мышь периодически вырабатывает сигнал прерывания, по которому драйвер считывает текущее состояние мыши. С помощью функции 1Ch вы можете изменять частоту появления прерываний, но только для мыши системы Inport Mouse (Вы можете определить тип используемой мыши с помощью функции 24h).
Если используется большая частота прерываний, возрастает точность определения состояния мыши, но уменьшается общая производительность системы.
3.3.29. Установить номер видеостраницы
На входе: AX = 001Dh;
BX = номер видеостраницы.
На выходе: Не используются.
Данная функция задает номер видеостраницы, на которой будет отображаться курсор мыши. По умолчанию для отображения используется страница 0. Подробнее о видеостраницах вы узнаете из следующего тома книги.
3.3.30. Определить номер видеостраницы
На входе: AX = 001Eh.
На выходе: BX = номер видеостраницы.
Функция возвращает номер видеостраницы, на которой в настоящее время отображается курсор мыши.
3.3.31. Отключить драйвер мыши
На входе: AX = 001Fh.
На выходе: AX = результат выполнения:
001Fh - драйвер отключен;
FFFFh - отключение невозможно;
ES:DX = вектор предыдущего драйвера мыши.
После вызова этой функции драйвер мыши полностью отключается. Вектор прерывания INT 33h остается определенным, однако теперь выполняется только одна функция прерывания INT 33h - функция 21h (программный сброс мыши).
Функцию 1Fh удобно использовать для временной замены драйвера на собственную систему обслуживания мыши. Сначала вы отключаете драйвер функцией 1Fh, запоминая вектор предыдущего драйвера, возвращаемого в регистрах ES:DX. Затем устанавливаете собственную систему обслуживания мыши. Впоследствии вы восстанавливаете значение этого вектора.