PR#3 PREFIX /A2OSX.SRC NEW INC 1 AUTO 6 .LIST OFF *-------------------------------------- * Uses: (pData) * hDIRs .BS MAX.RECURSE+1 * hBasePath .BS 1 *-------------------------------------- InitSrcDirYA >SYSCALL SYS.GetFullPathYA bcc .10 rts .10 stx .90+1 >STYA ZPPtr1 lda (ZPPtr1) cmp #1 beq .5 we have '/' >PUSHW L.STAT >PUSHW ZPPtr1 >SYSCALL SYS.STAT bcs .1 File/DIR does not exists, go extract wildcard lda STAT+S.STAT.PRODOS.TYPE cmp #$0f beq .5 TYPE=DIR, do not extract wildcard .1 lda (ZPPtr1) tay .2 lda (ZPPtr1),y search backward for a / cmp #'/' beq .3 dey bne .2 .3 tya cmp (ZPPtr1) beq .5 Make sure at least one char ldx #0 phy save / pos to trunk string later .4 iny inx lda (ZPPtr1),y sta UsrBuf256,x tya cmp (ZPPtr1) bne .4 pla get back / pos sta (ZPPtr1) trunk it for Opendir stx UsrBuf256 >LDYAI UsrBuf256 >SYSCALL SYS.NewPstrYA bcs .9 txa ldy #hFilter sta (pData),y .5 >PUSHWI 256 >PUSHBI 0 >SYSCALL SYS.GetMem Get a 256 buffer to store BasePath bcs .9 >STYA ZPPtr2 txa ldy #hBasePath sta (pData),y >PUSHW ZPPtr1 Push Src >PUSHW ZPPtr2 Push Dst >SYSCALL SYS.PStrCpy >LDYA ZPPtr1 >SYSCALL SYS.OPENDIRYA bcs .9 pha ldy #hDIRs tya inc sta (pData),y iny set hDIRs[1] = Src Hdir pla sta (pData),y set hDIRs index=hDIRs[1] jsr .9 Cleanup clc rts .9 pha .90 lda #$ff self modified >SYSCALL SYS.FreeMemA pla sec rts *-------------------------------------- EnterSubDirYA >STYA ZPPtr2 save SUBDIR for StrCat ldy #hDIRs lda (pData),y cmp #hDIRs+MAX.RECURSE+1 beq .99 ldy #hBasePath lda (pData),y >SYSCALL SYS.GetMemPtrA >STYA ZPPtr1 save full path >PUSHW ZPPtr1 push Src for StrCat >PUSHW ZPPtr2 >SYSCALL SYS.PStrCat >LDYA ZPPtr1 >SYSCALL SYS.OPENDIRYA bcs .99 pha ldy #hDIRs lda (pData),y inc sta (pData),y tay pla sta (pData),y clc .99 rts *-------------------------------------- LeaveSubDir ldy #hDIRs lda (pData),y tay lda (pData),y >SYSCALL SYS.CLOSEDIRA ldy #hBasePath lda (pData),y >SYSCALL SYS.GetMemPtrA >STYA ZPPtr1 save full path lda (ZPPtr1) get len tay .1 dey At first run, discard ending / lda (ZPPtr1),y cmp #'/' bne .1 tya sta (ZPPtr1) cut DIR2/ from /dir1/DIR2/ ldy #hDIRs lda (pData),y dec sta (pData),y cmp #hDIRs beq .9 CS clc .9 rts *-------------------------------------- MAN SAVE BIN/X.CPLSMVRM.S