mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-26 13:49:18 +00:00
178 lines
3.3 KiB
Plaintext
178 lines
3.3 KiB
Plaintext
NEW
|
||
PREFIX
|
||
AUTO 4,1
|
||
*/--------------------------------------
|
||
* # LoadTxtFile
|
||
* Load TXT a file in memory (with ending 0)
|
||
* ## C
|
||
* `int loadtxtfile ( const char * filename, short int flags, short int ftype, int auxtype );`
|
||
* ## ASM
|
||
* **In:**
|
||
* `>PUSHW auxtype`
|
||
* `>PUSHB ftype`
|
||
* `>PUSHB flags`
|
||
* `>LDYA filename`
|
||
* `>SYSCALL loadtxtfile`
|
||
* ## RETURN VALUE
|
||
* Y,A = File Length (without ending 0)
|
||
* X = hMem of Loaded File
|
||
*\--------------------------------------
|
||
.DUMMY
|
||
.OR ZPTMP
|
||
FIO.bTXT .BS 1
|
||
FIO.hFILE .BS 1
|
||
FIO.MemPtr .BS 2
|
||
FIO.hMem .BS 1
|
||
FIO.BytesRead .BS 2
|
||
.ED
|
||
*--------------------------------------
|
||
K.LoadTxtFile sec
|
||
.HS 90 BCC
|
||
*/--------------------------------------
|
||
* # LoadFile
|
||
* Load a file in memory
|
||
* ## C
|
||
* `int loadfile ( const char * filename, short int flags, short int ftype, int auxtype );`
|
||
* ## ASM
|
||
* **In:**
|
||
* `>PUSHW auxtype`
|
||
* `>PUSHB ftype`
|
||
* `>PUSHB flags`
|
||
* `>LDYA filename`
|
||
* `>SYSCALL loadfile`
|
||
* ## RETURN VALUE
|
||
* Y,A = File Length
|
||
* X = hMem of Loaded File
|
||
*\--------------------------------------
|
||
K.LoadFile clc
|
||
|
||
ror FIO.bTXT
|
||
jsr K.FOpen
|
||
bcs .9
|
||
|
||
.12 sta FIO.hFILE
|
||
|
||
pha
|
||
>PUSHWI K.S.Stat
|
||
pla
|
||
jsr K.FStat
|
||
bcs .11
|
||
|
||
lda K.S.Stat+S.STAT.SIZE+3
|
||
ora K.S.Stat+S.STAT.SIZE+2
|
||
bne .10
|
||
|
||
>LDYA K.S.Stat+S.STAT.SIZE
|
||
|
||
bit FIO.bTXT Add 1 to buffer size for ending 0
|
||
bpl .1
|
||
iny
|
||
bne .1
|
||
inc
|
||
bne .1
|
||
|
||
.10 lda #E.FTB
|
||
.11 bra .99
|
||
|
||
.1 jsr K.GetMem
|
||
bcs .99
|
||
>STYA FIO.MemPtr
|
||
stx FIO.hMem
|
||
|
||
>PUSHW K.S.Stat+S.STAT.SIZE
|
||
>PUSHW FIO.MemPtr
|
||
lda FIO.hFILE
|
||
jsr K.FRead
|
||
bcc .2
|
||
|
||
pha
|
||
lda FIO.hMem
|
||
jsr K.FreeMem
|
||
pla
|
||
|
||
.99 pha
|
||
lda FIO.hFILE
|
||
jsr K.FClose
|
||
pla
|
||
sec
|
||
.9 rts
|
||
|
||
.2 >STYA FIO.BytesRead
|
||
|
||
bit FIO.bTXT
|
||
bpl .5
|
||
|
||
pha set ending 0
|
||
tya
|
||
|
||
* clc
|
||
|
||
adc FIO.MemPtr
|
||
sta .4+1
|
||
|
||
pla
|
||
adc FIO.MemPtr+1
|
||
sta .4+2
|
||
|
||
.4 stz $ffff Self Modified
|
||
|
||
.5 jsr .99 close file
|
||
|
||
>LDYA FIO.BytesRead
|
||
ldx FIO.hMem
|
||
clc
|
||
rts
|
||
*/--------------------------------------
|
||
* # ChTyp
|
||
* Change The type of a ProDOS File
|
||
* ## C
|
||
* `int chtyp(const char *filepath, const char filetype);`
|
||
* ## ASM
|
||
* **In:**
|
||
* `>PUSHBI filetype`
|
||
* `>LDYA filepath`
|
||
* `>SYSCALL chtyp`
|
||
* ## RETURN VALUE
|
||
*\--------------------------------------
|
||
K.ChTyp jsr PFT.CheckPathYA
|
||
bcs .99
|
||
|
||
>PULLB .1+1
|
||
>MLICALL MLIGETFILEINFO
|
||
bcs .9
|
||
|
||
.1 lda #$ff
|
||
sta K.MLI.PARAMS+S.FI.T
|
||
>MLICALL MLISETFILEINFO
|
||
.9 rts
|
||
|
||
.99 >RET 1 discard filetype
|
||
*/--------------------------------------
|
||
* # ChMod
|
||
* **In:**
|
||
* PUSHW = UID
|
||
* PUSHW = PATH
|
||
*\--------------------------------------
|
||
K.ChMod
|
||
*/--------------------------------------
|
||
* # ChOwn
|
||
* **In:**
|
||
* PUSHW = mod
|
||
* PUSHW = PATH
|
||
*\--------------------------------------
|
||
K.ChOwn
|
||
*/--------------------------------------
|
||
* # ChGrp
|
||
* **In:**
|
||
* PUSHW = GID
|
||
* PUSHW = PATH
|
||
*\--------------------------------------
|
||
K.ChGrp
|
||
sec
|
||
rts
|
||
*--------------------------------------
|
||
MAN
|
||
SAVE USR/SRC/SYS/KERNEL.S.FIO
|
||
LOAD USR/SRC/SYS/KERNEL.S
|
||
ASM
|