mirror of
https://github.com/A2osX/A2osX.git
synced 2024-07-07 04:28:56 +00:00
Kernel 0.9.1 : Math API, bug fix, and F To Int conversion
This commit is contained in:
parent
94d9a4393e
commit
4cd04a6f2c
@ -183,6 +183,28 @@ Load a file in memory
|
||||
+ PUSHW = GID
|
||||
+ PUSHW = PATH
|
||||
|
||||
# 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)
|
||||
|
||||
# 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)
|
||||
|
||||
# LRIntF
|
||||
Return Float rounded into a long
|
||||
|
||||
## In:
|
||||
+ PUSHW = X (*Float)
|
||||
+ Y,A = Dest (*long)
|
||||
|
||||
# GetMem
|
||||
|
||||
## In:
|
||||
|
Binary file not shown.
Binary file not shown.
@ -191,7 +191,7 @@ SYS.FDiv .EQ $C6
|
||||
|
||||
SYS.FPwr .EQ $C8
|
||||
* .EQ $CA
|
||||
* .EQ $CC
|
||||
SYS.LRIntF .EQ $CC
|
||||
* .EQ $CE
|
||||
|
||||
SYS.Log .EQ $D0
|
||||
|
@ -41,9 +41,10 @@ ZPMEMMGR .EQ $8
|
||||
*--------------------------------------
|
||||
* $5E-$C8 RESERVED APPLESOFT Main/Aux (ROM Call, no need to switch back MainZP)
|
||||
*--------------------------------------
|
||||
SIGNFLG .EQ $16 COS,SIN,TAN
|
||||
INDEX .EQ $5E ->$5F
|
||||
FORPNT .EQ $85 ->$86
|
||||
*FAC .EQ $9D ->$A1
|
||||
FAC .EQ $9D ->$A1
|
||||
*FAC.SIGN .EQ $A2
|
||||
*FAC.EXTENSION .EQ $AC
|
||||
TXTPTR .EQ $B8
|
||||
|
@ -112,13 +112,13 @@ GP.ROMCall phx
|
||||
|
||||
* http://www.txbobsc.com/scsc/scdocumentor/E7A0.html
|
||||
|
||||
.2 .DA $E7A7 FSUB
|
||||
.DA $E7BE FADD
|
||||
.2 .DA $E7AA FSUBT
|
||||
.DA $E7C1 FADDT
|
||||
.DA $E82E NORMALIZE.FAC.2 (L->F)
|
||||
.DA $E941 LOG
|
||||
.DA $E97F FMULT
|
||||
.DA $E987 FMULTT.1
|
||||
.DA $E9E7 LOAD.ARG.FROM.INDEX
|
||||
.DA $EA66 FDIV
|
||||
.DA $EA6B FDIVT+2
|
||||
.DA $EAFD LOAD.FAC.FROM.INDEX
|
||||
|
||||
.DA $EB27 SETFOR GETFAC)
|
||||
|
@ -124,7 +124,7 @@ K.SYSCALL.JMP .DA 0 $00
|
||||
.DA K.FDiv
|
||||
.DA K.FPwr
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA K.LRIntF
|
||||
.DA 0
|
||||
|
||||
.DA K.Log $D0
|
||||
|
@ -50,12 +50,37 @@ K.ATan ldx #ROM.ATAN
|
||||
jsr MATH.PullFAC
|
||||
|
||||
MATH.Go plx
|
||||
lda SIGNFLG pPs !!!!
|
||||
pha
|
||||
jsr A2osX.ROMCALL
|
||||
>ROMCALL GETFAC
|
||||
pla
|
||||
sta SIGNFLG
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
*/--------------------------------------
|
||||
* # LRIntF
|
||||
* Return Float rounded into a long
|
||||
* ## In:
|
||||
* PUSHW = X (*Float)
|
||||
* Y,A = Dest (*long)
|
||||
*\--------------------------------------
|
||||
K.LRIntF >STYA FORPNT
|
||||
jsr MATH.PullFAC
|
||||
ldx #ROM.QINT
|
||||
jsr A2osX.ROMCALL
|
||||
|
||||
ldx #1
|
||||
ldy #3
|
||||
|
||||
.1 lda FAC,x
|
||||
sta (FORPNT),y
|
||||
inx
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
MATH.PullFAC >PULLW INDEX
|
||||
>ROMCALL SETFAC
|
||||
|
35
TEST.S.txt
35
TEST.S.txt
@ -39,6 +39,8 @@ L.CONST1 .DA CONST1
|
||||
L.CONST2 .DA CONST2
|
||||
L.MSG1 .DA MSG1
|
||||
L.MSG2 .DA MSG2
|
||||
L.MSG3 .DA MSG3
|
||||
L.MSG4 .DA MSG4
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT clc
|
||||
@ -62,18 +64,34 @@ CS.RUN >PUSHEA.G ENDPTR
|
||||
>PUSHW L.FLOAT2
|
||||
>PUSHW L.FLOAT1
|
||||
|
||||
>LDYA L.MSG1
|
||||
>LDYA L.MSG1
|
||||
>SYSCALL PrintF.YA
|
||||
|
||||
*--------------------------------------
|
||||
>PUSHEA.G MYFLOAT1
|
||||
>PUSHEA.G MYFLOAT2
|
||||
>LEA.G MYFLOAT3
|
||||
>SYSCALL FSub
|
||||
>SYSCALL FDiv
|
||||
|
||||
>PUSHEA.G MYFLOAT3
|
||||
>LDYA L.MSG2
|
||||
>LDYA L.MSG2
|
||||
>SYSCALL PrintF.YA
|
||||
|
||||
*--------------------------------------
|
||||
>PUSHEA.G MYFLOAT3
|
||||
>LEA.G MYFLOAT3
|
||||
>SYSCALL Cos
|
||||
|
||||
>PUSHEA.G MYFLOAT3
|
||||
>LDYA L.MSG3
|
||||
>SYSCALL PrintF.YA
|
||||
*--------------------------------------
|
||||
>PUSHW L.FLOAT1
|
||||
>LEA.G MYLONG
|
||||
>SYSCALL LRIntF
|
||||
|
||||
>PUSHEA.G MYLONG
|
||||
>LDYA L.MSG4
|
||||
>SYSCALL PrintF.YA
|
||||
*--------------------------------------
|
||||
lda #0
|
||||
sec
|
||||
rts
|
||||
@ -92,8 +110,10 @@ FLOAT3 .HS 9E6E6B2800 1,000,000,000
|
||||
FLOAT4 .HS 8100000000 1
|
||||
FLOAT5 .HS 9080000000 -32768
|
||||
CONST1 >CSTR "3.141592653"
|
||||
CONST2 >CSTR "2"
|
||||
MSG2 >CSTR "PI/2=%e\r\n"
|
||||
CONST2 >CSTR "3"
|
||||
MSG2 >CSTR "PI/3=%e\r\n"
|
||||
MSG3 >CSTR "COS(PI/3)=%e\r\n"
|
||||
MSG4 >CSTR "Long=%L\r\n"
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR 0
|
||||
@ -101,6 +121,7 @@ DS.START
|
||||
MYFLOAT1 .BS 5
|
||||
MYFLOAT2 .BS 5
|
||||
MYFLOAT3 .BS 5
|
||||
MYLONG .BS 4
|
||||
ENDPTR .BS 2
|
||||
DS.END
|
||||
.ED
|
||||
|
Loading…
Reference in New Issue
Block a user