Listing of file='DUPFIL.BAS;01' on disk='vmedia/chip_22-sector.ccvf'
90 PLOT 15,12 100 REM DUP A FILE USING A SINGLE DRIVE -V2.80- J.J. 110 B= INT (FRE (9)/ 128)- 4:IF B> 9GOTO 130 120 PLOT 11:PRINT "NOT ENOUGH SPACE FREE.":END 130 GOSUB 740:E= E- B* 128- 2:POKE E+ 1,B:GOSUB 750:CLEAR 150 140 GOSUB 740:X= E+ 1:B= PEEK (X):GOSUB 920:E$= H$ 150 PLOT 19,10:PRINT "MOUNT DISK WITH FILE TO BE DUPLICATED "; 160 GOSUB 900:PLOT 15,27,24,12,27,4:PRINT "DIR":PLOT 27,27 169 REM SCAN SCREEN FOR FILE 170 L= 5:SS= 24576:GOTO 220 180 FOR I= S+ 1TO S+ 81STEP 2:POKE I,2:NEXT I:PLOT 3,0,L,32 190 PLOT 3,41,L:PRINT SPC( 23):PRINT 200 L= L+ 1:IF L= 32THEN L= 0 210 S= L* 128+ SS:A$= CHR$ (PEEK (S+ 4)):IF A$< > "1"GOTO 250 220 PLOT 6,2,3,2,L,49,6,6,3,30,L 225 INPUT "(C=CONTINUE, R=RESTART, E=END)?";Z$ 230 PLOT 3,30,L:PRINT SPC( 33):PRINT :IF Z$= "R"GOTO 150 240 IF Z$= "E"GOTO 720 250 IF A$< > "3"GOTO 200 260 PLOT 3,0,L,62:FOR I= S+ 1TO S+ 81STEP 2:POKE I,6:NEXT I 270 PLOT 3,41,L:INPUT "<-DUPLICATE (Y OR N)?";Z$ 280 IF LEFT$ (Z$,1)< > "Y"GOTO 180 289 REM READ FILE INFORMATION FROM SCREEN 290 N$= "":FOR I= S+ 8TO S+ 26STEP 2:IF PEEK (I)= 32GOTO 310 300 N$= N$+ CHR$ (PEEK (I)) 310 NEXT I:V$= "":FOR I= S+ 28TO S+ 32STEP 2 320 V$= V$+ CHR$ (PEEK (I)):NEXT I:SB$= "" 330 FOR I= S+ 36TO S+ 42STEP 2:SB$= SB$+ CHR$ (PEEK (I)):NEXT I 340 H$= SB$:GOSUB 980:A(0)= XL:A(1)= XH:SZ$= "" 350 FOR I= S+ 46TO S+ 52STEP 2:SZ$= SZ$+ CHR$ (PEEK (I)):NEXT I 360 H$= SZ$:GOSUB 980:A(2)= XL:A(3)= XH:NB= XL+ XH* 256 370 LB$= CHR$ (PEEK (S+ 56))+ CHR$ (PEEK (S+ 58)) 380 H$= LB$:GOSUB 980:A(4)= XL:LA$= "" 390 FOR I= S+ 64TO S+ 70STEP 2:LA$= LA$+ CHR$ (PEEK (I)):NEXT I 400 H$= LA$:GOSUB 980:A(5)= XL:A(6)= XH:SA$= "" 410 FOR I= S+ 74TO S+ 80STEP 2:SA$= SA$+ CHR$ (PEEK (I)):NEXT I 420 H$= SA$:GOSUB 980:A(7)= XL:A(8)= XH 430 M$= "MOUNT ":M1$= "SOURCE ":M2$= "DESTINATION " 440 M3$= "MEMORY ":M4$= "DISK ":PLOT 6,5,14,12 450 PRINT "DUPLICATE "N$V$" IN"INT (NB/ B+ .999)" PASS(ES). 460 IF NB> BTHEN BC= B* 128:B1= B:GOTO 480 470 B1= NB:NB= NB- 1:BC= NB* 128+ A(4):A1$= N$+ V$+ " "+ E$ 480 A$= "LOAD ":IF NB> BTHEN A$= "READ " 490 X= BC:GOSUB 920:BC$= H$ 500 IF NB> BTHEN A1$= SB$+ " "+ E$+ " "+ BC$ 510 PLOT 6,2,3,0,5:MA$= M1$:MB$= M3$:MC$= "":GOSUB 870 520 A$= "SAVE ":A1$= N$+ " "+ E$+ " "+ BC$:MB$= M2$:GOSUB 850 530 GOSUB 760:S1= A(0)+ A(1)* 256+ B1:S2= S2+ B1 540 X= S1:GOSUB 920:SB$= H$:X= S2:GOSUB 920:SZ$= H$ 550 NB= NB- B:IF NB< = 0GOTO 630 560 IF NB> BTHEN BC= B* 128:S1= S1+ B:S2= S2+ B:GOTO 580 570 BC= NB* 128 580 X= BC:GOSUB 920:BC$= H$:MA$= M1$:MB$= M3$:MC$= "" 590 A$= "READ ":A1$= SB$+ " "+ E$+ " "+ BC$ 600 PLOT 6,2,3,0,5:PRINT M$MA$M4$;:GOSUB 860 610 A$= "WRITE ":A1$= SZ$+ " "+ E$+ " "+ BC$:MB$= M2$:GOSUB 850 620 GOTO 540 630 GOSUB 760:FOR K= 2TO 8:POKE M+ K,A(K):NEXT K 640 IF J= 128THEN J= 2:I= I+ 1 650 M= E+ I* 128+ J+ 12:S2= S2+ A(2)+ A(3)* 256:S1= 400- S2 660 IF S1< 0GOTO 1050 670 POKE M+ 1,INT (S2/ 256):POKE M,S2- PEEK (M+ 1)* 256 680 POKE M+ 3,INT (S1/ 256):POKE M+ 2,S1- PEEK (M+ 3)* 256 690 A$= "WRI 0 "+ E$+ " ":A1$= LB$:GOSUB 890 700 PRINT :INPUT "DUPLICATE ANOTHER FILE (Y OR N) ? ";A$ 710 PLOT 10:IF LEFT$ (A$,1)= "Y"GOTO 150 720 E= E+ B* 128+ 2:GOSUB 750:CLEAR 50:PLOT 27,11,10,19 730 PRINT "MOUNT PROGRAM DISK ";:GOSUB 900:PLOT 1 739 REM MOVE END OF MEMORY 740 LM= 32940:HM= LM+ 1:E= PEEK (HM)* 256+ PEEK (LM):RETURN 750 POKE HM,INT (E/ 256):POKE LM,E- INT (E/ 256)* 256:RETURN 759 REM SUBROUTINES 760 A$= "REA 0 "+ E$+ " ":A1$= "80":GOSUB 890 770 M= PEEK (E+ 2):X= M* 128+ 128:GOSUB 920:LB$= H$ 780 A1$= LB$:GOSUB 890:FOR I= 0TO M:FOR J= 2TO 107STEP 21 790 IF PEEK (E+ 1+ I* 128+ J)= 1GOTO 810 800 NEXT J,I 810 IF J= 2THEN I= I- 1:J= 128 820 M= E+ I* 128+ J- 4:H$= E$:GOSUB 980 830 IF XL< > PEEK (M)OR XH< > PEEK (M+ 1)GOTO 1050 840 M= M- 5:S2= PEEK (M)+ PEEK (M+ 1)* 256:RETURN 850 PLOT 6,6,3,0,5:PRINT M$MB$M4$;:MA$= M3$:MC$= M4$ 860 GOSUB 900:PLOT 28,11 870 PLOT 19:PRINT A$MA$"TO "MB$MC$ 880 PLOT 19,3,0,9,11:PRINT "FCS>"A$A1$:PLOT 15,3,64,10:L= 11 890 PLOT 27,4:PRINT A$A1$:PLOT 27,27:GOSUB 1030:RETURN 900 PLOT 19:PRINT " (HIT ";:PLOT 6,71:PRINT "RETURN ";:PLOT 6,3 910 PRINT "WHEN READY)"SPC( 6):PLOT 3,64,5:INPUT "";Z$:RETURN 919 REM X=DEC TO HEX=H$ 920 H$= "":XX= X:FOR II= 3TO 0STEP - 1 930 IF II= 0THEN X1= XX:GOTO 950 940 X1= INT (XX/ 16^ II):XX= XX- X1* 16^ II 950 IF X1< 10THEN X1= X1+ 48:GOTO 970 960 X1= X1+ 55 970 H$= H$+ CHR$ (X1):NEXT II:RETURN 979 REM H$=HEX TO DEC, XL=LOW BYTE, XH=HIGH BYTE 980 H1$= "0000"+ H$:XL= 0:XH= 0:FOR II= 0TO 1 990 X1= II+ 1:GOSUB 1010:XL= XL+ X1* 16^ II 1000 X1= II+ 3:GOSUB 1010:XH= XH+ X1* 16^ II:NEXT II:RETURN 1010 X1= ASC (RIGHT$ (H1$,X1)):IF X1> 64THEN X1= X1- 55:RETURN 1020 X1= X1- 48:RETURN 1029 REM ERROR CHECK 1030 I= PEEK (L* 128+ SS):IF I= 69OR I= 70GOTO 1050 1040 PLOT 14:RETURN 1050 PLOT 6,65,3,20,L:PRINT "ERROR":PLOT 6,2,10,14:GOTO 700