]> git.sur5r.net Git - cc65/commitdiff
Joystick code conversion for C128
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 20 Dec 2002 23:30:14 +0000 (23:30 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 20 Dec 2002 23:30:14 +0000 (23:30 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@1810 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/Makefile
libsrc/c128/.cvsignore
libsrc/c128/Makefile
libsrc/c128/c128-stdjoy.s [new file with mode: 0644]
libsrc/c128/readjoy.s [deleted file]

index d849d67cfbe7592c21096fe92fda51cbf2a4e7ff..7901fc6183a3fe50abccf318c1a4de583eb74f6f 100644 (file)
@@ -142,6 +142,7 @@ c128lib:
        done
        mv c128/crt0.o c128.o
        cp c128/*.emd .
+       cp c128/*.joy .
 
 #-----------------------------------------------------------------------------
 # Commdore P500 / CBM 5x0
index b3753bbb6332d69f7bcc6a0292fb5f4c61c4d0de..58093ab1b4489dd35aabf76284409675a175acf2 100644 (file)
@@ -1,2 +1,3 @@
 *.emd
+*.joy
 *.tgi
index fbf3c96b8b70d0556486e1a996a884c73fd1e797..55317b3df1113d3632357458551d371d6323670c 100644 (file)
@@ -17,6 +17,9 @@
 %.emd: %.o ../runtime/zeropage.o
        @$(LD) -t module -o $@ $^
 
+%.joy: %.o ../runtime/zeropage.o
+       @$(LD) -t module -o $@ $^
+
 %.tgi: %.o ../runtime/zeropage.o
        @$(LD) -t module -o $@ $^
 
@@ -36,7 +39,6 @@ OBJS =        _scrsize.o      \
         kernal.o        \
        mouse.o         \
         randomize.o     \
-       readjoy.o       \
         revers.o        \
        rs232.o         \
        tgi_mode_table.o
@@ -44,18 +46,20 @@ OBJS =      _scrsize.o      \
 #--------------------------------------------------------------------------
 # Drivers
 
-TGIS =
-
 EMDS = c128-georam.emd c128-ram.emd c128-reu.emd c128-vdc.emd
 
+JOYS = c128-stdjoy.joy
+
+TGIS =
+
 #--------------------------------------------------------------------------
 # Targets
 
-all:           $(OBJS) $(EMDS) $(TGIS)
+all:           $(OBJS) $(EMDS) $(JOYS) $(TGIS)
 
 ../runtime/zeropage.o:
        $(MAKE) -C $(dir $@) $(notdir $@)
 
 clean:
-       @rm -f $(OBJS)
+       @rm -f $(OBJS) $(EMDS:.emd=.o) $(JOYS:.joy=.o) $(TGIS:.tgi=.o)
 
diff --git a/libsrc/c128/c128-stdjoy.s b/libsrc/c128/c128-stdjoy.s
new file mode 100644 (file)
index 0000000..811779a
--- /dev/null
@@ -0,0 +1,119 @@
+;
+; Standard joystick driver for the C128
+;
+; Ullrich von Bassewitz, 2002-12-21
+;
+
+       .include        "zeropage.inc"
+
+       .include        "joy-kernel.inc"
+        .include        "joy-error.inc"
+        .include        "c128.inc"  
+
+        .macpack        generic
+
+
+; ------------------------------------------------------------------------
+; Header. Includes jump table
+
+.segment        "JUMPTABLE"
+
+; Driver signature
+
+        .byte   $6A, $6F, $79          ; "joy"
+        .byte   $00                     ; Driver API version number
+
+; Button state masks (8 values)
+
+        .byte   $01                     ; JOY_UP
+        .byte   $02                     ; JOY_DOWN
+        .byte   $04                     ; JOY_LEFT
+        .byte   $08                     ; JOY_RIGHT
+        .byte   $10                     ; JOY_FIRE
+        .byte   $00                     ; Future expansion
+        .byte   $00                     ; Future expansion
+        .byte   $00                     ; Future expansion
+
+; Jump table.
+
+        .word   INSTALL
+        .word   DEINSTALL
+        .word   COUNT
+        .word   READ
+
+; ------------------------------------------------------------------------
+; Constants
+
+JOY_COUNT       = 2             ; Number of joysticks we support
+
+
+; ------------------------------------------------------------------------
+; Data.
+
+
+.code
+
+; ------------------------------------------------------------------------
+; INSTALL routine. Is called after the driver is loaded into memory. If
+; possible, check if the hardware is present and determine the amount of
+; memory available.
+; Must return an JOY_ERR_xx code in a/x.
+;
+
+INSTALL:
+        lda     #<JOY_ERR_OK
+        ldx     #>JOY_ERR_OK
+
+;      rts                     ; Run into DEINSTALL instead
+
+; ------------------------------------------------------------------------
+; DEINSTALL routine. Is called before the driver is removed from memory.
+; Can do cleanup or whatever. Must not return anything.
+;
+
+DEINSTALL:
+        rts
+
+
+; ------------------------------------------------------------------------
+; COUNT: Return the total number of available joysticks in a/x.
+;
+
+COUNT:
+        lda     #<JOY_COUNT
+        ldx     #>JOY_COUNT
+        rts
+
+; ------------------------------------------------------------------------
+; READ: Read a particular joystick passed in A.
+;
+
+READ:   tax                    ; Joystick number into X
+       bne     joy2
+
+; Read joystick 1
+
+joy1:  lda     #$7F
+       sei
+       sta     CIA1_PRA
+       lda     CIA1_PRB
+       cli
+       and     #$1F
+       eor     #$1F
+       rts
+
+; Read joystick 2
+
+joy2:  ldx     #0
+       lda     #$E0
+       ldy     #$FF
+       sei
+       sta     CIA1_DDRA
+       lda     CIA1_PRA
+       sty     CIA1_DDRA
+       cli
+       and     #$1F
+       eor     #$1F
+       rts
+
+
diff --git a/libsrc/c128/readjoy.s b/libsrc/c128/readjoy.s
deleted file mode 100644 (file)
index e409805..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-;
-; Ullrich von Bassewitz, 23.09.1998
-;
-; unsigned readjoy (unsigned char joy);
-;
-
-       .export         _readjoy
-
-       .include        "c128.inc"
-
-
-.proc  _readjoy
-
-       tax                     ; Joystick number into X
-       bne     joy2
-
-; Read joystick 1
-
-joy1:  lda     #$7F
-       sei
-       sta     CIA1_PRA
-       lda     CIA1_PRB
-       cli
-       and     #$1F
-       eor     #$1F
-       rts
-
-; Read joystick 2
-
-joy2:  ldx     #0
-       lda     #$E0
-       ldy     #$FF
-       sta     CIA1_DDRA
-       lda     CIA1_PRA
-       sty     CIA1_DDRA
-       and     #$1F
-       eor     #$1F
-       rts
-
-.endproc
-