mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-08 11:30:41 +00:00
Kernel 0.9.2 : MATH API rewrite
This commit is contained in:
parent
a48bb7cd87
commit
de4a0a345f
@ -224,6 +224,24 @@ AUTO 4,1
|
||||
pla
|
||||
sta (pData),y
|
||||
.EM
|
||||
*--------------------------------------
|
||||
.MA PUSHF.G
|
||||
ldy #]1+5
|
||||
:1 dey
|
||||
lda (pData),y
|
||||
>PUSHA
|
||||
cpy #]1
|
||||
bne :1
|
||||
.EM
|
||||
*--------------------------------------
|
||||
.MA PULLF.G
|
||||
ldy #]1
|
||||
:1 >PULLA
|
||||
sta (pData),y
|
||||
iny
|
||||
cpy #]1+5
|
||||
bne :1
|
||||
.EM
|
||||
*--------------------------------------
|
||||
* STACK PUSH/PULL
|
||||
*--------------------------------------
|
||||
|
@ -5,9 +5,10 @@ AUTO 4,1
|
||||
* # FAdd,FSub,FMult,FDiv,FPwr
|
||||
* Return X+Y, X-Y, X*Y, X/Y, X^Y
|
||||
* ## In:
|
||||
* PUSHW = X (*Float)
|
||||
* PUSHW = Y (*Float)
|
||||
* Y,A = Dest (*Float)
|
||||
* PUSHF = X (Float)
|
||||
* PUSHF = Y (Float)
|
||||
* ## Out:
|
||||
* On stack (Float)
|
||||
*\--------------------------------------
|
||||
K.FAdd ldx #ROM.FADD
|
||||
.HS 2C BIT ABS
|
||||
@ -27,8 +28,9 @@ K.FPwr ldx #ROM.PWR
|
||||
* # Log,Sqr,Exp,Cos,Sin,Tan,ATan
|
||||
* Return Log(x), Sqr(x), E^X, Cos(x), Sin(X), Tan(x), ATan(x)
|
||||
* ## In:
|
||||
* PUSHW = X (*Float)
|
||||
* Y,A = Dest (*Float)
|
||||
* PUSHF = X (Float)
|
||||
* ## Out:
|
||||
* On stack (Float)
|
||||
*\--------------------------------------
|
||||
K.Log ldx #ROM.LOG
|
||||
.HS 2C BIT ABS
|
||||
@ -49,22 +51,15 @@ K.ATan ldx #ROM.ATAN
|
||||
bra MATH.Go
|
||||
*/--------------------------------------
|
||||
* # Float
|
||||
* Return return 'floated' long
|
||||
* Return 'floated' long
|
||||
* ## In:
|
||||
* PUSHW = X (*long)
|
||||
* Y,A = Dest (*float)
|
||||
* PUSHL = X (long)
|
||||
* ## Out:
|
||||
* On stack (Float)
|
||||
*\--------------------------------------
|
||||
K.Float >STYA FORPNT
|
||||
>PULLW INDEX
|
||||
|
||||
ldx #1
|
||||
ldy #3
|
||||
|
||||
.1 lda (INDEX),y
|
||||
sta FAC,x
|
||||
inx
|
||||
dey
|
||||
bpl .1
|
||||
K.Float >PULLW FAC+1
|
||||
>PULLW FAC+3
|
||||
|
||||
stz FAC.SIGN
|
||||
lda #$A0
|
||||
sta FAC Exp=32
|
||||
@ -73,44 +68,44 @@ K.Float >STYA FORPNT
|
||||
phx
|
||||
|
||||
MATH.Go plx
|
||||
lda SIGNFLG pPs !!!!
|
||||
pha
|
||||
jsr A2osX.ROMCALL
|
||||
>ROMCALL GETFAC
|
||||
pla
|
||||
sta SIGNFLG
|
||||
jsr GP.ROMCALL
|
||||
|
||||
ldx #ROM.GETFAC
|
||||
jsr GP.ROMCALL
|
||||
|
||||
clc
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* # LRIntF
|
||||
* Return Float rounded into a long
|
||||
* ## In:
|
||||
* PUSHW = X (*Float)
|
||||
* Y,A = Dest (*long)
|
||||
* PUSHF = X (Float)
|
||||
* ## Out:
|
||||
* On stack (long)
|
||||
*\--------------------------------------
|
||||
K.LRIntF >STYA FORPNT
|
||||
jsr MATH.PullFAC
|
||||
ldx #ROM.QINT
|
||||
jsr A2osX.ROMCALL
|
||||
|
||||
ldx #1
|
||||
ldy #3
|
||||
K.LRIntF jsr MATH.PullFAC
|
||||
|
||||
.1 lda FAC,x
|
||||
sta (FORPNT),y
|
||||
inx
|
||||
dey
|
||||
bpl .1
|
||||
ldx #ROM.QINT
|
||||
jsr GP.ROMCALL
|
||||
|
||||
>PUSHW FAC+1
|
||||
>PUSHW FAC+3
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
MATH.PullFAC >PULLW INDEX
|
||||
>ROMCALL SETFAC
|
||||
rts
|
||||
*--------------------------------------
|
||||
MATH.PullARG >PULLW INDEX
|
||||
>ROMCALL SETARG
|
||||
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
|
||||
|
@ -434,10 +434,13 @@ PrintF.F clc
|
||||
clc
|
||||
adc #5
|
||||
sta pStack
|
||||
>ROMCALL SETFAC
|
||||
|
||||
|
||||
ldx #ROM.SETFAC
|
||||
jsr GP.ROMCALL
|
||||
|
||||
ldy #3 In order not to trash A2osX.SaveSM,A2osX.SaveSX
|
||||
>ROMCALL FOUT
|
||||
ldx #ROM.FOUT
|
||||
jsr GP.ROMCALL
|
||||
|
||||
ldy #0
|
||||
|
||||
|
@ -31,8 +31,11 @@ K.AToF >PULLW FORPNT Ptr to dst buffer
|
||||
>PULLW TXTPTR Ptr to source string
|
||||
jsr CHARGOT
|
||||
|
||||
>ROMCALL FIN
|
||||
>ROMCALL GETFAC
|
||||
ldx #ROM.FIN
|
||||
jsr GP.ROMCALL
|
||||
|
||||
ldx #ROM.GETFAC
|
||||
jsr GP.ROMCALL
|
||||
clc
|
||||
rts
|
||||
*/--------------------------------------
|
||||
|
Loading…
x
Reference in New Issue
Block a user