From f243a15e8e0cbb22980bb8b5be4d2f7bcbca5267 Mon Sep 17 00:00:00 2001 From: cuz Date: Sat, 21 Dec 2002 09:10:15 +0000 Subject: [PATCH] Added joystick drivers for C16 and Atari git-svn-id: svn://svn.cc65.org/cc65/trunk@1818 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/Makefile | 1 + libsrc/atari/.cvsignore | 3 + libsrc/atari/Makefile | 34 +++++++++++- libsrc/atari/atari-stdjoy.s | 107 ++++++++++++++++++++++++++++++++++++ libsrc/c16/.cvsignore | 3 + libsrc/c16/Makefile | 2 +- libsrc/c16/c16-stdjoy.s | 8 +++ libsrc/plus4/plus4-stdjoy.s | 2 +- 8 files changed, 156 insertions(+), 4 deletions(-) create mode 100644 libsrc/atari/.cvsignore create mode 100644 libsrc/atari/atari-stdjoy.s create mode 100644 libsrc/c16/.cvsignore create mode 100644 libsrc/c16/c16-stdjoy.s diff --git a/libsrc/Makefile b/libsrc/Makefile index 24eae9f47..84d59f97e 100644 --- a/libsrc/Makefile +++ b/libsrc/Makefile @@ -108,6 +108,7 @@ c16lib: $(AR) a c16.lib $$i/*.o;\ done mv c16/crt0.o c16.o + cp c16/*.joy . #----------------------------------------------------------------------------- # C64 diff --git a/libsrc/atari/.cvsignore b/libsrc/atari/.cvsignore new file mode 100644 index 000000000..58093ab1b --- /dev/null +++ b/libsrc/atari/.cvsignore @@ -0,0 +1,3 @@ +*.emd +*.joy +*.tgi diff --git a/libsrc/atari/Makefile b/libsrc/atari/Makefile index e5a4095f3..9a3cb5ace 100644 --- a/libsrc/atari/Makefile +++ b/libsrc/atari/Makefile @@ -8,6 +8,9 @@ ATARIDEFS = -DNUMDRVS=4 -DUCASE_FILENAME=1 .SUFFIXES: .o .s .c +#-------------------------------------------------------------------------- +# Rules + %.o: %.c @$(CC) $(CFLAGS) $(ATARIDEFS) $< @$(AS) -o $@ $(AFLAGS) $(*).s @@ -15,6 +18,18 @@ ATARIDEFS = -DNUMDRVS=4 -DUCASE_FILENAME=1 %.o: %.s @$(AS) -g -o $@ $(AFLAGS) $(ATARIDEFS) $< +%.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 \ cclear.o \ @@ -68,8 +83,23 @@ OBJS = _scrsize.o \ write.o -all: $(OBJS) +#-------------------------------------------------------------------------- +# Drivers + +EMDS = + +JOYS = atari-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/atari/atari-stdjoy.s b/libsrc/atari/atari-stdjoy.s new file mode 100644 index 000000000..597159ec4 --- /dev/null +++ b/libsrc/atari/atari-stdjoy.s @@ -0,0 +1,107 @@ +; +; Standard joystick driver for the Atari +; +; Ullrich von Bassewitz, 2002-12-21 +; Using the readjoy code from Christian Groessler +; + + .include "zeropage.inc" + + .include "joy-kernel.inc" + .include "joy-error.inc" + .include "atari.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 READJOY + +; ------------------------------------------------------------------------ +; Constants + +JOY_COUNT = 4 ; 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 + +; 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 + rts + +; ------------------------------------------------------------------------ +; READ: Read a particular joystick passed in A. +; + +READJOY: + and #3 ; fix joystick number + tax ; Joystick number (0-3) into X + +; Read joystick + + lda STRIG0,x ; get button + asl a + asl a + asl a + asl a + ora STICK0,x ; add position information + eor #$1F + ldx #0 ; fix X + rts + diff --git a/libsrc/c16/.cvsignore b/libsrc/c16/.cvsignore new file mode 100644 index 000000000..58093ab1b --- /dev/null +++ b/libsrc/c16/.cvsignore @@ -0,0 +1,3 @@ +*.emd +*.joy +*.tgi diff --git a/libsrc/c16/Makefile b/libsrc/c16/Makefile index 0a49b9122..311d9b499 100644 --- a/libsrc/c16/Makefile +++ b/libsrc/c16/Makefile @@ -45,7 +45,7 @@ OBJS = _scrsize.o \ EMDS = -JOYS = +JOYS = c16-stdjoy.joy TGIS = diff --git a/libsrc/c16/c16-stdjoy.s b/libsrc/c16/c16-stdjoy.s new file mode 100644 index 000000000..67816909b --- /dev/null +++ b/libsrc/c16/c16-stdjoy.s @@ -0,0 +1,8 @@ +; +; Standard joystick driver for the Plus/4 +; +; Ullrich von Bassewitz, 2002-12-21 +; + + .include "../plus4/plus4-stdjoy.s" + diff --git a/libsrc/plus4/plus4-stdjoy.s b/libsrc/plus4/plus4-stdjoy.s index 84834b425..5011397d4 100644 --- a/libsrc/plus4/plus4-stdjoy.s +++ b/libsrc/plus4/plus4-stdjoy.s @@ -8,7 +8,7 @@ .include "joy-kernel.inc" .include "joy-error.inc" - .include "plus4.inc" + .include "../plus4/plus4.inc" .macpack generic -- 2.39.5