From d90c7e9853c43f6d2dbf241127006e5bb4fc3830 Mon Sep 17 00:00:00 2001
From: Oliver Schmidt
Date: Thu, 22 Dec 2022 18:06:16 +0100
Subject: [PATCH] Introduced the notion of a standard serial driver.
There's no target with more than one serial driver (and I don't see that change anytime soon) so it's a no-brainer to apply the standard driver concept to serial drivers.
---
include/apple2.h | 2 +-
include/apple2enh.h | 2 +-
include/atari.h | 4 ++--
include/atmos.h | 2 +-
include/c128.h | 2 +-
include/c64.h | 2 +-
include/cbm510.h | 2 +-
include/cbm610.h | 2 +-
include/lynx.h | 2 +-
include/plus4.h | 2 +-
include/serial.h | 7 +++++++
libsrc/apple2/ser_stat_stddrv.s | 22 ++++++++++++++++++++++
libsrc/apple2/ser_stddrv.s | 18 ++++++++++++++++++
libsrc/atari/ser_stat_stddrv.s | 22 ++++++++++++++++++++++
libsrc/atari/ser_stddrv.s | 18 ++++++++++++++++++
libsrc/atmos/ser_stat_stddrv.s | 14 ++++++++++++++
libsrc/atmos/ser_stddrv.s | 13 +++++++++++++
libsrc/c128/ser_stat_stddrv.s | 14 ++++++++++++++
libsrc/c128/ser_stddrv.s | 13 +++++++++++++
libsrc/c64/ser_stat_stddrv.s | 14 ++++++++++++++
libsrc/c64/ser_stddrv.s | 13 +++++++++++++
libsrc/cbm510/ser_stat_stddrv.s | 14 ++++++++++++++
libsrc/cbm510/ser_stddrv.s | 13 +++++++++++++
libsrc/cbm610/ser_stat_stddrv.s | 14 ++++++++++++++
libsrc/cbm610/ser_stddrv.s | 13 +++++++++++++
libsrc/lynx/ser_stat_stddrv.s | 14 ++++++++++++++
libsrc/plus4/ser_stat_stddrv.s | 14 ++++++++++++++
libsrc/plus4/ser_stddrv.s | 13 +++++++++++++
28 files changed, 274 insertions(+), 11 deletions(-)
create mode 100644 libsrc/apple2/ser_stat_stddrv.s
create mode 100644 libsrc/apple2/ser_stddrv.s
create mode 100644 libsrc/atari/ser_stat_stddrv.s
create mode 100644 libsrc/atari/ser_stddrv.s
create mode 100644 libsrc/atmos/ser_stat_stddrv.s
create mode 100644 libsrc/atmos/ser_stddrv.s
create mode 100644 libsrc/c128/ser_stat_stddrv.s
create mode 100644 libsrc/c128/ser_stddrv.s
create mode 100644 libsrc/c64/ser_stat_stddrv.s
create mode 100644 libsrc/c64/ser_stddrv.s
create mode 100644 libsrc/cbm510/ser_stat_stddrv.s
create mode 100644 libsrc/cbm510/ser_stddrv.s
create mode 100644 libsrc/cbm610/ser_stat_stddrv.s
create mode 100644 libsrc/cbm610/ser_stddrv.s
create mode 100644 libsrc/lynx/ser_stat_stddrv.s
create mode 100644 libsrc/plus4/ser_stat_stddrv.s
create mode 100644 libsrc/plus4/ser_stddrv.s
diff --git a/include/apple2.h b/include/apple2.h
index cb15cab97..9f644bc97 100644
--- a/include/apple2.h
+++ b/include/apple2.h
@@ -171,7 +171,7 @@ extern struct {
extern void a2_auxmem_emd[];
extern void a2_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */
extern void a2_stdmou_mou[]; /* Referred to by mouse_static_stddrv[] */
-extern void a2_ssc_ser[];
+extern void a2_ssc_ser[]; /* Referred to by ser_static_stddrv[] */
extern void a2_hi_tgi[]; /* Referred to by tgi_static_stddrv[] */
extern void a2_lo_tgi[];
#endif
diff --git a/include/apple2enh.h b/include/apple2enh.h
index 58e0b397f..bfe5cdb18 100644
--- a/include/apple2enh.h
+++ b/include/apple2enh.h
@@ -99,7 +99,7 @@
extern void a2e_auxmem_emd[];
extern void a2e_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */
extern void a2e_stdmou_mou[]; /* Referred to by mouse_static_stddrv[] */
-extern void a2e_ssc_ser[];
+extern void a2e_ssc_ser[]; /* Referred to by ser_static_stddrv[] */
extern void a2e_hi_tgi[]; /* Referred to by tgi_static_stddrv[] */
extern void a2e_lo_tgi[];
diff --git a/include/atari.h b/include/atari.h
index 781ee7a80..deae8fdf5 100644
--- a/include/atari.h
+++ b/include/atari.h
@@ -261,7 +261,7 @@ extern void atrst_mou[]; /* referred to by mouse_static_stddrv[]
extern void atrami_mou[];
extern void atrtrk_mou[];
extern void atrtt_mou[];
-extern void atrrdev_ser[];
+extern void atrrdev_ser[]; /* referred to by ser_static_stddrv[] */
extern void atr3_tgi[];
extern void atr4_tgi[];
extern void atr5_tgi[];
@@ -286,7 +286,7 @@ extern void atrxst_mou[]; /* referred to by mouse_static_stddrv[]
extern void atrxami_mou[];
extern void atrxtrk_mou[];
extern void atrxtt_mou[];
-extern void atrxrdev_ser[];
+extern void atrxrdev_ser[]; /* referred to by ser_static_stddrv[] */
extern void atrx3_tgi[];
extern void atrx4_tgi[];
extern void atrx5_tgi[];
diff --git a/include/atmos.h b/include/atmos.h
index 227c387aa..38d423c46 100644
--- a/include/atmos.h
+++ b/include/atmos.h
@@ -133,7 +133,7 @@
/* The addresses of the static drivers */
extern void atmos_pase_joy[]; /* Referred to by joy_static_stddrv[] */
extern void atmos_ijk_joy[];
-extern void atmos_acia_ser[];
+extern void atmos_acia_ser[]; /* Referred to by ser_static_stddrv[] */
extern void atmos_228_200_3_tgi[];
extern void atmos_240_200_2_tgi[]; /* Referred to by tgi_static_stddrv[] */
diff --git a/include/c128.h b/include/c128.h
index ee1dce99e..5a34904e0 100644
--- a/include/c128.h
+++ b/include/c128.h
@@ -140,7 +140,7 @@ extern void c128_1351_mou[]; /* Referred to by mouse_static_stddrv[] */
extern void c128_joy_mou[];
extern void c128_inkwell_mou[];
extern void c128_pot_mou[];
-extern void c128_swlink_ser[];
+extern void c128_swlink_ser[]; /* Referred to by ser_static_stddrv[] */
extern void c128_hi_tgi[];
extern void c128_vdc_tgi[]; /* Referred to by tgi_static_stddrv[] */
extern void c128_vdc2_tgi[];
diff --git a/include/c64.h b/include/c64.h
index 13d252dcb..ffac801ef 100644
--- a/include/c64.h
+++ b/include/c64.h
@@ -155,7 +155,7 @@ extern void c64_1351_mou[]; /* Referred to by mouse_static_stddrv[]
extern void c64_joy_mou[];
extern void c64_inkwell_mou[];
extern void c64_pot_mou[];
-extern void c64_swlink_ser[];
+extern void c64_swlink_ser[]; /* Referred to by ser_static_stddrv[] */
extern void c64_hi_tgi[]; /* Referred to by tgi_static_stddrv[] */
diff --git a/include/cbm510.h b/include/cbm510.h
index 20b334ed9..8ebbdf3c1 100644
--- a/include/cbm510.h
+++ b/include/cbm510.h
@@ -128,7 +128,7 @@ extern void cbm510_inkwl_mou[];
extern void cbm510_joy_mou[]; /* Referred to by mouse_static_stddrv[] */
extern void cbm510_ram_emd[];
extern void cbm510_std_joy[]; /* Referred to by joy_static_stddrv[] */
-extern void cbm510_std_ser[];
+extern void cbm510_std_ser[]; /* Referred to by ser_static_stddrv[] */
diff --git a/include/cbm610.h b/include/cbm610.h
index de7aa50f8..64beab9e6 100644
--- a/include/cbm610.h
+++ b/include/cbm610.h
@@ -105,7 +105,7 @@
/* The addresses of the static drivers */
extern void cbm610_ram_emd[];
-extern void cbm610_std_ser[];
+extern void cbm610_std_ser[]; /* Referred to by ser_static_stddrv[] */
diff --git a/include/lynx.h b/include/lynx.h
index 1b4828a72..41dc5acb3 100644
--- a/include/lynx.h
+++ b/include/lynx.h
@@ -115,7 +115,7 @@
/* The addresses of the static drivers */
extern void lynx_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */
-extern void lynx_comlynx_ser[];
+extern void lynx_comlynx_ser[]; /* Referred to by ser_static_stddrv[] */
extern void lynx_160_102_16_tgi[]; /* Referred to by tgi_static_stddrv[] */
diff --git a/include/plus4.h b/include/plus4.h
index 325ba7d89..7730938e8 100644
--- a/include/plus4.h
+++ b/include/plus4.h
@@ -56,7 +56,7 @@
/* The addresses of the static drivers */
extern void plus4_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */
-extern void plus4_stdser_ser[];
+extern void plus4_stdser_ser[]; /* Referred to by ser_static_stddrv[] */
diff --git a/include/serial.h b/include/serial.h
index 35d7b8f66..0510cd219 100644
--- a/include/serial.h
+++ b/include/serial.h
@@ -123,6 +123,13 @@ struct ser_params {
unsigned char handshake; /* Type of handshake to use */
};
+/* The name of the standard serial driver for a platform */
+extern const char ser_stddrv[];
+
+/* The address of the static standard serial driver for a platform */
+extern const void ser_static_stddrv[];
+
+
/*****************************************************************************/
/* Code */
diff --git a/libsrc/apple2/ser_stat_stddrv.s b/libsrc/apple2/ser_stat_stddrv.s
new file mode 100644
index 000000000..690fe4853
--- /dev/null
+++ b/libsrc/apple2/ser_stat_stddrv.s
@@ -0,0 +1,22 @@
+;
+; Address of the static standard serial driver
+;
+; Oliver Schmidt, 2022-12-22
+;
+; const void ser_static_stddrv[];
+;
+
+ .export _ser_static_stddrv
+ .ifdef __APPLE2ENH__
+ .import _a2e_ssc_ser
+ .else
+ .import _a2_ssc_ser
+ .endif
+
+.rodata
+
+ .ifdef __APPLE2ENH__
+_ser_static_stddrv := _a2e_ssc_ser
+ .else
+_ser_static_stddrv := _a2_ssc_ser
+ .endif
diff --git a/libsrc/apple2/ser_stddrv.s b/libsrc/apple2/ser_stddrv.s
new file mode 100644
index 000000000..2e8361865
--- /dev/null
+++ b/libsrc/apple2/ser_stddrv.s
@@ -0,0 +1,18 @@
+;
+; Name of the standard serial driver
+;
+; Oliver Schmidt, 2022-12-22
+;
+; const char ser_stddrv[];
+;
+
+ .export _ser_stddrv
+
+.rodata
+
+_ser_stddrv:
+ .ifdef __APPLE2ENH__
+ .asciiz "A2E.SSC.SER"
+ .else
+ .asciiz "A2.SSC.SER"
+ .endif
diff --git a/libsrc/atari/ser_stat_stddrv.s b/libsrc/atari/ser_stat_stddrv.s
new file mode 100644
index 000000000..b054f7f32
--- /dev/null
+++ b/libsrc/atari/ser_stat_stddrv.s
@@ -0,0 +1,22 @@
+;
+; Address of the static standard serial driver
+;
+; Oliver Schmidt, 2022-12-22
+;
+; const void ser_static_stddrv[];
+;
+
+ .export _ser_static_stddrv
+ .ifdef __ATARIXL__
+ .import _atrxrdev_ser
+ .else
+ .import _atrrdev_ser
+ .endif
+
+.rodata
+
+ .ifdef __ATARIXL__
+_ser_static_stddrv := _atrxrdev_ser
+ .else
+_ser_static_stddrv := _atrrdev_ser
+ .endif
diff --git a/libsrc/atari/ser_stddrv.s b/libsrc/atari/ser_stddrv.s
new file mode 100644
index 000000000..e6f4ccd48
--- /dev/null
+++ b/libsrc/atari/ser_stddrv.s
@@ -0,0 +1,18 @@
+;
+; Name of the standard serial driver
+;
+; Oliver Schmidt, 2022-12-22
+;
+; const char ser_stddrv[];
+;
+
+ .export _ser_stddrv
+
+.rodata
+
+_ser_stddrv:
+ .ifdef __ATARIXL__
+ .asciiz "atrxrdev.ser"
+ .else
+ .asciiz "atrrdev.ser"
+ .endif
diff --git a/libsrc/atmos/ser_stat_stddrv.s b/libsrc/atmos/ser_stat_stddrv.s
new file mode 100644
index 000000000..2b4373695
--- /dev/null
+++ b/libsrc/atmos/ser_stat_stddrv.s
@@ -0,0 +1,14 @@
+;
+; Address of the static standard serial driver
+;
+; Oliver Schmidt, 2022-12-22
+;
+; const void ser_static_stddrv[];
+;
+
+ .export _ser_static_stddrv
+ .import _atmos_acia_ser
+
+.rodata
+
+_ser_static_stddrv := _atmos_acia_ser
diff --git a/libsrc/atmos/ser_stddrv.s b/libsrc/atmos/ser_stddrv.s
new file mode 100644
index 000000000..71e33115a
--- /dev/null
+++ b/libsrc/atmos/ser_stddrv.s
@@ -0,0 +1,13 @@
+;
+; Name of the standard serial driver
+;
+; Oliver Schmidt, 2022-12-22
+;
+; const char ser_stddrv[];
+;
+
+ .export _ser_stddrv
+
+.rodata
+
+_ser_stddrv: .asciiz "atmos-acia.ser"
diff --git a/libsrc/c128/ser_stat_stddrv.s b/libsrc/c128/ser_stat_stddrv.s
new file mode 100644
index 000000000..8b0732703
--- /dev/null
+++ b/libsrc/c128/ser_stat_stddrv.s
@@ -0,0 +1,14 @@
+;
+; Address of the static standard serial driver
+;
+; Oliver Schmidt, 2022-12-22
+;
+; const void ser_static_stddrv[];
+;
+
+ .export _ser_static_stddrv
+ .import _c128_swlink_ser
+
+.rodata
+
+_ser_static_stddrv := _c128_swlink_ser
diff --git a/libsrc/c128/ser_stddrv.s b/libsrc/c128/ser_stddrv.s
new file mode 100644
index 000000000..63f73cadd
--- /dev/null
+++ b/libsrc/c128/ser_stddrv.s
@@ -0,0 +1,13 @@
+;
+; Name of the standard serial driver
+;
+; Oliver Schmidt, 2022-12-22
+;
+; const char ser_stddrv[];
+;
+
+ .export _ser_stddrv
+
+.rodata
+
+_ser_stddrv: .asciiz "c128_swlink.ser"
diff --git a/libsrc/c64/ser_stat_stddrv.s b/libsrc/c64/ser_stat_stddrv.s
new file mode 100644
index 000000000..327abbe5f
--- /dev/null
+++ b/libsrc/c64/ser_stat_stddrv.s
@@ -0,0 +1,14 @@
+;
+; Address of the static standard serial driver
+;
+; Oliver Schmidt, 2022-12-22
+;
+; const void ser_static_stddrv[];
+;
+
+ .export _ser_static_stddrv
+ .import _c64_swlink_ser
+
+.rodata
+
+_ser_static_stddrv := _c64_swlink_ser
diff --git a/libsrc/c64/ser_stddrv.s b/libsrc/c64/ser_stddrv.s
new file mode 100644
index 000000000..5b00b7642
--- /dev/null
+++ b/libsrc/c64/ser_stddrv.s
@@ -0,0 +1,13 @@
+;
+; Name of the standard serial driver
+;
+; Oliver Schmidt, 2022-12-22
+;
+; const char ser_stddrv[];
+;
+
+ .export _ser_stddrv
+
+.rodata
+
+_ser_stddrv: .asciiz "c64_swlink.ser"
diff --git a/libsrc/cbm510/ser_stat_stddrv.s b/libsrc/cbm510/ser_stat_stddrv.s
new file mode 100644
index 000000000..a872f19b9
--- /dev/null
+++ b/libsrc/cbm510/ser_stat_stddrv.s
@@ -0,0 +1,14 @@
+;
+; Address of the static standard serial driver
+;
+; Oliver Schmidt, 2022-12-22
+;
+; const void ser_static_stddrv[];
+;
+
+ .export _ser_static_stddrv
+ .import _cbm510_std_ser
+
+.rodata
+
+_ser_static_stddrv := _cbm510_std_ser
diff --git a/libsrc/cbm510/ser_stddrv.s b/libsrc/cbm510/ser_stddrv.s
new file mode 100644
index 000000000..ed785f914
--- /dev/null
+++ b/libsrc/cbm510/ser_stddrv.s
@@ -0,0 +1,13 @@
+;
+; Name of the standard serial driver
+;
+; Oliver Schmidt, 2022-12-22
+;
+; const char ser_stddrv[];
+;
+
+ .export _ser_stddrv
+
+.rodata
+
+_ser_stddrv: .asciiz "cbm510-std.ser"
diff --git a/libsrc/cbm610/ser_stat_stddrv.s b/libsrc/cbm610/ser_stat_stddrv.s
new file mode 100644
index 000000000..643a74c7d
--- /dev/null
+++ b/libsrc/cbm610/ser_stat_stddrv.s
@@ -0,0 +1,14 @@
+;
+; Address of the static standard serial driver
+;
+; Oliver Schmidt, 2022-12-22
+;
+; const void ser_static_stddrv[];
+;
+
+ .export _ser_static_stddrv
+ .import _cbm610_std_ser
+
+.rodata
+
+_ser_static_stddrv := _cbm610_std_ser
diff --git a/libsrc/cbm610/ser_stddrv.s b/libsrc/cbm610/ser_stddrv.s
new file mode 100644
index 000000000..83702c1ef
--- /dev/null
+++ b/libsrc/cbm610/ser_stddrv.s
@@ -0,0 +1,13 @@
+;
+; Name of the standard serial driver
+;
+; Oliver Schmidt, 2022-12-22
+;
+; const char ser_stddrv[];
+;
+
+ .export _ser_stddrv
+
+.rodata
+
+_ser_stddrv: .asciiz "cbm610-std.ser"
diff --git a/libsrc/lynx/ser_stat_stddrv.s b/libsrc/lynx/ser_stat_stddrv.s
new file mode 100644
index 000000000..37f481c47
--- /dev/null
+++ b/libsrc/lynx/ser_stat_stddrv.s
@@ -0,0 +1,14 @@
+;
+; Address of the static standard serial driver
+;
+; Oliver Schmidt, 2022-12-22
+;
+; const void ser_static_stddrv[];
+;
+
+ .export _ser_static_stddrv
+ .import _lynx_comlynx_ser
+
+.rodata
+
+_ser_static_stddrv := _lynx_comlynx_ser
diff --git a/libsrc/plus4/ser_stat_stddrv.s b/libsrc/plus4/ser_stat_stddrv.s
new file mode 100644
index 000000000..f35b09232
--- /dev/null
+++ b/libsrc/plus4/ser_stat_stddrv.s
@@ -0,0 +1,14 @@
+;
+; Address of the static standard serial driver
+;
+; Oliver Schmidt, 2022-12-22
+;
+; const void ser_static_stddrv[];
+;
+
+ .export _ser_static_stddrv
+ .import _plus4_stdser_ser
+
+.rodata
+
+_ser_static_stddrv := _plus4_stdser_ser
diff --git a/libsrc/plus4/ser_stddrv.s b/libsrc/plus4/ser_stddrv.s
new file mode 100644
index 000000000..f308d5f40
--- /dev/null
+++ b/libsrc/plus4/ser_stddrv.s
@@ -0,0 +1,13 @@
+;
+; Name of the standard serial driver
+;
+; Oliver Schmidt, 2022-12-22
+;
+; const char ser_stddrv[];
+;
+
+ .export _ser_stddrv
+
+.rodata
+
+_ser_stddrv: .asciiz "plus4-stdser.ser"