From ac0b452834265d7f4287e9d6e10f2631fbd66dd0 Mon Sep 17 00:00:00 2001
From: Oliver Schmidt
Date: Sat, 13 Apr 2019 11:25:54 +0200
Subject: [PATCH] Added '_' prefix to sin and cos.
Users complained that otherwise the names might clash with their functions.
---
doc/funcref.sgml | 4 ++--
include/cc65.h | 4 ++--
libsrc/common/sincos.s | 28 +++++++++++++---------------
libsrc/tgi/tgi_arc.c | 8 ++++----
libsrc/tgi/tgi_pieslice.c | 4 ++--
samples/tgidemo.c | 2 +-
6 files changed, 24 insertions(+), 26 deletions(-)
diff --git a/doc/funcref.sgml b/doc/funcref.sgml
index 89a8eb13c..030c726cc 100644
--- a/doc/funcref.sgml
+++ b/doc/funcref.sgml
@@ -244,11 +244,11 @@ function.
-
+
-
+
diff --git a/include/cc65.h b/include/cc65.h
index a30bad247..7e9c2cae2 100644
--- a/include/cc65.h
+++ b/include/cc65.h
@@ -85,12 +85,12 @@ unsigned int __fastcall__ mul40 (unsigned char value);
** result
*/
-int __fastcall__ sin (unsigned x);
+int __fastcall__ _sin (unsigned x);
/* Return the sine of the argument, which must be in range 0..360. The result
** is in 8.8 fixed point format, which means that 1.0 = $100 and -1.0 = $FF00.
*/
-int __fastcall__ cos (unsigned x);
+int __fastcall__ _cos (unsigned x);
/* Return the cosine of the argument, which must be in range 0..360. The result
** is in 8.8 fixed point format, which means that 1.0 = $100 and -1.0 = $FF00.
*/
diff --git a/libsrc/common/sincos.s b/libsrc/common/sincos.s
index 7cdcb7167..6bbc151f4 100644
--- a/libsrc/common/sincos.s
+++ b/libsrc/common/sincos.s
@@ -1,8 +1,8 @@
;
; Fixed point cosine/sine functions.
;
-; int __fastcall__ cc65_sin (unsigned x);
-; int __fastcall__ cc65_cos (unsigned x);
+; int __fastcall__ _sin (unsigned x);
+; int __fastcall__ _cos (unsigned x);
;
; Returns the cosine/sine for the given argument as angular degree.
; Valid argument range is 0..360 for both functions. They will return
@@ -13,7 +13,7 @@
; Ullrich von Bassewitz, 2009-10-29
;
- .export _cos, _sin
+ .export __cos, __sin
; ---------------------------------------------------------------------------
@@ -37,13 +37,13 @@ _sintab:
; ---------------------------------------------------------------------------
-; Cosine function. Is actually implemented as cos(x) = sin(x+90)
+; Cosine function. Is actually implemented as _cos(x) = _sin(x+90)
.code
-_cos:
+__cos:
-; cos(x) = sin(x+90)
+; _cos(x) = _sin(x+90)
clc
adc #90
@@ -55,7 +55,7 @@ _cos:
@L1: cpx #>360
bne @L2
cmp #<360
-@L2: bcc _sin
+@L2: bcc __sin
sbc #<360
bcs @L3
@@ -66,12 +66,12 @@ _cos:
; Sine function. Uses
;
; table lookup for 0..89°
-; sin(x) = sin(180-x) for 90°..179°
-; sin(x) = -sin(x-180) for 180..360°
+; _sin(x) = _sin(180-x) for 90°..179°
+; _sin(x) = -_sin(x-180) for 180..360°
;
; Plus special handling for the values missing in the table.
-_sin:
+__sin:
; If the high byte is non zero, argument is > 255
@@ -85,7 +85,7 @@ _sin:
cmp #90
bcc L1
-; 90..179°. Value is identical to sin(180-val). Carry is set on entry.
+; 90..179°. Value is identical to _sin(180-val). Carry is set on entry.
;
; 180-val := -val + 180.
; With
@@ -117,7 +117,7 @@ L2: tay
lda _sintab,y
rts
-; 180..360°. sin(x) = -sin(x-180). Since the argument is in range 0..180
+; 180..360°. _sin(x) = -_sin(x-180). Since the argument is in range 0..180
; after the subtraction, we don't need to handle the high byte.
L3: sec
@@ -126,7 +126,7 @@ L4: sbc #180
cmp #90
bcc L5
-; 270..360°. Value is identical to -sin(180-val). Carry is set on entry.
+; 270..360°. Value is identical to -_sin(180-val). Carry is set on entry.
;
; 180-val := -val + 180.
; With
@@ -160,5 +160,3 @@ L6: tay
bcc L7
inx
L7: rts
-
-
diff --git a/libsrc/tgi/tgi_arc.c b/libsrc/tgi/tgi_arc.c
index 94cc593ce..c0baabbde 100644
--- a/libsrc/tgi/tgi_arc.c
+++ b/libsrc/tgi/tgi_arc.c
@@ -70,16 +70,16 @@ void __fastcall__ tgi_arc (int x, int y, unsigned char rx, unsigned char ry,
}
/* Calculate the start coords */
- x1 = x + tgi_imulround (rx, cos (sa));
- y1 = y - tgi_imulround (ry, sin (sa));
+ x1 = x + tgi_imulround (rx, _cos (sa));
+ y1 = y - tgi_imulround (ry, _sin (sa));
do {
sa += inc;
if (sa >= ea) {
sa = ea;
done = 1;
}
- x2 = x + tgi_imulround (rx, cos (sa));
- y2 = y - tgi_imulround (ry, sin (sa));
+ x2 = x + tgi_imulround (rx, _cos (sa));
+ y2 = y - tgi_imulround (ry, _sin (sa));
tgi_line (x1, y1, x2, y2);
x1 = x2;
y1 = y2;
diff --git a/libsrc/tgi/tgi_pieslice.c b/libsrc/tgi/tgi_pieslice.c
index b119b9b2d..748d1819a 100644
--- a/libsrc/tgi/tgi_pieslice.c
+++ b/libsrc/tgi/tgi_pieslice.c
@@ -57,8 +57,8 @@ void __fastcall__ tgi_pieslice (int x, int y, unsigned char rx, unsigned char ry
tgi_arc (x, y, rx, ry, sa, ea);
/* ... and close it */
- tgi_line (x, y, x + tgi_imulround (rx, cos (sa)), y - tgi_imulround (ry, sin (sa)));
- tgi_line (x, y, x + tgi_imulround (rx, cos (ea)), y - tgi_imulround (ry, sin (ea)));
+ tgi_line (x, y, x + tgi_imulround (rx, _cos (sa)), y - tgi_imulround (ry, _sin (sa)));
+ tgi_line (x, y, x + tgi_imulround (rx, _cos (ea)), y - tgi_imulround (ry, _sin (ea)));
}
diff --git a/samples/tgidemo.c b/samples/tgidemo.c
index 1d76fee2e..de743314e 100644
--- a/samples/tgidemo.c
+++ b/samples/tgidemo.c
@@ -151,7 +151,7 @@ static void DoDiagram (void)
/* Calculate the next points */
X = (int) (((long) (MaxX - 19) * I) / 360);
- Y = (int) (((long) Amp * -sin (I)) / 256);
+ Y = (int) (((long) Amp * -_sin (I)) / 256);
/* Draw the line */
tgi_lineto (XOrigin + X, YOrigin + Y);
--
2.39.5