Compucolor.org – Virtual Media

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

1 LIST 65100:END :IF 
10 REM 
20 IF  PROGRAM NAME:	UTIL01
30 REM  PROGRAMMER:	JIM PARKER
40 REM
50 REM  PURPOSE:
60 REM 		THIS PROGRAM DELETES A SERIES OF FILES FROM
70 REM 		THE DISK LEAVING THE LATEST VERSION OF THAT
80 REM 		FILE ALONE. THE PROGRAM WILL DISPALY THE
90 REM 		DIRECTORY, THEN ASK FOR THE NAME OF THE FILES
100 REM 	TO BE CLEANED OF THE DISK. THE FORMAT OF THE
110 REM 	REPLY IS:
120 REM 		FILENM.TYP;VR
130 REM 	WHERE:
140 REM 		FILENM	IS THE NAME OF THE FILE TO BE
150 REM 			CLEANED OFF THE DISK.  THIS
160 REM 			PARAMETER MUST BE PRESENT.
170 REM 			ENTER: ****** TO MATCH ALL FILE
180 REM 			NAMES ON THE DIRECTORY.
190 REM
200 REM 		TYP	IS THE FILE TYPE:BAS, RND, ETC.
210 REM 			IF THIS PARAMETER IS OMITED
220 REM 			BAS WILL BE ASSUMED. ENTER: ***
230 REM 			TO MATCH ALL FILE TYPES ON THE
240 REM 			DIRECTORY.
250 REM
260 REM 		VR	IS THE VERSION OF THE FILE TO
270 REM 			BE RETAINED. IF THIS PARAMETER
280 REM 			IS OMITED THEN THE HIGHEST
290 REM 			NUMBERED VERSION FOUND WILL BE
300 REM 			RETAINED. ENTER: ** TO DELETE
310 REM 			ALL VERSIONS OF THE FILE.
320 REM
330 REM 	THE DIRECTORY WILL BE RE-DISPLAYED. THIS TIME
340 REM 	THE FILES SELECTED FOR DELETION WILL BE PRINTED
350 REM 	IN RED. THEN THERE WILL BE A PROMPT FOR 
360 REM 	VERIFICATION. IF VERIFICATION IS GIVEN THEN
370 REM 	THE FILES WILL BE DELETED THROUGH FCS. THE
380 REM 	FILES WILL BE DELETED FROM THE BOTTOM OF THE
390 REM 	DIRECTORY UP, TO REDUCE THE AMOUNT OF DISK I/O.
400 REM
410 REM 	AFTER THE DELETIONS HAVE BEGUN THE ONLY TIME
420 REM 	THE PROGRAM SHOULD BE STOPPED IS DURING A
430 REM 	DIRECTORY LISTING.
440 REM
900 REM 
905 CLEAR 300
910 DIM NA$(7,5),TY$(7,5),VR(7,5),DC(7,5)
1000 REM
1010 REM       FIRST DIRECTORY LIST
1020 REM
1030 PLOT 15,6,2,27,4
1040 PRINT "DIR"
1050 PLOT 27,27
2000 REM 
2010 REM       GET NAME OF FILE TO BE DELETED
2020 REM
2030 INPUT "ENTER NAME OF FILES TO BE DELETED : ";FL$:REM 
3000 REM 
3010 REM 	PARSE FILE NAME
3020 REM
3030 VS$= "0"
3040 TP$= "BAS"
3050 NM$= ""
3060 PM= 1
3070 FOR I= 1TO LEN (FL$)
3080 C$= MID$ (FL$,I,1)
3090 ON PMGOTO 4000,4050,4100
4000 IF C$= "."THEN PM= 2:TP$= "":GOTO 4150
4010 IF C$= ";"THEN PM= 3:VS$= "0":GOTO 4150
4020 NM$= NM$+ C$
4030 IF C$= "*"THEN VS$= "-1"
4040 GOTO 4150
4050 IF C$= ";"THEN PM= 3:VS$= "0":GOTO 4150
4060 TP$= TP$+ C$
4070 IF C$= "*"THEN VS$= "-1"
4080 GOTO 4150
4100 VS$= VS$+ C$
4110 IF C$= "*"THEN VS$= "-1":I= LEN (FL$)
4150 NEXT I
4160 IF LEN (NM$)< 6THEN NM$= NM$+ " ":GOTO 4160
4170 IF LEN (TP$)< 3THEN TP$= TP$+ " ":GOTO 4170
4200 VS= 0
4210 FOR I= 1TO LEN (VS$)
4220 C$= MID$ (VS$,I,1)
4230 C= ASC (C$)
4240 C= C- 48
4250 IF C> 9THEN C= C- 7
4260 IF C< 16GOTO 4300
4270 PRINT :PRINT "ILLEGAL HEXADECIMAL VERSION NUMBER":PRINT
4280 GOTO 2000
4300 VS= VS* 16+ C
4310 IF VS> 255GOTO 4270
4320 NEXT I
5000 REM 
5010 REM 	LOAD DIRECTORY INTO MEMORY
5020 REM
5030 T= PEEK (32941)- 2
5040 B= T- 7
5050 X= T:GOSUB 30000:T$= H$
5060 X= B:GOSUB 30000:B$= H$
5070 PLOT 27,4
5080 PRINT "READ 00 ";B$;"00-";T$;"FF"
5090 PLOT 27,27
5100 REM 
5110 REM     SEARCH DIRECTORY FOR NAMES OF FILES TO BE DELETED
5120 REM
5125 HS= 0:HR= 0
5130 LM= PEEK (B* 256+ 34)- 1
5140 FOR S= 0TO LM
5150 FOR R= 0TO 5
5160 IF R= 0AND S= 0GOTO 5750
5170 FB= B* 256+ S* 128+ R* 21+ 3
5180 LB= FB+ 5
5190 IF PEEK (FB- 1)= 1GOTO 6000
5200 N$= ""
5210 FOR I= FBTO LB
5220 N$= N$+ CHR$ (PEEK (I))
5230 NEXT I
5235 NA$(S,R)= N$
5240 FB= LB+ 1:LB= FB+ 2
5250 N$= ""
5260 FOR I= FBTO LB
5270 N$= N$+ CHR$ (PEEK (I))
5280 NEXT I
5290 TY$(S,R)= N$
5300 VR(S,R)= PEEK (I)
5310 REM
5320 REM     DETERMINE IF THIS FILE SHOULD BE DELETED
5330 REM
5340 CD= 0
5350 IF LEFT$ (NM$,1)= "*"GOTO 5400
5360 IF NM$= NA$(S,R)GOTO 5400
5370 GOTO 5700
5400 IF LEFT$ (TP$,1)= "*"GOTO 5450
5410 IF TP$= TY$(S,R)GOTO 5450
5420 GOTO 5700
5450 IF VS= 0GOTO 5500
5460 IF VS= VR(S,R)GOTO 5700
5470 CD= - 1
5480 GOTO 5700
5500 IF LEFT$ (NM$,1)= "*"GOTO 5700
5510 IF LEFT$ (TP$,1)= "*"GOTO 5700
5520 IF VR(HS,HR)> VR(S,R)GOTO 5470
5530 DC(HS,HR)= - 1
5540 HS= S
5550 HR= R
5700 DC(S,R)= CD
5750 NEXT R,S
6000 REM 
6010 REM 	PRINT COLORED DIRECTORY
6020 REM
6030 FS= S:FR= R
6040 FOR S= 0TO FS
6050 FOR R= 0TO 5
6060 FB= B* 256+ S* 128+ R* 21+ 3
6070 IF R= 0AND S= 0GOTO 6500
6080 IF R= FRAND S= FSGOTO 6750
6090 PLOT 6,7
6100 IF DC(S,R)THEN PLOT 6,1
6110 PRINT " 03 ";NA$(S,R);".";TY$(S,R);";";
58856 LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS LS ))
6530 NEXT I
6540 PLOT 6,2
6550 X= LM+ 1:GOSUB 30000
6560 PRINT :PRINT :PRINT
6570 PRINT "DIRECTORY CD0: ";N$;H$
6580 PRINT
6590 PRINT "ATR  NAME TYPE VR SBLK SIZE LBC LADR SADR"
6600 PRINT
6610 GOTO 6900
6750 PLOT 6,2
6760 PRINT " 01 <FREE SPACE> ";
6770 X= PEEK (FB+ 11):GOSUB 30000
6780 PRINT H$;
6790 X= PEEK (FB+ 10):GOSUB 30000
6800 PRINT RIGHT$ (H$,2);
6810 X= PEEK (FB+ 13):GOSUB 30000
6820 PRINT H$;
6830 X= PEEK (FB+ 12):GOSUB 30000
6840 PRINT RIGHT$ (H$,2)
6850 GOTO 7000
6900 NEXT R,S
7000 REM 
7010 REM 	VERIFY FILES TO DELETE
7020 REM
7025 PRINT
7030 PRINT "< VERIFY >  ARE THE FILES IN RED THE ONES TO BE DELETED ?"
7040 INPUT "( YES OR NO ) : ";YN$
7050 IF LEFT$ (YN$,1)= "N"GOTO 10000
7060 IF YN$< > "YES"GOTO 7040
7070 PLOT 27,4
7080 FOR S= FSTO 0STEP - 1
7090 FOR R= 5TO 0STEP - 1
7100 IF S= FSAND R> FRGOTO 7200
7105 IF R= 0AND S= 0GOTO 10000
7110 IF DC(S,R)= 0GOTO 7200
7120 X= VR(S,R):GOSUB 30000
7130 VS$= RIGHT$ (H$,2)
7132 FL$= NA$(S,R)
7134 FOR I= 2TO 6
7136 IF MID$ (FL$,I,1)= " "THEN FL$= LEFT$ (FL$,I- 1):GOTO 7140
7138 NEXT I
7140 FL$= FL$+ "."+ TY$(S,R)+ ";"+ VS$
7150 PRINT "DELETE "FL$
7200 NEXT R,S
7210 PLOT 27,27
10000 END
10010 END
30000 REM 
30010 REM     CONVERT X TO HEX CHARACTERS AND RETURN IN H$
30020 REM
30030 H$= " "
30040 X1= INT (X/ 16):X2= X- 16* X1
30050 IF X2> 9THEN X2= X2+ 7
30060 X2= X2+ 48
30070 IF X1> 9THEN X1= X1+ 7
30080 X1= X1+ 48
30090 H$= H$+ CHR$ (X1)+ CHR$ (X2)
30100 IF X1< 71THEN RETURN
30110 X1= X1- 71
30120 H$= "1"
30130 GOTO 30070
65000 REM 
65010 REM     LIST PROGRAM TO PRINTER
65020 REM
65030 PLOT 27,18,3,27,13
65040 PRINT "          ";
65045 OUT 6,27
65050 PRINT "1       ";
65055 OUT 6,27
65060 PRINT "1       ";
65065 OUT 6,27
65070 PRINT "1"
65080 LIST
65090 POKE 33265,0
65100 REM 
65110 REM
65120 REM 			WARNING
65130 REM 			=======
65140 REM
65150 REM 	THIS PROGRAM DELETES FILES FROM THE DISK.
65160 REM
65170 REM     THE PROGRAM IS DOCUMENTED WITH REMARK STATEMENTS
65180 REM     IN THE BEGINING. THEY SHOULD BE STUDIED BEFORE
65190 REM     RUNNING THE PROGRAM.
65200 REM
65210 REM 
65220 REM     DELETE LINE 1 AND LINES 65100 - 65260 TO MAKE
65230 REM     THIS PROGRAM RUNABLE.
65240 REM
65250 REM      ALSO DELETE LINES 10 - 440 TO RUN IN 8K
65260 REM