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