2 ; Standard joystick driver for the Apple ][. May be used multiple times when
3 ; linked to the statically application.
5 ; Ullrich von Bassewitz, 2003-05-02
6 ; Using the readjoy code from Stefan Haubenthal
9 .include "zeropage.inc"
11 .include "joy-kernel.inc"
12 .include "joy-error.inc"
18 ; ------------------------------------------------------------------------
23 ; ------------------------------------------------------------------------
24 ; Header. Includes jump table
30 .byte $6A, $6F, $79 ; "joy"
31 .byte JOY_API_VERSION ; Driver API version number
33 ; Button state masks (8 values)
40 .byte $00 ; Future expansion
41 .byte $00 ; Future expansion
42 .byte $00 ; Future expansion
51 ; ------------------------------------------------------------------------
54 JOY_COUNT = 2 ; Number of joysticks we support
57 ; ------------------------------------------------------------------------
63 ; ------------------------------------------------------------------------
64 ; INSTALL routine. Is called after the driver is loaded into memory. If
65 ; possible, check if the hardware is present and determine the amount of
67 ; Must return an JOY_ERR_xx code in a/x.
73 ; rts ; Run into UNINSTALL instead
75 ; ------------------------------------------------------------------------
76 ; UNINSTALL routine. Is called before the driver is removed from memory.
77 ; Can do cleanup or whatever. Must not return anything.
84 ; ------------------------------------------------------------------------
85 ; COUNT: Return the total number of available joysticks in a/x.
93 ; ------------------------------------------------------------------------
94 ; READ: Read a particular joystick passed in A.
98 and #$01 ; Fix joystick number
100 tax ; Joystick number (0,2) into X
104 lda BUTN0,x ; Check fire button
105 and #$80 ; BTN 0 0 0 0 0 0 0
108 jsr PREAD ; Read first paddle value
111 ror a ; /LEFT BTN 0 0 0 0 0 0
113 ror a ; RIGHT /LEFT BTN 0 0 0 0 0
117 jsr PREAD ; Read second paddle
120 ror a ; /UP RIGHT /LEFT BTN 0 0 0 0
122 ror a ; DOWN /UP RIGHT /LEFT BTN 0 0 0
123 eor #%01010000 ; DOWN UP RIGHT LEFT BTN 0 0 0