2016-08-24 15:42:33 +00:00
|
|
|
|
PR#3
|
|
|
|
|
PREFIX /A2OSX.SRC
|
|
|
|
|
NEW
|
|
|
|
|
INC 1
|
|
|
|
|
AUTO 6
|
|
|
|
|
.LIST OFF
|
2016-10-24 15:54:43 +00:00
|
|
|
|
*/--------------------------------------
|
|
|
|
|
* #OpenDirYA
|
|
|
|
|
* ##In:
|
2016-08-24 15:42:33 +00:00
|
|
|
|
* Y,A = PATH (PSTR)
|
2016-10-26 20:51:06 +00:00
|
|
|
|
* ##Out:
|
2016-10-24 15:54:43 +00:00
|
|
|
|
* CC : success
|
2016-10-26 20:51:06 +00:00
|
|
|
|
* A = hDIR
|
2016-10-24 15:54:43 +00:00
|
|
|
|
* CS : error
|
|
|
|
|
* A = EC
|
|
|
|
|
*\--------------------------------------
|
|
|
|
|
K.OpenDirYA jsr PFT.CheckPathYA
|
2016-09-01 15:42:38 +00:00
|
|
|
|
>STYA ZPQuickPtr2
|
2016-10-13 16:00:27 +00:00
|
|
|
|
>STYA MLICALL.PARAMS+1 For GETFILEINFO,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
|
2016-09-21 15:20:37 +00:00
|
|
|
|
jsr K.GetMem
|
2016-09-01 15:42:38 +00:00
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
>STYA ZPQuickPtr1
|
2016-10-26 20:51:06 +00:00
|
|
|
|
stx K.ReadDirA.hDir
|
2016-09-01 15:42:38 +00:00
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
2016-10-13 16:00:27 +00:00
|
|
|
|
.7 >MLICALL MLIGETFILEINFO
|
|
|
|
|
bcs .98 file/dir does not exists....quit
|
|
|
|
|
lda MLICALL.PARAMS+4
|
|
|
|
|
cmp #$0F Directory ?
|
|
|
|
|
bne .98
|
|
|
|
|
|
|
|
|
|
>PUSHWI 1024 get a ProDOS IOBUF
|
2016-09-01 15:42:38 +00:00
|
|
|
|
>PUSHBI S.MEM.F.ALIGN+S.MEM.F.NOMOVE
|
2016-09-21 15:20:37 +00:00
|
|
|
|
jsr K.GetMem
|
2016-09-01 15:42:38 +00:00
|
|
|
|
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-10-26 20:51:06 +00:00
|
|
|
|
.8 lda K.ReadDirA.hDir
|
2016-08-24 15:42:33 +00:00
|
|
|
|
clc
|
|
|
|
|
rts
|
2016-09-01 15:42:38 +00:00
|
|
|
|
|
|
|
|
|
.98 pha save MLI error
|
2016-10-26 20:51:06 +00:00
|
|
|
|
jsr K.CloseDirA.1
|
2016-09-01 15:42:38 +00:00
|
|
|
|
pla get back MLI error
|
|
|
|
|
sec
|
|
|
|
|
.99 rts
|
2016-10-24 15:54:43 +00:00
|
|
|
|
*/--------------------------------------
|
|
|
|
|
* #ReadDirA
|
|
|
|
|
* ##In:
|
2016-08-29 15:12:04 +00:00
|
|
|
|
* A = hDIR
|
2016-10-26 20:51:06 +00:00
|
|
|
|
* ##Out:
|
2016-10-24 15:54:43 +00:00
|
|
|
|
* CC : success
|
|
|
|
|
* X = hDIRENT
|
|
|
|
|
* Y,A = PTR to S.DIRENT
|
|
|
|
|
* CS : error
|
|
|
|
|
* A = EC
|
|
|
|
|
* note : A = 0 means no more entry
|
|
|
|
|
*\--------------------------------------
|
2016-10-26 20:51:06 +00:00
|
|
|
|
K.ReadDirA.hDir .BS 1
|
|
|
|
|
K.ReadDirA.hMem .BS 1
|
|
|
|
|
K.ReadDirA.hDIRENT .BS 1
|
|
|
|
|
K.ReadDirA.BufSize .BS 2
|
|
|
|
|
K.ReadDirA.ECIB .BS 1
|
2016-10-14 15:39:49 +00:00
|
|
|
|
*--S.DIR Cache ------------------------
|
2016-10-26 20:51:06 +00:00
|
|
|
|
K.ReadDirA.EL .BS 1
|
|
|
|
|
K.ReadDirA.EPB .BS 1
|
|
|
|
|
K.ReadDirA.EC .BS 2
|
2016-09-23 15:19:22 +00:00
|
|
|
|
*--------------------------------------
|
2016-10-24 15:54:43 +00:00
|
|
|
|
K.ReadDirA jsr PFT.CheckDirA
|
2016-10-26 20:51:06 +00:00
|
|
|
|
sta K.ReadDirA.hDir
|
2016-09-21 15:20:37 +00:00
|
|
|
|
jsr K.GetMemPtrA
|
2016-09-01 15:42:38 +00:00
|
|
|
|
>STYA ZPQuickPtr1
|
2016-09-02 15:14:24 +00:00
|
|
|
|
|
|
|
|
|
ldy #S.DIR.F
|
|
|
|
|
lda (ZPQuickPtr1),y
|
|
|
|
|
and #S.DIR.F.NOMORE
|
|
|
|
|
bne .9
|
|
|
|
|
|
2016-09-01 15:42:38 +00:00
|
|
|
|
ldy #S.DIR.PRODOS.REF
|
|
|
|
|
lda (ZPQuickPtr1),y
|
2016-10-26 20:51:06 +00:00
|
|
|
|
beq K.ReadDirA.ROOT
|
|
|
|
|
jmp K.ReadDirA.DIR
|
2016-09-01 15:42:38 +00:00
|
|
|
|
|
2016-09-02 15:14:24 +00:00
|
|
|
|
.9 lda #0
|
|
|
|
|
sec CS,A=0 no more entry
|
2016-09-23 15:19:22 +00:00
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2016-10-26 20:51:06 +00:00
|
|
|
|
K.ReadDirA.ROOT stz MLICALL.PARAMS+1 All Volumes
|
2016-09-23 15:19:22 +00:00
|
|
|
|
|
2016-10-18 15:56:06 +00:00
|
|
|
|
>LDYAI KrnBuf256
|
2016-09-01 15:42:38 +00:00
|
|
|
|
>STYA MLICALL.PARAMS+2
|
2016-10-18 15:56:06 +00:00
|
|
|
|
>STYA ZPQuickPtr2
|
2016-09-01 15:42:38 +00:00
|
|
|
|
>MLICALL MLIONLINE
|
2016-09-23 15:19:22 +00:00
|
|
|
|
bcc .10
|
2016-09-01 15:42:38 +00:00
|
|
|
|
|
2016-10-18 15:56:06 +00:00
|
|
|
|
|
2016-09-23 15:19:22 +00:00
|
|
|
|
sec
|
|
|
|
|
.99 rts
|
|
|
|
|
* pass #1 compute BufSize.....
|
|
|
|
|
.10 lda #1 +1 for Ending 0
|
2016-10-26 20:51:06 +00:00
|
|
|
|
sta K.ReadDirA.BufSize
|
|
|
|
|
stz K.ReadDirA.BufSize+1
|
2016-09-23 15:19:22 +00:00
|
|
|
|
|
2016-10-26 20:51:06 +00:00
|
|
|
|
stz K.ReadDirA.EC
|
2016-09-01 15:42:38 +00:00
|
|
|
|
|
|
|
|
|
ldy #0
|
|
|
|
|
|
2016-09-23 15:19:22 +00:00
|
|
|
|
.1 lda (ZPQuickPtr2),y
|
2016-09-01 15:42:38 +00:00
|
|
|
|
and #$0F
|
|
|
|
|
beq .2
|
|
|
|
|
|
2016-10-26 20:51:06 +00:00
|
|
|
|
inc K.ReadDirA.EC increase entry count
|
2016-09-23 15:19:22 +00:00
|
|
|
|
|
2016-09-02 15:14:24 +00:00
|
|
|
|
sec Add Filelen +1
|
2016-09-23 15:19:22 +00:00
|
|
|
|
adc #S.STAT will ends with CC
|
2016-10-26 20:51:06 +00:00
|
|
|
|
adc K.ReadDirA.BufSize
|
|
|
|
|
sta K.ReadDirA.BufSize
|
2016-09-23 15:19:22 +00:00
|
|
|
|
bcc .2
|
2016-10-26 20:51:06 +00:00
|
|
|
|
inc K.ReadDirA.BufSize+1
|
2016-09-01 15:42:38 +00:00
|
|
|
|
|
|
|
|
|
.2 tya
|
2016-08-29 15:12:04 +00:00
|
|
|
|
clc
|
2016-09-01 15:42:38 +00:00
|
|
|
|
adc #16
|
|
|
|
|
tay
|
2016-09-02 15:14:24 +00:00
|
|
|
|
bcc .1 loop until 256 bytes scanned
|
2016-09-01 15:42:38 +00:00
|
|
|
|
|
2016-09-23 15:19:22 +00:00
|
|
|
|
* pass #2 Fill Buffer...
|
2016-10-26 20:51:06 +00:00
|
|
|
|
jsr K.ReadDirA.GetBuf
|
2016-10-18 15:56:06 +00:00
|
|
|
|
bcs .99
|
2016-09-02 06:09:44 +00:00
|
|
|
|
|
2016-09-02 15:14:24 +00:00
|
|
|
|
.3 lda (ZPQuickPtr2)
|
2016-09-02 06:09:44 +00:00
|
|
|
|
and #$0F
|
2016-09-02 15:14:24 +00:00
|
|
|
|
beq .88
|
2016-09-23 15:19:22 +00:00
|
|
|
|
|
2016-09-02 15:14:24 +00:00
|
|
|
|
tax
|
2016-10-26 20:51:06 +00:00
|
|
|
|
jsr K.ReadDirA.AddToBuf
|
2016-10-30 07:58:08 +00:00
|
|
|
|
inc
|
|
|
|
|
sta KrnOut256
|
2016-09-23 15:19:22 +00:00
|
|
|
|
lda #'/'
|
2016-10-30 07:58:08 +00:00
|
|
|
|
sta KrnOut256+1
|
2016-09-23 15:19:22 +00:00
|
|
|
|
ldy #1
|
2016-09-02 06:09:44 +00:00
|
|
|
|
|
2016-09-02 15:14:24 +00:00
|
|
|
|
.4 lda (ZPQuickPtr2),y
|
2016-10-30 07:58:08 +00:00
|
|
|
|
sta KrnOut256+1,y
|
2016-10-26 20:51:06 +00:00
|
|
|
|
jsr K.ReadDirA.AddToBuf
|
2016-09-23 15:19:22 +00:00
|
|
|
|
iny
|
|
|
|
|
dex
|
2016-09-02 15:14:24 +00:00
|
|
|
|
bne .4
|
2016-09-01 15:42:38 +00:00
|
|
|
|
|
2016-10-26 20:51:06 +00:00
|
|
|
|
jsr K.ReadDirA.ClrStat
|
2016-10-13 16:00:27 +00:00
|
|
|
|
|
|
|
|
|
lda (ZPQuickPtr2)
|
|
|
|
|
|
|
|
|
|
asl DRIVE in Carry
|
|
|
|
|
pha
|
|
|
|
|
lda #0
|
|
|
|
|
rol
|
|
|
|
|
inc
|
2016-10-18 15:56:06 +00:00
|
|
|
|
sta KrnSTAT+S.STAT.PRODOS.DRIVE
|
2016-10-13 16:00:27 +00:00
|
|
|
|
pla
|
|
|
|
|
lsr CC
|
|
|
|
|
lsr
|
|
|
|
|
lsr
|
|
|
|
|
lsr
|
|
|
|
|
lsr
|
2016-10-18 15:56:06 +00:00
|
|
|
|
sta KrnSTAT+S.STAT.PRODOS.SLOT
|
2016-10-13 16:00:27 +00:00
|
|
|
|
|
2016-10-30 07:58:08 +00:00
|
|
|
|
>LDYAI KrnOut256
|
|
|
|
|
>STYA MLICALL.PARAMS+1
|
|
|
|
|
|
2016-09-02 15:14:24 +00:00
|
|
|
|
>MLICALL MLIGETFILEINFO
|
2016-10-18 15:56:06 +00:00
|
|
|
|
sta KrnSTAT+S.STAT.PRODOS.DEVSTATUS
|
2016-10-13 16:00:27 +00:00
|
|
|
|
|
2016-09-02 15:14:24 +00:00
|
|
|
|
bcs .80
|
2016-10-13 16:00:27 +00:00
|
|
|
|
>LDYA MLICALL.PARAMS+5 AUXTYPE=TOTAL BLOCKS
|
2016-10-18 15:56:06 +00:00
|
|
|
|
>STYA KrnSTAT+S.STAT.PRODOS.DEVBLOCKS
|
2016-10-13 16:00:27 +00:00
|
|
|
|
>LDYA MLICALL.PARAMS+8
|
2016-10-18 15:56:06 +00:00
|
|
|
|
>STYA KrnSTAT+S.STAT.BLOCKS
|
2016-09-02 15:14:24 +00:00
|
|
|
|
|
2016-10-26 20:51:06 +00:00
|
|
|
|
.80 jsr K.ReadDirA.ADDSTAT
|
2016-09-02 15:14:24 +00:00
|
|
|
|
|
|
|
|
|
.88 lda ZPQuickPtr2
|
|
|
|
|
clc
|
|
|
|
|
adc #16
|
|
|
|
|
sta ZPQuickPtr2
|
|
|
|
|
bcc .89
|
|
|
|
|
inc ZPQuickPtr2+1
|
2016-10-26 20:51:06 +00:00
|
|
|
|
.89 dec K.ReadDirA.EC
|
2016-09-02 15:14:24 +00:00
|
|
|
|
bne .3
|
|
|
|
|
|
2016-09-23 15:19:22 +00:00
|
|
|
|
* lda #0 done by S.MEM.F.INIT0
|
|
|
|
|
* sta (ZPQuickPtr4) Ending 0
|
2016-09-02 15:14:24 +00:00
|
|
|
|
|
|
|
|
|
ldy #S.DIR.F
|
|
|
|
|
lda #S.DIR.F.NOMORE
|
|
|
|
|
sta (ZPQuickPtr1),y
|
2016-10-18 15:56:06 +00:00
|
|
|
|
|
2016-10-26 20:51:06 +00:00
|
|
|
|
lda K.ReadDirA.hDIRENT
|
2016-09-23 15:19:22 +00:00
|
|
|
|
tax
|
|
|
|
|
jmp K.GetMemPtrA
|
2016-09-20 06:17:20 +00:00
|
|
|
|
*--------------------------------------
|
2016-10-26 20:51:06 +00:00
|
|
|
|
K.ReadDirA.DIR sta MLICALL.PARAMS+1 A=#S.DIR.PRODOS.REF
|
2016-09-02 06:09:44 +00:00
|
|
|
|
|
2016-09-20 06:17:20 +00:00
|
|
|
|
>PUSHWI 512 Get a 512 bytes buffer for reading dir...
|
|
|
|
|
>PUSHBI 0
|
2016-09-21 15:20:37 +00:00
|
|
|
|
jsr K.GetMem
|
2016-09-20 06:17:20 +00:00
|
|
|
|
bcs .99
|
2016-10-26 20:51:06 +00:00
|
|
|
|
stx K.ReadDirA.hMem
|
2016-09-02 15:14:24 +00:00
|
|
|
|
|
2016-09-20 06:17:20 +00:00
|
|
|
|
>STYA MLICALL.PARAMS+2 For reading
|
|
|
|
|
|
|
|
|
|
pha
|
|
|
|
|
tya
|
2016-09-21 15:20:37 +00:00
|
|
|
|
* clc CC from K.GetMem
|
2016-09-20 06:17:20 +00:00
|
|
|
|
adc #4 Skip 4 bytes linked list
|
2016-09-23 15:19:22 +00:00
|
|
|
|
sta ZPQuickPtr2 PTR to Buffer for PASS #1
|
|
|
|
|
sta ZPQuickPtr3 PTR to Buffer for PASS #2
|
|
|
|
|
|
2016-09-20 06:17:20 +00:00
|
|
|
|
pla
|
|
|
|
|
adc #0
|
2016-09-23 15:19:22 +00:00
|
|
|
|
sta ZPQuickPtr2+1 PTR to Buffer for PASS #1
|
|
|
|
|
sta ZPQuickPtr3+1 PTR to Buffer for PASS #2
|
2016-09-20 06:17:20 +00:00
|
|
|
|
|
|
|
|
|
>LDYAI 512
|
|
|
|
|
>STYA MLICALL.PARAMS+4
|
|
|
|
|
>MLICALL MLIREAD Read A block from directory
|
|
|
|
|
bcs .98
|
|
|
|
|
|
|
|
|
|
ldy #S.DIR.PRODOS.EL Check if first run....
|
|
|
|
|
lda (ZPQuickPtr1),y
|
|
|
|
|
bne .2 no, we have all we need....
|
|
|
|
|
|
2016-09-23 06:00:00 +00:00
|
|
|
|
ldy #$1f+3
|
|
|
|
|
ldx #3
|
|
|
|
|
|
2016-10-26 20:51:06 +00:00
|
|
|
|
.1 lda (ZPQuickPtr2),y Get K.ReadDirA.EL.... From Block
|
|
|
|
|
sta K.ReadDirA.EL,x
|
2016-09-20 06:17:20 +00:00
|
|
|
|
dey
|
2016-09-23 06:00:00 +00:00
|
|
|
|
dex
|
2016-09-20 06:17:20 +00:00
|
|
|
|
bpl .1
|
2016-10-24 15:54:43 +00:00
|
|
|
|
|
2016-10-26 20:51:06 +00:00
|
|
|
|
inc K.ReadDirA.EC Add one to EC because we include VOL/DIR Header
|
2016-10-24 15:54:43 +00:00
|
|
|
|
bne .4
|
2016-10-26 20:51:06 +00:00
|
|
|
|
inc K.ReadDirA.EC+1 ...and ProDOS does NOT include header entry in EC
|
2016-09-20 06:17:20 +00:00
|
|
|
|
bra .4
|
|
|
|
|
|
2016-10-26 20:51:06 +00:00
|
|
|
|
.98 jsr K.ReadDirA.CLN
|
2016-09-20 06:17:20 +00:00
|
|
|
|
sec
|
|
|
|
|
.99 rts
|
|
|
|
|
|
|
|
|
|
.2 ldy #S.DIR.PRODOS.EL+3
|
2016-09-22 15:46:01 +00:00
|
|
|
|
ldx #3
|
2016-09-20 06:17:20 +00:00
|
|
|
|
|
2016-09-22 15:46:01 +00:00
|
|
|
|
.3 lda (ZPQuickPtr1),y get this session parameters from S.DIR
|
2016-10-26 20:51:06 +00:00
|
|
|
|
sta K.ReadDirA.EL,x
|
2016-09-20 06:17:20 +00:00
|
|
|
|
dey
|
2016-09-22 15:46:01 +00:00
|
|
|
|
dex
|
2016-09-20 06:17:20 +00:00
|
|
|
|
bpl .3
|
|
|
|
|
|
2016-10-30 18:17:43 +00:00
|
|
|
|
.4 lda K.ReadDirA.EC
|
|
|
|
|
eor #$ff
|
|
|
|
|
tax
|
2016-09-20 06:17:20 +00:00
|
|
|
|
|
2016-10-26 20:51:06 +00:00
|
|
|
|
lda K.ReadDirA.EC+1
|
2016-10-30 18:17:43 +00:00
|
|
|
|
eor #$ff
|
|
|
|
|
tay
|
2016-10-24 15:54:43 +00:00
|
|
|
|
|
2016-10-30 18:17:43 +00:00
|
|
|
|
inx Any entry remaining ?
|
|
|
|
|
bne .5
|
|
|
|
|
iny
|
|
|
|
|
beq .98 no...exit
|
|
|
|
|
|
2016-10-24 15:54:43 +00:00
|
|
|
|
* pass #1 compute BufSize...
|
2016-10-30 18:17:43 +00:00
|
|
|
|
.5 lda K.ReadDirA.EPB
|
|
|
|
|
sta K.ReadDirA.ECIB
|
2016-09-20 06:17:20 +00:00
|
|
|
|
|
|
|
|
|
lda #1 For Ending 0
|
2016-10-26 20:51:06 +00:00
|
|
|
|
sta K.ReadDirA.BufSize
|
|
|
|
|
stz K.ReadDirA.BufSize+1
|
2016-09-20 06:17:20 +00:00
|
|
|
|
|
2016-10-26 20:51:06 +00:00
|
|
|
|
K.ReadDirA.DIR1 lda (ZPQuickPtr2) X = EntryCount In This Block
|
2016-09-20 06:17:20 +00:00
|
|
|
|
beq .7 Free slot....goto next
|
|
|
|
|
|
2016-09-23 15:19:22 +00:00
|
|
|
|
and #$F0 get storage_type
|
|
|
|
|
cmp #$F0 Volume header ?
|
|
|
|
|
beq .1
|
|
|
|
|
|
|
|
|
|
cmp #$E0 directory header ?
|
|
|
|
|
beq .2
|
|
|
|
|
|
2016-10-30 18:17:43 +00:00
|
|
|
|
lda (ZPQuickPtr2) regular DIR or File, get LEN
|
2016-09-23 15:19:22 +00:00
|
|
|
|
|
2016-10-24 15:54:43 +00:00
|
|
|
|
and #$F compute filename len
|
2016-09-23 15:19:22 +00:00
|
|
|
|
sec add "#<filename>" + S.STAT
|
|
|
|
|
|
|
|
|
|
adc #S.STAT
|
|
|
|
|
.HS 2C bit abs
|
|
|
|
|
|
|
|
|
|
.1 lda #2+S.STAT add "1." string + S.STAT
|
|
|
|
|
.HS 2C bit abs
|
|
|
|
|
|
|
|
|
|
.2 lda #2+S.STAT+3+S.STAT add "1." + S.STAT + "2.." + S.STAT...
|
2016-09-20 06:17:20 +00:00
|
|
|
|
|
2016-09-23 15:19:22 +00:00
|
|
|
|
clc
|
2016-10-26 20:51:06 +00:00
|
|
|
|
adc K.ReadDirA.BufSize
|
|
|
|
|
sta K.ReadDirA.BufSize
|
2016-10-30 18:17:43 +00:00
|
|
|
|
bcc .3
|
2016-10-26 20:51:06 +00:00
|
|
|
|
inc K.ReadDirA.BufSize+1
|
2016-09-23 15:19:22 +00:00
|
|
|
|
|
2016-10-30 18:17:43 +00:00
|
|
|
|
.3 inx
|
|
|
|
|
bne .7
|
|
|
|
|
iny
|
|
|
|
|
bra K.ReadDirA.DIR2 we reached last entry in whole DIR
|
|
|
|
|
|
2016-09-20 06:17:20 +00:00
|
|
|
|
.7 lda ZPQuickPtr2
|
|
|
|
|
clc
|
2016-10-26 20:51:06 +00:00
|
|
|
|
adc K.ReadDirA.EL
|
2016-09-20 06:17:20 +00:00
|
|
|
|
sta ZPQuickPtr2
|
2016-09-23 15:19:22 +00:00
|
|
|
|
bcc .8
|
2016-09-20 06:17:20 +00:00
|
|
|
|
inc ZPQuickPtr2+1
|
|
|
|
|
|
2016-10-30 18:17:43 +00:00
|
|
|
|
.8 dec K.ReadDirA.ECIB
|
2016-10-26 20:51:06 +00:00
|
|
|
|
bne K.ReadDirA.DIR1
|
2016-09-20 06:17:20 +00:00
|
|
|
|
|
2016-10-14 15:39:49 +00:00
|
|
|
|
* pass #2 Fill Buffer...(ZPQuickPtr1 & Ptr2 can now be trashed)
|
2016-10-26 20:51:06 +00:00
|
|
|
|
K.ReadDirA.DIR2 jsr K.ReadDirA.GetBuf
|
2016-10-30 18:17:43 +00:00
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
lda K.ReadDirA.EPB
|
|
|
|
|
sta K.ReadDirA.ECIB
|
2016-09-20 06:17:20 +00:00
|
|
|
|
|
2016-10-30 18:17:43 +00:00
|
|
|
|
.1 lda (ZPQuickPtr3)
|
|
|
|
|
beq .7 Empty slot, skip
|
2016-10-14 15:39:49 +00:00
|
|
|
|
|
2016-09-23 15:19:22 +00:00
|
|
|
|
and #$F0
|
|
|
|
|
cmp #$F0 Vol Header ?
|
2016-10-30 18:17:43 +00:00
|
|
|
|
bne .2
|
2016-10-26 20:51:06 +00:00
|
|
|
|
jsr K.ReadDirA.ADD.
|
2016-10-30 18:17:43 +00:00
|
|
|
|
bra .6
|
2016-09-23 15:19:22 +00:00
|
|
|
|
|
2016-10-30 18:17:43 +00:00
|
|
|
|
.2 cmp #$E0 Dir Header ?
|
|
|
|
|
bne .3
|
2016-10-26 20:51:06 +00:00
|
|
|
|
jsr K.ReadDirA.ADD.
|
|
|
|
|
jsr K.ReadDirA.ADD..
|
2016-10-30 18:17:43 +00:00
|
|
|
|
bra .6
|
2016-09-23 15:19:22 +00:00
|
|
|
|
|
2016-10-30 18:17:43 +00:00
|
|
|
|
.3 jsr K.ReadDirA.AddFNToBuf
|
2016-10-26 20:51:06 +00:00
|
|
|
|
jsr K.ReadDirA.ClrStat
|
2016-09-20 06:17:20 +00:00
|
|
|
|
|
2016-10-14 15:39:49 +00:00
|
|
|
|
lda (ZPQuickPtr3)
|
2016-09-23 15:19:22 +00:00
|
|
|
|
and #$F0
|
|
|
|
|
cmp #$D0 Directory ?
|
2016-10-30 18:17:43 +00:00
|
|
|
|
bne .5
|
2016-10-26 20:51:06 +00:00
|
|
|
|
jsr K.ReadDirA.ADDD
|
2016-10-30 18:17:43 +00:00
|
|
|
|
bra .6
|
|
|
|
|
|
|
|
|
|
.5 jsr K.ReadDirA.ADDF
|
|
|
|
|
|
|
|
|
|
.6 lda K.ReadDirA.EC decrease global counter...
|
|
|
|
|
sec
|
|
|
|
|
sbc #1
|
|
|
|
|
sta K.ReadDirA.EC
|
|
|
|
|
|
|
|
|
|
lda K.ReadDirA.EC+1
|
|
|
|
|
sbc #0
|
|
|
|
|
sta K.ReadDirA.EC+1
|
|
|
|
|
ora K.ReadDirA.EC
|
|
|
|
|
beq .8 0! no more files in DIR
|
2016-09-23 15:19:22 +00:00
|
|
|
|
|
2016-10-30 18:17:43 +00:00
|
|
|
|
.7 dec K.ReadDirA.ECIB 0! no more file in block
|
|
|
|
|
beq .8
|
2016-09-20 06:17:20 +00:00
|
|
|
|
|
2016-10-30 18:17:43 +00:00
|
|
|
|
lda ZPQuickPtr3
|
2016-09-20 06:17:20 +00:00
|
|
|
|
clc
|
2016-10-26 20:51:06 +00:00
|
|
|
|
adc K.ReadDirA.EL
|
2016-09-20 06:17:20 +00:00
|
|
|
|
sta ZPQuickPtr3
|
2016-10-30 18:17:43 +00:00
|
|
|
|
bcc .1
|
2016-09-20 06:17:20 +00:00
|
|
|
|
inc ZPQuickPtr3+1
|
2016-10-30 18:17:43 +00:00
|
|
|
|
bra .1
|
|
|
|
|
|
|
|
|
|
.9 jsr K.ReadDirA.CLN
|
|
|
|
|
sec
|
|
|
|
|
rts
|
2016-09-20 06:17:20 +00:00
|
|
|
|
|
2016-10-30 18:17:43 +00:00
|
|
|
|
.8
|
2016-09-20 06:17:20 +00:00
|
|
|
|
* lda #0 S.MEM.F.INIT0 already did this
|
|
|
|
|
* sta (ZPQuickPtr4) Ending 0
|
|
|
|
|
|
2016-10-26 20:51:06 +00:00
|
|
|
|
lda K.ReadDirA.hDir Restore ZPQuickPtr1 trashed by STR API calls
|
2016-10-14 15:39:49 +00:00
|
|
|
|
jsr K.GetMemPtrA
|
|
|
|
|
>STYA ZPQuickPtr1
|
|
|
|
|
|
2016-09-22 15:46:01 +00:00
|
|
|
|
ldx #3
|
2016-09-20 06:17:20 +00:00
|
|
|
|
ldy #S.DIR.PRODOS.EL+3
|
2016-09-22 15:46:01 +00:00
|
|
|
|
|
2016-10-30 18:17:43 +00:00
|
|
|
|
.81 lda K.ReadDirA.EL,x Store back this session prameters to S.DIR
|
2016-09-20 06:17:20 +00:00
|
|
|
|
sta (ZPQuickPtr1),y
|
|
|
|
|
dey
|
2016-09-22 15:46:01 +00:00
|
|
|
|
dex
|
2016-10-30 18:17:43 +00:00
|
|
|
|
bpl .81
|
2016-09-20 06:17:20 +00:00
|
|
|
|
|
2016-10-26 20:51:06 +00:00
|
|
|
|
jsr K.ReadDirA.CLN Discard READBUFFER
|
2016-09-20 06:17:20 +00:00
|
|
|
|
|
2016-10-26 20:51:06 +00:00
|
|
|
|
lda K.ReadDirA.hDIRENT
|
2016-09-20 06:17:20 +00:00
|
|
|
|
tax
|
2016-09-23 15:19:22 +00:00
|
|
|
|
jmp K.GetMemPtrA
|
2016-09-20 06:17:20 +00:00
|
|
|
|
*--------------------------------------
|
2016-10-26 20:51:06 +00:00
|
|
|
|
K.ReadDirA.CLN pha
|
|
|
|
|
lda K.ReadDirA.hMem
|
2016-09-23 15:19:22 +00:00
|
|
|
|
jsr K.FreeMemA
|
|
|
|
|
pla
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2016-10-26 20:51:06 +00:00
|
|
|
|
K.ReadDirA.GetBuf
|
|
|
|
|
>PUSHW K.ReadDirA.BufSize Get a BufSize bytes buffer for storing results
|
2016-09-23 15:19:22 +00:00
|
|
|
|
>PUSHBI S.MEM.F.INIT0 make sure 0 filled
|
|
|
|
|
jsr K.GetMem
|
|
|
|
|
bcs .9
|
2016-10-26 20:51:06 +00:00
|
|
|
|
stx K.ReadDirA.hDIRENT
|
2016-09-23 15:19:22 +00:00
|
|
|
|
>STYA ZPQuickPtr4
|
|
|
|
|
.9 rts
|
|
|
|
|
*--------------------------------------
|
2016-10-26 20:51:06 +00:00
|
|
|
|
K.ReadDirA.ADD. ldx #1 filename="1."
|
2016-10-14 06:23:05 +00:00
|
|
|
|
.HS 2C bit abs
|
2016-10-26 20:51:06 +00:00
|
|
|
|
K.ReadDirA.ADD..
|
2016-10-14 06:23:05 +00:00
|
|
|
|
ldx #2 filename="2.."
|
|
|
|
|
txa
|
2016-10-26 20:51:06 +00:00
|
|
|
|
jsr K.ReadDirA.AddToBuf Add LEN
|
2016-10-14 15:39:49 +00:00
|
|
|
|
lda #'.'
|
2016-10-14 06:23:05 +00:00
|
|
|
|
|
2016-10-26 20:51:06 +00:00
|
|
|
|
.1 jsr K.ReadDirA.AddToBuf Add X dot(s)
|
2016-10-14 06:23:05 +00:00
|
|
|
|
dex
|
|
|
|
|
bne .1
|
2016-09-20 06:17:20 +00:00
|
|
|
|
|
2016-10-26 20:51:06 +00:00
|
|
|
|
jsr K.ReadDirA.ClrStat
|
2016-09-23 15:19:22 +00:00
|
|
|
|
|
2016-10-14 06:23:05 +00:00
|
|
|
|
* ldy #$25 total_blocks
|
|
|
|
|
* lda (ZPQuickPtr3),y
|
2016-10-18 15:56:06 +00:00
|
|
|
|
* sta KrnSTAT+S.STAT.BLOCKS
|
2016-10-14 06:23:05 +00:00
|
|
|
|
* iny
|
|
|
|
|
* lda (ZPQuickPtr3),y
|
2016-10-18 15:56:06 +00:00
|
|
|
|
* sta KrnSTAT+S.STAT.BLOCKS+1
|
2016-09-23 15:19:22 +00:00
|
|
|
|
*--------------------------------------
|
2016-10-26 20:51:06 +00:00
|
|
|
|
K.ReadDirA.ADDD lda #$0F
|
2016-10-18 15:56:06 +00:00
|
|
|
|
sta KrnSTAT+S.STAT.PRODOS.TYPE
|
2016-09-26 06:18:51 +00:00
|
|
|
|
|
2016-10-18 15:56:06 +00:00
|
|
|
|
lda /S.STAT.MODE.DIR
|
|
|
|
|
sta KrnSTAT+S.STAT.MODE+1
|
2016-10-26 20:51:06 +00:00
|
|
|
|
bra K.ReadDirA.AddAccess
|
2016-09-23 15:19:22 +00:00
|
|
|
|
*--------------------------------------
|
2016-10-26 20:51:06 +00:00
|
|
|
|
K.ReadDirA.ADDF lda /S.STAT.MODE.REG
|
2016-10-18 15:56:06 +00:00
|
|
|
|
sta KrnSTAT+S.STAT.MODE+1
|
|
|
|
|
|
|
|
|
|
ldx #ADDF.DST-ADDF.SRC
|
|
|
|
|
|
2016-10-14 06:23:05 +00:00
|
|
|
|
.1 ldy ADDF.SRC-1,x
|
2016-09-23 15:19:22 +00:00
|
|
|
|
lda (ZPQuickPtr3),y
|
2016-10-14 06:23:05 +00:00
|
|
|
|
ldy ADDF.DST-1,x
|
2016-10-18 15:56:06 +00:00
|
|
|
|
sta KrnSTAT,y
|
2016-10-14 06:23:05 +00:00
|
|
|
|
dex
|
|
|
|
|
bpl .1
|
2016-10-18 15:56:06 +00:00
|
|
|
|
*--------------------------------------
|
2016-10-26 20:51:06 +00:00
|
|
|
|
K.ReadDirA.AddAccess
|
2016-10-18 15:56:06 +00:00
|
|
|
|
ldy #$1E ProDOS Access
|
|
|
|
|
lda (ZPQuickPtr3),y
|
|
|
|
|
|
|
|
|
|
ldx #0
|
|
|
|
|
bit #$01 ProDOS R
|
|
|
|
|
beq .2
|
|
|
|
|
ldx #S.STAT.MODE.RO
|
|
|
|
|
|
|
|
|
|
.2 bit #$C2 ProDOS D,Rn,W
|
|
|
|
|
beq .3
|
|
|
|
|
txa
|
|
|
|
|
ora #S.STAT.MODE.XO+S.STAT.MODE.WO
|
|
|
|
|
.HS 89 bit imm to skip txa
|
|
|
|
|
|
|
|
|
|
.3 txa
|
|
|
|
|
sta KrnSTAT+S.STAT.MODE
|
|
|
|
|
*--------------------------------------
|
2016-10-26 20:51:06 +00:00
|
|
|
|
K.ReadDirA.AddTime
|
2016-10-18 15:56:06 +00:00
|
|
|
|
>PUSHWI KrnSTAT+S.STAT.CTIME
|
2016-10-14 06:23:05 +00:00
|
|
|
|
lda #$18 creation Date/time
|
2016-10-26 20:51:06 +00:00
|
|
|
|
jsr K.ReadDirA.ConvertTime
|
2016-09-23 15:19:22 +00:00
|
|
|
|
|
2016-10-18 15:56:06 +00:00
|
|
|
|
>PUSHWI KrnSTAT+S.STAT.MTIME
|
2016-10-14 06:23:05 +00:00
|
|
|
|
lda #$21 mod Date/time
|
2016-10-26 20:51:06 +00:00
|
|
|
|
jsr K.ReadDirA.ConvertTime
|
2016-09-23 15:19:22 +00:00
|
|
|
|
*--------------------------------------
|
2016-10-26 20:51:06 +00:00
|
|
|
|
K.ReadDirA.AddStat
|
2016-09-23 15:19:22 +00:00
|
|
|
|
ldy #S.STAT-1
|
|
|
|
|
|
2016-10-18 15:56:06 +00:00
|
|
|
|
.1 lda KrnSTAT,y
|
2016-09-23 15:19:22 +00:00
|
|
|
|
sta (ZPQuickPtr4),y
|
|
|
|
|
dey
|
|
|
|
|
bpl .1
|
|
|
|
|
|
|
|
|
|
lda ZPQuickPtr4
|
2016-09-02 06:09:44 +00:00
|
|
|
|
clc
|
2016-09-20 06:17:20 +00:00
|
|
|
|
adc #S.STAT
|
|
|
|
|
sta ZPQuickPtr4
|
|
|
|
|
bcc .8
|
|
|
|
|
inc ZPQuickPtr4+1
|
|
|
|
|
.8 rts
|
|
|
|
|
*--------------------------------------
|
2016-10-26 20:51:06 +00:00
|
|
|
|
K.ReadDirA.ClrStat
|
2016-09-23 15:19:22 +00:00
|
|
|
|
ldx #S.STAT-1
|
|
|
|
|
|
2016-10-18 15:56:06 +00:00
|
|
|
|
.1 stz KrnSTAT,x
|
2016-10-13 16:00:27 +00:00
|
|
|
|
dex
|
2016-09-23 15:19:22 +00:00
|
|
|
|
bpl .1
|
|
|
|
|
rts
|
2016-09-20 06:17:20 +00:00
|
|
|
|
*--------------------------------------
|
2016-10-26 20:51:06 +00:00
|
|
|
|
K.ReadDirA.AddFNToBuf
|
2016-09-22 15:46:01 +00:00
|
|
|
|
lda (ZPQuickPtr3)
|
|
|
|
|
and #$0F get filename len
|
|
|
|
|
tax
|
2016-10-26 20:51:06 +00:00
|
|
|
|
jsr K.ReadDirA.AddToBuf
|
2016-09-22 15:46:01 +00:00
|
|
|
|
|
|
|
|
|
ldy #1
|
|
|
|
|
|
|
|
|
|
.1 lda (ZPQuickPtr3),y
|
2016-10-26 20:51:06 +00:00
|
|
|
|
jsr K.ReadDirA.AddToBuf
|
2016-09-22 15:46:01 +00:00
|
|
|
|
iny
|
|
|
|
|
dex
|
|
|
|
|
bne .1
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2016-10-26 20:51:06 +00:00
|
|
|
|
K.ReadDirA.AddToBuf
|
2016-09-20 06:17:20 +00:00
|
|
|
|
sta (ZPQuickPtr4)
|
|
|
|
|
inc ZPQuickPtr4
|
|
|
|
|
bne .8
|
|
|
|
|
inc ZPQuickPtr4+1
|
|
|
|
|
.8 rts
|
2016-08-24 15:42:33 +00:00
|
|
|
|
*--------------------------------------
|
2016-10-26 20:51:06 +00:00
|
|
|
|
K.ReadDirA.ConvertTime
|
2016-10-14 06:23:05 +00:00
|
|
|
|
clc
|
|
|
|
|
adc ZPQuickPtr3
|
|
|
|
|
tay
|
|
|
|
|
lda ZPQuickPtr3+1
|
|
|
|
|
adc #0
|
|
|
|
|
>PUSHYA
|
2016-10-14 15:39:49 +00:00
|
|
|
|
jmp K.PTime2Time Will destroy Ptr1 & Ptr2 !!!!
|
2016-10-14 06:23:05 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
ADDF.SRC .HS 1013141516171f20
|
|
|
|
|
ADDF.DST .DA #S.STAT.PRODOS.TYPE,#S.STAT.BLOCKS,#S.STAT.BLOCKS+1
|
|
|
|
|
.DA #S.STAT.SIZE,#S.STAT.SIZE+1,#S.STAT.SIZE+2
|
|
|
|
|
.DA #S.STAT.PRODOS.AUXTYPE,#S.STAT.PRODOS.AUXTYPE+1
|
2016-10-24 15:54:43 +00:00
|
|
|
|
*/-------------------------------------
|
|
|
|
|
* #CloseDirA
|
|
|
|
|
* ##In:
|
2016-08-29 15:12:04 +00:00
|
|
|
|
* A = hDIR
|
2016-10-24 15:54:43 +00:00
|
|
|
|
* ##Out:
|
|
|
|
|
* none, always succeed.
|
|
|
|
|
*\-------------------------------------
|
2016-10-26 20:51:06 +00:00
|
|
|
|
K.CloseDirA jsr PFT.CheckDirA
|
|
|
|
|
sta K.ReadDirA.hDir
|
2016-09-21 15:20:37 +00:00
|
|
|
|
jsr K.GetMemPtrA
|
2016-09-01 15:42:38 +00:00
|
|
|
|
>STYA ZPQuickPtr1
|
2016-10-13 16:00:27 +00:00
|
|
|
|
|
2016-10-26 20:51:06 +00:00
|
|
|
|
K.CloseDirA.1 ldy #S.DIR.PRODOS.REF
|
2016-09-01 15:42:38 +00:00
|
|
|
|
lda (ZPQuickPtr1),y
|
|
|
|
|
beq .1
|
|
|
|
|
sta MLICALL.PARAMS+1
|
|
|
|
|
>MLICALL MLICLOSE
|
|
|
|
|
|
2016-10-14 15:39:49 +00:00
|
|
|
|
.1 ldy #S.DIR.PRODOS.IOBUF
|
2016-09-01 15:42:38 +00:00
|
|
|
|
lda (ZPQuickPtr1),y
|
|
|
|
|
beq .2
|
2016-09-21 15:20:37 +00:00
|
|
|
|
jsr K.FreeMemA
|
2016-09-01 15:42:38 +00:00
|
|
|
|
|
2016-10-26 20:51:06 +00:00
|
|
|
|
.2 ldaK.ReadDirA.hDir
|
2016-10-24 15:54:43 +00:00
|
|
|
|
jmp K.FreeMemA
|
2016-10-26 20:51:06 +00:00
|
|
|
|
*/-------------------------------------
|
|
|
|
|
* #MKDirYA
|
|
|
|
|
* ##In:
|
|
|
|
|
* Y,A = DIR name
|
|
|
|
|
* ##Out:
|
|
|
|
|
* CC : success
|
|
|
|
|
* CS : error
|
|
|
|
|
* A = EC
|
|
|
|
|
*\-------------------------------------
|
|
|
|
|
K.MKDirYA jsr PFT.CheckPathYA
|
2016-09-05 16:00:11 +00:00
|
|
|
|
>STYA MLICALL.PARAMS+1
|
2016-09-20 06:17:20 +00:00
|
|
|
|
lda #S.FILEINFO.ACCESS.FULL
|
|
|
|
|
sta MLICALL.PARAMS+S.FILEINFO.ACCESS
|
|
|
|
|
lda #S.FILEINFO.TYPE.DIR
|
|
|
|
|
sta MLICALL.PARAMS+S.FILEINFO.TYPE
|
|
|
|
|
lda #S.FILEINFO.STORETYPE.DIR
|
|
|
|
|
sta MLICALL.PARAMS+S.FILEINFO.STORETYPE
|
2016-09-05 16:00:11 +00:00
|
|
|
|
>MLICALL MLICREATE
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2016-08-24 15:42:33 +00:00
|
|
|
|
MAN
|
|
|
|
|
SAVE SYS/KERNEL.S.DIR
|
|
|
|
|
LOAD SYS/KERNEL.S
|
|
|
|
|
ASM
|