Схема цоколевки
Вилка (устанавливается на кабеле) |
Розетка (устанавливается на корпусе компьютера) |
---|---|
|
|
Названия и функциональные назначения выводов
№ вывода |
Обозначение |
Описание |
---|---|---|
1 |
Data |
Data (передача данных) |
2 |
n/c |
Not Connected (не используется) |
3 |
GND |
Ground (корпус) |
4 |
+5VDC |
Питание, +5 В |
5 |
Clock |
Тактовая частота передачи данных |
6 |
n/c |
Not Connected (не используется) |
Обработчик аппаратного прерывания обязан, помимо обработки приходящих от мыши данных, также восстанавливать в порту биты питания. Эти биты устанавливаются в порту базовый_адрес+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, чтобы не пересекаться с первым ключевым байтом. Способ определения наличия мыши в этом режиме мне неизвестен.
Подобен клавиатурному.
***