Драйвер поддерживает три функции, которые позволяют получить разные данные о состоянии мыши.
Функция Mouse 3 возвращает в регистрах bх, сх и dx текущие значения счетчиков координат на экране и состояние кнопок. В сх находится номер столбца (координата х), а в dx — номер строки (координата Y). Три младших разряда регистра bх отражают состояние кнопок. Левой кнопке соответствует нулевой разряд, правой — первый и средней — второй. Если кнопка нажата, то соответствующий ей разряд установлен, а если не нажата, то очищен. Некоторые драйверы позволяют в процессе установки переопределить правую и левую кнопки, это предусмотрено специально для людей, которым удобнее работать левой рукой. В таком случае нулевой разряд регистра bх отражает состояние правой кнопки, а первый разряд — левой.
Функция Mouse 5 возвращает данные о количестве нажатий на одну из кнопок и значение координат в момент последнего нажатия. Перед ее вызовом в регистре bх указывается номер кнопки: bх=о для левой, bx=i для правой и bх=2 для средней. В том же регистре (bх) драйвер возвращает количество нажатий на указанную кнопку, произошедших после последнего опроса ее состояния. Кроме того, в регистре ах возвращается состояние всех кнопок в том же виде, в каком эти данные возвращала функция Mouse 3 в регистре bх. При этом в регистрах сх и dx находятся значения координат в момент последнего нажатия на указанную кнопку.
Функция Mouse 6 отличается от Mouse 5 только тем, что возвращает информацию не о нажатии, а об отпускании указанной кнопки.
Функция Mouse 3 применяется наиболее часто. Функции Mouse 5 и Mouse б нужны в специальных случаях и, вообще говоря, при программировании работы с мышью без них можно обойтись.
Для того чтобы при изменении состояния мыши драйвер мог прервать выполнение задачи, последняя должна с помощью специальных функций установить прерывающую подпрограмму. В данном разделе описаны варианты установки и удаления прерывающих подпрограмм, требования к их оформлению, условия вызова и данные, передаваемые драйвером.
Обычно термин "прерывающая" указывает на то, что подпрограмма вызывается при возникновении событий, независящих от выполнения основной задачи полностью или частично. В нашем случае момент вызова подпрограммы зависит от действий оператора, работающего с мышью.
Особенность описываемых ниже подпрограмм заключается в том, что в случае необходимости их может вызывать основная задача, но это уже относится к области трюков или искусства программирования.