]> git.sur5r.net Git - cc65/blob - libsrc/pet/joy/pet-stdjoy.s
Removed IRQ support from joystick drivers.
[cc65] / libsrc / pet / joy / pet-stdjoy.s
1 ;
2 ; Standard PET userport joystick driver for the PET
3 ;
4 ; Marco van den Heuvel, 2010-01-23
5 ;
6
7         .include        "zeropage.inc"
8
9         .include        "joy-kernel.inc"
10         .include        "joy-error.inc"
11         .include        "pet.inc"
12
13         .macpack        module
14
15
16 ; ------------------------------------------------------------------------
17 ; Header. Includes jump table
18
19         module_header   _pet_stdjoy_joy
20
21 ; Driver signature
22
23         .byte   $6A, $6F, $79           ; "joy"
24         .byte   JOY_API_VERSION         ; Driver API version number
25
26 ; Library reference
27
28         .addr   $0000
29
30 ; Jump table.
31
32         .addr   INSTALL
33         .addr   UNINSTALL
34         .addr   COUNT
35         .addr   READ
36
37 ; ------------------------------------------------------------------------
38 ; Constants
39
40 JOY_COUNT       = 2             ; Number of joysticks we support
41
42
43 .code
44
45 ; ------------------------------------------------------------------------
46 ; INSTALL routine. Is called after the driver is loaded into memory. If
47 ; possible, check if the hardware is present and determine the amount of
48 ; memory available.
49 ; Must return an JOY_ERR_xx code in a/x.
50 ;
51
52 INSTALL:
53         lda     #<JOY_ERR_OK
54         ldx     #>JOY_ERR_OK
55 ;       rts                     ; Run into UNINSTALL instead
56
57 ; ------------------------------------------------------------------------
58 ; UNINSTALL routine. Is called before the driver is removed from memory.
59 ; Can do cleanup or whatever. Must not return anything.
60 ;
61
62 UNINSTALL:
63         rts
64
65
66 ; ------------------------------------------------------------------------
67 ; COUNT: Return the total number of available joysticks in a/x.
68 ;
69
70 COUNT:
71         lda     #<JOY_COUNT
72         ldx     #>JOY_COUNT
73         rts
74
75 ; ------------------------------------------------------------------------
76 ; READ: Read a particular joystick passed in A.
77 ;
78
79 READ:
80         tax                     ; Joystick number into X
81         bne     joy2
82
83 ; Read joystick 1
84
85 joy1:
86         lda     #0
87         sta     VIA_DDRA
88         lda     VIA_PRA
89         and     #$0f
90         cmp     #$0c
91         bne     @notc1
92         lda     #$0f
93         bne     @end1
94 @notc1:
95         ora     #$10
96 @end1:
97         eor     #$1f
98         rts
99
100 ; Read joystick 2
101
102 joy2:
103         lda     #0
104         sta     VIA_DDRA
105         lda     VIA_PRA
106         lsr
107         lsr
108         lsr
109         lsr
110         cmp     #$0c
111         bne     @notc2
112         lda     #$0f
113         bne     @end2
114 @notc2:
115         ora     #$10
116 @end2:
117         eor     #$1f
118         ldx     #0
119         rts