]> git.sur5r.net Git - cc65/commitdiff
Converted the C16/Plus4 joystick code to modules
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sat, 21 Dec 2002 08:53:39 +0000 (08:53 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sat, 21 Dec 2002 08:53:39 +0000 (08:53 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@1816 b7a2c559-68d2-44c3-8de9-860c34a00d81

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

index 7901fc6183a3fe50abccf318c1a4de583eb74f6f..24eae9f477ddc8b8ffd154921561a62ac26b472c 100644 (file)
@@ -233,6 +233,7 @@ plus4lib:
            $(AR) a plus4.lib $$i/*.o;\
        done
        mv plus4/crt0.o plus4.o
+       cp plus4/*.joy .
 
 #-----------------------------------------------------------------------------
 # Dummy targets
index 12b91c6a8d08f4b2e64df9ea9c94a858ae9726c6..0a49b91228b1392ce374158dde07665ea7926188 100644 (file)
@@ -4,6 +4,9 @@
 
 .SUFFIXES: .o .s .c
 
+#--------------------------------------------------------------------------
+# Rules
+
 %.o:           %.c
        @$(CC) $(CFLAGS) $<
        @$(AS) -o $@ $(AFLAGS) $(*).s
 %.o:   %.s
        @$(AS) -g -o $@ $(AFLAGS) $<
 
+%.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 $@ $^
+
+#--------------------------------------------------------------------------
+# Object files
+
 OBJS = _scrsize.o      \
        break.o         \
                cgetc.o         \
@@ -23,11 +38,26 @@ OBJS =      _scrsize.o      \
        kbhit.o         \
         kernal.o        \
         randomize.o     \
-       readjoy.o       \
-        revers.o        
+        revers.o
+
+#--------------------------------------------------------------------------
+# Drivers
 
-all:   $(OBJS)
+EMDS =
+
+JOYS = 
+
+TGIS =
+
+#--------------------------------------------------------------------------
+# Targets
+
+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/c16/readjoy.s b/libsrc/c16/readjoy.s
deleted file mode 100644 (file)
index ce3611f..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-;
-; Ullrich von Bassewitz, 23.09.1998
-;
-; unsigned readjoy (unsigned char joy);
-;
-
-       .export         _readjoy
-
-       .include        "../plus4/plus4.inc"
-
-
-.proc  _readjoy
-
-       ldy     #$FA            ; Load index for joystick #1
-       tax                     ; Test joystick number
-       beq     L1
-       ldy     #$FB            ; Load index for joystick #2
-L1:            sei
-       sty     TED_KBD
-       lda     TED_KBD
-       cli
-       ldx     #$00            ; Clear high byte
-       and     #$1F
-       eor     #$1F
-       rts
-
-.endproc
-
-
diff --git a/libsrc/plus4/.cvsignore b/libsrc/plus4/.cvsignore
new file mode 100644 (file)
index 0000000..9f998e0
--- /dev/null
@@ -0,0 +1 @@
+*.joy
index 0e4c2633e08dfa791fbf91d0b75a669dbeac2711..20cdd115a75d9c7bb3df2716907d87c7f05ce99c 100644 (file)
@@ -4,6 +4,9 @@
 
 .SUFFIXES: .o .s .c
 
+#--------------------------------------------------------------------------
+# Rules
+
 %.o:           %.c
        @$(CC) $(CFLAGS) $<
        @$(AS) -o $@ $(AFLAGS) $(*).s
 %.o:   %.s
        @$(AS) -g -o $@ $(AFLAGS) $<
 
+%.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 $@ $^
+
+#--------------------------------------------------------------------------
+# Object files
+
 OBJS = _scrsize.o      \
        break.o         \
                cgetc.o         \
-       clrscr.o        \
-       color.o         \
-       conio.o         \
-       cputc.o         \
-       crt0.o          \
+               clrscr.o        \
+               color.o         \
+               conio.o         \
+               cputc.o         \
+               crt0.o          \
         get_tv.o        \
         kacptr.o        \
         kbasin.o        \
-       kbhit.o         \
+               kbhit.o         \
         kbsout.o        \
         kchkin.o        \
         kciout.o        \
@@ -45,12 +60,26 @@ OBJS =      _scrsize.o      \
         kunlsn.o        \
         kuntlk.o        \
         randomize.o     \
-       readjoy.o       \
         revers.o        \
        tgi_mode_table.o
 
-all:   $(OBJS)
+#--------------------------------------------------------------------------
+# Drivers
+
+EMDS =
+
+JOYS = plus4-stdjoy.joy
+
+TGIS =
+
+#--------------------------------------------------------------------------
+# Targets
+
+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/plus4/plus4-stdjoy.s b/libsrc/plus4/plus4-stdjoy.s
new file mode 100644 (file)
index 0000000..84834b4
--- /dev/null
@@ -0,0 +1,103 @@
+;
+; Standard joystick driver for the Plus/4
+;
+; Ullrich von Bassewitz, 2002-12-21
+;
+
+       .include        "zeropage.inc"
+
+       .include        "joy-kernel.inc"
+        .include        "joy-error.inc"
+        .include        "plus4.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:  ldy     #$FA            ; Load index for joystick #1
+       tax                     ; Test joystick number
+               beq     @L1
+       ldy     #$FB            ; Load index for joystick #2
+@L1:    sei
+       sty     TED_KBD
+       lda     TED_KBD
+       cli
+       ldx     #$00            ; Clear high byte
+       and     #$1F
+       eor     #$1F
+       rts
+
diff --git a/libsrc/plus4/readjoy.s b/libsrc/plus4/readjoy.s
deleted file mode 100644 (file)
index 3385589..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-;
-; Ullrich von Bassewitz, 23.09.1998
-;
-; unsigned readjoy (unsigned char joy);
-;
-
-       .export         _readjoy
-
-       .include        "plus4.inc"
-
-
-.proc  _readjoy
-
-       ldy     #$FA            ; Load index for joystick #1
-       tax                     ; Test joystick number
-       beq     L1
-       ldy     #$FB            ; Load index for joystick #2
-L1:            sei
-       sty     TED_KBD
-       lda     TED_KBD
-       cli
-       ldx     #$00            ; Clear high byte
-       and     #$1F
-       eor     #$1F
-       rts
-
-.endproc
-
-