mirror of
https://github.com/A2osX/A2osX.git
synced 2024-06-13 11:29:44 +00:00
Kernel 0.9.1 : STDLIB : AToF, StrToF OK
This commit is contained in:
parent
bbbdd3d867
commit
f3d06059ae
Binary file not shown.
Binary file not shown.
|
@ -190,18 +190,18 @@ SYS.GetMemByID.A .EQ $C6
|
||||||
|
|
||||||
SYS.GetMem.YA .EQ $C8
|
SYS.GetMem.YA .EQ $C8
|
||||||
SYS.GetMem0.YA .EQ $CA
|
SYS.GetMem0.YA .EQ $CA
|
||||||
* .EQ $CC
|
SYS.SetLoMem .EQ $CC
|
||||||
SYS.NewStr.YA .EQ $CE
|
SYS.NewStr.YA .EQ $CE
|
||||||
|
|
||||||
SYS.SetLoMem .EQ $D0
|
* .EQ $D0
|
||||||
SYS.GetMemStat.YA .EQ $D2
|
* .EQ $D2
|
||||||
* .EQ $D4
|
* .EQ $D4
|
||||||
* .EQ $D6
|
* .EQ $D6
|
||||||
|
|
||||||
SYS.LoadStkObj.YA .EQ $D8
|
SYS.LoadStkObj.YA .EQ $D8
|
||||||
SYS.GetStkObj.A .EQ $DA
|
SYS.GetStkObj.A .EQ $DA
|
||||||
SYS.FreeStkObj.A .EQ $DC
|
SYS.FreeStkObj.A .EQ $DC
|
||||||
* .EQ $DE
|
SYS.GetMemStat.YA .EQ $DE
|
||||||
|
|
||||||
SYS.Sleep .EQ $E0
|
SYS.Sleep .EQ $E0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
PR#3
|
PR#3
|
||||||
PREFIX /A2OSX.BUILD
|
PREFIX /A2OSX.BUILD
|
||||||
LOMEM $900
|
LOMEM $A00
|
||||||
INC 1
|
INC 1
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
|
@ -13,12 +13,12 @@ K.EVT.MAX .EQ 8
|
||||||
K.DEV.MAX .EQ 32
|
K.DEV.MAX .EQ 32
|
||||||
K.PS.MAX .EQ 32
|
K.PS.MAX .EQ 32
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
H.BIN.HEADER .EQ 0
|
H.BIN.T .EQ 0
|
||||||
H.BIN.HEADER.DRV65 .EQ $4CD8 6502:cld,jmp abs
|
H.BIN.T.DRV65 .EQ $4CD8 6502:cld,jmp abs
|
||||||
H.BIN.HEADER.LIB65 .EQ $7CD8 6502:cld,jmp (abs,x)
|
H.BIN.T.LIB65 .EQ $7CD8 6502:cld,jmp (abs,x)
|
||||||
H.BIN.HEADER.BIN65 .EQ $7CD8 6502:cld,jmp (abs,x)
|
H.BIN.T.BIN65 .EQ $7CD8 6502:cld,jmp (abs,x)
|
||||||
*H.BIN.HEADER.LIB80 .EQ $A28D Z80:
|
*H.BIN.T.LIB80 .EQ $A28D Z80:
|
||||||
*H.BIN.HEADER.BIN80 .EQ $A28D Z80:
|
*H.BIN.T.BIN80 .EQ $A28D Z80:
|
||||||
H.BIN.JMP .EQ 2
|
H.BIN.JMP .EQ 2
|
||||||
*H.BIN.CODE.TYPE .EQ 4
|
*H.BIN.CODE.TYPE .EQ 4
|
||||||
*H.BIN.VERSION .EQ 5
|
*H.BIN.VERSION .EQ 5
|
||||||
|
@ -36,11 +36,10 @@ H.BIN.DRV.REL.TABLE .EQ 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Kernel ZP Aux
|
* Kernel ZP Aux
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPKERNEL .EQ $0
|
ZPPtr1 .EQ $0
|
||||||
ZPPtr1 .EQ ZPKERNEL
|
ZPPtr2 .EQ ZPPtr1+2
|
||||||
ZPPtr2 .EQ ZPKERNEL+2
|
ZPPtr3 .EQ ZPPtr1+4
|
||||||
ZPPtr3 .EQ ZPKERNEL+4
|
ZPPtr4 .EQ ZPPtr1+6
|
||||||
ZPPtr4 .EQ ZPKERNEL+6
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPMEMMGR .EQ $8
|
ZPMEMMGR .EQ $8
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -49,6 +48,7 @@ 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)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
*INDEX .EQ $5E ->$5F
|
*INDEX .EQ $5E ->$5F
|
||||||
|
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
|
||||||
|
@ -56,8 +56,9 @@ TXTPTR .EQ $B8
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* ROM Entry Point
|
* ROM Entry Point
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ROM.FIN .EQ $0
|
ROM.GETFAC .EQ $0 Get FAC at FORPNT
|
||||||
ROM.FOUT .EQ $2
|
ROM.FIN .EQ $2
|
||||||
|
ROM.FOUT .EQ $4
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Memory Map
|
* Memory Map
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -317,10 +317,13 @@ CSH.IF jsr CSH.GetCharNB
|
||||||
cmp #'{'
|
cmp #'{'
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
lda CSH.ACC
|
>LDA.G CSH.ACC
|
||||||
ora CSH.ACC+1
|
iny
|
||||||
ora CSH.ACC+2
|
ora (pData),y
|
||||||
ora CSH.ACC+3
|
iny
|
||||||
|
ora (pData),y
|
||||||
|
iny
|
||||||
|
ora (pData),y
|
||||||
beq .6 eval returned false, skip {{....}}
|
beq .6 eval returned false, skip {{....}}
|
||||||
|
|
||||||
jsr CSH.GetNextCharNB Skip '{'
|
jsr CSH.GetNextCharNB Skip '{'
|
||||||
|
@ -396,7 +399,7 @@ CSH.LONG lda #CSH.TYPE.LONG
|
||||||
bra CSH.TYPE
|
bra CSH.TYPE
|
||||||
CSH.FLOAT lda #CSH.TYPE.FLOAT
|
CSH.FLOAT lda #CSH.TYPE.FLOAT
|
||||||
|
|
||||||
CSH.TYPE sta CSH.ACCT
|
CSH.TYPE >STA.G CSH.ACCT
|
||||||
|
|
||||||
jsr CSH.GetChar
|
jsr CSH.GetChar
|
||||||
bcs .9
|
bcs .9
|
||||||
|
@ -498,23 +501,9 @@ CSH.GetName ldy #0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.GetNumInACC
|
CSH.GetNumInACC
|
||||||
|
|
||||||
* ldy #0
|
>LDA.G CSH.ACCT
|
||||||
*
|
|
||||||
*.1 iny
|
|
||||||
* cpy #10
|
|
||||||
* beq .9
|
|
||||||
|
|
||||||
* sta ARGS,y
|
* >SYSCALL StrToL
|
||||||
* jsr CSH.GetNextChar
|
|
||||||
* bcs .8
|
|
||||||
* jsr CSH.IsDigit10
|
|
||||||
* bcc .1
|
|
||||||
|
|
||||||
*.8 sty ARGS
|
|
||||||
|
|
||||||
* >PUSHW L.CSH.ACC
|
|
||||||
* >PUSHW L.ARGS
|
|
||||||
* >SYSCALL AToL
|
|
||||||
* bcs .9
|
* bcs .9
|
||||||
* rts
|
* rts
|
||||||
|
|
||||||
|
@ -522,10 +511,15 @@ CSH.GetNumInACC
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.ZeroACC stz CSH.ACC
|
CSH.ZeroACC lda #0
|
||||||
stz CSH.ACC+1
|
|
||||||
stz CSH.ACC+2
|
>STA.G CSH.ACC
|
||||||
stz CSH.ACC+3
|
iny
|
||||||
|
sta (pData),y
|
||||||
|
iny
|
||||||
|
sta (pData),y
|
||||||
|
iny
|
||||||
|
sta (pData),y
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Vars...
|
* Vars...
|
||||||
|
|
|
@ -94,7 +94,6 @@ J.CSHCMDS .DA CSH.IF
|
||||||
.DA CSH.FLOAT
|
.DA CSH.FLOAT
|
||||||
J.CSHCMDS.END .DA CSH.IF.END
|
J.CSHCMDS.END .DA CSH.IF.END
|
||||||
.DA CSH.WHILE.END
|
.DA CSH.WHILE.END
|
||||||
L.CSH.ACC .DA CSH.ACC
|
|
||||||
L.ERR.Codes .DA ERR.Codes
|
L.ERR.Codes .DA ERR.Codes
|
||||||
L.ERR.Messages .DA ERR.Messages
|
L.ERR.Messages .DA ERR.Messages
|
||||||
.DA 0
|
.DA 0
|
||||||
|
@ -515,10 +514,6 @@ EscChars.Count .EQ 4
|
||||||
EscChars .AS 'DBAC'
|
EscChars .AS 'DBAC'
|
||||||
|
|
||||||
CSH.TSIZE .HS 0001020405 00,CHAR,INT,LONG,FLOAT....
|
CSH.TSIZE .HS 0001020405 00,CHAR,INT,LONG,FLOAT....
|
||||||
CSH.ACCT .BS 1
|
|
||||||
CSH.ACC .BS 5
|
|
||||||
CSH.ARGT .BS 1
|
|
||||||
CSH.ARG .BS 5
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
|
@ -565,6 +560,8 @@ CSH.DataPtr .BS 1
|
||||||
CSH.hStack .BS 1
|
CSH.hStack .BS 1
|
||||||
CSH.StackPtr .BS 1
|
CSH.StackPtr .BS 1
|
||||||
CSH.CmdSave .BS 1
|
CSH.CmdSave .BS 1
|
||||||
|
CSH.ACCT .BS 1
|
||||||
|
CSH.ACC .BS 5
|
||||||
CSH.Name .BS CSH.Name.MAX+1
|
CSH.Name .BS CSH.Name.MAX+1
|
||||||
DS.END .ED
|
DS.END .ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -497,11 +497,11 @@ BIN.Relocate.Start .BS 2
|
||||||
BIN.Relocate.End .BS 2
|
BIN.Relocate.End .BS 2
|
||||||
BIN.Relocate.Offset .BS 2
|
BIN.Relocate.Offset .BS 2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BIN.RelocateEXE ldy #H.BIN.HEADER+1
|
BIN.RelocateEXE ldy #H.BIN.T+1
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
cmp /H.BIN.HEADER.BIN65
|
cmp /H.BIN.T.BIN65
|
||||||
beq .1
|
beq .1
|
||||||
cmp /H.BIN.HEADER.DRV65
|
cmp /H.BIN.T.DRV65
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
lda #SYSMGR.ERRIBIN
|
lda #SYSMGR.ERRIBIN
|
||||||
|
|
|
@ -116,7 +116,8 @@ A2osX.ROMCALL1 phx
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.1 jmp (.2,x)
|
.1 jmp (.2,x)
|
||||||
.2 .DA $EC4A FIN
|
.2 .DA $EB27 SETFOR
|
||||||
|
.DA $EC4A FIN
|
||||||
.DA $ED36 FOUT.1
|
.DA $ED36 FOUT.1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* A2osX.DIIDrv
|
* A2osX.DIIDrv
|
||||||
|
|
|
@ -126,17 +126,17 @@ K.SYSCALL.JMP .DA 0 $00
|
||||||
.DA K.GetMemByID.A
|
.DA K.GetMemByID.A
|
||||||
.DA K.GetMem.YA
|
.DA K.GetMem.YA
|
||||||
.DA K.GetMem0.YA
|
.DA K.GetMem0.YA
|
||||||
.DA 0
|
.DA K.SetLoMem
|
||||||
.DA K.NewStr.YA
|
.DA K.NewStr.YA
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DA K.SetLoMem $D0
|
.DA 0 $D0
|
||||||
.DA K.GetMemStat.YA
|
.DA 0
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA K.LoadStkObj.YA
|
.DA K.LoadStkObj.YA
|
||||||
.DA K.GetStkObj.A
|
.DA K.GetStkObj.A
|
||||||
.DA K.FreeStkObj.A
|
.DA K.FreeStkObj.A
|
||||||
.DA 0
|
.DA K.GetMemStat.YA
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DA K.Sleep $E0
|
.DA K.Sleep $E0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -434,6 +434,10 @@ K.GetMemByID.A sta ZPMemMgrSPtr
|
||||||
* sty ZPMemMgrSPtr
|
* sty ZPMemMgrSPtr
|
||||||
* sta ZPMemMgrSPtr+1
|
* sta ZPMemMgrSPtr+1
|
||||||
* rts
|
* rts
|
||||||
|
*--------------------------------------
|
||||||
|
K.SetLoMem
|
||||||
|
clc
|
||||||
|
rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # NewStr.YA
|
* # NewStr.YA
|
||||||
* Create a new copy of this C-String
|
* Create a new copy of this C-String
|
||||||
|
@ -490,15 +494,78 @@ K.NewStr.YA >STYA .1+1
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
* SList :
|
||||||
|
* Block :
|
||||||
|
* 0 hMem of next Block (0=End)
|
||||||
|
* 1....255 data records
|
||||||
|
* Record :
|
||||||
|
* 0 Flags
|
||||||
|
* 1 KeyLen+Key
|
||||||
|
* n DataLen+Data
|
||||||
|
*/--------------------------------------
|
||||||
|
* # SListNew
|
||||||
|
* ## In:
|
||||||
|
* ## Out:
|
||||||
|
* A=hMem
|
||||||
|
*\--------------------------------------
|
||||||
|
K.SListNew
|
||||||
|
*/--------------------------------------
|
||||||
|
* # SListAdd
|
||||||
|
* ## In:
|
||||||
|
* ## Out:
|
||||||
|
* A=hMem
|
||||||
|
*\--------------------------------------
|
||||||
|
K.SListAdd
|
||||||
|
*/--------------------------------------
|
||||||
|
* # SListGet
|
||||||
|
* ## In:
|
||||||
|
* ## Out:
|
||||||
|
* A=hMem
|
||||||
|
*\--------------------------------------
|
||||||
|
K.SListGet
|
||||||
|
*/--------------------------------------
|
||||||
|
* # SListPut
|
||||||
|
* ## In:
|
||||||
|
* ## Out:
|
||||||
|
* A=hMem
|
||||||
|
*\--------------------------------------
|
||||||
|
K.SListPut
|
||||||
|
*/--------------------------------------
|
||||||
|
* # SListFree
|
||||||
|
* ## In:
|
||||||
|
* ## Out:
|
||||||
|
* A=hMem
|
||||||
|
*\--------------------------------------
|
||||||
|
K.SListFree
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*--------------------------------------
|
||||||
|
MEM.SList.Next
|
||||||
|
|
||||||
|
|
||||||
|
*/--------------------------------------
|
||||||
|
* # LoadStkObj.YA
|
||||||
|
* ## In:
|
||||||
|
* ## Out:
|
||||||
|
* A=hMem
|
||||||
|
*\--------------------------------------
|
||||||
K.LoadStkObj.YA
|
K.LoadStkObj.YA
|
||||||
*--------------------------------------
|
*/--------------------------------------
|
||||||
|
* # GetStkObj.A
|
||||||
|
* ## In:
|
||||||
|
* ## Out:
|
||||||
|
* A=hMem
|
||||||
|
*\--------------------------------------
|
||||||
K.GetStkObj.A
|
K.GetStkObj.A
|
||||||
*--------------------------------------
|
*/--------------------------------------
|
||||||
|
* # FreeStkObj.A
|
||||||
|
* ## In:
|
||||||
|
* ## Out:
|
||||||
|
* A=hMem
|
||||||
|
*\--------------------------------------
|
||||||
K.FreeStkObj.A
|
K.FreeStkObj.A
|
||||||
*--------------------------------------
|
|
||||||
K.SetLoMem
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # GetMemStat.YA
|
* # GetMemStat.YA
|
||||||
* ## In:
|
* ## In:
|
||||||
|
@ -594,10 +661,6 @@ MEM.GetMemByNameYA
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MEM.GarbageCollector
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.SRC/SYS/KERNEL.S.MEM
|
SAVE /A2OSX.SRC/SYS/KERNEL.S.MEM
|
||||||
LOAD /A2OSX.SRC/SYS/KERNEL.S
|
LOAD /A2OSX.SRC/SYS/KERNEL.S
|
||||||
|
|
|
@ -11,19 +11,17 @@ AUTO 6
|
||||||
* PUSHW Source String (C-Sring)
|
* PUSHW Source String (C-Sring)
|
||||||
* PUSHW PTR to target buffer (5 bytes)
|
* PUSHW PTR to target buffer (5 bytes)
|
||||||
* ## Out:
|
* ## Out:
|
||||||
|
* Target buffer filled with a FLOAT (packed)
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.StrToF jsr PullPtr1Ptr2Ptr3
|
K.StrToF jsr K.AToF
|
||||||
* jsr K.AToF.I
|
bcs .9
|
||||||
* bcc K.StrToUL.Exit
|
|
||||||
|
|
||||||
>LDYA ZPPtr2
|
|
||||||
>STYA TXTPTR
|
|
||||||
|
|
||||||
jsr CHARGOT
|
|
||||||
|
|
||||||
>ROMCALL FIN
|
|
||||||
|
|
||||||
|
|
||||||
|
>PULLW ZPPtr3
|
||||||
|
lda TXTPTR
|
||||||
|
sta (ZPPtr3)
|
||||||
|
ldy #1
|
||||||
|
lda TXTPTR
|
||||||
|
sta (ZPPtr3),y
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
|
@ -34,73 +32,14 @@ K.StrToF jsr PullPtr1Ptr2Ptr3
|
||||||
* PUSHW PTR to target buffer (5 Bytes)
|
* PUSHW PTR to target buffer (5 Bytes)
|
||||||
* ## Out:
|
* ## Out:
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.AToF jsr PullPtr1Ptr2 C-String in Ptr2, Dst buffer in Ptr1
|
K.AToF >PULLW FORPNT Ptr to dst buffer
|
||||||
|
>PULLW TXTPTR Ptr to source string
|
||||||
|
jsr CHARGOT
|
||||||
|
|
||||||
K.AToF.I jsr MANTISSA.Clear
|
>ROMCALL FIN
|
||||||
|
>ROMCALL GETFAC
|
||||||
ldy #$ff
|
|
||||||
|
|
||||||
.1 iny
|
|
||||||
lda (ZPPtr2),y
|
|
||||||
beq .8
|
|
||||||
cmp #' '
|
|
||||||
beq .1
|
|
||||||
|
|
||||||
.2 iny
|
|
||||||
lda (ZPPtr2),y
|
|
||||||
beq .8
|
|
||||||
|
|
||||||
jsr STDIO.IsDigit
|
|
||||||
bcc .7
|
|
||||||
|
|
||||||
cmp #'+'
|
|
||||||
beq .3
|
|
||||||
cmp #'-'
|
|
||||||
bne .4
|
|
||||||
|
|
||||||
.3 jsr K.AToF.CheckSign
|
|
||||||
bcs .9
|
|
||||||
bra .1
|
|
||||||
|
|
||||||
.4 cmp #'.'
|
|
||||||
bne .5
|
|
||||||
ldx INEXP Decimal point not allowed in EXP
|
|
||||||
bne .9
|
|
||||||
ldx bDECPOINT ....and only one!
|
|
||||||
bne .9
|
|
||||||
inc bDECPOINT
|
|
||||||
bra .1
|
|
||||||
|
|
||||||
.5 cmp #'E'
|
|
||||||
beq .6
|
|
||||||
|
|
||||||
cmp #'e'
|
|
||||||
bne .8
|
|
||||||
.6
|
|
||||||
|
|
||||||
.7
|
|
||||||
|
|
||||||
.8 clc
|
|
||||||
|
|
||||||
.9 lda #SYSMGR.ERRSYN
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
K.AToF.CheckSign
|
|
||||||
ldy INEXP Get MANTSIGN or EXPSIGN
|
|
||||||
ldx MANTSIGN,y
|
|
||||||
bne .9 Already set, error
|
|
||||||
|
|
||||||
cmp #'-'
|
|
||||||
bne .1
|
|
||||||
lda #$ff
|
|
||||||
.1 sta MANTSIGN,y set '+' of $ff to test with BIT
|
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 sec
|
|
||||||
rts
|
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # StrToL
|
* # StrToL
|
||||||
* Convert String to 32 bits int
|
* Convert String to 32 bits int
|
||||||
|
@ -156,7 +95,7 @@ K.AToL.I jsr STDLIB.Dec2Hex
|
||||||
phy Save Count processed
|
phy Save Count processed
|
||||||
ldy #3
|
ldy #3
|
||||||
|
|
||||||
.3 lda MANTISSA,y
|
.3 lda STDLIB.32,y
|
||||||
sta (ZPPtr1),y
|
sta (ZPPtr1),y
|
||||||
dey
|
dey
|
||||||
bpl .3
|
bpl .3
|
||||||
|
@ -180,12 +119,12 @@ K.AToI.YA >STYA ZPPtr2
|
||||||
jsr STDLIB.Dec2Hex
|
jsr STDLIB.Dec2Hex
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>LDYA MANTISSA
|
>LDYA STDLIB.32
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Convert ZPPtr1 to MANTISSA
|
* Convert ZPPtr1 to STDLIB.32
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
STDLIB.Dec2Hex jsr MANTISSA.Clear
|
STDLIB.Dec2Hex jsr STDLIB.32.Clear
|
||||||
|
|
||||||
ldy #$ff
|
ldy #$ff
|
||||||
|
|
||||||
|
@ -196,20 +135,20 @@ STDLIB.Dec2Hex jsr MANTISSA.Clear
|
||||||
jsr STDIO.IsDigit
|
jsr STDIO.IsDigit
|
||||||
bcs .8
|
bcs .8
|
||||||
|
|
||||||
jsr MANTISSA.T10
|
jsr STDLIB.32.T10
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
lda (ZPPtr2),y
|
lda (ZPPtr2),y
|
||||||
and #$0F
|
and #$0F
|
||||||
|
|
||||||
adc MANTISSA
|
adc STDLIB.32
|
||||||
sta MANTISSA
|
sta STDLIB.32
|
||||||
bcc .1
|
bcc .1
|
||||||
inc MANTISSA+1
|
inc STDLIB.32+1
|
||||||
bne .1
|
bne .1
|
||||||
inc MANTISSA+2
|
inc STDLIB.32+2
|
||||||
bne .1
|
bne .1
|
||||||
inc MANTISSA+3
|
inc STDLIB.32+3
|
||||||
bne .1 overflow!!!
|
bne .1 overflow!!!
|
||||||
* sec
|
* sec
|
||||||
rts
|
rts
|
||||||
|
@ -217,17 +156,17 @@ STDLIB.Dec2Hex jsr MANTISSA.Clear
|
||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MANTISSA.T10 ldx #3
|
STDLIB.32.T10 ldx #3
|
||||||
|
|
||||||
.1 lda MANTISSA,x save MANTISSA for 4+1
|
.1 lda STDLIB.32,x save STDLIB.32 for 4+1
|
||||||
pha
|
pha
|
||||||
dex
|
dex
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
jsr MANTISSA.ROL MANTISSA * 2 -> MANTISSA
|
jsr STDLIB.32.ROL STDLIB.32 * 2 -> STDLIB.32
|
||||||
bcs .9 overflow!!!
|
bcs .9 overflow!!!
|
||||||
|
|
||||||
jsr MANTISSA.ROL MANTISSA * 4 -> MANTISSA
|
jsr STDLIB.32.ROL STDLIB.32 * 4 -> STDLIB.32
|
||||||
bcs .9 overflow!!!
|
bcs .9 overflow!!!
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
@ -235,42 +174,38 @@ MANTISSA.T10 ldx #3
|
||||||
|
|
||||||
* clc
|
* clc
|
||||||
|
|
||||||
.2 pla MANTISSA * 4 + MANTISSA -> MANTISSA
|
.2 pla STDLIB.32 * 4 + STDLIB.32 -> STDLIB.32
|
||||||
adc MANTISSA,x
|
adc STDLIB.32,x
|
||||||
sta MANTISSA,x
|
sta STDLIB.32,x
|
||||||
inx
|
inx
|
||||||
dey
|
dey
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
bcs .99 overflow!!!
|
bcs .99 overflow!!!
|
||||||
|
|
||||||
jsr MANTISSA.ROL MANTISSA * 10 -> MANTISSA
|
jsr STDLIB.32.ROL STDLIB.32 * 10 -> STDLIB.32
|
||||||
bcs .99 overflow!!!
|
bcs .99 overflow!!!
|
||||||
|
|
||||||
.9 pla discard saved MANTISSA
|
.9 pla discard saved STDLIB.32
|
||||||
pla
|
pla
|
||||||
pla
|
pla
|
||||||
pla
|
pla
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MANTISSA.ROL asl MANTISSA
|
STDLIB.32.ROL asl STDLIB.32
|
||||||
rol MANTISSA+1
|
rol STDLIB.32+1
|
||||||
rol MANTISSA+2
|
rol STDLIB.32+2
|
||||||
rol MANTISSA+3
|
rol STDLIB.32+3
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MANTISSA.Clear ldx #8
|
STDLIB.32.Clear ldx #3
|
||||||
.1 stz EXPSIGN,x
|
|
||||||
|
.1 stz STDLIB.32,x
|
||||||
dex
|
dex
|
||||||
bpl .1
|
bpl .1
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
bDECPOINT .BS 1
|
STDLIB.32 .BS 4 32 bits max
|
||||||
INEXP .BS 1
|
|
||||||
MANTSIGN .BS 1
|
|
||||||
EXPSIGN .BS 1
|
|
||||||
EXP .BS 1
|
|
||||||
MANTISSA .BS 4 32 bits max
|
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # RealPath.YA
|
* # RealPath.YA
|
||||||
* Return the canonicalized absolute pathname
|
* Return the canonicalized absolute pathname
|
||||||
|
|
27
TEST.S.txt
27
TEST.S.txt
|
@ -36,18 +36,29 @@ L.FLOAT3 .DA FLOAT3
|
||||||
L.FLOAT4 .DA FLOAT4
|
L.FLOAT4 .DA FLOAT4
|
||||||
L.FLOAT5 .DA FLOAT5
|
L.FLOAT5 .DA FLOAT5
|
||||||
L.MSG .DA MSG
|
L.MSG .DA MSG
|
||||||
L.CONST .DA CONST
|
L.CONST1 .DA CONST1
|
||||||
|
L.CONST2 .DA CONST2
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT clc
|
CS.INIT clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN >PUSHEA.G ENDPTR
|
CS.RUN >PUSHEA.G ENDPTR
|
||||||
>LDYA L.CONST
|
>PUSHW L.CONST2
|
||||||
>PUSHEA.G MYFLOAT
|
>PUSHEA.G MYFLOAT2
|
||||||
|
|
||||||
>SYSCALL StrToF
|
>SYSCALL StrToF
|
||||||
|
|
||||||
>PUSHEA.G MYFLOAT
|
>PUSHEA.G MYFLOAT2
|
||||||
|
|
||||||
|
>PUSHEA.G ENDPTR
|
||||||
|
>PUSHW L.CONST1
|
||||||
|
>PUSHEA.G MYFLOAT1
|
||||||
|
|
||||||
|
>SYSCALL StrToF
|
||||||
|
|
||||||
|
>PUSHEA.G MYFLOAT1
|
||||||
|
|
||||||
>PUSHW L.FLOAT5
|
>PUSHW L.FLOAT5
|
||||||
>PUSHW L.FLOAT4
|
>PUSHW L.FLOAT4
|
||||||
>PUSHW L.FLOAT3
|
>PUSHW L.FLOAT3
|
||||||
|
@ -69,18 +80,20 @@ CS.QUIT clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
MSG >CSTR "TEST: %e, %e, %e\r\n %e, %e, %e\r\n"
|
MSG >CSTR "TEST: %e, %e, %e, %e, %e\r\n%e, %e\r\n"
|
||||||
FLOAT1 .HS 9B3EBC1FFD 99,999,999.9
|
FLOAT1 .HS 9B3EBC1FFD 99,999,999.9
|
||||||
FLOAT2 .HS 9E6E6B27FD 999,999,999
|
FLOAT2 .HS 9E6E6B27FD 999,999,999
|
||||||
FLOAT3 .HS 9E6E6B2800 1,000,000,000
|
FLOAT3 .HS 9E6E6B2800 1,000,000,000
|
||||||
FLOAT4 .HS 8100000000 1
|
FLOAT4 .HS 8100000000 1
|
||||||
FLOAT5 .HS 9080000000 -32768
|
FLOAT5 .HS 9080000000 -32768
|
||||||
CONST >CSTR "3.141592653"
|
CONST1 >CSTR "3.141592653"
|
||||||
|
CONST2 >CSTR "-45.567E-17"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
DS.START
|
DS.START
|
||||||
MYFLOAT .BS 5
|
MYFLOAT1 .BS 5
|
||||||
|
MYFLOAT2 .BS 5
|
||||||
ENDPTR .BS 2
|
ENDPTR .BS 2
|
||||||
DS.END
|
DS.END
|
||||||
.ED
|
.ED
|
||||||
|
|
Loading…
Reference in New Issue
Block a user