From 62669bcb7320df423bffaef49a3d14d35f7c0ebf Mon Sep 17 00:00:00 2001 From: uz Date: Mon, 21 Dec 2009 21:14:21 +0000 Subject: [PATCH] P.A.S.E. joystick driver for the Oric Atmos, contributed by Stefan Haubenthal. git-svn-id: svn://svn.cc65.org/cc65/trunk@4532 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/Makefile | 1 + libsrc/atmos/Makefile | 2 +- libsrc/atmos/atmos-pase.s | 125 ++++++++++++++++++++++++++++++++++ packages/rpm/redhat/cc65.spec | 1 + 4 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 libsrc/atmos/atmos-pase.s diff --git a/libsrc/Makefile b/libsrc/Makefile index e21d85d77..babde2c5b 100644 --- a/libsrc/Makefile +++ b/libsrc/Makefile @@ -113,6 +113,7 @@ atmoslib: $(MAKE) SYS=atmos -C $$i || exit 1; \ $(AR) a atmos.lib $$i/*.o;\ done + cp atmos/*.joy . cp atmos/*.tgi . #----------------------------------------------------------------------------- diff --git a/libsrc/atmos/Makefile b/libsrc/atmos/Makefile index fb2376b4e..7f5d417fa 100644 --- a/libsrc/atmos/Makefile +++ b/libsrc/atmos/Makefile @@ -73,7 +73,7 @@ OBJS = _scrsize.o \ EMDS = -JOYS = +JOYS = atmos-pase.joy MOUS = diff --git a/libsrc/atmos/atmos-pase.s b/libsrc/atmos/atmos-pase.s new file mode 100644 index 000000000..18ac7b887 --- /dev/null +++ b/libsrc/atmos/atmos-pase.s @@ -0,0 +1,125 @@ +; +; P.A.S.E. joystick driver for the Atmos +; May be used multiple times when linked to the statically application. +; +; Stefan Haubenthal, 2009-12-21 +; Based on Ullrich von Bassewitz, 2002-12-20 +; + + .include "joy-kernel.inc" + .include "joy-error.inc" +; .include "atmos.inc" + + +; ------------------------------------------------------------------------ +; Header. Includes jump table + +.segment "JUMPTABLE" + +; Driver signature + + .byte $6A, $6F, $79 ; "joy" + .byte JOY_API_VERSION ; Driver API version number + +; Button state masks (8 values) + + .byte $10 ; JOY_UP + .byte $08 ; JOY_DOWN + .byte $01 ; JOY_LEFT + .byte $02 ; JOY_RIGHT + .byte $20 ; JOY_FIRE + .byte $00 ; Future expansion + .byte $00 ; Future expansion + .byte $00 ; Future expansion + +; Jump table. + + .addr INSTALL + .addr UNINSTALL + .addr COUNT + .addr READ + .addr 0 ; IRQ entry unused + +; ------------------------------------------------------------------------ +; Constants + +JOY_COUNT = 2 ; Number of joysticks we support + +PRA = $0301 +DDRA = $0303 +PRA2 = $030F + +; ------------------------------------------------------------------------ +; Data. + +.bss +temp1: .byte $00 +temp2: .byte $00 + +.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 #0 +; rts ; Run into UNINSTALL instead + +; ------------------------------------------------------------------------ +; UNINSTALL routine. Is called before the driver is removed from memory. +; Can do cleanup or whatever. Must not return anything. +; + +UNINSTALL: + rts + + +; ------------------------------------------------------------------------ +; COUNT: Return the total number of available joysticks in a/x. +; + +COUNT: + lda #JOY_COUNT + ldx #0 + rts + +; ------------------------------------------------------------------------ +; READ: Read a particular joystick passed in A. +; + +READ: + tay + + lda PRA + pha + lda DDRA + pha + lda #%11000000 + sta DDRA + lda #%10000000 + sta PRA2 + lda PRA2 + sta temp1 + lda #%01000000 + sta PRA2 + lda PRA + sta temp2 + pla + sta DDRA + pla + sta PRA2 + + ldx #0 + tya + bne @L1 + lda temp1 + eor #$FF + rts +@L1: lda temp2 + eor #$FF + rts diff --git a/packages/rpm/redhat/cc65.spec b/packages/rpm/redhat/cc65.spec index 43709f42b..bd8c125aa 100644 --- a/packages/rpm/redhat/cc65.spec +++ b/packages/rpm/redhat/cc65.spec @@ -185,6 +185,7 @@ programs for the Oric Atmos using the cc65 crosscompiler. %files atmos %attr(644,root,root) /usr/lib/cc65/lib/atmos.lib +%attr(644,root,root) /usr/lib/cc65/tgi/atmos-*.joy %attr(644,root,root) /usr/lib/cc65/tgi/atmos-*.tgi -- 2.39.2