diff options
-rw-r--r-- | bigfloat.h | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/bigfloat.h b/bigfloat.h new file mode 100644 index 0000000..bcfcfd1 --- /dev/null +++ b/bigfloat.h @@ -0,0 +1,33 @@ +/* bignum implementation for Atari OS floating point ROM. + Only FP constants and the bignum/bugnump data types need + be defined here. See bignum.h for API. */ + +#define bignum(x) char x[6] +#define bignump char * + +/****** constants ******/ +/* zero */ +#define BIG_0 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } + +/* TODO: calculate bank interest differently: this bignum + implementation is floating point, but I might swap it out + for an int-based one! */ +/* 1.005 (bank interest) */ +#define BIG_1_005 { 0x40, 0x01, 0x00, 0x50, 0x00, 0x00 } + +/* bignum 100, used for score calculations in final_stats() */ +#define BIG_100 { 0x41, 0x01, 0x00, 0x00, 0x00, 0x00 } + +/* one thousand, one million, one hundred million */ +#define BIG_1K { 0x41, 0x10, 0x00, 0x00, 0x00, 0x00 } +#define BIG_1M { 0x43, 0x01, 0x00, 0x00, 0x00, 0x00 } +#define BIG_100M { 0x44, 0x01, 0x00, 0x00, 0x00, 0x00 } + +/* 10 million, one billion, one trillion */ +#define BIG_10M { 0x43, 0x10, 0x00, 0x00, 0x00, 0x00 } +#define BIG_1B { 0x44, 0x10, 0x00, 0x00, 0x00, 0x00 } +#define BIG_1T { 0x46, 0x01, 0x00, 0x00, 0x00, 0x00 } + +/* max value for a ulong, 2**32-1 */ +#define BIG_MAX_ULONG { 0x44, 0x42, 0x94, 0x96, 0x72, 0x95 } + |