11 F$="FILECOPY.BIN":U=8 13 GOSUB9100:GOSUB9050 14 IF F=0 THEN LOAD F$,U,1:GOTO25 20 (null)1,1 21 (null)(F$),P(BA)ONU(U):IF(null)(0)<5THEN(null)0 25 GOSUB9000 40 INPUT "[155]YOUR SOURCE DISK UNIT[146] 8[157][157][157]";SU 50 INPUT "[155]DESTINATION DISK UNIT[146] 9[157][157][157]";DU:PRINT 60 : IF SU<4 OR SU>31 OR DU<4 OR DU>31 OR SU=DU THEN 10 70 PRINT "[155] ENTER TEMPLATE OR [146] ";:M$="":INPUTM$ 72 W=0:WW=0:FOR I=1TOLEN(M$):IF "*"=MID$(M$,I,1) THEN W=I:WW=WW+1 73 NEXT: IF WW>1 THEN PRINT"[155]BAD TEMPLATE": GOTO 120 74 W$=RIGHT$(M$,LEN(M$)-W) 80 DIM N$(200),T$(200),CE(200):Q$=CHR$(34):E$="," 90 OPEN14,SU,15,"I": SC=14:U=SC: GOSUB8000: IFS THEN PRINT"[155]"SU":";S$: GOTO120 95 OPEN15,DU,15,"I": DC=15:U=DC: GOSUB8000: IF S THEN PRINT""DU":";S$: GOTO120 100 GOSUB 9000: GOSUB 1000: GOSUB 2000 110 IF K THEN GOSUB 9000: GOSUB 3000 120 PRINT:PRINT" MORE (Y/N) ? [146] ";:GOSUB4000: IF A$="N" THEN CLR: END 130 CLR:GOSUB9100:GOTO25 1000 REM READ DIRECTORY INTO N$,T$: N=NUM FILES+1 1010 PRINT "[155]READING DIRECTORY."; 1020 N=0: F$="$": IF LEN(M$)<>0 THEN F$="$:"+M$ 1030 OPEN 8,SU,0,F$: U=SC: GOSUB8000 1035 : IF S THEN PRINT: PRINT"";S$: CLOSE8: RETURN 1040 GET#8,A$,B$ 1050 : GET#8,A$,A$,A$,A$ :PRINT "."; 1060 : GET#8,A$: IF LEN(A$)=0 OR ST THEN 1130 1065 : IF ASC(A$)=0 THEN 1130 1070 : IF A$<>Q$ THEN 1060 1080 : GET#8,A$: IF A$<>Q$ AND ST=0 THEN N$(N)=N$(N)+A$: GOTO 1080 1090 : GET#8,A$: IF A$=" " THEN 1090 1100 : T$(N)=T$(N)+A$: GET#8,A$: IF A$<>" " AND ST=0 THEN 1100 1110 : GET#8,A$:A$=A$+CHR$(0):IF ASC(A$)<>0 AND ST=0 THEN 1110 1116 : IF N=0 OR W=0 THEN 1120 1117 : IF LEN(N$(N)) < (W-1+LEN(W$)) THEN N$(N)="":T$(N)="": GOTO 1050 1119 : IF W$<>RIGHT$(N$(N), LEN(W$)) THEN N$(N)="":T$(N)="":GOTO1050 1120 : N=N+1: GOTO1050 1130 PRINT:CLOSE 8: GOSUB8000: IF S THEN PRINT"...";S$ 1140 PRINT:PRINT N-1;"FILES TARGETED" :PRINT : RETURN 2000 REM DISPLAY FILES & ASK USER WHICH ONES TO COPY 2010 K=0: IF N<2 THEN PRINT" NO FILES FOUND.":RETURN 2020 FOR I=1TON-1:CE(I)=0 2030 : PRINT Q$;N$(I);Q$;TAB(19);T$(I);TAB(25);: IF M$<>"*" THEN 2070 2040 : PRINT:CE(I)=1: K=K+1: NEXT: PRINT 2050 PRINT " CONTINUE (Y/N) ? [146] ";: GOSUB4000 :IF A$="Y" THEN RETURN 2060 K=0: RETURN 2070 PRINT "COPY ? (Y/N) ";:GOSUB4000 :IF A$="Y" THEN CE(I)=1: K=K+1 2080 : NEXT: RETURN 3000 REM COPY THE FILES 3010 FOR I=1TON-1:IF CE(I)=0 THEN NEXT: RETURN 3020 :T$(I) = LEFT$(T$(I),1): F$=Q$+N$(I)+Q$ 3030 OPEN9,DU,9,N$(I): U=DC: GOSUB8000: CLOSE9 3040 : IF S=62 THEN 3100 3050 : PRINT F$;" EXISTS, REPLACE? ";: GOSUB4000:GOSUB 4500 3060 : IF A$="N" THEN PRINT F$;" NOT COPIED":NEXT:RETURN 3070 : PRINT "SCRATCHING OLD ";F$ 3080 : PRINT#15,"S0:";N$(I): GOSUB8000:GOSUB 4500:IF S>1 THEN 3170 3090 : GOTO 3030 3100 : IF T$(I)="R" THEN GOSUB 5000:GOTO 3170:REM COPY REL FILES 3110 : PRINT "NOW COPYING ";F$ 3120 : OPEN9,DU,1,N$(I)+","+T$(I)+",W": U=DC: GOSUB8000 : IF S THEN 3170 3140 : OPEN8,SU,0,N$(I)+","+T$(I)+",R": U=SC: GOSUB8000 : IF S THEN 3170 3160 : SYS BA: CLOSE 8: CLOSE 9:U=DC:GOSUB 8000 3170 : IF S THEN PRINT "COPY FAILED: [146]";S$ : GOTO 3180 3175 : U=SC:GOSUB 8000 3176 : IF S THEN PRINT "COPY FAILED: [146]";S$ 3180 NEXT: RETURN 4000 GET A$: IF A$<>"Y" AND A$<>"N" THEN 4000 4010 PRINTA$: RETURN 4500 PRINT "[145] "+CHR$(13)+"[145]";:RETURN 5000 REM COPY REL FILES. 5010 PRINT "SCANNING ";F$ 5020 OPEN8,SU,8,N$(I): U=SC: GOSUB 8000: IF S THEN RETURN 5030 L=0:FOR RN=7TO0STEP-1:RG=2^RN: REM SCAN FOR RECLEN 5040 : R=1:L=L+RG:GOSUB 6000:IF S THEN L=L-RG 5050 : NEXT 5060 R=0:FORRN=15TO0STEP-1:RG=2^RN: REM SCAN FOR NUMREC 5070 : R=R+RG: GOSUB 6000: IF S THEN R=R-RG 5080 : NEXT 5100 GOSUB 4500:PRINT "CREATING ";F$ 5110 OPEN9,DU,9,N$(I)+",L,"+CHR$(L) 5120 : U=DC: GOSUB 8000: IF S THEN RETURN 5130 A$="P"+CHR$(96+8)+CHR$(1)+CHR$(0)+CHR$(1): PRINT#14,A$: PRINT#14,A$ 5140 : U=SC: GOSUB 8000: IF S THEN RETURN 5150 A$="P"+CHR$(96+9)+CHR$(RL)+CHR$(RH)+CHR$(1): PRINT#15,A$: PRINT#15,A$ 5160 : PRINT#9,CHR$(255);: REM WRITE END RECORD 5170 A$="P"+CHR$(96+9)+CHR$(1)+CHR$(0)+CHR$(1): PRINT#15,A$: PRINT#15,A$ 5180 : U=DC: GOSUB 8000: IF S THEN RETURN 5200 GOSUB 4500:PRINT "NOW COPYING ";F$ 5210 FOR RN=1TOR: SYSBA: NEXT 5220 CLOSE8: CLOSE9: U=DC: GOSUB 8000 5230 RETURN 6000 RH=INT(R/256):RL=R-RH*256 :REM SEND SRC P CMD. R=REC#, L=OFFSET 6010 A$="P"+CHR$(96+8)+CHR$(RL)+CHR$(RH)+CHR$(L): PRINT#14,A$: PRINT#14,A$ 6020 : U=SC: GOTO8000 :REM GET DISK STAT AND RETURN 8000 INPUT#U,A$,B$,C$,D$: S=VAL(A$): S$=A$+E$+B$+E$+C$+E$+D$ :RETURN 9000 POKE53280,0:POKE53281,0:PRINT"[147]"; 9010 PRINT"[155][176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174] 9020 [153]"LIST(null) OPENFILECOPY UTILITY - V021887LIST (null) 9030 PRINT"[173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189]":PRINT 9040 RETURN 9045 IFU=12THENPRINT"[155]"F$" "B$:END 9050 OPEN15,U,15:OPEN2,U,2,F$+",P,R":CLOSE2:INPUT#15,A,B$,C,D 9055 CLOSE15:IFA>19THENU=U+1:GOTO9045 9060 RETURN 9100 F=ABS(PEEK(65533)=255) :REM F=0 IF C64, F=1 IF C128 9101 IF F=0 AND BA=0 THEN BA=12*4096 9102 IF F=1 AND BA=0 THEN BA=(null)("C00") 9103 RETURN