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 $00 ; 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.
74 ; rts ; Run into DEINSTALL instead
76 ; ------------------------------------------------------------------------
77 ; UNINSTALL routine. Is called before the driver is removed from memory.
78 ; Can do cleanup or whatever. Must not return anything.
85 ; ------------------------------------------------------------------------
86 ; COUNT: Return the total number of available joysticks in a/x.
94 ; ------------------------------------------------------------------------
95 ; READ: Read a particular joystick passed in A.
99 and #$01 ; Fix joystick number
101 tax ; Joystick number (0,2) into X
105 lda OPEN_APPLE,x ; Check fire button
106 and #$80 ; BTN 0 0 0 0 0 0 0
109 jsr PREAD ; Read first paddle value
112 ror a ; /LEFT BTN 0 0 0 0 0 0
114 ror a ; RIGHT /LEFT BTN 0 0 0 0 0
118 jsr PREAD ; Read second paddle
121 ror a ; /UP RIGHT /LEFT BTN 0 0 0 0
123 ror a ; DOWN /UP RIGHT /LEFT BTN 0 0 0
124 eor #%01010000 ; DOWN UP RIGHT LEFT BTN 0 0 0