From 2316ea0e05c00eb65d83cfe6def57e9840910096 Mon Sep 17 00:00:00 2001
From: "B. Watson" <yalhcru@gmail.com>
Date: Sat, 20 Mar 2021 03:46:20 -0400
Subject: Fix build on cc65 >= 2.18 (without breaking <= 2.17)

---
 conio/cgetc.s |  2 +-
 conio/cputc.s |  4 +++-
 conio/mul40.s | 20 ++++++++++++++++++++
 3 files changed, 24 insertions(+), 2 deletions(-)
 create mode 100644 conio/mul40.s

(limited to 'conio')

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
-- 
cgit v1.2.3