diff --git a/applecorn.po b/applecorn.po index 74a8e56..d22f7f8 100644 Binary files a/applecorn.po and b/applecorn.po differ diff --git a/mainmem.svc.s b/mainmem.svc.s index 2e606b3..b6fe963 100644 --- a/mainmem.svc.s +++ b/mainmem.svc.s @@ -101,6 +101,7 @@ COPYFILE >>> ENTMAIN JSR COPYMF21 JSR TMPtoMF2 JSR PREPATH ; Preprocess arg1 + SEC ; Force wildcard lookup JSR WILDCARD ; Handle any wildcards in arg1 BCS :NONE JSR HASWILD @@ -117,10 +118,13 @@ COPYFILE >>> ENTMAIN CMP #$02 ; Existing directory? BNE :NOTDIR LDY MOSFILE2 ; Dest idx = length + LDA MOSFILE2,Y ; Get last char + CMP #'/' ; Is it slash? + BEQ :HASSLSH LDA #'/' ; Add a '/' separator STA MOSFILE2+1,Y INY - LDX #$00 ; Source id +:HASSLSH LDX #$00 ; Source id :APPLOOP CPX MATCHBUF ; At end? BEQ :DONEAPP LDA MATCHBUF+1,X ; Appending MATCHBUF to MOSFILE2 @@ -140,16 +144,17 @@ COPYFILE >>> ENTMAIN JSR CLSDIR :EXIT >>> XF2AUX,COPYRET :NONE JSR CLSDIR - LDA #$40 ; TODO PROPER ERROR CODE + LDA #$46 ; 'File not found' BRA :EXIT :BADDEST JSR CLSDIR - LDA #$40 ; TODO PROPER ERROR CODE + LDA #$FD ; 'Wildcards' error BRA :EXIT :NOMORE JSR CLSDIR LDA #$00 BRA :EXIT -:COPYERR JSR CLSDIR - LDA #$40 ; TODO PROPER ERROR CODE +:COPYERR PHA + JSR CLSDIR + PLA BRA :EXIT :DESTTYPE DB $00 :OLDLEN DB $00 @@ -157,6 +162,8 @@ COPYFILE >>> ENTMAIN * Copy a single file * Source is in MOSFILE, DEST in MOSFILE2 * Returns with carry set if error, carry clear otherwise +* Buffer COPYBUF is used for the file copy, to avoid trashing +* directory block in RDBUF (when doing wilcard search) COPY1FILE LDA #MOSFILE2 STA GINFOPL+2 + STA DESTPL+2 + JSR MLI ; DESTROY + DB DESTCMD + DW DESTPL LDA #$07 ; Fix num parms in PL STA GINFOPL LDA #$C3 ; Default permissions @@ -190,7 +202,10 @@ COPY1FILE LDA #>> ENTMAIN :SYNERR LDA #$40 ; Invalid pathname syn BRA :EXIT :NONE JSR CLSDIR - LDA #$40 ; TODO PROPER ERROR CODE + LDA #$46 ; 'File not found' BRA :EXIT :MAINLOOP LDA #>> ENTMAIN :SYNERR LDA #$40 ; Invalid pathname syn BRA :EXIT :NONE JSR CLSDIR - LDA #$40 ; TODO PROPER ERROR CODE + LDA #$46 ; 'File not found' BRA :EXIT :MAINLOOP JSR DODELETE BCS :DELERR @@ -1010,8 +1022,9 @@ MULTIDEL >>> ENTMAIN BCS :NOMORE BRA :MAINLOOP :EXIT >>> XF2AUX,DESTRET -:DELERR JSR CLSDIR - LDA #$40 ; TODO PROPER ERROR CODE +:DELERR PHA + JSR CLSDIR + PLA BRA :EXIT :NOMORE JSR CLSDIR LDA #$00 diff --git a/mainmem.wild.s b/mainmem.wild.s index 893adb5..7d8e536 100644 --- a/mainmem.wild.s +++ b/mainmem.wild.s @@ -14,7 +14,7 @@ WILDONE CLC * by '/'), and for each segment see if it contains wildcard chars. * If so, pass it to SRCHBLK to expand the wildcard. If not, just * append the segment as it is. Uses MFTEMP to build up the path. -* On entry: SEC to force leaf noden lookup even if no wildcard, +* On entry: SEC to force leaf node lookup even if no wildcard, * CLC otherwise * Returns with carry set if wildcard match fails, clear otherwise WILDCARD STZ :ALWAYS ; Set :ALWAYS if carry set