> CHKCOPY/src :  ( Extend parameters to allow 2 *COPY options \ A<>0 Generic "*COPY name name (options)" syntax r\ |.CheckCopyCommand 4TYA:PHA :\ Save line pointer 9JSR chkdigit:BCS newcopy :\ COPY x x<>digit PHA DJSR chkspc:BCS newcopy1 :\ COPY nxxxx 1st param not drive PLA 4CMP (lptr),Y:BEQ newcopy :\ COPY x y x=y 9JSR chkdigit:BCS newcopy :\ COPY x y y<>digit KJSR chkspc:BCS newcopy :\ COPY n nxxxx 2nd param not drive number BCMP #" ":BCC newcopy :\ COPY x y only two parameters /LDX #2 :\ option count  .loop LDA (lptr),Y >CMP #"~":BEQ newcopy :\ COPY x y ...~... copy option DCMP #"*":BEQ oldcopy :\ COPY x y ..*.... wildcard filename DCMP #"#":BEQ oldcopy :\ COPY x y ...#... wildcard filename ACMP #".":BEQ oldcopy :\ COPY x y xxx.xxx directory name &CMP #" ":BNE chknext 0EDEX:BEQ newcopy :\ COPY x y zzz zzz multiple options :JSR skipspc D .chknext NINY:CMP #13:BNE loop X .oldcopy b6PLA:TAY:LDA #0:RTS :\ DFS COPY parameters l .newcopy1 vPLA  .newcopy :PLA:TAY:LDA #1:RTS :\ Generic COPY parameters :  .chkspc INY:LDA (lptr),Y 7CMP #" ":BNE chkdigit1 :\ SEC=no following space  .skipspc INY:LDA (lptr),Y CMP #" ":BEQ skipspc @CLC:RTS :\ CLC=follow space, and skipped :  .chkdigit LDA (lptr),Y 0CMP #"0":BCC chkdigit1 :\ SEC=not a digit  /CMP #"9"+1:BCC chkdigit2 :\ CLC=is a digit .chkdigit1  SEC *.chkdigit2 4RTS >]