mirror of
https://github.com/A2osX/A2osX.git
synced 2024-09-10 22:54:59 +00:00
225 lines
5.2 KiB
Plaintext
225 lines
5.2 KiB
Plaintext
PR#3
|
||
PREFIX /A2OSX.SRC
|
||
NEW
|
||
INC 1
|
||
AUTO 6
|
||
.LIST OFF
|
||
.OP 65C02
|
||
*--------------------------------------
|
||
* PUBLIC
|
||
*--------------------------------------
|
||
S.MLICreateFile
|
||
clc
|
||
rts
|
||
*--------------------------------------
|
||
S.MLICreateDirA jsr S.GetMemPtrA
|
||
S.MLICreateDirYA
|
||
>STYA MLICALL.PARAMS+1
|
||
lda #$C3
|
||
sta MLICALL.PARAMS+3 Access
|
||
lda #$0F
|
||
sta MLICALL.PARAMS+4 type=Directory
|
||
lda #$0D
|
||
sta MLICALL.PARAMS+7 Storage=Linked List
|
||
|
||
>MLICALL MLICREATE
|
||
rts
|
||
*--------------------------------------
|
||
S.MLIDestroyA jsr S.GetMemPtrA
|
||
S.MLIDestroyYA >STYA MLICALL.PARAMS+1
|
||
>MLICALL MLIDESTROY
|
||
rts
|
||
*--------------------------------------
|
||
S.MLIRename >PULLW MLICALL.PARAMS+3
|
||
>PULLW MLICALL.PARAMS+1
|
||
>MLICALL MLIRENAME
|
||
rts
|
||
*--------------------------------------
|
||
S.MLISetFileInfo
|
||
*--------------------------------------
|
||
* S.MLIGetFileInfoA
|
||
* in :
|
||
* A = hMem To FileName
|
||
* out :
|
||
* Y,A = PTR To Buffer (L=15)
|
||
*--------------------------------------
|
||
S.MLIGetFileInfoA
|
||
jsr S.GetMemPtrA
|
||
S.MLIGetFileInfoYA
|
||
>STYA MLICALL.PARAMS+1
|
||
>MLICALL MLIGETFILEINFO
|
||
bcs .9
|
||
>LDYAI MLICALL.PARAMS+3
|
||
.9 rts
|
||
*--------------------------------------
|
||
* S.MLIOnline
|
||
* in :
|
||
* PULLB = Device
|
||
* PULLW = Dest PTR
|
||
*--------------------------------------
|
||
S.MLIOnline >PULLB MLICALL.PARAMS+1
|
||
>PULLW MLICALL.PARAMS+2
|
||
>MLICALL MLIONLINE
|
||
rts
|
||
*--------------------------------------
|
||
S.MLISetPrefixA jsr S.GetMemPtrA
|
||
S.MLISetPrefixYA
|
||
>STYA MLICALL.PARAMS+1
|
||
>MLICALL MLISETPREFIX
|
||
rts
|
||
*--------------------------------------
|
||
S.MLIGetPrefixA jsr S.GetMemPtrA
|
||
S.MLIGetPrefixYA
|
||
>STYA MLICALL.PARAMS+1
|
||
>MLICALL MLIGETPREFIX
|
||
rts
|
||
*--------------------------------------
|
||
* S.MLIOpenA
|
||
* in :
|
||
* A = hMem To FileName
|
||
* out :
|
||
* A = ref_num
|
||
* X = buf hMem
|
||
*--------------------------------------
|
||
S.MLIOpenA jsr S.GetMemPtrA
|
||
S.MLIOpenYA >STYA MLICALL.PARAMS+1
|
||
>PUSHWI 1024 get a ProDOS IO buffer
|
||
>PUSHBI S.MEM.F.ALIGN+S.MEM.F.NOMOVE
|
||
jsr S.GetMem
|
||
bcs .99
|
||
|
||
phx save Prodos Buffer hMem
|
||
>STYA MLICALL.PARAMS+3
|
||
>MLICALL MLIOPEN
|
||
bcs .98
|
||
lda MLICALL.PARAMS+5 get ref_num
|
||
plx get back Prodos Buffer hMem
|
||
rts CC
|
||
|
||
.98 plx get back Prodos Buffer hMem
|
||
pha save MLI error
|
||
txa
|
||
jsr S.FreeMemA discard Prodos Buffer
|
||
pla get back MLI error
|
||
sec
|
||
.99 rts
|
||
*--------------------------------------
|
||
* S.MLINewline
|
||
* in :
|
||
* PULLB = ref_num
|
||
* PULLB = Enable Mask
|
||
* PULLB = Newline Char
|
||
*--------------------------------------
|
||
S.MLINewLine >PULLB MLICALL.PARAMS+1
|
||
>PULLB MLICALL.PARAMS+2
|
||
>PULLB MLICALL.PARAMS+3
|
||
>MLICALL MLINEWLINE
|
||
rts
|
||
*--------------------------------------
|
||
* S.MLIRead
|
||
* in :
|
||
* PULLB = ref_num
|
||
* PULLW = Dest PTR
|
||
* PULLW = Bytes To Read
|
||
* out :
|
||
* Y,A = Bytes Read
|
||
*--------------------------------------
|
||
S.MLIRead >PULLB MLICALL.PARAMS+1
|
||
>PULLW MLICALL.PARAMS+2
|
||
>PULLW MLICALL.PARAMS+4
|
||
>MLICALL MLIREAD
|
||
bcs .9
|
||
>LDYA MLICALL.PARAMS+6
|
||
.9 rts
|
||
*--------------------------------------
|
||
* S.MLIWrite
|
||
* in :
|
||
* PULLB = ref_num
|
||
* PULLW = Dest PTR
|
||
* PULLW = Bytes To Read
|
||
* out :
|
||
* Y,A = Bytes Written
|
||
*--------------------------------------
|
||
S.MLIWrite >PULLB MLICALL.PARAMS+1
|
||
>PULLW MLICALL.PARAMS+2
|
||
>PULLW MLICALL.PARAMS+4
|
||
>MLICALL MLIWRITE
|
||
bcs .9
|
||
>LDYA MLICALL.PARAMS+6
|
||
.9 rts
|
||
*--------------------------------------
|
||
* S.MLICloseA
|
||
* in :
|
||
* A = ref_num
|
||
* out :
|
||
*--------------------------------------
|
||
S.MLICloseA sta MLICALL.PARAMS+1
|
||
>MLICALL MLICLOSE
|
||
rts
|
||
*--------------------------------------
|
||
S.MLIFlushA sta MLICALL.PARAMS+1
|
||
>MLICALL MLIFLUSH
|
||
rts
|
||
*--------------------------------------
|
||
S.MLISetMark
|
||
*--------------------------------------
|
||
* S.MLIGetMarkA
|
||
* in :
|
||
* A = ref_num
|
||
* out :
|
||
* Y,A,X = EOF
|
||
*--------------------------------------
|
||
S.MLIGetMarkA sta MLICALL.PARAMS+1
|
||
>MLICALL MLIGETMARK
|
||
bcs .9
|
||
>LDYA MLICALL.PARAMS+2
|
||
ldx MLICALL.PARAMS+4
|
||
clc
|
||
.9 rts
|
||
*--------------------------------------
|
||
S.MLISetEOF
|
||
*--------------------------------------
|
||
* S.MLIGetEOF
|
||
* in :
|
||
* A = ref_num
|
||
* out :
|
||
* Y,A,X = EOF
|
||
*--------------------------------------
|
||
S.MLIGetEOFA sta MLICALL.PARAMS+1
|
||
>MLICALL MLIGETEOF
|
||
bcs .9
|
||
>LDYA MLICALL.PARAMS+2
|
||
ldx MLICALL.PARAMS+4
|
||
clc
|
||
.9 rts
|
||
*--------------------------------------
|
||
S.MLISetBuf clc
|
||
rts
|
||
*--------------------------------------
|
||
S.MLIGetBuf clc
|
||
rts
|
||
*--------------------------------------
|
||
S.MLIGetTime >MLICALL MLIGETTIME
|
||
rts
|
||
*--------------------------------------
|
||
S.MLIAllocIRQ >PULLB MLICALL.PARAMS+1
|
||
>PULLW MLICALL.PARAMS+2
|
||
>MLICALL MLIALLOCIRQ
|
||
rts
|
||
*--------------------------------------
|
||
S.MLIDeallocIRQA
|
||
sta MLICALL.PARAMS+1
|
||
>MLICALL MLIDEALLOCIRQ
|
||
rts
|
||
*--------------------------------------
|
||
S.MLIReadBlock clc
|
||
rts
|
||
*--------------------------------------
|
||
S.MLIWriteBlock clc
|
||
rts
|
||
*--------------------------------------
|
||
MAN
|
||
SAVE SYS/KERNEL.S.MLI
|
||
LOAD SYS/KERNEL.S
|
||
ASM
|