Kempston Mouse
Kempston Mouse - интерфейс для подключения манипулятора типа "мышь" к ZX Spectrum, разработанный компанией Kempston Micro Electronics. Манипулятор представляет собой механическую пассивную мышь с двумя кнопками. Интерфейс поставлялся в комплекте со специальной версией графического редактора Art Studio и стоил £49.95.
В России Kempston mouse стал основным стандартом для подключения мыши. Любителями было разработано много вариантов контроллеров для самостоятельной сборки, готовые контроллеры также выпускались некоторыми отечественными производителями ZX Spectrum.
Содержание
Программирование
Порты
- #FADF - порт кнопок и (по отечественному стандарту) колёсика.
- D0: левая кнопка (0=нажата)
- D1: правая кнопка (0=нажата)
- D2: средняя кнопка (0=нажата)
- D3: зарезервировано под ещё одну кнопку (0=нажата)
- D4-D7: координата колёсика
- #FBDF - X-координата (растёт слева направо)
- #FFDF - Y-координата (растёт снизу вверх)
Спор о расположении кнопок
В журнале Crash #48 написано:
"IN 64479 reads the horizontal position of the mouse, and IN 65503 gives the vertical position. The two buttons are read with IN 64223, which gives 252 if both are pressed. 253 for the right button only and 254 for the left button. You get 255 if neither button is pressed."
Это означает, что бит D0 показывает состояние левой кнопки.
Однако в Art Studio основной рабочей является кнопка, состояние которой находится в бите D1.
Схему Kempston mouse в России практически одновременно воссоздали два человека, оба из Санкт-Петербурга - Максим Романов (RML/Create Soft) и Михаил Кондратьев/MI&DI. Первая схема имела левую кнопку на D0 и была опубликована в журнале ZX Format #5 (12 декабря 1996). Вторая схема имела левую кнопку на D1 и была опубликована в журнале Spectrofon #20 (12 октября 1996). Контроллер мыши и клавиатуры фирмы Scorpion имел функцию обмена кнопок (комбинацией клавиш на клавиатуре). Такая же функция присутствует в ряде эмуляторов.
Некоторые программы (например, журнал ZX Format) определяют левую кнопку как первую нажатую на пригласительном окне. Однако это вызывает неудобство, если интерфейс подразумевает закрытие окон правой кнопкой мыши. Если нажата неверная кнопка, оболочку приходится перезагружать.
22 ноября 2001 года в эхоконференции Fido REAL.SPECCY был зафиксирован новый стандарт на Kempston mouse, включающий колесико и жёстко закрепляющий левую кнопку мыши на D0. Этот стандарт также зафиксирован в эхоконференции ZX.SPECTRUM 20 апреля 2003 года.
Определение наличия мыши
Мышь считается отсутствующей, если из всех 3 её портов считывается одинаковое значение (это соответствует Kempston джойстику или отсутствию устройства). Она также считается отсутствующей, если шина данных компьютера загрязнена (младший байт вектора прерываний не равен #FF), так как иначе невозможно определить её отсутствие по первому методу.
В противном случае мышь присутствует.
Существует вероятность (1/65536), что мышь не определится при её наличии - если обе координаты равны #FF. Можно считать значения портов мыши, равные #FF,#FF,#FF, признаком её наличия (при этом в случае отсутствия мыши дальнейший её опрос не повлияет на работоспособность программы, если найденная мышь не становится единственным устройством управления).
Ссылки
- Страница устройства на WoS
- Работа с Kempston mouse - статья из Optron #14. Определение наличия мыши, опрос кнопок и получение координат.
- Схемы контроллеров Kempston mouse - статьи из разных электронных журналов.
- Мышь Create Soft