Generic USB Mouse Driver#
Table of Contents
Tested with a Logitech Mouse USB. Might work with other mice.
Description#
USB Register | Byte of HID Packet | Function | Atari Memory Shadow | original Label | new USB label | |
---|---|---|---|---|---|---|
$10 | 1 | Buttons | $06F2 | -- | MBUTTON | |
$11 | 2 | Vertical displacement (up/down) | $06F1 | -- | MVERT | |
$12 | 3 | Horizontal displacement (left/right) | $06F0 | -- | MHORIZ | |
$13 | 4 | Wheel | $06F3 | -- | MWHEEL |
- Byte 3: Buttons
Bit | Button | |
---|---|---|
1 | left | |
2 | right | |
3 | middle |
- Byte 4 - Wheel
Value | Button | |
---|---|---|
$FF (255) | up | |
$01 (001) | down |
Device dependent source#
This Source must be included into the Base HID Driver.
01000 .LI OFF 01010 **************************** 01020 ** 6502 USB DEVELOPMENT ** 01030 ** (C) 2005 BY ABBUC ** 01040 ** REGIONALGRUPPE FFM ** 01050 ** DEVICE DRIVER FOR ** 01060 ** USB MOUSE (GENERIC) ** 01070 ** VERSION 1.0 20050121 ** 01080 ** LICENSED UNDER THE ** 01090 ** GNU PUBLIC LICENSE ** 01100 ** (GPL) VERS. 2 OR LATER ** 01110 ** ** 01120 **************************** 01130 ; THIS FILE MUST BE INCLUDED 01140 ; FROM USBHID.SRC! 01150 ; 01160 ; ATARI MEMORY LOCATIONS 01170 ; 01180 STICK0 = $0278 01190 STICK1 = $0279 01200 STRIG0 = $0284 01210 STRIG1 = $0285 01220 ; 01230 XM = $06F4 01240 YM = $06F5 01250 SDMCTL = $022F 01260 PMBASE = $D407 01270 GRACTL = $D01D 01280 HPOS0 = $D000 01290 PCOL0 = $02C0 01300 GPRIOR = $026F 01310 ; 01320 ; USB JOYSTICK SHADOW REGISTER 01330 ; 01340 MHORIZ = $06F0 01350 MVERT = $06F1 01360 MBUTTON = $06F2 01370 MWHEEL = $06F3 01380 ; 01390 ------------------------------ 01400 POLLDEVICE 01410 ; 01420 LDA #03 01430 JSR PROCESS 01440 AND #01 01450 BEQ .2 ; NO DATA 01460 ; 01470 LDX #$10 01480 JSR REGFETCH 01490 STA MBUTTON 01500 ; 01510 LDX #$11 01520 JSR REGFETCH 01530 STA MVERT 01540 ; 01550 LDX #$12 01560 JSR REGFETCH 01570 STA MHORIZ 01580 ; 01590 LDX #$13 01600 JSR REGFETCH 01610 STA MWHEEL 01620 ; 01630 .2 RTS 01640 ------------------------------ 01650 USB2ATA 01660 LDA #1 01670 STA STRIG0 01680 ; 01690 LDA MBUTTON 01700 BEQ GETMOUSE 01710 LDA #0 01720 STA STRIG0 01730 ; 01740 GETMOUSE 01750 LDA XM 01760 CLC 01770 ADC MVERT 01780 STA XM 01790 ; 01800 LDA YM 01810 CLC 01820 ADC MHORIZ 01830 STA YM 01840 PLAYER 01850 CLC 01860 LDA XM 01870 CLC 01880 ADC #49 01890 STA HPOS0 01900 LDX #0 01910 TXA 01920 .1 STA $7C00,X 01930 INX 01940 BNE .1 01950 LDX YM 01960 LDY #0 01970 .2 LDA PLAYTAB,Y 01980 STA $7C20,X 01990 INX 02000 INY 02010 CPY #11 02020 BNE .2 02030 .20 RTS 02040 ------------------------------ 02050 VBI 02060 ; 02070 LDA #0 02080 STA MVERT 02090 STA MHORIZ 02100 STA MBUTTON 02110 STA MWHEEL 02120 ; 02130 JSR POLLDEVICE 02140 JSR USB2ATA 02150 .1 JMP XITVBV 02160 ------------------------------ 02170 PLAYTAB 02180 .HX 0080C0E0F0E0E0B0 02190 .HX 101000 02200 ------------------------------ 02210 .OR $7400 02220 ------------------------------ 02230 PRINTDEVICE 02240 JSR PRINT 02250 .AS "USB MOUSE Driver" 02260 .HX 40 02270 RTS 02280 ------------------------------ 02290 PRINTVERSION 02300 JSR PRINT 02310 .AS "Version 1.0 " 02320 .HX 40 02330 RTS 02340 ------------------------------ 02350 PRINTCOPY 02360 JSR PRINT 02370 .AS "(c) 20050121 C. Strotmann/ABBUC" 02380 .HX 40 02390 ; 02400 ; PM GRAPHIC INIT 02410 ; 02420 LDA #$FF 02430 STA PCOL0 02440 LDA #$78 02450 STA PMBASE 02460 LDA #$3A 02470 STA SDMCTL 02480 LDA #2 02490 STA GRACTL 02500 STA GPRIOR 02510 RTS 02520 ------------------------------