aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorB. Watson <yalhcru@gmail.com>2021-03-20 03:46:20 -0400
committerB. Watson <yalhcru@gmail.com>2021-03-20 03:46:20 -0400
commit2316ea0e05c00eb65d83cfe6def57e9840910096 (patch)
tree1006dba3f7063020c2794b7cfd7f2abe297e4ff0
parent973610d41860bc177dc37d3f62b9f2f38aad97cd (diff)
downloadtaipan-2316ea0e05c00eb65d83cfe6def57e9840910096.tar.gz
Fix build on cc65 >= 2.18 (without breaking <= 2.17)
-rw-r--r--conio/cgetc.s2
-rw-r--r--conio/cputc.s4
-rw-r--r--conio/mul40.s20
-rw-r--r--console.s2
4 files changed, 25 insertions, 3 deletions
diff --git a/conio/cgetc.s b/conio/cgetc.s
index d1ae705..0085258 100644
--- a/conio/cgetc.s
+++ b/conio/cgetc.s
@@ -8,7 +8,7 @@
.include "atari.inc"
.export _cgetc
.import KEYBDV_handler
- .import cursor,mul40
+ .import cursor
_cgetc:
lda #12
diff --git a/conio/cputc.s b/conio/cputc.s
index fb60ffc..60fa7cc 100644
--- a/conio/cputc.s
+++ b/conio/cputc.s
@@ -15,11 +15,13 @@
;.export _cputcxy, _cputc
.export _cputc
.export plot, cputdirect, putchar
- .import popa, _gotoxy, mul40
+ .import popa, _gotoxy
.importzp tmp4,ptr4
.import _revflag
.include "atari.inc"
+ .include "mul40.s"
+
;_cputcxy:
;pha ; Save C
diff --git a/conio/mul40.s b/conio/mul40.s
new file mode 100644
index 0000000..99dd006
--- /dev/null
+++ b/conio/mul40.s
@@ -0,0 +1,20 @@
+; Compatibility wrapper for cc65's mul40 or _mul40 library routine.
+; Necessary because cc65 <= 2.17 has "mul40" as part of its atari
+; library, but 2.18 and up made it a C-callable routine on all
+; platforms, meaning its name grew a _ in front, "_mul40".
+
+; The .VERSION pseudo-variable is documented as "major version
+; times $100, plus minor version times $10". Whoever came up with
+; this design must have thought the minor version would never exceed
+; 15... starting with 2.16, the minor nybble overflows into the major
+; one, meaning cc65-2.17's .VERSION is actually $0310. Which is fine,
+; so long as there's never a cc65 major version 3.x (if this happens,
+; versions 3.0 and 3.1 will fail to build this correctly, then 3.2
+; will work again).
+
+.if .VERSION <= $0310 ; $0310 == 2.17
+ .import mul40
+.else
+ .import _mul40
+mul40 = _mul40
+.endif
diff --git a/console.s b/console.s
index 3d82120..8ca93c2 100644
--- a/console.s
+++ b/console.s
@@ -1,10 +1,10 @@
.include "atari.inc"
+ .include "conio/mul40.s"
.export _clrtobot, _clrtoeol, _clr_screen, _clrtoline, _cspaces, _cblank, _backspace, _cprint_pipe, _cprint_bang, _cspace, _cputc_s, _comma_space, _cprint_colon_space, _cprint_question_space, _cprint_period, _cprint_taipan_prompt, _crlf, _plus_or_space, _gotox0y, _cputc0, _set_orders
.export _rvs_on, _rvs_off
- .import mul40 ; from cc65's runtime
.importzp tmp3 ; ditto
.import _revflag ; conio/revers.s
.import bump_destptr ; these two are