оглавление | вперед | назад
Обработчик аппаратного прерывания обязан, помимо обработки приходящих от мыши данных, также восстанавливать в порту биты питания. Эти биты устанавливаются в порту базовый_адрес+4, который называется Modem Control Register. Известны мыши, для питания которых нужно выдавать в этот порт число 8, число 0Bh, а также мышь, которая в зависимости от этого числа меняет свой режим работы (0B-MS, 08-PC). Драйвер TRUEDOX обеспечивает это переключение по функциям A0 (PC mouse) и A1 (MS mouse).
Есть три распространенных протокола обмена.
Протокол обмена следующий: 1200,N71. Обеспечивает информацию о 2 клавишах. По каждому событию выдается пачка из 3 байт:
1 | -- | 1 | LB | RB | Y7 | Y6 | X7 | X6 |
2 | -- | 0 | X5 | X4 | X3 | X2 | X1 | X0 |
3 | -- | 0 | Y5 | Y4 | Y3 | Y2 | Y1 | Y0 |
LB, RB - состояние клавиш, нажатая клавиша = 1. Остальные значащие биты- относительное пеpемещение в дополнительном коде со времени последней посылки.
Определить наличие мыши можно следующим образом: в порт xFC записать число 8, подождать, а потом опять 0Bh. Hа запись числа 0Bh мышь реагирует посылкой одного или нескольких байтов, среди которых обязательно должен быть байт 4Dh (буква 'M' в таблице ASCII).
Протокол обмена следующий: 1200,N81 Обеспечивает информацию о 3 клавишах. По каждому событию выдается пачка из 5 байт:
1 | 1 | 0 | 0 | 0 | 0 | LB | MB | RB |
2 | X7 | X6 | X5 | X4 | X3 | X2 | X1 | X0 |
3 | Y7 | Y6 | Y5 | Y4 | Y3 | Y2 | Y1 | Y0 |
4 | X7 | X6 | X5 | X4 | X3 | X2 | X1 | X0 |
5 | Y7 | Y6 | Y5 | Y4 | Y3 | Y2 | Y1 | Y0 |
LB, MB, RB - состояние клавиш, нажатая клавиша = 0. Остальные значащие биты- относительное пеpемещение со времени последней посылки в дополнительном коде в двух частях, которые надо суммировать. Видимо, это связано с тем, чтобы не использовать X7 и Y7, чтобы не пересекаться с первым ключевым байтом. Способ определения наличия мыши в этом режиме мне неизвестен.
Подобен клавиатурному.
оглавление | вперед | назад