mirror of
https://github.com/A2osX/A2osX.git
synced 2024-08-14 13:29:02 +00:00
Kernel 0.9.1 : BugFix in AtoF, LoadFile, reviewed FTell/FSeek API
This commit is contained in:
parent
4cae83f359
commit
a6ac9584d8
@ -313,7 +313,7 @@ return a hFile for a given Device Name
|
|||||||
+ A = hFILE
|
+ A = hFILE
|
||||||
|
|
||||||
# MKFIFO
|
# MKFIFO
|
||||||
return a S.FILE to a new FIFO
|
return a hFILE to a new FIFO
|
||||||
|
|
||||||
## IN:
|
## IN:
|
||||||
|
|
||||||
@ -469,22 +469,15 @@ Read bytes from file
|
|||||||
+ A = hFILE
|
+ A = hFILE
|
||||||
|
|
||||||
# FSeek
|
# FSeek
|
||||||
|
+ Set the file-position indicator for hFILE
|
||||||
|
|
||||||
## In:
|
## In:
|
||||||
+ PUSHW = OffsetHi
|
+ PUSHW = Ptr to Offset (DWORD)
|
||||||
+ PUSHW = OffsetLo
|
|
||||||
+ PUSHB = From
|
+ PUSHB = From
|
||||||
+ PUSHB = hFILE
|
+ PUSHB = hFILE
|
||||||
|
|
||||||
# FTell.A
|
|
||||||
|
|
||||||
## In:
|
|
||||||
+ A = hFILE
|
|
||||||
|
|
||||||
## Out:
|
|
||||||
+ Y,A,X = Offset
|
|
||||||
|
|
||||||
# FEOF.A
|
# FEOF.A
|
||||||
|
+ Test the end-of-file indicator for hFILE
|
||||||
|
|
||||||
## In:
|
## In:
|
||||||
+ A = hFILE
|
+ A = hFILE
|
||||||
@ -495,6 +488,16 @@ Read bytes from file
|
|||||||
+ A =0 NOT EOF
|
+ A =0 NOT EOF
|
||||||
+ CS :
|
+ CS :
|
||||||
|
|
||||||
|
# FTell
|
||||||
|
+ Return the current value of the file-position indicator
|
||||||
|
|
||||||
|
## In:
|
||||||
|
+ PUSHW = Ptr to Offset (DWORD)
|
||||||
|
+ PUSHB = hFILE
|
||||||
|
|
||||||
|
## Out:
|
||||||
|
+ Offset = Offset
|
||||||
|
|
||||||
# Remove.YA
|
# Remove.YA
|
||||||
|
|
||||||
# Rename
|
# Rename
|
||||||
@ -670,7 +673,7 @@ Convert string to UPPERCASE/lowercase
|
|||||||
+ PUSHW = Dst PTR To S.TIME
|
+ PUSHW = Dst PTR To S.TIME
|
||||||
+ PUSHW = Src PTR to ProDOS DATE/TIME (DWORD)
|
+ PUSHW = Src PTR to ProDOS DATE/TIME (DWORD)
|
||||||
|
|
||||||
# K.CTime2Time
|
# CTime2Time
|
||||||
+ Convert CTIME to S.TIME
|
+ Convert CTIME to S.TIME
|
||||||
|
|
||||||
## In :
|
## In :
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
+ PUSHW PTR to MAC
|
+ PUSHW PTR to MAC
|
||||||
+ PUSHW PTR to IP
|
+ PUSHW PTR to IP
|
||||||
|
|
||||||
# ARP.GetC.Ache
|
# ARP.GetCAche
|
||||||
+ Return a Ptr to ARP Cache Table
|
+ Return a Ptr to ARP Cache Table
|
||||||
|
|
||||||
## In:
|
## In:
|
||||||
@ -58,7 +58,7 @@
|
|||||||
+ PUSHW = PTR to IP
|
+ PUSHW = PTR to IP
|
||||||
+ PUSHW = hostname PSTR to Add
|
+ PUSHW = hostname PSTR to Add
|
||||||
|
|
||||||
# DNS.GetC.Ache
|
# DNS.GetCAche
|
||||||
+ Return a Ptr to DNS Cache Table
|
+ Return a Ptr to DNS Cache Table
|
||||||
|
|
||||||
## In:
|
## In:
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -91,9 +91,6 @@ InitSrcDirYA >SYSCALL RealPath.YA
|
|||||||
txa
|
txa
|
||||||
>STA.G hFilter
|
>STA.G hFilter
|
||||||
|
|
||||||
>LDYA ZPPtr2
|
|
||||||
jsr DEBUG.YA
|
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
sta (ZPPtr2)
|
sta (ZPPtr2)
|
||||||
|
|
||||||
|
@ -569,7 +569,7 @@ Cmd.Exec.SLEEP lda (ZPPtr2)
|
|||||||
|
|
||||||
>PUSHEA.G Sleep
|
>PUSHEA.G Sleep
|
||||||
>PUSHW ZPPtr2
|
>PUSHW ZPPtr2
|
||||||
>SYSCALL AToI.YA
|
>SYSCALL AToL
|
||||||
|
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
@ -14,34 +14,21 @@ AUTO 6
|
|||||||
* Y,A = File Length
|
* Y,A = File Length
|
||||||
* X = hMem of Loaded File
|
* X = hMem of Loaded File
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.LoadFile lda (pStack) read PTR.LO on top of stack
|
K.LoadFile jsr K.FOpen
|
||||||
pha
|
|
||||||
ldy #1
|
|
||||||
lda (pStack),y read PTR.HI on top of stack
|
|
||||||
pha
|
|
||||||
>PUSHWI K.S.STAT
|
|
||||||
pla
|
|
||||||
ply
|
|
||||||
>PUSHYA
|
|
||||||
jsr K.Stat
|
|
||||||
bcs .10
|
|
||||||
|
|
||||||
lda K.S.STAT+S.STAT.SIZE+3
|
|
||||||
ora K.S.STAT+S.STAT.SIZE+2
|
|
||||||
bne .11
|
|
||||||
|
|
||||||
>LDYA K.S.STAT+S.STAT.SIZE push len
|
|
||||||
jsr K.GetMem.YA
|
|
||||||
bcs .10
|
|
||||||
>STYA K.LoadFile.Mem
|
|
||||||
stx .8+1
|
|
||||||
|
|
||||||
jsr K.FOpen
|
|
||||||
bcs .9
|
bcs .9
|
||||||
sta K.LoadFile.hFile
|
sta K.LoadFile.hFile
|
||||||
|
|
||||||
|
jsr K.LoadFile.GetLen
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
>LDYA K.LoadFile.FSize
|
||||||
|
jsr K.GetMem.YA
|
||||||
|
bcs .99
|
||||||
|
>STYA K.LoadFile.Mem
|
||||||
|
stx .8+1
|
||||||
|
|
||||||
>PUSHW K.LoadFile.Mem
|
>PUSHW K.LoadFile.Mem
|
||||||
>PUSHW K.S.STAT+S.STAT.SIZE
|
>PUSHW K.LoadFile.FSize
|
||||||
>PUSHB K.LoadFile.hFile
|
>PUSHB K.LoadFile.hFile
|
||||||
jsr K.FRead
|
jsr K.FRead
|
||||||
bcs .97
|
bcs .97
|
||||||
@ -57,13 +44,6 @@ K.LoadFile lda (pStack) read PTR.LO on top of stack
|
|||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
.11 lda #SYSMGR.ERRFTB
|
|
||||||
.10 pha
|
|
||||||
>POP 6
|
|
||||||
pla
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
|
|
||||||
.97 pha
|
.97 pha
|
||||||
lda .8+1
|
lda .8+1
|
||||||
jsr K.FreeMem.A
|
jsr K.FreeMem.A
|
||||||
@ -76,8 +56,45 @@ K.LoadFile lda (pStack) read PTR.LO on top of stack
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
K.LoadFile.GetLen
|
||||||
|
stz K.LoadFile.FPos
|
||||||
|
stz K.LoadFile.FPos+1
|
||||||
|
stz K.LoadFile.FPos+2
|
||||||
|
stz K.LoadFile.FPos+3
|
||||||
|
|
||||||
|
>PUSHWI K.LoadFile.FPos
|
||||||
|
>PUSHBI SYS.FSeek.END
|
||||||
|
>PUSHB K.LoadFile.hFile
|
||||||
|
jsr K.FSeek
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
>PUSHWI K.LoadFile.FPos
|
||||||
|
>PUSHB K.LoadFile.hFile
|
||||||
|
jsr K.FTell
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
lda K.LoadFile.FPos+2
|
||||||
|
ora K.LoadFile.FPos+3
|
||||||
|
bne .98 too big!
|
||||||
|
|
||||||
|
>LDYA K.LoadFile.FPos
|
||||||
|
>STYA K.LoadFile.FSize
|
||||||
|
|
||||||
|
stz K.LoadFile.FPos
|
||||||
|
stz K.LoadFile.FPos+1
|
||||||
|
|
||||||
|
>PUSHWI K.LoadFile.FPos
|
||||||
|
>PUSHBI SYS.FSeek.SET
|
||||||
|
>PUSHB K.LoadFile.hFile
|
||||||
|
jmp K.FSeek
|
||||||
|
|
||||||
|
.98 lda #SYSMGR.ERRFTB
|
||||||
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
K.LoadFile.hFile .BS 1
|
K.LoadFile.hFile .BS 1
|
||||||
|
K.LoadFile.FPos .BS 4
|
||||||
K.LoadFile.Mem .BS 2
|
K.LoadFile.Mem .BS 2
|
||||||
|
K.LoadFile.FSize .BS 2
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # SaveFile
|
* # SaveFile
|
||||||
* ## In:
|
* ## In:
|
||||||
|
@ -41,7 +41,7 @@ K.SYSCALL.JMP .DA 0 $00
|
|||||||
.DA K.FWrite
|
.DA K.FWrite
|
||||||
.DA K.FFlush.A
|
.DA K.FFlush.A
|
||||||
.DA K.FSeek
|
.DA K.FSeek
|
||||||
.DA K.FTell.A
|
.DA K.FTell
|
||||||
.DA K.FEOF.A
|
.DA K.FEOF.A
|
||||||
|
|
||||||
.DA K.Remove.YA $40
|
.DA K.Remove.YA $40
|
||||||
|
@ -103,9 +103,7 @@ PS.CreateChild ldx #0
|
|||||||
plx
|
plx
|
||||||
sta PS.Table.hMem,x
|
sta PS.Table.hMem,x
|
||||||
|
|
||||||
lda CORE.LastPSID Set Ownership
|
jsr PS.SetMemOwnership Set Ownership
|
||||||
ldy #S.MEM.OWNERPID
|
|
||||||
sta (ZPMEMMGR),y
|
|
||||||
|
|
||||||
ldy #S.PS.PID
|
ldy #S.PS.PID
|
||||||
lda CORE.LastPSID
|
lda CORE.LastPSID
|
||||||
@ -123,9 +121,7 @@ PS.CreateChild ldx #0
|
|||||||
jsr K.NewStr.YA
|
jsr K.NewStr.YA
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
lda CORE.LastPSID Set Ownership
|
jsr PS.SetMemOwnership Set Ownership
|
||||||
ldy #S.MEM.OWNERPID
|
|
||||||
sta (ZPMEMMGR),y
|
|
||||||
|
|
||||||
txa
|
txa
|
||||||
ldy #S.PS.hPREFIX
|
ldy #S.PS.hPREFIX
|
||||||
@ -210,9 +206,7 @@ PS.CmdLine2Args >STYA ZPPtr1
|
|||||||
ldy #S.PS.hARGS
|
ldy #S.PS.hARGS
|
||||||
sta (ZPPtr3),y
|
sta (ZPPtr3),y
|
||||||
|
|
||||||
lda CORE.LastPSID Set Ownership
|
jsr PS.SetMemOwnership Set Ownership
|
||||||
ldy #S.MEM.OWNERPID
|
|
||||||
sta (ZPMEMMGR),y
|
|
||||||
|
|
||||||
stz PS.CmdLine2Args.bInQuote
|
stz PS.CmdLine2Args.bInQuote
|
||||||
|
|
||||||
@ -282,6 +276,9 @@ PS.Init jsr BIN.Load.YA Y,A=filename full path
|
|||||||
ldy #S.PS.hCS
|
ldy #S.PS.hCS
|
||||||
sta (ZPPtr3),y save CS hMem in S.PS
|
sta (ZPPtr3),y save CS hMem in S.PS
|
||||||
|
|
||||||
|
jsr K.GetMemByID.A
|
||||||
|
jsr PS.SetMemOwnership Set Ownership
|
||||||
|
|
||||||
ldy #H.BIN.EXE.DS.SIZE+1
|
ldy #H.BIN.EXE.DS.SIZE+1
|
||||||
lda (ZPPtr4),y Load DS.SIZE HI
|
lda (ZPPtr4),y Load DS.SIZE HI
|
||||||
tax
|
tax
|
||||||
@ -307,9 +304,7 @@ PS.Init jsr BIN.Load.YA Y,A=filename full path
|
|||||||
ldy #S.PS.hDS
|
ldy #S.PS.hDS
|
||||||
sta (ZPPtr3),y save DS hMem in S.PS
|
sta (ZPPtr3),y save DS hMem in S.PS
|
||||||
|
|
||||||
lda CORE.LastPSID Set Ownership
|
jsr PS.SetMemOwnership Set Ownership
|
||||||
ldy #S.MEM.OWNERPID
|
|
||||||
sta (ZPMEMMGR),y
|
|
||||||
|
|
||||||
.2 ldy #H.BIN.EXE.SS.SIZE
|
.2 ldy #H.BIN.EXE.SS.SIZE
|
||||||
lda (ZPPtr4),y Load SS.SIZE
|
lda (ZPPtr4),y Load SS.SIZE
|
||||||
@ -335,9 +330,7 @@ PS.Init jsr BIN.Load.YA Y,A=filename full path
|
|||||||
ldy #S.PS.hSS
|
ldy #S.PS.hSS
|
||||||
sta (ZPPtr3),y save SS hMem in S.PS
|
sta (ZPPtr3),y save SS hMem in S.PS
|
||||||
|
|
||||||
lda CORE.LastPSID Set Ownership
|
jsr PS.SetMemOwnership Set Ownership
|
||||||
ldy #S.MEM.OWNERPID
|
|
||||||
sta (ZPMEMMGR),y
|
|
||||||
|
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
@ -357,9 +350,7 @@ PS.DupEnv.A jsr K.GetMemPtr.A
|
|||||||
|
|
||||||
>STYA ZPPtr2
|
>STYA ZPPtr2
|
||||||
|
|
||||||
lda CORE.LastPSID Set this copy ownership
|
jsr PS.SetMemOwnership Set Ownership
|
||||||
ldy #S.MEM.OWNERPID
|
|
||||||
sta (ZPMEMMGR),y
|
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
@ -387,6 +378,12 @@ PS.DupEnv.A jsr K.GetMemPtr.A
|
|||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
PS.SetMemOwnership
|
||||||
|
lda CORE.LastPSID
|
||||||
|
ldy #S.MEM.OWNERPID
|
||||||
|
sta (ZPMEMMGR),y
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
K.GetPSStatus.A jsr CORE.GetPSByID.A
|
K.GetPSStatus.A jsr CORE.GetPSByID.A
|
||||||
bcs .9
|
bcs .9
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
@ -3,6 +3,16 @@ PREFIX /A2OSX.BUILD
|
|||||||
LOMEM $A00
|
LOMEM $A00
|
||||||
INC 1
|
INC 1
|
||||||
AUTO 6
|
AUTO 6
|
||||||
|
*--------------------------------------
|
||||||
|
* # FStat
|
||||||
|
* Return information about a hfile
|
||||||
|
* ## In :
|
||||||
|
* PUSHW = PTR to S.STAT buffer
|
||||||
|
* PUSHB = hFile
|
||||||
|
* ## Out :
|
||||||
|
*--------------------------------------
|
||||||
|
*jsr PFT.CheckNodeSTK
|
||||||
|
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # Stat
|
* # Stat
|
||||||
* Return information about a file
|
* Return information about a file
|
||||||
@ -158,7 +168,7 @@ K.MkNod.YA jsr K.GetDevByName.YA Ptr1=NAME
|
|||||||
rts
|
rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # MKFIFO
|
* # MKFIFO
|
||||||
* return a S.FILE to a new FIFO
|
* return a hFILE to a new FIFO
|
||||||
* ## IN:
|
* ## IN:
|
||||||
* ## OUT:
|
* ## OUT:
|
||||||
* CC = OK, CS = ERROR
|
* CC = OK, CS = ERROR
|
||||||
|
@ -280,7 +280,7 @@ K.FOpen.10 >LDYAI S.NODE.REG
|
|||||||
bcs K.FOpen.9
|
bcs K.FOpen.9
|
||||||
|
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
stx hFILE
|
stx .8+1
|
||||||
|
|
||||||
jsr STDIO.SetIOBUF
|
jsr STDIO.SetIOBUF
|
||||||
bcs .98
|
bcs .98
|
||||||
@ -327,12 +327,12 @@ K.FOpen.10 >LDYAI S.NODE.REG
|
|||||||
.30 ldy #S.NODE.T
|
.30 ldy #S.NODE.T
|
||||||
lda #S.NODE.T.REG
|
lda #S.NODE.T.REG
|
||||||
sta (ZPPtr1),y
|
sta (ZPPtr1),y
|
||||||
lda hFILE
|
.8 lda #$ff Self Modified
|
||||||
clc
|
clc
|
||||||
rts CC
|
rts CC
|
||||||
|
|
||||||
.98 pha save MLI error
|
.98 pha save MLI error
|
||||||
lda hFILE
|
lda .8+1
|
||||||
jsr K.FClose.A.1
|
jsr K.FClose.A.1
|
||||||
pla get back MLI error
|
pla get back MLI error
|
||||||
sec
|
sec
|
||||||
@ -341,7 +341,6 @@ K.FOpen.10 >LDYAI S.NODE.REG
|
|||||||
K.FOpen.MODE .BS 1
|
K.FOpen.MODE .BS 1
|
||||||
K.FOpen.TYPE .BS 1
|
K.FOpen.TYPE .BS 1
|
||||||
K.FOpen.AUXTYPE .BS 2
|
K.FOpen.AUXTYPE .BS 2
|
||||||
hFILE .BS 1
|
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # FClose.A
|
* # FClose.A
|
||||||
* Close a file
|
* Close a file
|
||||||
@ -448,9 +447,9 @@ K.FFlush.A jsr PFT.CheckNodeA
|
|||||||
rts
|
rts
|
||||||
*/-------------------------------------
|
*/-------------------------------------
|
||||||
* # FSeek
|
* # FSeek
|
||||||
|
* Set the file-position indicator for hFILE
|
||||||
* ## In:
|
* ## In:
|
||||||
* PUSHW = OffsetHi
|
* PUSHW = Ptr to Offset (DWORD)
|
||||||
* PUSHW = OffsetLo
|
|
||||||
* PUSHB = From
|
* PUSHB = From
|
||||||
* PUSHB = hFILE
|
* PUSHB = hFILE
|
||||||
*\-------------------------------------
|
*\-------------------------------------
|
||||||
@ -459,39 +458,44 @@ K.FSeek jsr PFT.CheckNodeSTK
|
|||||||
jsr STDIO.GetRefNum
|
jsr STDIO.GetRefNum
|
||||||
>PULLA FROM
|
>PULLA FROM
|
||||||
tax
|
tax
|
||||||
>PULLW K.FSeek.OFFSET
|
>PULLW ZPPtr1
|
||||||
>PULLW K.FSeek.OFFSET+2
|
cpx #SYS.FSeek.END+1
|
||||||
|
bcs .98
|
||||||
|
txa
|
||||||
|
asl
|
||||||
|
tax
|
||||||
|
|
||||||
cpx #SYS.FSeek.SET
|
jmp (.1,x)
|
||||||
|
|
||||||
bne .1
|
.1 .DA .10
|
||||||
stz K.MLI.PARAMS+2
|
.DA .20
|
||||||
|
.DA .30
|
||||||
|
* K.FSeek.SET
|
||||||
|
.10 stz K.MLI.PARAMS+2
|
||||||
stz K.MLI.PARAMS+3
|
stz K.MLI.PARAMS+3
|
||||||
stz K.MLI.PARAMS+4
|
stz K.MLI.PARAMS+4
|
||||||
bra .8
|
bra .8
|
||||||
|
|
||||||
.1 cpx #SYS.FSeek.CUR
|
* K.FSeek.CUR
|
||||||
bne .2
|
.20 >MLICALL MLIGETMARK
|
||||||
>MLICALL MLIGETMARK
|
|
||||||
bcc .8
|
bcc .8
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.2 cpx #SYS.FSeek.END
|
* K.FSeek.END
|
||||||
bne .98
|
.30 >MLICALL MLIGETEOF
|
||||||
>MLICALL MLIGETEOF
|
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
.8 ldx #0
|
.8 ldy #0
|
||||||
ldy #3
|
ldx #3 3 bytes, 24 bits!!!
|
||||||
|
|
||||||
clc
|
clc
|
||||||
|
|
||||||
.81 lda K.MLI.PARAMS+2,x
|
.81 lda K.MLI.PARAMS+2,y
|
||||||
adc K.FSeek.OFFSET,x
|
adc (ZPPtr1),y
|
||||||
sta K.MLI.PARAMS+2,x
|
sta K.MLI.PARAMS+2,y
|
||||||
|
|
||||||
inx
|
iny
|
||||||
dey
|
dex
|
||||||
bne .81
|
bne .81
|
||||||
|
|
||||||
bcs .99 Offset out of range!
|
bcs .99 Offset out of range!
|
||||||
@ -505,24 +509,9 @@ K.FSeek jsr PFT.CheckNodeSTK
|
|||||||
.99 lda #SYSMGR.ERRFTB
|
.99 lda #SYSMGR.ERRFTB
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
|
||||||
K.FSeek.OFFSET .BS 4
|
|
||||||
*/--------------------------------------
|
|
||||||
* # FTell.A
|
|
||||||
* ## In:
|
|
||||||
* A = hFILE
|
|
||||||
* ## Out:
|
|
||||||
* Y,A,X = Offset
|
|
||||||
*\--------------------------------------
|
|
||||||
K.FTell.A jsr PFT.CheckNodeA
|
|
||||||
K.FTell.A.1 jsr STDIO.GetRefNum
|
|
||||||
>MLICALL MLIGETMARK
|
|
||||||
bcs .9
|
|
||||||
>LDYA K.MLI.PARAMS+2
|
|
||||||
ldx K.MLI.PARAMS+4
|
|
||||||
.9 rts
|
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # FEOF.A
|
* # FEOF.A
|
||||||
|
* Test the end-of-file indicator for hFILE
|
||||||
* ## In:
|
* ## In:
|
||||||
* A = hFILE
|
* A = hFILE
|
||||||
* ## Out:
|
* ## Out:
|
||||||
@ -533,27 +522,62 @@ K.FTell.A.1 jsr STDIO.GetRefNum
|
|||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.FEOF.A jsr PFT.CheckNodeA
|
K.FEOF.A jsr PFT.CheckNodeA
|
||||||
jsr STDIO.GetRefNum
|
jsr STDIO.GetRefNum
|
||||||
jsr K.FTell.A.1
|
|
||||||
|
>MLICALL MLIGETMARK
|
||||||
bcs .9
|
bcs .9
|
||||||
>STYA K.FEOF.A.MARK
|
|
||||||
stx K.FEOF.A.MARK+2
|
ldy #2
|
||||||
|
|
||||||
|
.1 lda K.MLI.PARAMS+2,y
|
||||||
|
sta K.FEOF.A.MARK,y
|
||||||
|
dey
|
||||||
|
bpl .1
|
||||||
|
|
||||||
>MLICALL MLIGETEOF
|
>MLICALL MLIGETEOF
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
sec
|
ldy #2
|
||||||
lda K.MLI.PARAMS+2
|
|
||||||
sbc K.FEOF.A.MARK
|
.2 lda K.MLI.PARAMS+2,y
|
||||||
|
eor K.FEOF.A.MARK,y
|
||||||
bne .8
|
bne .8
|
||||||
lda K.MLI.PARAMS+3
|
dey
|
||||||
sbc K.FEOF.A.MARK+1
|
bpl .2
|
||||||
bne .8
|
|
||||||
lda K.MLI.PARAMS+4
|
|
||||||
sbc K.FEOF.A.MARK+2
|
|
||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
K.FEOF.A.MARK .BS 3
|
K.FEOF.A.MARK .BS 3
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
|
* # FTell
|
||||||
|
* Return the current value of the file-position indicator
|
||||||
|
* ## In:
|
||||||
|
* PUSHW = Ptr to Offset (DWORD)
|
||||||
|
* PUSHB = hFILE
|
||||||
|
* ## Out:
|
||||||
|
* Offset = Offset
|
||||||
|
*\--------------------------------------
|
||||||
|
K.FTell jsr PFT.CheckNodeSTK
|
||||||
|
>PULLA
|
||||||
|
jsr STDIO.GetRefNum
|
||||||
|
>PULLW ZPPtr1
|
||||||
|
>MLICALL MLIGETMARK
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
ldy #3
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta (ZPPtr1),y
|
||||||
|
|
||||||
|
dey
|
||||||
|
|
||||||
|
.1 lda K.MLI.PARAMS+2,y
|
||||||
|
sta (ZPPtr1),y
|
||||||
|
dey
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*/--------------------------------------
|
||||||
* # Remove.YA
|
* # Remove.YA
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.Remove.YA jsr PFT.CheckPathYA
|
K.Remove.YA jsr PFT.CheckPathYA
|
||||||
|
@ -8,7 +8,7 @@ AUTO 6
|
|||||||
* Convert String to 40 bits Float
|
* Convert String to 40 bits Float
|
||||||
* ## In:
|
* ## In:
|
||||||
* PUSHW PTR to target buffer (5 Bytes)
|
* PUSHW PTR to target buffer (5 Bytes)
|
||||||
* PUSHW Source String (PSTR)
|
* PUSHW Source String (C-Sring)
|
||||||
* ## Out:
|
* ## Out:
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.AToF
|
K.AToF
|
||||||
@ -67,6 +67,78 @@ K.AToL jsr PullPtr1Ptr2 PSTR in Ptr1,buffer in Ptr2
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
* Convert ASCBUF decimal to HEXBUF
|
||||||
|
*--------------------------------------
|
||||||
|
DEC2HEX stz HEXBUF
|
||||||
|
stz HEXBUF+1
|
||||||
|
stz HEXBUF+2
|
||||||
|
stz HEXBUF+3
|
||||||
|
|
||||||
|
ldx #$ff
|
||||||
|
|
||||||
|
.1 inx
|
||||||
|
lda ASCBUF,x
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
lda HEXBUF+3 save HEXBUF for 4+1
|
||||||
|
pha
|
||||||
|
lda HEXBUF+2
|
||||||
|
pha
|
||||||
|
lda HEXBUF+1
|
||||||
|
pha
|
||||||
|
lda HEXBUF
|
||||||
|
pha
|
||||||
|
|
||||||
|
jsr HEXBUF.ROL HEXBUF * 2 -> HEXBUF
|
||||||
|
* bcs .9 overflow!!!
|
||||||
|
|
||||||
|
jsr HEXBUF.ROL HEXBUF * 4 -> HEXBUF
|
||||||
|
* bcs .9 overflow!!!
|
||||||
|
|
||||||
|
pla HEXBUF * 4 + HEXBUF -> HEXBUF
|
||||||
|
adc HEXBUF
|
||||||
|
sta HEXBUF
|
||||||
|
pla
|
||||||
|
adc HEXBUF+1
|
||||||
|
sta HEXBUF+1
|
||||||
|
pla
|
||||||
|
adc HEXBUF+2
|
||||||
|
sta HEXBUF+2
|
||||||
|
pla
|
||||||
|
adc HEXBUF+3
|
||||||
|
sta HEXBUF+3
|
||||||
|
* bcs .99 overflow!!!
|
||||||
|
|
||||||
|
jsr HEXBUF.ROL HEXBUF * 10 -> HEXBUF
|
||||||
|
* bcs .99 overflow!!!
|
||||||
|
|
||||||
|
lda ASCBUF,x
|
||||||
|
and #$0F
|
||||||
|
|
||||||
|
adc HEXBUF
|
||||||
|
sta HEXBUF
|
||||||
|
bcc .1
|
||||||
|
inc HEXBUF+1
|
||||||
|
bne .1
|
||||||
|
inc HEXBUF+2
|
||||||
|
bne .1
|
||||||
|
inc HEXBUF+3
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.8 rts
|
||||||
|
|
||||||
|
*.9 pla discard saved HEXBUF
|
||||||
|
* pla
|
||||||
|
* pla
|
||||||
|
* pla
|
||||||
|
*.99 rts
|
||||||
|
*--------------------------------------
|
||||||
|
HEXBUF.ROL asl HEXBUF
|
||||||
|
rol HEXBUF+1
|
||||||
|
rol HEXBUF+2
|
||||||
|
rol HEXBUF+3
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
* Convert HEXBUF to ASCBUF decimal padded with 0
|
* Convert HEXBUF to ASCBUF decimal padded with 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
HEX2DEC ldx #4
|
HEX2DEC ldx #4
|
||||||
@ -116,80 +188,6 @@ HEX2DEC ldx #4
|
|||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Convert ASCBUF decimal to HEXBUF
|
|
||||||
*--------------------------------------
|
|
||||||
DEC2HEX stz HEXBUF
|
|
||||||
stz HEXBUF+1
|
|
||||||
stz HEXBUF+2
|
|
||||||
stz HEXBUF+3
|
|
||||||
|
|
||||||
lda ASCBUF
|
|
||||||
beq .8
|
|
||||||
|
|
||||||
ldx #0
|
|
||||||
|
|
||||||
.1 lda HEXBUF+3 save HEXBUF for 4+1
|
|
||||||
pha
|
|
||||||
lda HEXBUF+2
|
|
||||||
pha
|
|
||||||
lda HEXBUF+1
|
|
||||||
pha
|
|
||||||
lda HEXBUF
|
|
||||||
pha
|
|
||||||
|
|
||||||
jsr HEXBUF.ROL HEXBUF * 2 -> HEXBUF
|
|
||||||
* bcs .9 overflow!!!
|
|
||||||
|
|
||||||
jsr HEXBUF.ROL HEXBUF * 4 -> HEXBUF
|
|
||||||
* bcs .9 overflow!!!
|
|
||||||
|
|
||||||
pla HEXBUF * 4 + HEXBUF -> HEXBUF
|
|
||||||
adc HEXBUF
|
|
||||||
sta HEXBUF
|
|
||||||
pla
|
|
||||||
adc HEXBUF+1
|
|
||||||
sta HEXBUF+1
|
|
||||||
pla
|
|
||||||
adc HEXBUF+2
|
|
||||||
sta HEXBUF+2
|
|
||||||
pla
|
|
||||||
adc HEXBUF+3
|
|
||||||
sta HEXBUF+3
|
|
||||||
* bcs .99 overflow!!!
|
|
||||||
|
|
||||||
jsr HEXBUF.ROL HEXBUF * 10 -> HEXBUF
|
|
||||||
* bcs .99 overflow!!!
|
|
||||||
|
|
||||||
inx
|
|
||||||
lda ASCBUF,x
|
|
||||||
and #$0F
|
|
||||||
|
|
||||||
adc HEXBUF
|
|
||||||
sta HEXBUF
|
|
||||||
bcc .2
|
|
||||||
inc HEXBUF+1
|
|
||||||
bne .2
|
|
||||||
inc HEXBUF+2
|
|
||||||
bne .2
|
|
||||||
inc HEXBUF+3
|
|
||||||
|
|
||||||
.2 cpx ASCBUF
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
.8 rts
|
|
||||||
|
|
||||||
*.9 pla discard saved HEXBUF
|
|
||||||
* pla
|
|
||||||
* pla
|
|
||||||
* pla
|
|
||||||
*.99 rts
|
|
||||||
*--------------------------------------
|
|
||||||
HEXBUF.ROL asl HEXBUF
|
|
||||||
rol HEXBUF+1
|
|
||||||
rol HEXBUF+2
|
|
||||||
rol HEXBUF+3
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
HEXBUF .BS 4 32 bits max
|
HEXBUF .BS 4 32 bits max
|
||||||
BCDBUF .BS 5 5, enough to handle 10 digits (32bits)
|
BCDBUF .BS 5 5, enough to handle 10 digits (32bits)
|
||||||
ASCBUF .BS 12 LEN + sign + 10 digits ($FFFFFFFF=4.294.967.295)
|
ASCBUF .BS 12 LEN + sign + 10 digits ($FFFFFFFF=4.294.967.295)
|
||||||
|
@ -161,7 +161,7 @@ K.ComputeWDAY lda #3 Thursday : 4 (-1 for mod 7)
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # K.CTime2Time
|
* # CTime2Time
|
||||||
* Convert CTIME to S.TIME
|
* Convert CTIME to S.TIME
|
||||||
* ## In :
|
* ## In :
|
||||||
* PUSHW = Dst PTR To S.TIME
|
* PUSHW = Dst PTR To S.TIME
|
||||||
|
Loading…
Reference in New Issue
Block a user