![]()  | 
| 
    	 :: СОДЕРЖАНИЕ НОМЕРА 
	
:: Газетные рубрики 
	
:: АВТОРЫ 
	
:: Поиск 
	:: Поддержка проекта 
	  
		Webmoney:
		 
	
 | 
	
		 ::     №4 (17.03.2001) Просмотров: 5432
     
	Автор: Сергей Гуляев / 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]  |