Compucolor.org – Virtual Media

Listing of file='COPDSK.BAS;01' on disk='vmedia/agilis-sector.ccvf'

0 CLEAR 512
1 REM  A PROG. TO COPY SELECTIVE FILES OR COMPLETE DISKS
2 REM   WITHOUT DESTROYING THE DEST. DIRECTORY
3 REM  SYNTAX: *.*, nn.*, *.nnn, n??.??
4 REM  (C) NOV. 1981, C W HENNIG
5 DEF  FN  MOD(PTR)= PTR- INT (PTR/ 128)* 128
6 REM  LAST EDITED 81 11 21
10 MNU= 0:BLKSIZE= 128:ENTRY= 21:BASE= 16
20 DIM A$(15):RESTORE  53130
30 FOR I= 0TO 15:READ A$(I):NEXT
31 PRINT CHR$ (12);"SELECTIVE OR GLOBAL COPY OF DISSIMILAR DISKETTES."
33 INPUT "FCS NAME OF DESTINATION DRIVE E.G. DF0: ";T$:DDR$= T$+ ":":IF  DDR$= ":" THEN  DDR$= "DF0:"
35 INPUT "FCS NAME OF SOURCE DRIVE E.G. MD0: ";T$:DR$= T$+ ":":IF  DR$= ":" THEN  DR$= "MD0:"
40 BUFFR= 40960
45 PLOT 27,4:PRINT "DIR ";DR$:PLOT 27,27:INPUT "CONTINUE (Y/N)? ";IN$:IF IN$= "N"GOTO 35
47 GOSUB 30000
50 DEC= BUFFR:GOSUB 53000:BUFF$= BAS$+ ""
60 II= - 1:GOSUB  10000
80 DBLKS= PEEK (BUFF+ 1)+ 128:PTR= 23
90 II= 0:LASTPTR= II
95 PLOT  12:PRINT "COPYING:"
100 OK= PEEK (BUFF+ FN  MOD(PTR)):IF OK< > 3GOTO  300
120 PTR= PTR+ 1
130 FOR K= 0TO  8:F1I$= CHR$ (PEEK (BU+ FN  MOD(PT))):PT= PT+ 1:IF  F1I$= " "GOTO  170
135 IF  K= 6 THEN  FI$= FI$+ "."
140 FI$= FI$+ F1I$
170 NEXT K
171 GOSUB  31000:IF  FI$= "" GOTO  180
172 DEC= PEEK (BUF+ FN MOD(PTR)):GOSUB 53000:F2$= FI$+ ";"+ BAS$
173 REM  IF FI$="MENU.BAS"THEN GOSUB 54000
175 PRINT "";F2$
178 GOSUB 11000
180 PTR= PT+ 11
185 IF  INT (PTR/ 128)> LASTPTR THEN  GOSUB  10000:PTR= PTR+ 2
190 FI$= "":F1$= "":F2$= "":IF  PTR< (128* DBLKS) GOTO 100
300 PRINT  "DONE !!!
310 PRINT "INSERT NEXT DISK TO BE COPIED"
320 GOTO 35
9999 END
10000 II= II+ 1:DEC= II:GOSUB  53000:I$= BAS$:PLOT 27,4:PRINT "READ ";DR$;I$;" ";BUFF$;" 80":PLOT  27,27
10010 LASTPTR= II:RETURN
11000 PLOT  27,4:PRINT "COPY ";DR$;F2$;" TO ";DDR$;FI$:PLOT  27,27:F2$= ""
11010 RETURN
30000 PRINT "nnnnnn.* OR *.nnn OR *.* OR nnn??.??n":INPUT "PARAMETERS > ";IN$
30010 IF  IN$= "" THEN  GOTO  30990
30990 RETURN
31000 REM  PARSE FILE NAMES
31015 IF  IN$= "*.*" GOTO  31099
31020 A= 0:EOF= 0:I9= 1:F9= 1:I8= LEN (IN$):F8= LEN (FI$)
31025  I9$= MID$ (IN$,I9,1):IF  I9$= "?" GOTO  31060
31040  IF  I9$= "*" THEN  GOSUB  31300:F9= A- 1:IF  EOF GOTO  31099:REM  PERIOD
31043   IF  F9= A- 1 GOTO 31060
31045  F9$= MID$ (FI$,F9,1)
31050  IF  I9$< > F9$ GOTO  31080:REM  NULL FI$
31060 F9= F9+ 1
31065 I9= I9+ 1
31070  IF  I9< = I8 GOTO  31025
31075 GOTO  31099
31080 FI$= ""
31099 RETURN
31300 FOR  A= F9 TO  F8
31310  IF  MID$ (FI$,A,1)= "." GOTO  31340
31320 NEXT  A
31330 EOF= 1
31340 RETURN
31990 RETURN
32000 REM  GET EXT
32010 EXT$= MID$ (IN$,3)
32020 RETURN
53000 REM  BASE CONVERSION(16/10)
53010 BASE$= "":IF DEC= 0THEN BAS$= "0":GOTO 53120
53050 DEC= DEC+ 1/ BASE
53060 X= INT (LOG (DEC)/ LOG (BASE))
53070 FOR I= XTO 0STEP - 1
53080 HEX= INT (DEC/ (BASE^ I))
53090 DEC= DEC- HEX* (BASE^ I)
53100 BASE$= BASE$+ A$(HEX)
53110 NEXT I
53120 RETURN
53130 DATA 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
54000 REM  ASSIGN A UNIQUE LABEL TO MENU FILES
54010 MN= MN+ 1:DEC= MN:GOSUB  53000
54020 FI$= "MENU"+ MID$ (BAS$,1)+ ".BAS"
54030 RETURN