From 6b0073145d41ad4ec281b8bd6e1799a7aabf94b3 Mon Sep 17 00:00:00 2001 From: cuz Date: Fri, 20 Dec 2002 23:30:14 +0000 Subject: [PATCH] Joystick code conversion for C128 git-svn-id: svn://svn.cc65.org/cc65/trunk@1810 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/Makefile | 1 + libsrc/c128/.cvsignore | 1 + libsrc/c128/Makefile | 14 +++-- libsrc/c128/c128-stdjoy.s | 119 ++++++++++++++++++++++++++++++++++++++ libsrc/c128/readjoy.s | 41 ------------- 5 files changed, 130 insertions(+), 46 deletions(-) create mode 100644 libsrc/c128/c128-stdjoy.s delete mode 100644 libsrc/c128/readjoy.s diff --git a/libsrc/Makefile b/libsrc/Makefile index d849d67cf..7901fc618 100644 --- a/libsrc/Makefile +++ b/libsrc/Makefile @@ -142,6 +142,7 @@ c128lib: done mv c128/crt0.o c128.o cp c128/*.emd . + cp c128/*.joy . #----------------------------------------------------------------------------- # Commdore P500 / CBM 5x0 diff --git a/libsrc/c128/.cvsignore b/libsrc/c128/.cvsignore index b3753bbb6..58093ab1b 100644 --- a/libsrc/c128/.cvsignore +++ b/libsrc/c128/.cvsignore @@ -1,2 +1,3 @@ *.emd +*.joy *.tgi diff --git a/libsrc/c128/Makefile b/libsrc/c128/Makefile index fbf3c96b8..55317b3df 100644 --- a/libsrc/c128/Makefile +++ b/libsrc/c128/Makefile @@ -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 index 000000000..811779a01 --- /dev/null +++ b/libsrc/c128/c128-stdjoy.s @@ -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 + +; 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. +; + +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 index e4098052d..000000000 --- a/libsrc/c128/readjoy.s +++ /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 - -- 2.39.5