Generic USB Mouse Driver#

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 ------------------------------