From ae409e497851d1bc5bdb7cbec853bdeddf6f8750 Mon Sep 17 00:00:00 2001
From: Oliver Schmidt
Date: Sat, 1 Jun 2013 11:03:14 +0200
Subject: [PATCH] Added library reference ser_libref to SER interface.
---
asminc/ser-kernel.inc | 21 +++++++++++----------
libsrc/apple2/libref.s | 3 ++-
libsrc/apple2/ser/a2.ssc.s | 5 ++++-
libsrc/atmos/libref.s | 3 ++-
libsrc/atmos/ser/atmos-acia.s | 5 ++++-
libsrc/c128/libref.s | 3 ++-
libsrc/c128/ser/c128-swlink.s | 6 +++++-
libsrc/c64/libref.s | 3 ++-
libsrc/c64/ser/c64-swlink.s | 6 +++++-
libsrc/cbm510/libref.s | 3 ++-
libsrc/cbm510/ser/cbm510-std.s | 6 +++++-
libsrc/cbm610/libref.s | 3 ++-
libsrc/cbm610/ser/cbm610-std.s | 6 +++++-
libsrc/lynx/libref.s | 3 ++-
libsrc/lynx/ser/lynx-comlynx.s | 5 ++++-
libsrc/plus4/libref.s | 3 ++-
libsrc/plus4/ser/plus4-stdser.s | 6 +++++-
libsrc/serial/ser-kernel.s | 11 ++++++++++-
18 files changed, 74 insertions(+), 27 deletions(-)
diff --git a/asminc/ser-kernel.inc b/asminc/ser-kernel.inc
index 7fc5bf9c2..fff9b1440 100644
--- a/asminc/ser-kernel.inc
+++ b/asminc/ser-kernel.inc
@@ -39,16 +39,17 @@
.struct SER_HDR
ID .byte 3 ; Contains 0x73, 0x65, 0x72 ("ser")
VERSION .byte 1 ; Interface version
+ LIBREF .addr ; Library reference
JUMPTAB .struct
- INSTALL .word ; INSTALL routine
- UNINSTALL .word ; UNINSTALL routine
- OPEN .word ; OPEN routine
- CLOSE .word ; CLOSE routine
- GET .word ; GET routine
- PUT .word ; PUT routine
- STATUS .word ; STATUS routine
- IOCTL .word ; IOCTL routine
- IRQ .word ; IRQ routine
+ INSTALL .addr ; INSTALL routine
+ UNINSTALL .addr ; UNINSTALL routine
+ OPEN .addr ; OPEN routine
+ CLOSE .addr ; CLOSE routine
+ GET .addr ; GET routine
+ PUT .addr ; PUT routine
+ STATUS .addr ; STATUS routine
+ IOCTL .addr ; IOCTL routine
+ IRQ .addr ; IRQ routine
.endstruct
.endstruct
@@ -56,7 +57,7 @@
;------------------------------------------------------------------------------
; The SER API version, stored SER_HDR::VERSION
-SER_API_VERSION = $00
+SER_API_VERSION = $01
;------------------------------------------------------------------------------
; ser_params
diff --git a/libsrc/apple2/libref.s b/libsrc/apple2/libref.s
index 09bdb057c..898a92f18 100644
--- a/libsrc/apple2/libref.s
+++ b/libsrc/apple2/libref.s
@@ -2,9 +2,10 @@
; Oliver Schmidt, 2013-05-31
;
- .export em_libref, joy_libref, mouse_libref
+ .export em_libref, joy_libref, mouse_libref, ser_libref
.import _exit
em_libref := _exit
joy_libref := _exit
mouse_libref := _exit
+ser_libref := _exit
diff --git a/libsrc/apple2/ser/a2.ssc.s b/libsrc/apple2/ser/a2.ssc.s
index 374505638..19deefd39 100644
--- a/libsrc/apple2/ser/a2.ssc.s
+++ b/libsrc/apple2/ser/a2.ssc.s
@@ -34,7 +34,10 @@
.byte $73, $65, $72 ; "ser"
.byte SER_API_VERSION ; Serial API version number
- ; Jump table.
+ ; Library reference
+ .addr $0000
+
+ ; Jump table
.addr INSTALL
.addr UNINSTALL
.addr OPEN
diff --git a/libsrc/atmos/libref.s b/libsrc/atmos/libref.s
index e4afa7eb1..0bda1e7e8 100644
--- a/libsrc/atmos/libref.s
+++ b/libsrc/atmos/libref.s
@@ -2,7 +2,8 @@
; Oliver Schmidt, 2013-05-31
;
- .export joy_libref
+ .export joy_libref, ser_libref
.import _exit
joy_libref := _exit
+ser_libref := _exit
diff --git a/libsrc/atmos/ser/atmos-acia.s b/libsrc/atmos/ser/atmos-acia.s
index 36071c32a..9d742bf66 100644
--- a/libsrc/atmos/ser/atmos-acia.s
+++ b/libsrc/atmos/ser/atmos-acia.s
@@ -35,7 +35,10 @@
.byte $73, $65, $72 ; "ser"
.byte SER_API_VERSION ; Serial API version number
- ; Jump table.
+ ; Library reference
+ .addr $0000
+
+ ; Jump table
.addr INSTALL
.addr UNINSTALL
.addr OPEN
diff --git a/libsrc/c128/libref.s b/libsrc/c128/libref.s
index 09bdb057c..898a92f18 100644
--- a/libsrc/c128/libref.s
+++ b/libsrc/c128/libref.s
@@ -2,9 +2,10 @@
; Oliver Schmidt, 2013-05-31
;
- .export em_libref, joy_libref, mouse_libref
+ .export em_libref, joy_libref, mouse_libref, ser_libref
.import _exit
em_libref := _exit
joy_libref := _exit
mouse_libref := _exit
+ser_libref := _exit
diff --git a/libsrc/c128/ser/c128-swlink.s b/libsrc/c128/ser/c128-swlink.s
index 347452e85..02336d688 100644
--- a/libsrc/c128/ser/c128-swlink.s
+++ b/libsrc/c128/ser/c128-swlink.s
@@ -37,7 +37,11 @@
.byte $73, $65, $72 ; "ser"
.byte SER_API_VERSION ; Serial API version number
-; Jump table.
+; Library reference
+
+ .addr $0000
+
+; Jump table
.word INSTALL
.word UNINSTALL
diff --git a/libsrc/c64/libref.s b/libsrc/c64/libref.s
index 09bdb057c..898a92f18 100644
--- a/libsrc/c64/libref.s
+++ b/libsrc/c64/libref.s
@@ -2,9 +2,10 @@
; Oliver Schmidt, 2013-05-31
;
- .export em_libref, joy_libref, mouse_libref
+ .export em_libref, joy_libref, mouse_libref, ser_libref
.import _exit
em_libref := _exit
joy_libref := _exit
mouse_libref := _exit
+ser_libref := _exit
diff --git a/libsrc/c64/ser/c64-swlink.s b/libsrc/c64/ser/c64-swlink.s
index f9121b8b6..d95e63d9c 100644
--- a/libsrc/c64/ser/c64-swlink.s
+++ b/libsrc/c64/ser/c64-swlink.s
@@ -37,7 +37,11 @@
.byte $73, $65, $72 ; "ser"
.byte SER_API_VERSION ; Serial API version number
-; Jump table.
+; Library reference
+
+ .addr $0000
+
+; Jump table
.word INSTALL
.word UNINSTALL
diff --git a/libsrc/cbm510/libref.s b/libsrc/cbm510/libref.s
index 933eb5911..515c62d19 100644
--- a/libsrc/cbm510/libref.s
+++ b/libsrc/cbm510/libref.s
@@ -2,8 +2,9 @@
; Oliver Schmidt, 2013-05-31
;
- .export em_libref, joy_libref
+ .export em_libref, joy_libref, ser_libref
.import _exit
em_libref := _exit
joy_libref := _exit
+ser_libref := _exit
diff --git a/libsrc/cbm510/ser/cbm510-std.s b/libsrc/cbm510/ser/cbm510-std.s
index 9b721bd41..be17a027b 100644
--- a/libsrc/cbm510/ser/cbm510-std.s
+++ b/libsrc/cbm510/ser/cbm510-std.s
@@ -38,7 +38,11 @@
.byte $73, $65, $72 ; "ser"
.byte SER_API_VERSION ; Serial API version number
-; Jump table.
+; Library reference
+
+ .addr $0000
+
+; Jump table
.word INSTALL
.word UNINSTALL
diff --git a/libsrc/cbm610/libref.s b/libsrc/cbm610/libref.s
index 507c9887b..9c6994a5d 100644
--- a/libsrc/cbm610/libref.s
+++ b/libsrc/cbm610/libref.s
@@ -2,7 +2,8 @@
; Oliver Schmidt, 2013-05-31
;
- .export em_libref
+ .export em_libref, ser_libref
.import _exit
em_libref := _exit
+ser_libref := _exit
diff --git a/libsrc/cbm610/ser/cbm610-std.s b/libsrc/cbm610/ser/cbm610-std.s
index 671698a28..2d090bf41 100644
--- a/libsrc/cbm610/ser/cbm610-std.s
+++ b/libsrc/cbm610/ser/cbm610-std.s
@@ -38,7 +38,11 @@
.byte $73, $65, $72 ; "ser"
.byte SER_API_VERSION ; Serial API version number
-; Jump table.
+; Library reference
+
+ .addr $0000
+
+; Jump table
.word INSTALL
.word UNINSTALL
diff --git a/libsrc/lynx/libref.s b/libsrc/lynx/libref.s
index e4afa7eb1..0bda1e7e8 100644
--- a/libsrc/lynx/libref.s
+++ b/libsrc/lynx/libref.s
@@ -2,7 +2,8 @@
; Oliver Schmidt, 2013-05-31
;
- .export joy_libref
+ .export joy_libref, ser_libref
.import _exit
joy_libref := _exit
+ser_libref := _exit
diff --git a/libsrc/lynx/ser/lynx-comlynx.s b/libsrc/lynx/ser/lynx-comlynx.s
index 7035787c9..acd91a999 100644
--- a/libsrc/lynx/ser/lynx-comlynx.s
+++ b/libsrc/lynx/ser/lynx-comlynx.s
@@ -18,7 +18,10 @@
.byte $73, $65, $72 ; "ser"
.byte SER_API_VERSION ; Serial API version number
- ; Jump table.
+ ; Library reference
+ .addr $0000
+
+ ; Jump table
.addr INSTALL
.addr UNINSTALL
.addr OPEN
diff --git a/libsrc/plus4/libref.s b/libsrc/plus4/libref.s
index e4afa7eb1..0bda1e7e8 100644
--- a/libsrc/plus4/libref.s
+++ b/libsrc/plus4/libref.s
@@ -2,7 +2,8 @@
; Oliver Schmidt, 2013-05-31
;
- .export joy_libref
+ .export joy_libref, ser_libref
.import _exit
joy_libref := _exit
+ser_libref := _exit
diff --git a/libsrc/plus4/ser/plus4-stdser.s b/libsrc/plus4/ser/plus4-stdser.s
index ed33aa8c7..86377b89c 100644
--- a/libsrc/plus4/ser/plus4-stdser.s
+++ b/libsrc/plus4/ser/plus4-stdser.s
@@ -37,7 +37,11 @@
.byte $73, $65, $72 ; "ser"
.byte SER_API_VERSION ; Serial API version number
-; Jump table.
+; Library reference
+
+ .addr $0000
+
+; Jump table
.word INSTALL
.word UNINSTALL
diff --git a/libsrc/serial/ser-kernel.s b/libsrc/serial/ser-kernel.s
index 7a91e5e4b..438189edb 100644
--- a/libsrc/serial/ser-kernel.s
+++ b/libsrc/serial/ser-kernel.s
@@ -4,7 +4,7 @@
; Common functions of the serial drivers
;
- .import return0
+ .import return0, ser_libref
.importzp ptr1
.interruptor ser_irq, 29 ; Export as high priority IRQ handler
@@ -58,6 +58,15 @@ _ser_install:
dey
bpl @L0
+; Set the library reference
+
+ ldy #SER_HDR::LIBREF
+ lda #ser_libref
+ sta (ptr1),y
+
; Copy the jump vectors
ldy #SER_HDR::JUMPTAB
--
2.39.5