Update const_PI
Allow a patched best rounded value or the original value from the MS BASIC
This commit is contained in:
1 parent
d20725cc81
commit
d65db6a049
3 files changed
+16
-2
No files matched your search
@@ -3,12 +3,23 @@
|
||||
;; #LAYOUT# * BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
; This file is under the MIT license, it contains code released by Microsoft Corporation.
|
||||
; See LICENSE for more information.
|
||||
|
||||
; Math package - The floating point constant PI
|
||||
;
|
||||
; This is verified to be identical to the original Microsoft implementation where it was named PIVAL.
|
||||
;
|
||||
; Math package - a constant, for documentation see:
|
||||
; - https://www.c64-wiki.com/wiki/BASIC-ROM
|
||||
; - Computes Mapping the Commodore 64, page 103
|
||||
;
|
||||
|
||||
const_PI:
|
||||
|
||||
; The original BASIC didn't have the most accurate PI.
|
||||
|
||||
!ifdef CONFIG_ORIGINAL_UNPATCHED_BASIC {
|
||||
+PUT_CONST_PI_MS
|
||||
} else {
|
||||
+PUT_CONST_PI
|
||||
}
|
||||
@@ -52,6 +52,8 @@ std::vector<ConstEntry> GLOBAL_constants =
|
||||
|
||||
ConstEntry( "HALF_PI", M_PI / 2.0 ),
|
||||
ConstEntry( "PI", M_PI ),
|
||||
ConstEntry( "PI_MS", 3.1415926529 ), // This is the value of PI used in the Microsoft BASIC. It is only the third closest approximation
|
||||
|
||||
ConstEntry( "DOUBLE_PI", M_PI * 2.0 ),
|
||||
ConstEntry( "SQR_2", std::sqrt(2.0) ),
|
||||
ConstEntry( "INV_SQR_2", 1.0 / std::sqrt(2.0) ),
|
||||
|
||||
+2
-1
@@ -20,9 +20,10 @@ int matches[MAX_SIZE];
|
||||
|
||||
int phase_mask[MAX_SIZE+MAX_SIZE];
|
||||
|
||||
#define NUM_CHUNKS 13
|
||||
#define NUM_CHUNKS 14
|
||||
// Pairs of start, end memory addresses of known exact similarity with the open source Microsoft BASIC
|
||||
unsigned short microsoft_basic_chunks[NUM_CHUNKS * 2] = {
|
||||
0xAEA8, 0xAEAC,
|
||||
0xB248, 0xB24C,
|
||||
0xB391, 0xB39D,
|
||||
0xB3A2, 0xB3A5,
|
||||
|
||||
Reference in new issue
Block a user