A2osX/SYS/KERNEL.S.FIO.txt

188 lines
3.6 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

PR#3
PREFIX /A2OSX.BUILD
LOMEM $A00
INC 1
AUTO 6
*/--------------------------------------
* # LoadTxtFile.YA
* Load TXT a file in memory (with ending 0)
* ## In:
* Y,A = File Path
* ## Out:
* Y,A = File Length (without ending 0)
* X = hMem of Loaded File
*\--------------------------------------
K.LoadTxtFile.YA
pha
>PUSHWI 0 Aux type
>PUSHBI 4 S.FILEINFO.TYPE.TXT
>PUSHBI SYS.FOpen.R
pla
>PUSHYA
sec
.HS 90 BCC
*/--------------------------------------
* # LoadFile
* Load a file in memory
* ## In:
* PUSHW = AUXTYPE (Handled by....
* PUSHB = TYPE ...
* PUSHB = MODE ...
* PUSHW = PATH ...FOpen)
* ## Out:
* Y,A = File Length
* X = hMem of Loaded File
*\--------------------------------------
K.LoadFile clc
ror K.LoadFile.bTXT
jsr K.FOpen
bcs .9
sta K.LoadFile.hFile
jsr K.LoadFile.GetSize
bcs .99
>LDYA K.LoadFile.FSize
bit K.LoadFile.bTXT Add 1 to buffer size for ending 0
bpl .1
iny
bne .1
inc
bne .1
lda #K.E.FTB
bra .99
.1 jsr K.GetMem.YA
bcs .99
>STYA K.LoadFile.Mem
stx .8+1
>PUSHW K.LoadFile.Mem
>PUSHW K.LoadFile.FSize
>PUSHB K.LoadFile.hFile
jsr K.FRead
bcs .98
sty .6+1
sta .7+1 Save Bytes read
jsr .99 close file
bit K.LoadFile.bTXT
bpl .6
clc set ending 0
lda .6+1
adc K.LoadFile.Mem
sta .5+1
lda .7+1
adc K.LoadFile.Mem+1
sta .5+2
.5 stz $ffff Self Modified
.6 ldy #$ff Self Modified
.7 lda #$ff Self Modified
.8 ldx #$ff Self Modified
clc
.9 rts
.98 pha
lda .8+1
jsr K.FreeMem.A
pla
.99 pha
lda K.LoadFile.hFile
jsr K.FClose.A
pla
sec
rts
*--------------------------------------
K.LoadFile.GetSize
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 #K.E.FTB
.99 rts
*--------------------------------------
K.LoadFile.bTXT .BS 1
K.LoadFile.hFile .BS 1
K.LoadFile.FPos .BS 4
K.LoadFile.Mem .BS 2
K.LoadFile.FSize .BS 2
*/--------------------------------------
* # ChTyp
* ## In:
* PUSHB = TYPE
* PUSHW = PATH
*\--------------------------------------
K.ChTyp jsr PFT.CheckPathSTK
jsr STDIO.PullMLIPath
>PULLB .1+1
>MLICALL MLIGETFILEINFO
bcs .9
.1 lda #$ff
sta K.MLI.PARAMS+S.FILEINFO.TYPE
>MLICALL MLISETFILEINFO
.9 rts
*/--------------------------------------
* # ChMod
* ## In:
* PUSHW = UID
* PUSHW = PATH
*\--------------------------------------
K.ChMod
*/--------------------------------------
* # ChOwn
* ## In:
* PUSHW = UID
* PUSHW = PATH
*\--------------------------------------
K.ChOwn
*/--------------------------------------
* # ChGrp
* ## In:
* PUSHW = GID
* PUSHW = PATH
*\--------------------------------------
K.ChGrp
sec
rts
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.FIO
LOAD /A2OSX.SRC/SYS/KERNEL.S
ASM