]> git.sur5r.net Git - cc65/commitdiff
tweak driver to no more use IRQ
authormrdudz <mrdudz@users.noreply.github.com>
Tue, 6 Mar 2018 23:20:42 +0000 (00:20 +0100)
committermrdudz <mrdudz@users.noreply.github.com>
Tue, 6 Mar 2018 23:20:42 +0000 (00:20 +0100)
libsrc/c64/joy/c64-hitjoy.s

index 9f6c0b4dd5204d6fd966dd0ebe39c3237b8e80f8..3b4a0b9092cde9fbebac4b8c8bda830e7aedab56 100644 (file)
@@ -73,13 +73,22 @@ UNINSTALL:
         rts
 
 ; ------------------------------------------------------------------------
-; IRQ entry point. Is called from the C layer as a subroutine in the
-; interrupt. The routine MUST return carry set if the interrupt has been
-; 'handled' - which means that the interrupt source is gone. Otherwise it
-; MUST return carry clear.
+; COUNT: Return the total number of available joysticks in a/x.
+;
 
-IRQ:    ; cia 2 setup
+COUNT:  lda     #<JOY_COUNT
+        ldx     #>JOY_COUNT
+        rts
 
+; ------------------------------------------------------------------------
+; READ: Read a particular joystick passed in A.
+;
+
+readadapter:
+
+        sei
+
+        ; cia 2 setup
         ldy     #$00            ; port b direction
         sty     $dd03           ; => input
 
@@ -143,32 +152,24 @@ IRQ:    ; cia 2 setup
         sta     temp4
 
 fire:
-        ; Default Value: $40/64 on PAL
-        ;                    $42/66 on NTSC
+        ; FIXME: to be really 100% correct this should restore the correct timer
+        ;        values for the respective machine (PAL: $4025, NTSC: $4295)
+        ;        however, this should hardly be a problem in a real world program
+
         lda     #$41
         sta     $dc05
-        ; Default Value: $25/37 on PAL
-        ;                    $95/149 on NTSC
         lda     #0
         sta     $dc04
 
-        ; We do never "handle" the interrupt, we use it just as a timer.
-        clc
-        rts
-
-; ------------------------------------------------------------------------
-; COUNT: Return the total number of available joysticks in a/x.
-;
-
-COUNT:  lda     #<JOY_COUNT
-        ldx     #>JOY_COUNT
+        cli
         rts
 
-; ------------------------------------------------------------------------
-; READ: Read a particular joystick passed in A.
-;
+READ:
+        pha
+        jsr readadapter
+        pla
 
-READ:   tax            ; Joystick number into X
+        tax            ; Joystick number into X
         bne joy2
 
 ; Read joystick 1
@@ -214,4 +215,3 @@ joy4:   lda     temp4
         eor     #$1F
         ldx     #0
         rts
-