$(AR) a plus4.lib $$i/*.o;\
done
mv plus4/crt0.o plus4.o
+ cp plus4/*.joy .
#-----------------------------------------------------------------------------
# Dummy targets
.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 \
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)
+
+++ /dev/null
-;
-; 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
-
-
.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 \
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)
--- /dev/null
+;
+; 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
+
+++ /dev/null
-;
-; 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
-
-