Kernel 0.9.2 : MATH API rewrite

This commit is contained in:
Rémy GIBERT 2018-06-13 17:18:08 +02:00
parent a48bb7cd87
commit de4a0a345f
4 changed files with 69 additions and 50 deletions

View File

@ -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
*--------------------------------------

View File

@ -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

View File

@ -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

View File

@ -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
*/--------------------------------------