A2osX/SYS/KERNEL.S.FIL.txt

168 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.SRC
NEW
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
* For All SYS.xxxx calls, X = #SYSCall
* Must be kept in X before calling
* S.PFTCheckPathXX
*--------------------------------------
* S.FOPEN
* In :
* PULLW = PATH (PSTR)
* PULLB = MODE
* Out :
* CC : A = hFILE
* CS : A = EC
*--------------------------------------
S.FOPEN jsr S.PFTCHECKPATHSTK
>PULLW MLICALL.PARAMS+1
>PULLB S.FOPEN.MODE
>PUSHWI S.FILE.PRODOS
>PUSHBI S.MEM.F.INIT0
jsr S.GetMem
bcs .99
>STYA ZPQuickPtr1
stx hFILE
>PUSHWI 1024 get a ProDOS IOBUF
>PUSHBI S.MEM.F.ALIGN+S.MEM.F.NOMOVE
jsr S.GetMem
bcs .99
>STYA MLICALL.PARAMS+3 Save Ptr to IOBUF for MLIOPEN call
txa
ldy #S.FILE.PRODOS.IOBUF
sta (ZPQuickPtr1),y
>MLICALL MLIOPEN
bcc .1 Failed...
bit S.FOPEN.MODE Create if not exists?
bpl .98 no....error
.1 lda MLICALL.PARAMS+5 get ref_num
ldy #S.FILE.PRODOS.REF
sta (ZPQuickPtr1),y
lda S.FOPEN.MODE
bit #SYS.FOPEN.A
beq .1
.1
lda hFILE
clc
rts CC
.98 pha save MLI error
jsr S.FCLOSEA.1
pla get back MLI error
sec
.99 rts
*--------------------------------------
S.FOPEN.MODE .BS 1
hFILE .BS 1
*--------------------------------------
* S.FCLOSEA
* In :
* A = hFILE
*--------------------------------------
S.FCLOSEA jsr S.PFTCHECKFILEA
jsr S.GetMemPtrA
>STYA ZPQuickPtr1
S.FCLOSEA.1 ldy #S.FILE.PRODOS.REF
lda (ZPQuickPtr1),y
beq .1
sta MLICALL.PARAMS+1
>MLICALL MLICLOSE
.1 ldy #S.FILE.PRODOS.IOBUF
lda (ZPQuickPtr1),y
beq .2
jsr S.FreeMemA
.2 lda hFILE
jsr S.FreeMemA
rts
*--------------------------------------
* S.FREAD
* In :
* PULLB = hFILE
* PULLW = Bytes To Read
* PULLW = Dest Ptr
* Out :
* Y,A = Bytes Read
*--------------------------------------
S.FREAD jsr S.PFTCHECKFILESTK
>PULLB MLICALL.PARAMS+1
>PULLW MLICALL.PARAMS+4
>PULLW MLICALL.PARAMS+2
>MLICALL MLIREAD
bcs .9
>LDYA MLICALL.PARAMS+6
.9 rts
*--------------------------------------
* S.FWRITE
* In :
* PULLB = hFILE
* PULLW = Bytes To Write
* PULLW = Src Ptr
* Out :
* Y,A = Bytes Written
*--------------------------------------
S.FWRITE jsr S.PFTCHECKFILESTK
>PULLB MLICALL.PARAMS+1
>PULLW MLICALL.PARAMS+4
>PULLW MLICALL.PARAMS+2
>MLICALL MLIWRITE
bcs .9
>LDYA MLICALL.PARAMS+6
.9 rts
*--------------------------------------
* S.FFLUSHA
* In :
* A = hFILE
*--------------------------------------
S.FFLUSHA jsr S.PFTCHECKFILEA
sta MLICALL.PARAMS+1
>MLICALL MLIFLUSH
rts
*--------------------------------------
*--------------------------------------
S.FSEEK
*--------------------------------------
*--------------------------------------
S.FTELL
*--------------------------------------
*--------------------------------------
S.FEOF
*--------------------------------------
*--------------------------------------
S.REMOVE
*--------------------------------------
*--------------------------------------
S.RENAME
*--------------------------------------
S.MKDIRYA jsr S.PFTCHECKPATHYA
>STYA MLICALL.PARAMS+1
lda #$C3
sta MLICALL.PARAMS+3 Access
lda #$0F
sta MLICALL.PARAMS+4 type=Directory
lda #$0D Storage=Linked List
sta MLICALL.PARAMS+7
>MLICALL MLICREATE
rts
*--------------------------------------
MAN
SAVE SYS/KERNEL.S.FIL
LOAD SYS/KERNEL.S
ASM