diff --git a/libsrc/Makefile b/libsrc/Makefile index 7901fc618..24eae9f47 100644 --- a/libsrc/Makefile +++ b/libsrc/Makefile @@ -233,6 +233,7 @@ plus4lib: $(AR) a plus4.lib $$i/*.o;\ done mv plus4/crt0.o plus4.o + cp plus4/*.joy . #----------------------------------------------------------------------------- # Dummy targets diff --git a/libsrc/c16/Makefile b/libsrc/c16/Makefile index 12b91c6a8..0a49b9122 100644 --- a/libsrc/c16/Makefile +++ b/libsrc/c16/Makefile @@ -4,6 +4,9 @@ .SUFFIXES: .o .s .c +#-------------------------------------------------------------------------- +# Rules + %.o: %.c @$(CC) $(CFLAGS) $< @$(AS) -o $@ $(AFLAGS) $(*).s @@ -11,6 +14,18 @@ %.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 -all: $(OBJS) +#-------------------------------------------------------------------------- +# Drivers + +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 index ce3611f3f..000000000 --- a/libsrc/c16/readjoy.s +++ /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 index 000000000..9f998e091 --- /dev/null +++ b/libsrc/plus4/.cvsignore @@ -0,0 +1 @@ +*.joy diff --git a/libsrc/plus4/Makefile b/libsrc/plus4/Makefile index 0e4c2633e..20cdd115a 100644 --- a/libsrc/plus4/Makefile +++ b/libsrc/plus4/Makefile @@ -4,6 +4,9 @@ .SUFFIXES: .o .s .c +#-------------------------------------------------------------------------- +# Rules + %.o: %.c @$(CC) $(CFLAGS) $< @$(AS) -o $@ $(AFLAGS) $(*).s @@ -11,18 +14,30 @@ %.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 index 000000000..84834b425 --- /dev/null +++ b/libsrc/plus4/plus4-stdjoy.s @@ -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 + +; 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: 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 index 338558947..000000000 --- a/libsrc/plus4/readjoy.s +++ /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 - -