From 23650cb9461c09718b9aae33520d3ca6f9c40dda Mon Sep 17 00:00:00 2001
From: Oliver Schmidt
Date: Sat, 1 Jun 2013 00:36:08 +0200
Subject: [PATCH] Added library reference joy_libref to JOY interface.
---
asminc/joy-kernel.inc | 14 +++++++-------
libsrc/apple2/joy/a2.stdjoy.s | 4 ++++
libsrc/apple2/libref.s | 3 ++-
libsrc/atari/joy/atrmj8.s | 4 ++++
libsrc/atari/joy/atrstd.s | 4 ++++
libsrc/atari/libref.s | 3 ++-
libsrc/atmos/joy/atmos-pase.s | 4 ++++
libsrc/atmos/libref.s | 8 ++++++++
libsrc/c128/joy/c128-ptvjoy.s | 4 ++++
libsrc/c128/joy/c128-stdjoy.s | 4 ++++
libsrc/c128/libref.s | 3 ++-
libsrc/c16/libref.s | 3 ++-
libsrc/c64/joy/c64-hitjoy.s | 4 ++++
libsrc/c64/joy/c64-numpad.s | 4 ++++
libsrc/c64/joy/c64-ptvjoy.s | 4 ++++
libsrc/c64/joy/c64-stdjoy.s | 4 ++++
libsrc/c64/libref.s | 3 ++-
libsrc/cbm510/joy/cbm510-std.s | 4 ++++
libsrc/cbm510/libref.s | 3 ++-
libsrc/geos-cbm/joy/geos-stdjoy.s | 4 ++++
libsrc/geos-cbm/system/libref.s | 3 ++-
libsrc/joystick/joy-kernel.s | 10 ++++++++++
libsrc/lynx/joy/lynx-stdjoy.s | 4 ++++
libsrc/lynx/libref.s | 8 ++++++++
libsrc/nes/joy/nes-stdjoy.s | 4 ++++
libsrc/nes/libref.s | 8 ++++++++
libsrc/pet/joy/pet-ptvjoy.s | 4 ++++
libsrc/pet/joy/pet-stdjoy.s | 4 ++++
libsrc/pet/libref.s | 8 ++++++++
libsrc/plus4/joy/plus4-stdjoy.s | 4 ++++
libsrc/plus4/libref.s | 8 ++++++++
libsrc/vic20/joy/vic20-ptvjoy.s | 4 ++++
libsrc/vic20/joy/vic20-stdjoy.s | 4 ++++
libsrc/vic20/libref.s | 8 ++++++++
34 files changed, 155 insertions(+), 14 deletions(-)
create mode 100644 libsrc/atmos/libref.s
create mode 100644 libsrc/lynx/libref.s
create mode 100644 libsrc/nes/libref.s
create mode 100644 libsrc/pet/libref.s
create mode 100644 libsrc/plus4/libref.s
create mode 100644 libsrc/vic20/libref.s
diff --git a/asminc/joy-kernel.inc b/asminc/joy-kernel.inc
index 6c360dd43..da22662b5 100644
--- a/asminc/joy-kernel.inc
+++ b/asminc/joy-kernel.inc
@@ -42,20 +42,21 @@
.struct JOY_HDR
ID .byte 3 ; $6A, $6F, $79 ("joy")
VERSION .byte 1 ; Interface version
+ LIBREF .addr ; Library reference
MASKS .byte 8 ; Joystick state mask array
JUMPTAB .struct
- INSTALL .word ; INSTALL routine
- UNINSTALL .word ; UNINSTALL routine
- COUNT .word ; COUNT routine
- READ .word ; READ routine
- IRQ .word ; IRQ routine
+ INSTALL .addr ; INSTALL routine
+ UNINSTALL .addr ; UNINSTALL routine
+ COUNT .addr ; COUNT routine
+ READ .addr ; READ routine
+ IRQ .addr ; IRQ routine
.endstruct
.endstruct
;------------------------------------------------------------------------------
; The JOY API version, stored in JOY_HDR::VERSION
-JOY_API_VERSION = $01
+JOY_API_VERSION = $02
;------------------------------------------------------------------------------
; Variables
@@ -82,4 +83,3 @@ JOY_API_VERSION = $01
.global _joy_read
.global _joy_clear_ptr
-
diff --git a/libsrc/apple2/joy/a2.stdjoy.s b/libsrc/apple2/joy/a2.stdjoy.s
index eecdd6a8a..043b7814e 100644
--- a/libsrc/apple2/joy/a2.stdjoy.s
+++ b/libsrc/apple2/joy/a2.stdjoy.s
@@ -36,6 +36,10 @@ PREAD := $FB1E ; Read paddle in X, return AD conv. value in Y
.byte $6A, $6F, $79 ; "joy"
.byte JOY_API_VERSION ; Driver API version number
+; Library reference
+
+ .addr $0000
+
; Button state masks (8 values)
.byte $10
diff --git a/libsrc/apple2/libref.s b/libsrc/apple2/libref.s
index 507c9887b..933eb5911 100644
--- a/libsrc/apple2/libref.s
+++ b/libsrc/apple2/libref.s
@@ -2,7 +2,8 @@
; Oliver Schmidt, 2013-05-31
;
- .export em_libref
+ .export em_libref, joy_libref
.import _exit
em_libref := _exit
+joy_libref := _exit
diff --git a/libsrc/atari/joy/atrmj8.s b/libsrc/atari/joy/atrmj8.s
index 777a52615..04840fc99 100644
--- a/libsrc/atari/joy/atrmj8.s
+++ b/libsrc/atari/joy/atrmj8.s
@@ -26,6 +26,10 @@
.byte $6A, $6F, $79 ; "joy"
.byte JOY_API_VERSION ; Driver API version number
+; Library reference
+
+ .addr $0000
+
; Button state masks (8 values)
.byte $02 ; JOY_UP
diff --git a/libsrc/atari/joy/atrstd.s b/libsrc/atari/joy/atrstd.s
index caca34cc5..34034b554 100644
--- a/libsrc/atari/joy/atrstd.s
+++ b/libsrc/atari/joy/atrstd.s
@@ -25,6 +25,10 @@
.byte $6A, $6F, $79 ; "joy"
.byte JOY_API_VERSION ; Driver API version number
+; Library reference
+
+ .addr $0000
+
; Button state masks (8 values)
.byte $01 ; JOY_UP
diff --git a/libsrc/atari/libref.s b/libsrc/atari/libref.s
index 507c9887b..933eb5911 100644
--- a/libsrc/atari/libref.s
+++ b/libsrc/atari/libref.s
@@ -2,7 +2,8 @@
; Oliver Schmidt, 2013-05-31
;
- .export em_libref
+ .export em_libref, joy_libref
.import _exit
em_libref := _exit
+joy_libref := _exit
diff --git a/libsrc/atmos/joy/atmos-pase.s b/libsrc/atmos/joy/atmos-pase.s
index 81dba394a..c505a1b0f 100644
--- a/libsrc/atmos/joy/atmos-pase.s
+++ b/libsrc/atmos/joy/atmos-pase.s
@@ -21,6 +21,10 @@
.byte $6A, $6F, $79 ; "joy"
.byte JOY_API_VERSION ; Driver API version number
+; Library reference
+
+ .addr $0000
+
; Button state masks (8 values)
.byte $10 ; JOY_UP
diff --git a/libsrc/atmos/libref.s b/libsrc/atmos/libref.s
new file mode 100644
index 000000000..e4afa7eb1
--- /dev/null
+++ b/libsrc/atmos/libref.s
@@ -0,0 +1,8 @@
+;
+; Oliver Schmidt, 2013-05-31
+;
+
+ .export joy_libref
+ .import _exit
+
+joy_libref := _exit
diff --git a/libsrc/c128/joy/c128-ptvjoy.s b/libsrc/c128/joy/c128-ptvjoy.s
index 5763fbe2d..d128b0ee0 100644
--- a/libsrc/c128/joy/c128-ptvjoy.s
+++ b/libsrc/c128/joy/c128-ptvjoy.s
@@ -24,6 +24,10 @@
.byte $6A, $6F, $79 ; "joy"
.byte JOY_API_VERSION ; Driver API version number
+; Library reference
+
+ .addr $0000
+
; Button state masks (8 values)
.byte $01 ; JOY_UP
diff --git a/libsrc/c128/joy/c128-stdjoy.s b/libsrc/c128/joy/c128-stdjoy.s
index f86853a81..860dab1ae 100644
--- a/libsrc/c128/joy/c128-stdjoy.s
+++ b/libsrc/c128/joy/c128-stdjoy.s
@@ -25,6 +25,10 @@
.byte $6A, $6F, $79 ; "joy"
.byte JOY_API_VERSION ; Driver API version number
+; Library reference
+
+ .addr $0000
+
; Button state masks (8 values)
.byte $01 ; JOY_UP
diff --git a/libsrc/c128/libref.s b/libsrc/c128/libref.s
index 507c9887b..933eb5911 100644
--- a/libsrc/c128/libref.s
+++ b/libsrc/c128/libref.s
@@ -2,7 +2,8 @@
; Oliver Schmidt, 2013-05-31
;
- .export em_libref
+ .export em_libref, joy_libref
.import _exit
em_libref := _exit
+joy_libref := _exit
diff --git a/libsrc/c16/libref.s b/libsrc/c16/libref.s
index 507c9887b..933eb5911 100644
--- a/libsrc/c16/libref.s
+++ b/libsrc/c16/libref.s
@@ -2,7 +2,8 @@
; Oliver Schmidt, 2013-05-31
;
- .export em_libref
+ .export em_libref, joy_libref
.import _exit
em_libref := _exit
+joy_libref := _exit
diff --git a/libsrc/c64/joy/c64-hitjoy.s b/libsrc/c64/joy/c64-hitjoy.s
index 637244b87..28495ee11 100644
--- a/libsrc/c64/joy/c64-hitjoy.s
+++ b/libsrc/c64/joy/c64-hitjoy.s
@@ -23,6 +23,10 @@
.byte $6A, $6F, $79 ; "joy"
.byte JOY_API_VERSION ; Driver API version number
+; Library reference
+
+ .addr $0000
+
; Button state masks (8 values)
.byte $01 ; JOY_UP
diff --git a/libsrc/c64/joy/c64-numpad.s b/libsrc/c64/joy/c64-numpad.s
index 28fd7e2b0..6eeebcc74 100644
--- a/libsrc/c64/joy/c64-numpad.s
+++ b/libsrc/c64/joy/c64-numpad.s
@@ -25,6 +25,10 @@
.byte $6A, $6F, $79 ; "joy"
.byte JOY_API_VERSION ; Driver API version number
+; Library reference
+
+ .addr $0000
+
; Button state masks (8 values)
.byte $02 ; JOY_UP "8"
diff --git a/libsrc/c64/joy/c64-ptvjoy.s b/libsrc/c64/joy/c64-ptvjoy.s
index 0b0e80e62..bb1ba0982 100644
--- a/libsrc/c64/joy/c64-ptvjoy.s
+++ b/libsrc/c64/joy/c64-ptvjoy.s
@@ -23,6 +23,10 @@
.byte $6A, $6F, $79 ; "joy"
.byte JOY_API_VERSION ; Driver API version number
+; Library reference
+
+ .addr $0000
+
; Button state masks (8 values)
.byte $01 ; JOY_UP
diff --git a/libsrc/c64/joy/c64-stdjoy.s b/libsrc/c64/joy/c64-stdjoy.s
index dc9434f4c..18722032a 100644
--- a/libsrc/c64/joy/c64-stdjoy.s
+++ b/libsrc/c64/joy/c64-stdjoy.s
@@ -24,6 +24,10 @@
.byte $6A, $6F, $79 ; "joy"
.byte JOY_API_VERSION ; Driver API version number
+; Library reference
+
+ .addr $0000
+
; Button state masks (8 values)
.byte $01 ; JOY_UP
diff --git a/libsrc/c64/libref.s b/libsrc/c64/libref.s
index 507c9887b..933eb5911 100644
--- a/libsrc/c64/libref.s
+++ b/libsrc/c64/libref.s
@@ -2,7 +2,8 @@
; Oliver Schmidt, 2013-05-31
;
- .export em_libref
+ .export em_libref, joy_libref
.import _exit
em_libref := _exit
+joy_libref := _exit
diff --git a/libsrc/cbm510/joy/cbm510-std.s b/libsrc/cbm510/joy/cbm510-std.s
index 8a24dcbbb..1d8b242a6 100644
--- a/libsrc/cbm510/joy/cbm510-std.s
+++ b/libsrc/cbm510/joy/cbm510-std.s
@@ -25,6 +25,10 @@
.byte $6A, $6F, $79 ; "joy"
.byte JOY_API_VERSION ; Driver API version number
+; Library reference
+
+ .addr $0000
+
; Button state masks (8 values)
.byte $01 ; JOY_UP
diff --git a/libsrc/cbm510/libref.s b/libsrc/cbm510/libref.s
index 507c9887b..933eb5911 100644
--- a/libsrc/cbm510/libref.s
+++ b/libsrc/cbm510/libref.s
@@ -2,7 +2,8 @@
; Oliver Schmidt, 2013-05-31
;
- .export em_libref
+ .export em_libref, joy_libref
.import _exit
em_libref := _exit
+joy_libref := _exit
diff --git a/libsrc/geos-cbm/joy/geos-stdjoy.s b/libsrc/geos-cbm/joy/geos-stdjoy.s
index 7cfd0ad08..9fb5461bb 100644
--- a/libsrc/geos-cbm/joy/geos-stdjoy.s
+++ b/libsrc/geos-cbm/joy/geos-stdjoy.s
@@ -22,6 +22,10 @@
.byte $6A, $6F, $79 ; "joy"
.byte JOY_API_VERSION ; Driver API version number
+; Library reference
+
+ .addr $0000
+
; Button state masks (8 values)
.byte $01 ; JOY_UP
diff --git a/libsrc/geos-cbm/system/libref.s b/libsrc/geos-cbm/system/libref.s
index 507c9887b..933eb5911 100644
--- a/libsrc/geos-cbm/system/libref.s
+++ b/libsrc/geos-cbm/system/libref.s
@@ -2,7 +2,8 @@
; Oliver Schmidt, 2013-05-31
;
- .export em_libref
+ .export em_libref, joy_libref
.import _exit
em_libref := _exit
+joy_libref := _exit
diff --git a/libsrc/joystick/joy-kernel.s b/libsrc/joystick/joy-kernel.s
index 71f94133a..d21727089 100644
--- a/libsrc/joystick/joy-kernel.s
+++ b/libsrc/joystick/joy-kernel.s
@@ -4,6 +4,7 @@
; Common functions of the joystick API.
;
+ .import joy_libref
.importzp ptr1
.interruptor joy_irq ; Export as IRQ handler
@@ -55,6 +56,15 @@ _joy_install:
dey
bpl @L0
+; Set the library reference
+
+ ldy #JOY_HDR::LIBREF
+ lda #joy_libref
+ sta (ptr1),y
+
; Copy the mask array
ldy #JOY_HDR::MASKS + .sizeof(JOY_HDR::MASKS) - 1
diff --git a/libsrc/lynx/joy/lynx-stdjoy.s b/libsrc/lynx/joy/lynx-stdjoy.s
index 9c5165a77..da7b4612c 100644
--- a/libsrc/lynx/joy/lynx-stdjoy.s
+++ b/libsrc/lynx/joy/lynx-stdjoy.s
@@ -26,6 +26,10 @@
.byte $6A, $6F, $79 ; "joy"
.byte JOY_API_VERSION ; Driver API version number
+; Library reference
+
+ .addr $0000
+
; Button state masks (8 values)
joy_mask:
diff --git a/libsrc/lynx/libref.s b/libsrc/lynx/libref.s
new file mode 100644
index 000000000..e4afa7eb1
--- /dev/null
+++ b/libsrc/lynx/libref.s
@@ -0,0 +1,8 @@
+;
+; Oliver Schmidt, 2013-05-31
+;
+
+ .export joy_libref
+ .import _exit
+
+joy_libref := _exit
diff --git a/libsrc/nes/joy/nes-stdjoy.s b/libsrc/nes/joy/nes-stdjoy.s
index 76ca96005..1ff8395c9 100644
--- a/libsrc/nes/joy/nes-stdjoy.s
+++ b/libsrc/nes/joy/nes-stdjoy.s
@@ -23,6 +23,10 @@
.byte $6A, $6F, $79 ; "joy"
.byte JOY_API_VERSION ; Driver API version number
+; Library reference
+
+ .addr $0000
+
; Button state masks (8 values)
.byte $10 ; JOY_UP
diff --git a/libsrc/nes/libref.s b/libsrc/nes/libref.s
new file mode 100644
index 000000000..e4afa7eb1
--- /dev/null
+++ b/libsrc/nes/libref.s
@@ -0,0 +1,8 @@
+;
+; Oliver Schmidt, 2013-05-31
+;
+
+ .export joy_libref
+ .import _exit
+
+joy_libref := _exit
diff --git a/libsrc/pet/joy/pet-ptvjoy.s b/libsrc/pet/joy/pet-ptvjoy.s
index 997352f06..19c2ca876 100644
--- a/libsrc/pet/joy/pet-ptvjoy.s
+++ b/libsrc/pet/joy/pet-ptvjoy.s
@@ -24,6 +24,10 @@ VIA_DDRA := $E843 ; Data direction register A
.byte $6A, $6F, $79 ; "joy"
.byte JOY_API_VERSION ; Driver API version number
+; Library reference
+
+ .addr $0000
+
; Button state masks (8 values)
.byte $01 ; JOY_UP
diff --git a/libsrc/pet/joy/pet-stdjoy.s b/libsrc/pet/joy/pet-stdjoy.s
index 155dbbdf7..3377c8f81 100644
--- a/libsrc/pet/joy/pet-stdjoy.s
+++ b/libsrc/pet/joy/pet-stdjoy.s
@@ -21,6 +21,10 @@
.byte $6A, $6F, $79 ; "joy"
.byte JOY_API_VERSION ; Driver API version number
+; Library reference
+
+ .addr $0000
+
; Button state masks (8 values)
.byte $01 ; JOY_UP
diff --git a/libsrc/pet/libref.s b/libsrc/pet/libref.s
new file mode 100644
index 000000000..e4afa7eb1
--- /dev/null
+++ b/libsrc/pet/libref.s
@@ -0,0 +1,8 @@
+;
+; Oliver Schmidt, 2013-05-31
+;
+
+ .export joy_libref
+ .import _exit
+
+joy_libref := _exit
diff --git a/libsrc/plus4/joy/plus4-stdjoy.s b/libsrc/plus4/joy/plus4-stdjoy.s
index 74dbc52e4..f67487781 100644
--- a/libsrc/plus4/joy/plus4-stdjoy.s
+++ b/libsrc/plus4/joy/plus4-stdjoy.s
@@ -24,6 +24,10 @@
.byte $6A, $6F, $79 ; "joy"
.byte JOY_API_VERSION ; Driver API version number
+; Library reference
+
+ .addr $0000
+
; Button state masks (8 values)
.byte $01 ; JOY_UP
diff --git a/libsrc/plus4/libref.s b/libsrc/plus4/libref.s
new file mode 100644
index 000000000..e4afa7eb1
--- /dev/null
+++ b/libsrc/plus4/libref.s
@@ -0,0 +1,8 @@
+;
+; Oliver Schmidt, 2013-05-31
+;
+
+ .export joy_libref
+ .import _exit
+
+joy_libref := _exit
diff --git a/libsrc/vic20/joy/vic20-ptvjoy.s b/libsrc/vic20/joy/vic20-ptvjoy.s
index fabb802f6..533726c7b 100644
--- a/libsrc/vic20/joy/vic20-ptvjoy.s
+++ b/libsrc/vic20/joy/vic20-ptvjoy.s
@@ -23,6 +23,10 @@
.byte $6A, $6F, $79 ; "joy"
.byte JOY_API_VERSION ; Driver API version number
+; Library reference
+
+ .addr $0000
+
; Button state masks (8 values)
.byte $01 ; JOY_UP
diff --git a/libsrc/vic20/joy/vic20-stdjoy.s b/libsrc/vic20/joy/vic20-stdjoy.s
index e49cd38f4..722aa8ea5 100644
--- a/libsrc/vic20/joy/vic20-stdjoy.s
+++ b/libsrc/vic20/joy/vic20-stdjoy.s
@@ -25,6 +25,10 @@
.byte $6A, $6F, $79 ; "joy"
.byte JOY_API_VERSION ; Driver API version number
+; Library reference
+
+ .addr $0000
+
; Button state masks (8 values)
.byte $02 ; JOY_UP
diff --git a/libsrc/vic20/libref.s b/libsrc/vic20/libref.s
new file mode 100644
index 000000000..e4afa7eb1
--- /dev/null
+++ b/libsrc/vic20/libref.s
@@ -0,0 +1,8 @@
+;
+; Oliver Schmidt, 2013-05-31
+;
+
+ .export joy_libref
+ .import _exit
+
+joy_libref := _exit
--
2.39.5