New productivity upload: FASTMATH

Chat about anything CX16 related that doesn't fit elsewhere
Post Reply
Ed Minchau
Posts: 503
Joined: Sat Jul 11, 2020 3:30 pm

New productivity upload: FASTMATH

Post by Ed Minchau »




FASTMATH




View File






When programming in assembly language, quite often you will need to do calculations that would normally require

floating point math.  Those subroutines are available, the same ones that BASIC uses, but they are very slow.  And

if you're programming in assembly, you're doing so because it's much faster than BASIC, so using those routines can

defeat the purpose, particularly if you need to do a lot of such calculations.

Ideally in assembly language you want to have most of your variables consisting of single bytes, not the five used

for floating point.  It's having to move all those bytes around and doing calculations involving all of them

that makes the floating point subroutines slow.  And if you're going for speed, you can make a tradeoff: increased

speed at the expense of accuracy.  A function involving a single byte can just be a lookup table.

Over the last several years I have developed a number of lookup tables and subroutines that enable some very fast

math on the 6502 and now 65c02. FASTMATH.BIN is many of them compiled into a single 8kb file that can be loaded into 

banked RAM.

 

These lookup tables and functions will work on all revisions of the X16 emulator, and indeed will work on any 65c02

system as long as the file is loaded at $A000.  The functions are all called through JMP redirects in page BF, and

those JMP table locations will not change if I do revisions on the code.  I'm pretty sure I killed all the bugs, but

some might have slipped through.

This is probably going to be the final revision of FASTMATH, barring some sneaky bug hiding in the code.  There's

only 6 bytes left anyhow.

The file fastmath.txt contains detailed information about each lookup table and function and how to use them.

The file FASTMATH.BIN is the binary that must be loaded into banked RAM.






 
Post Reply