При включении питания проверяется тип подключенной мышки:Цитата:
Сообщение от newart
Код:;****************************************************
; проверка подключения мышки
; на выходе:
; mous_ID = 0 - простая, = 3 - 3D-mouse
; = 0ffh - мышка не подключена
tst_mouse:
; 1) передать команду сброса мышке (код = 0xFF)
ldi data,0xff ;Команда сброс
rcall trans_ack_mous ;передать и ждать ACK
brcs no_tst ;истек тайм-аут, мышка не подключена
; или неисправна
; иначе принять код AAh и код идентификатора мышки
; (время внутреннего теста 300 мсек для KeyMouse)
; (время внутреннего теста 350 мсек для Genius)
rcall time_1s ; тайм-аут 1000 мсек
rcall rec_mous ; принять код теста (0AAh)
brcs no_tst ; истек тайм-аут
rcall rec_mous ; принять идентификатор мышки
; 2) переключить мышку если получится в режим Intelimouse
ldi data,0xf3 ;Set Sample Ret
rcall trans_ack_mous
brcs no_tst
ldi data,200 ;200
rcall trans_ack_mous
brcs no_tst
ldi data,0xf3 ;Set Sample Ret
rcall trans_ack_mous
brcs no_tst
ldi data,100 ;100
rcall trans_ack_mous
brcs no_tst
ldi data,0xf3 ;Set Sample Ret
rcall trans_ack_mous
brcs no_tst
ldi data,80 ; 80
rcall trans_ack_mous
brcs no_tst
; 3) прочитать, что получилось
ldi data,0xf2 ;Read Device ID
rcall trans_ack_mous
brcs no_tst
rcall rec_mous_20 ;data=ID
brcs no_tst
sts mous_ID,data
; 4) передать команду активизации мышке (код = 0xF4)
ldi data,0xf4 ;
rjmp trans_ack_mous ;передать
;\----
no_tst: ldi data,0xff ;признак отсутствия мышки
sts mous_ID,data
ret
;=====================================================
В зависимости от типа мышки принимается либо три (mous_ID=0), либо четыре (mous_ID=3) байта,Цитата:
Сообщение от newart
из которых программно формируются сигналы для передачи в Спектрум.

