![]() |
|
:: СОДЕРЖАНИЕ НОМЕРА
:: Газетные рубрики
:: АВТОРЫ
:: Поиск
:: Поддержка проекта
Webmoney:
|
:: №4 (17.03.2001) Просмотров: 5476
Автор: Сергей Гуляев / Macros. Рубрика: Читатель читателю. Номер: №4 (17.03.2001). Кемпстон крыскаДанный девайс, свободно подключаемый к любому Спектрум-совместимому компьютеру, позволяет подключить любую писишную мышь. Часто задают вопрос - учитывает ли этот интерфейс скорость передвижения мыши или же просто эмулируется Кемпстон джойстик? Отвечаю: это полноценный мышиный интерфейс, определяющий скорость, направление движения и нажатия на кнопки мыши. Опрос Кемпстон мыши осуществляется через программу-драйвер. В упрощенном варианте достаточно считать данные из портов и присвоить эти значения координатам, но тогда курсор будет летать по экрану с бешеной скоростью. Поэтому я рекомендую использовать следующий драйвер:MOUSE LD HL,(CRDS)
LD BC,#FBDF
IN A,(C)
MOUSE11 LD D,0:LD (MOUSE11+1),A
SUB D:CALL NZ,MOUSE30
LD B,#FF:IN A,(C)
MOUSE12 LD D,0:LD (MOUSE12+1),A
SUB D:CALL NZ,MOUSE40
LD (CRDS),HL:RET
MOUSE30 JP M,MOUSE35
ADD A,H:LD H,A:RET NC
LD H,#FF:RET
MOUSE35 XOR #FF:INC A:LD D,A
LD A,H:SUB D:LD H,A
RET NC
LD H,0:RET
MOUSE40 JP M,MOUSE45
LD E,A:LD A,L:SUB E
LD L,A:RET NC
LD L,#00:RET
MOUSE45 XOR #FF:INC A:ADD A,L
LD L,A:CP 191:RET C
LD L,191:RET
CRDS DW #0000; координаты курсораКак видно из листинга, данные для расчета X-координаты берутся из порта #FBDF, а для Y-координаты - из #FFDF. Нажатие кнопок можно определить, прочитав содержимое порта #FADF. Состояние битов D0, D1 и D2 определяет нажатие кнопок. Кнопка считается нажатой, если соответствующий бит равен нулю. При этом D0 считается левой кнопкой, D1 - правой. D2 лучше не опрашивать, потому что большинство выпускаемых сейчас мышей - двухкнопочные. Определить наличие мыши поможет следующая программа: CONF LD B,250
A_C3 LD A,#FA:IN A,(#DF):XOR #FF
JR NZ,A_C4:DJNZ A_C3
;мышь есть
RET
A_C4
;мыши нет
RETПравда, на некоторых компьютерах, не имеющих интерфейса Кempston mouse, этот тест ошибается и неверно определяет наличие мыши. Почему это происходит? Все дело в том, что порты дешифрируются не по всем 16-ти адресным линиям, а всего лишь по нескольким. И на адрес с младшим битом #DF «отзывается» какой-нибудь другой порт. При установке контроллера такие конфликтные ситуации исключаются путем подачи на сигнал IORQGE компьютера логической единицы. На самой же плате компьютера порты дешифрируются как раз с использованием этого сигнала, и если он в лог. 1, выбора не происходит. Контроллер Кempston mouse выпускается фирмой «Скорпион» в несколько усовершенствованном варианте. Дополнительно на плате установлен контроллер IBM клавиатуры, а мышь дополнительно может эмулировать любой из существующих на Спектруме джойстиков (это можно использовать, например, в старых программах, в которых мышь не опрашивается). Впечатления от работы с этим контроллером самые лучшие, никаких проблем с подключением и с работой. И еще один ультра-плюс данного девайса - он может работать как с пассивной мышкой (которые сейчас не так-то просто найти), так и с активной. Клавиатура - XT или AT, определяется автоматически. В общем, Кempston mouse - штука хорошая. Подключив ее, через некоторое время вы будете удивленно вспоминать: «...и как же это я раньше без мыши работал?» Ссылки по теме:Кемпстон-мышь [№15]Дополнения [№16] |