100 REM******************************************************* 110 REM*** EPSON HC-20 DISK BASIC COPY UTILITY PROGRAM *** 120 REM******************************************************* 130 MEMSET &H0A50 :CLEAR 2000 :WIDTH 35,16,1 140 H03$=CHR$(&H03) :H05$=CHR$(&H05) :H0D$=CHR$(&H0D) :H1A$=CHR$(&H1A) 150 P(0)=&HCE :P(1)=&H0A :P(2)=&H47 :P(3)=&HBD :P(4)=PEEK(&H0A3E) 160 P(5)=PEEK(&H0A3F) :P(6)=&H39 :P(7)=&H0F :P(8)=&H00 :P(9)=&H00 200 REM*** SELECT *** 210 CLS:PRINT"Copy utility V-1.0":PRINT"Copyright 1982":PRINTSPC(10);"By EPSON" 220 PRINT" Volume copy -- 1 " :PRINT" File copy -- 2 " 230 PRINT" End --^C " :PRINT"Select(1/2/^C)?"; 240 K$=INPUT$(1):IFK$="1"THEN300ELSEIFK$="2"THEN500ELSEIFK$=H03$THENENDELSE240 300 REM*** Volume copy *** 310 CLS :PRINT"Volume copy" :PRINT" From A: To B: -- 1" 320 PRINT" From C: To D: -- 2" :PRINT"Select(1/2/^C)?"; 330 K$=INPUT$(1):IF K$="1" OR K$="2" THEN 340 ELSE IF K$=H03$ THEN 200 ELSE 330 340 IF K$="1" THEN P(10)=&H41 ELSE P(10)=&H43 350 A=&H0A40 :FOR I=0TO10 :POKE A,P(I) :A=A+1 :NEXT I :CLS :PRINT"Volume copy" 360 IF K$="1" THEN PRINT" From A: To B:" ELSE PRINT" From C: To D:" 370 PRINT"Change the diskette!" :PRINT"Press RETURN or ^C"; 380 K$=INPUT$(1) :IF K$=H0D$ THEN 400 ELSE IF K$=H03$ THEN 300 ELSE 380 400 LOCATE0,2 :PRINTH1A$ :RESET :EXEC &H0A40 410 PRINT" Finshed!"; :K$=INPUT$(1) :GOTO300 500 REM*** File copy *** 510 CLS :PRINT" File copy" :PRINT"From:" :PRINT"To :" 520 LOCATE5,1:LINEINPUT"",F$ :IF F$="" THEN 200 530 ON ERROR GOTO 700 :OPEN"I",#1,F$ :CLOSE #1 :L=LEN(F$) :I=INSTR(F$,":") 540 FF$=RIGHT$(F$,L-I) :IF I=2 THEN FD$=LEFT$(F$,2) ELSE FD$="A:" 550 LOCATE5,2:LINEINPUT"",T$:L=LEN(T$):I=INSTR(T$,":"):IFL=2ANDI=2THENT$=T$+FF$ 560 LOCATE5,2:PRINTT$ :ON ERROR GOTO 720 :OPEN"I",#1,T$ :CLOSE#1 570 LOCATE0,3:PRINT"File already exist"; :K$=INPUT$(1) 580 LOCATE5,2:PRINT H1A$ :GOTO550 590 ON ERROR GOTO 0 :IF I=2 THEN TD$=LEFT$(T$,2) ELSE TD$="A:" 600 PRINT"Sure(RETURN/^C)?"; 610 K$=INPUT$(1):IF K$=H03$ THEN 500 ELSE IF K$=H0D$ THEN 620 ELSE 610 620 LOCATE0,3 :PRINT H05$; :RESET TD$ 630 OPEN"R",#1,F$:FIELD#1,128 AS BF$:LF=LOF(1):OPEN"R",#2,T$:FIELD#2,128 AS BT$ 640 FOR I=1TO(INT(LF/8))*8 STEP8 650 FOR J=0TO7:GET#1:BW$(J)=BF$:NEXT J:FOR J=0TO7:LSET BT$=BW$(J):PUT#2:NEXT J 660 NEXT I :FOR J= I TO LF :GET#1 :LSET BT$=BF$ :PUT#2 :NEXT J 670 CLOSE :LOCATE0,3 :PRINT" Finished!"; :K$=INPUT$(1) :GOTO500 690 REM*** ERROR *** 700 LOCATE0,3:IFERR=63THENPRINT"File not exist";:ELSEPRINT"Bad file descriptor"; 710 K$=INPUT$(1) :LOCATE5,1 :PRINT H05$ :LOCATE0,3 :PRINT H05$; :RESUME520 720 CLOSE#1:IF ERR=63 THEN RESUME590 ELSE LOCATE0,3 :PRINT"Bad file descriptor"; 730 K$=INPUT$(1) :LOCATE5,2 :PRINT H1A$; :RESUME550