Further *COPY fixes.

This commit is contained in:
Bobbi Webber-Manners 2021-09-15 23:15:32 -04:00
parent 4df7797cba
commit eddb856156
3 changed files with 27 additions and 14 deletions

Binary file not shown.

View File

@ -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 #<MOSFILE
STA GINFOPL+1
STA OPENPL2+1
@ -167,8 +174,13 @@ COPY1FILE LDA #<MOSFILE
BCS :ERR
LDA #<MOSFILE2
STA GINFOPL+1
STA DESTPL+1
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 #<MOSFILE
DB OPENCMD
DW OPENPL2
BCS :ERR ; Open error
LDA OPENPL2+5 ; File ref num
BRA :S1
:ERR SEC ; Report error
RTS
:S1 LDA OPENPL2+5 ; File ref num
STA RDPLCP+1
LDX :BUFIDX1
STA FILEREFS,X ; Record the ref number
@ -213,9 +228,6 @@ COPY1FILE LDA #<MOSFILE
STA WRTPLCP+1
LDX :BUFIDX2
STA FILEREFS,X ; Record the ref number
BRA :MAINLOOP
:ERR SEC ; Report error
RTS
:MAINLOOP JSR MLI ; Read a block
DB READCMD
DW RDPLCP
@ -955,7 +967,7 @@ SETPERM >>> 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 #<MOSFILE
STA GINFOPL+1
@ -1002,7 +1014,7 @@ MULTIDEL >>> 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

View File

@ -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