2016-08-24 15:42:33 +00:00
|
|
|
|
PR#3
|
|
|
|
|
PREFIX /A2OSX.SRC
|
|
|
|
|
NEW
|
|
|
|
|
INC 1
|
|
|
|
|
AUTO 6
|
|
|
|
|
.LIST OFF
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
* In :
|
|
|
|
|
* X = #SYSCall
|
|
|
|
|
* Y,A = PATH (PSTR)
|
|
|
|
|
* Out :
|
|
|
|
|
* CC : Y,A = PTR to S.DIR
|
|
|
|
|
* CS : A = EC
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
S.OPENDIRYA jsr S.PFTCHECKPATHYA
|
2016-09-01 15:42:38 +00:00
|
|
|
|
>STYA ZPQuickPtr2
|
|
|
|
|
>STYA MLICALL.PARAMS+1 For MLIOPEN
|
2016-08-28 20:48:01 +00:00
|
|
|
|
|
2016-09-01 15:42:38 +00:00
|
|
|
|
>PUSHWI S.DIR.PRODOS
|
|
|
|
|
>PUSHBI S.MEM.F.INIT0
|
|
|
|
|
jsr S.GetMem
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
>STYA ZPQuickPtr1
|
|
|
|
|
stx hDIR
|
|
|
|
|
|
|
|
|
|
lda (ZPQuickPtr2)
|
|
|
|
|
cmp #1 One char ?
|
|
|
|
|
bne .7 No, Go open dir....
|
|
|
|
|
tay Y=1
|
|
|
|
|
lda (ZPQuickPtr2),y
|
|
|
|
|
cmp #'/' Root required ?
|
|
|
|
|
beq .8 Yes, Go for ONLINE Call (S.DIR.PRODOS.REF=0)
|
|
|
|
|
|
|
|
|
|
lda #SYSMGR.ERRSYN
|
|
|
|
|
sec
|
|
|
|
|
.9 rts
|
|
|
|
|
|
|
|
|
|
.7 >PUSHWI 1024 get a ProDOS IOBUF
|
|
|
|
|
>PUSHBI S.MEM.F.ALIGN+S.MEM.F.NOMOVE
|
|
|
|
|
jsr S.GetMem
|
|
|
|
|
bcs .98
|
|
|
|
|
|
|
|
|
|
>STYA MLICALL.PARAMS+3 Save Ptr to IOBUF for MLIOPEN call
|
|
|
|
|
txa
|
|
|
|
|
ldy #S.DIR.PRODOS.IOBUF
|
|
|
|
|
sta (ZPQuickPtr1),y
|
|
|
|
|
|
|
|
|
|
>MLICALL MLIOPEN
|
|
|
|
|
bcs .98
|
|
|
|
|
|
|
|
|
|
lda MLICALL.PARAMS+5 get ref_num
|
|
|
|
|
ldy #S.DIR.PRODOS.REF
|
|
|
|
|
sta (ZPQuickPtr1),y
|
2016-08-24 15:42:33 +00:00
|
|
|
|
|
2016-09-01 15:42:38 +00:00
|
|
|
|
.8 lda hDIR
|
2016-08-24 15:42:33 +00:00
|
|
|
|
clc
|
|
|
|
|
rts
|
2016-09-01 15:42:38 +00:00
|
|
|
|
|
|
|
|
|
.98 pha save MLI error
|
|
|
|
|
jsr S.CLOSEDIRA.1
|
|
|
|
|
pla get back MLI error
|
|
|
|
|
sec
|
|
|
|
|
.99 rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
hDIR .BS 1
|
2016-08-24 15:42:33 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
* In :
|
2016-08-29 15:12:04 +00:00
|
|
|
|
* A = hDIR
|
2016-08-24 15:42:33 +00:00
|
|
|
|
* Out :
|
2016-09-01 15:42:38 +00:00
|
|
|
|
* CC : X = hDIREND, Y,A = PTR to S.DIRENT
|
|
|
|
|
* CS : A = EC, A = 0 : no more entry
|
2016-08-24 15:42:33 +00:00
|
|
|
|
*--------------------------------------
|
2016-08-29 15:12:04 +00:00
|
|
|
|
S.READDIRA jsr S.PFTCHECKDIRA
|
2016-09-01 15:42:38 +00:00
|
|
|
|
jsr S.GetMemPtrA
|
|
|
|
|
>STYA ZPQuickPtr1
|
|
|
|
|
ldy #S.DIR.PRODOS.REF
|
|
|
|
|
lda (ZPQuickPtr1),y
|
|
|
|
|
bne .
|
|
|
|
|
|
|
|
|
|
>PUSHWI 256 Get Buffer for ONLINE call
|
|
|
|
|
>PUSHBI 0
|
|
|
|
|
jsr S.GetMem
|
|
|
|
|
bcs .99
|
|
|
|
|
>STYA ZPQuickPtr2
|
|
|
|
|
stx hONLINE
|
|
|
|
|
stz MLICALL.PARAMS+1
|
|
|
|
|
>STYA MLICALL.PARAMS+2
|
|
|
|
|
>MLICALL MLIONLINE
|
|
|
|
|
bcs .
|
|
|
|
|
|
|
|
|
|
lda #1 Ending 0
|
|
|
|
|
sta BufSize
|
|
|
|
|
stz BufSize+1
|
|
|
|
|
|
|
|
|
|
ldy #0
|
|
|
|
|
|
|
|
|
|
.1 lda (ZPQuickPtr2),y
|
|
|
|
|
and #$0F
|
|
|
|
|
beq .2
|
|
|
|
|
|
|
|
|
|
sec Add Filelen +1
|
|
|
|
|
adc BufSize
|
|
|
|
|
sta BufSize
|
|
|
|
|
lda #0
|
|
|
|
|
adc BufSize
|
|
|
|
|
sta BufSize
|
2016-08-24 15:42:33 +00:00
|
|
|
|
|
2016-09-01 15:42:38 +00:00
|
|
|
|
lda #S.STAT
|
|
|
|
|
adc BufSize
|
|
|
|
|
sta BufSize
|
|
|
|
|
lda /S.STAT
|
|
|
|
|
adc BufSize+1
|
|
|
|
|
sta BufSize+1
|
|
|
|
|
|
|
|
|
|
inx
|
|
|
|
|
|
|
|
|
|
.2 tya
|
2016-08-29 15:12:04 +00:00
|
|
|
|
clc
|
2016-09-01 15:42:38 +00:00
|
|
|
|
adc #16
|
|
|
|
|
tay
|
|
|
|
|
bcc .1
|
|
|
|
|
|
|
|
|
|
txa
|
|
|
|
|
beq .99 A=0, CS no more DIRENT
|
|
|
|
|
|
|
|
|
|
>PUSHW BufSize
|
|
|
|
|
>PUSHBI 0
|
|
|
|
|
jsr S.GetMem
|
|
|
|
|
bcs .98
|
|
|
|
|
>STYA ZPQuickPtr3
|
|
|
|
|
|
|
|
|
|
.98 pha
|
|
|
|
|
lda hONLINE
|
|
|
|
|
jsr S.FreeMemA
|
|
|
|
|
pla
|
|
|
|
|
sec
|
|
|
|
|
.99 rts
|
2016-08-24 15:42:33 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
* In :
|
2016-08-29 15:12:04 +00:00
|
|
|
|
* A = hDIR
|
2016-08-24 15:42:33 +00:00
|
|
|
|
*--------------------------------------
|
2016-08-29 15:12:04 +00:00
|
|
|
|
S.CLOSEDIRA jsr S.PFTCHECKDIRA
|
2016-09-01 15:42:38 +00:00
|
|
|
|
sta hDIR
|
|
|
|
|
jsr S.GetMemPtrA
|
|
|
|
|
>STYA ZPQuickPtr1
|
|
|
|
|
|
|
|
|
|
S.CLOSEDIRA.1 ldy #S.DIR.PRODOS.REF
|
|
|
|
|
lda (ZPQuickPtr1),y
|
|
|
|
|
beq .1
|
|
|
|
|
sta MLICALL.PARAMS+1
|
|
|
|
|
>MLICALL MLICLOSE
|
|
|
|
|
|
|
|
|
|
.1 ldy #S.DIR.PRODOS.IOBUF
|
|
|
|
|
lda (ZPQuickPtr1),y
|
|
|
|
|
beq .2
|
|
|
|
|
jsr S.FreeMemA
|
|
|
|
|
|
|
|
|
|
.2 lda hDIR
|
|
|
|
|
jsr S.FreeMemA
|
2016-08-29 15:12:04 +00:00
|
|
|
|
clc
|
2016-08-24 15:42:33 +00:00
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2016-09-01 15:42:38 +00:00
|
|
|
|
hONLINE .BS 1
|
|
|
|
|
BufSize .BS 2
|
2016-08-24 15:42:33 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
MAN
|
|
|
|
|
SAVE SYS/KERNEL.S.DIR
|
|
|
|
|
LOAD SYS/KERNEL.S
|
|
|
|
|
ASM
|