A2osX/SYS/KERNEL.S.MATH.txt
2018-06-13 17:18:08 +02:00

115 lines
2.3 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

NEW
PREFIX /A2OSX.BUILD
AUTO 4,1
*/--------------------------------------
* # FAdd,FSub,FMult,FDiv,FPwr
* Return X+Y, X-Y, X*Y, X/Y, X^Y
* ## In:
* PUSHF = X (Float)
* PUSHF = Y (Float)
* ## Out:
* On stack (Float)
*\--------------------------------------
K.FAdd ldx #ROM.FADD
.HS 2C BIT ABS
K.FSub ldx #ROM.FSUB
.HS 2C BIT ABS
K.FMult ldx #ROM.FMULT
.HS 2C BIT ABS
K.FDiv ldx #ROM.FDIV
.HS 2C BIT ABS
K.FPwr ldx #ROM.PWR
>STYA FORPNT
phx
jsr MATH.PullFAC
jsr MATH.PullARG
bra MATH.Go
*/--------------------------------------
* # Log,Sqr,Exp,Cos,Sin,Tan,ATan
* Return Log(x), Sqr(x), E^X, Cos(x), Sin(X), Tan(x), ATan(x)
* ## In:
* PUSHF = X (Float)
* ## Out:
* On stack (Float)
*\--------------------------------------
K.Log ldx #ROM.LOG
.HS 2C BIT ABS
K.Sqr ldx #ROM.SQR
.HS 2C BIT ABS
K.Exp ldx #ROM.EXP
.HS 2C BIT ABS
K.Cos ldx #ROM.COS
.HS 2C BIT ABS
K.Sin ldx #ROM.SIN
.HS 2C BIT ABS
K.Tan ldx #ROM.TAN
.HS 2C BIT ABS
K.ATan ldx #ROM.ATAN
>STYA FORPNT
phx
jsr MATH.PullFAC
bra MATH.Go
*/--------------------------------------
* # Float
* Return 'floated' long
* ## In:
* PUSHL = X (long)
* ## Out:
* On stack (Float)
*\--------------------------------------
K.Float >PULLW FAC+1
>PULLW FAC+3
stz FAC.SIGN
lda #$A0
sta FAC Exp=32
ldx #ROM.LTOF
phx
MATH.Go plx
jsr GP.ROMCALL
ldx #ROM.GETFAC
jsr GP.ROMCALL
clc
rts
*/--------------------------------------
* # LRIntF
* Return Float rounded into a long
* ## In:
* PUSHF = X (Float)
* ## Out:
* On stack (long)
*\--------------------------------------
K.LRIntF jsr MATH.PullFAC
ldx #ROM.QINT
jsr GP.ROMCALL
>PUSHW FAC+1
>PUSHW FAC+3
clc
rts
*--------------------------------------
MATH.PullARG ldx #ROM.SETARG
.HS 2C BIT ABS
MATH.PullFAC ldx #ROM.SETFAC
>LDYA pStack
>STYA INDEX
jsr GP.ROMCALL
lda pStack
clc
adc #5
sta pStack
rts
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.MATH
LOAD /A2OSX.SRC/SYS/KERNEL.S
ASM