This page (revision-18) was last changed on 03-Feb-2023 15:21 by Roland B. Wassenberg 

This page was created on 22-Apr-2021 01:19 by Roland B. Wassenberg

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
18 03-Feb-2023 15:21 34 KB Roland B. Wassenberg to previous
17 23-Apr-2021 02:58 35 KB Roland B. Wassenberg to previous | to last
16 23-Apr-2021 02:55 34 KB Roland B. Wassenberg to previous | to last
15 23-Apr-2021 02:10 34 KB Roland B. Wassenberg to previous | to last
14 23-Apr-2021 02:08 34 KB Roland B. Wassenberg to previous | to last
13 22-Apr-2021 23:32 32 KB Roland B. Wassenberg to previous | to last
12 22-Apr-2021 23:27 32 KB Roland B. Wassenberg to previous | to last
11 22-Apr-2021 02:06 32 KB Roland B. Wassenberg to previous | to last
10 22-Apr-2021 02:01 32 KB Roland B. Wassenberg to previous | to last
9 22-Apr-2021 01:59 31 KB Roland B. Wassenberg to previous | to last
8 22-Apr-2021 01:58 31 KB Roland B. Wassenberg to previous | to last
7 22-Apr-2021 01:55 31 KB Roland B. Wassenberg to previous | to last
6 22-Apr-2021 01:50 31 KB Roland B. Wassenberg to previous | to last
5 22-Apr-2021 01:50 31 KB Roland B. Wassenberg to previous | to last
4 22-Apr-2021 01:49 31 KB Roland B. Wassenberg to previous | to last
3 22-Apr-2021 01:26 30 KB Roland B. Wassenberg to previous | to last
2 22-Apr-2021 01:20 30 KB Roland B. Wassenberg to previous | to last
1 22-Apr-2021 01:19 122 bytes Roland B. Wassenberg to last

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 4 changed one line
AtariWiki is very, very proud Newell Industries & Charles W. Marslett gave us the source code for the FAST FLOATING POINT routines for PD. Thank you so much Newell Industries & Charles W. Marslett, that is not a little gift, that is a giant leap for the community worldwide and will result in rewrite all Atari OS and burn them on EPROM. We further thank Robert 'Bob' Puff for converting the original AMAC source code into MAC/65 source code and Konrad M. Kokoszkiewicz for finding the last remaining bug in the hexdgt routine: SBC $9 -> SBC #$9. Thank you all so much, the community is in great debt for the work you have done! :-)\\
[{TableOfContents }]\\
At line 6 changed one line
Please don't misunderstand this work, it is 'just' fast or even up to 3.5 times faster than the original routines! Indeed, it is way more! The routines give the user reliable results, too! That is very important for calculations. Further, they maintain the jump addresses from the original routines from Atari. Therefore, no trouble, just have fun and enjoy.\\
AtariWiki is very, very proud Newell Industries & Charles W. Marslett gave us the source code for the FAST FLOATING POINT routines for PD. Thank you so much Newell Industries & Charles W. Marslett, that is not a little gift, that is a giant leap for the community worldwide and will result in rewrite all Atari OS and burn them on EPROM. We further thank Robert 'Bob' Puff for converting the original [AMAC|https://atariwiki.org/wiki/Wiki.jsp?page=Atari%20Macro%20Assembler] source code into [MAC/65|https://atariwiki.org/wiki/Wiki.jsp?page=Mac65] source code. Thank you all so much, the community is in great debt for the work you have done! :-)\\
At line 8 changed one line
The routines make use of the [CORDIC algorithm|https://en.wikipedia.org/wiki/CORDIC].
Please don't misunderstand this work, it is 'just' fast or even up to 3.5 times faster than the original routines! Indeed, it is way more! The routines give the user reliable results, too! That is very important for calculations. Further, they maintain the jump addresses from the original routines from Atari. Therefore, no trouble, just have fun and enjoy.
At line 13 changed 2 lines
Ad from Newell Industries from 1981:\\
\\
Ad from Newell Industries from 1981:
At line 16 changed one line
!!Source Code
!!ATR image
* [FastChip.atr|FastChip.atr]
At line 18 added 30 lines
HEADER.M65, FASTFP1.M65:
MAC/65 Tokenized source. Load the
header file, and assemble from it.
FASTFP.OBJ:
Object file produced from above
files, when assembled at $D800.
FASTFP.ASM:
Original AMAC source file (LISTed
format).
LDFAST.M65:
MAC/65 Tokenized source for a
program to load D1:FASTFP.OBJ into
the RAM under the OS in XL/XE
machines.
LDFAST.ASM:
Original AMAC source for above.
FASTFP.DOC:
Original document file listing the
routines contained in the faschip.
!!AMAC source code file
* [Fast Chip source code file for AMAC|FASTFP.ASM]
!!Source Code of the final revision F
At line 1,332 added 61 lines
!!FLOATING POINT ROM ENTRY POINTS
{{{
FLOATING POINT ROM ENTRY POINTS
Entry Address Function
Point
AFP D800 Extract a floating point number from an ASCII
string (FR0<--[INBUFF+CIX])
FASC D8E6 Convert a floating point number to an ASCII
string (returns pointer in INBUFF)
IFP D9AA Convert a 2-byte integer (FR0) to a floating
point number (in FR0)
FPI D9D2 Convert a floating point number to an integer
ZFR0 DA44 Zero the floating point register (FR0)
ZF1 DA46 Zero 6 zero page bytes pointed to by "X"
ZPG0 DA48 Zero "Y" bytes pointed to by "X"
INITBF DA51 Store the address of LBUFF in INBUFF
DBLZ2 DA5A Shift Z2 left one bit (16-bit High/Low format)
FSUB DA60 Subtract FR1 from FR0
FADD DA66 Add FR1 to FR0 (result in FR0)
FMUL DADB Multiply FR0 by FR1 (result in FR0)
FDIV DB28 Divide FR0 by FR1 (result in FR0)
SKBLK DBA1 Skip 0 or more blanks pointed to by [INBUFF,CIX],
result modifies CIX
GCHAR DBAF Read a byte, convert it as an ASCII decimal
number, set CY if it is not
SH0L4 DBE4 Shift the contents of FR0 left 4 bits
NORMAL DC00 Normalize the contents of FR0
PLYEVL DD40 Evaluate the polynomial [Y.X](FR0), with A terms
FLD0R DD89 Load FR0 from [Y.X]
FLD0P DD8D Load FR0 from [FLPTR]
FLD1R DD98 Load FR1 from [Y.X]
FLD1P DD9C Load FR1 from [FLPTR]
FST0R DDA7 Store FR0 into 6 bytes pointed to by [Y.X]
FST0P DDAB Store FR0 into [FLPTR]
FMOVE DDB6 Copy FR0 over into FR1
EXP DDC0 FR0 <-- exponential function of FR0
EXP10 DDCC FR0 <-- 10 ^ FR0 (exponent of 10)
REDARG DE95 FR0 <-- (FR0-[Y.X])/(FR0+[Y.X])
LOG DECD FR0 <-- natural log of FR0
LOG10 DED1 FR0 <-- base 10 log of FR0
HALF DF6C Constant = 0.5000000000
PLYSIN DFAE 11 Constant table for SIN polynomial
NONE DFEA Constant = 0.9999999999
SIN45 DFF0 Constant = sin(45 deg.)
Entry points not in the ATARI "D" ROM
RSTARG DD22 Copy PLYARG over into FR1
LDARG DD2D Copy PLYARG over into FR0
PLYONE DD38 Same as PLYEVL except implicit 1.0 coefficient
LDPLY DD62 Copy [FPTR2] into FR1, add 6 to FPTR2
SAVARG DD78 Store X into FPTR2, Y into FPTR2+1, copy FR0
over into PLYARG
}}}
!!Remark
drac030 from AtariAge found the last remaining thing to be changed in the hexdgt routine: SBC $9 should be changed into -> SBC #$9.