Listing of file='FILMGR.BAS;01' on disk='vmedia/taylor_1-sector.ccvf'
100 REM ** READ AND MODIFY DIRECTORY ** 110 POKE 32941,191:POKE 32940,255 120 REM ** BACK UP END OF BASIC ** 130 AD= PEEK (32941)* 256+ PEEK (32940):AD= AD- 5000 140 POKE 32941,INT (AD/ 256):POKE 32940,AD- INT (AD/ 256)* 256 150 CLEAR 1000:DN$= " ":DB= 0:FR= 0 160 PLOT 6,2,12,14,3,10,0 170 PRINT "C O M P U C O L O R F I L E E D I T O R" 180 PLOT 15,0,4:PRINT TAB( 2)"DEL - DELETE FILE"; 190 PRINT TAB( 34)"RND - RENAME DIRECTORY" 200 PRINT TAB( 2)"KEP - KEEP FILE"; 210 PRINT TAB( 34)"SDS - SET DIRECTORY SIZE" 220 PRINT TAB( 2)"DOV - DELETE OLD VERSIONS" 230 PRINT TAB( 2)"REN - RENAME FILE"; 240 PRINT TAB( 34)"RDD - READ DISK DIRECTORY" 250 PRINT TAB( 2)"NVN - NEW VERSION NUMBERS"; 260 PRINT TAB( 34)"UDD - UPDATE DISK" 270 PRINT TAB( 2)"CPD - COMPACT DIRECTORY"; 280 PRINT TAB( 34)"END - END PROGRAM":PRINT 290 PRINT "DIRECTORY NAME: ";DN$;"";:AA= DB:GOSUB 1010 300 PRINT " DIRECTORY LENGTH:";RIGHT$ (AD$,2);""; 310 AA= FR:GOSUB 1010:PRINT " FREE SPACE: ";RIGHT$ (AD$,3);"" 320 FOR I= 11TO 31:PLOT 3,0,I,11:NEXT I:IF NF= 0THEN 400 330 FOR I= 1TO NF:X= 20:IF NF> 15THEN X= 10 340 IF NF> 30THEN X= 0 350 IF I= < 15THEN Y= I+ 11 360 IF I> 15THEN Y= I+ 11- 15:X= 35 370 IF I> 15AND NF> 30THEN X= 23 380 IF I> 30THEN Y= I+ 11- 30:X= 46 390 PLOT 3,X,Y:N= I:GOSUB 710:NEXT I 400 FOR I= 28TO 31:PLOT 3,0,I,11:NEXT I:PLOT 3,0,29 410 PRINT TAB( 10):INPUT "ENTER FILE EDITING COMMAND: ";I$:REM 420 IF I$= "DEL"OR I$= "KEP"OR I$= "REN"THEN 600 430 IF I$= "DOV"THEN GOSUB 1110:GOTO 320 440 IF I$= "REN"THEN GOSUB 1780:GOTO 620 450 IF I$= "NVN"THEN GOSUB 2020:GOTO 320 460 IF I$= "CPD"THEN GOSUB 1170:GOTO 320 470 IF I$< > "RND"THEN 500 480 PRINT TAB( 10)"ENTER NEW DIRECTORY NAME:"; 490 INPUT "";DN$:DN$= LEFT$ (DN$+ " ",10):GOTO 160:REM 500 IF I$< > "SDS"THEN 560 510 PRINT TAB( 10)"ENTER DIRECTORY SIZE:"; 520 INPUT " ";I1$:DB= VAL (I1$):REM 530 IF DB< INT (((2+ NF)/ 6)+ .99)THEN DB= INT (.99+ (2+ NF)/ 6) 535 IF DB> 32THEN DB= 32 540 SB= DB:FOR I= 1TO NF:SB(I)= SB:SB= SB+ NB(I):NEXT I 550 FR= 400- SB:SB= DB:GOTO 160 560 IF I$= "RDD"THEN GOTO 780 570 IF I$= "UDD"THEN GOSUB 1300:GOTO 320 580 IF I$= "END"THEN 750 590 GOTO 400 600 PRINT TAB( 10):INPUT "ENTER FILE NUMBER: ";I1$:N= VAL (I1$):REM 610 IF N< 1OR N> NFTHEN 400 620 IF I$= "REN"THEN GOSUB 1780 630 P(N)= ABS (P(N)):IF I$= "DEL"THEN P(N)= - P(N) 640 X= 20:IF NF> 15THEN X= 10 650 IF NF> 30THEN X= 0 660 IF N= < 15THEN Y= N+ 11 670 IF N> 15THEN Y= N+ 11- 15:X= 35 680 IF N> 15AND NF> 30THEN X= 23 690 IF N> 30THEN Y= N+ 11- 30:X= 46 700 PLOT 3,X,Y:GOSUB 710:GOTO 400 710 PRINT "";:IF P(N)< 0THEN PRINT "";:REM 720 IF ABS (P(N))< 10THEN PRINT " "; 730 PRINT ABS (P(N));". ";N$(N);";"; 740 AA= V(N):GOSUB 1010:PRINT RIGHT$ (AD$,2):RETURN 750 REM ** RESTORE END OF BASIC POINTER ** 760 AD= AD+ 5000:POKE 32941,INT (AD/ 256) 770 POKE 32940,AD- INT (AD/ 256)* 256:CLEAR 100:END 780 REM ** DISSECT DIRECTORY ENTRY ** 790 CLEAR 2000:AD= PEEK (32941)* 256+ PEEK (32940):A= AD+ 1 800 DIM SB(45),NB(45),N$(45),F$(45),P(45),V(45),SO(45) 810 AA= A:GOSUB 1010 820 FOR I= 1TO 45:P(I)= I:NEXT I 830 PRINT TAB( 10):INPUT "ENTER DRIVE NUMBER:";R$:REM 840 IF R$< > "1"AND R$< > "0"THEN 830 850 R$= "READ "+ R$+ ": " 860 PLOT 27,4:PRINT R$+ "0 "+ AD$+ " 1000":PLOT 27,27 870 SB= PEEK (AD+ 2)+ 1:DB= SB:DN$= "" 880 FOR I= AD+ 4TO AD+ 13:DN$= DN$+ CHR$ (PEEK (I)):NEXT I 890 FOR I= AD+ 24TO AD+ 128* (PEEK (AD+ 2)+ 1)STEP 21 900 I1= I- AD- 1:IF I1/ 128= INT (I1/ 128)THEN I= I+ 2 910 IF PEEK (I)< > 1THEN A= I:GOSUB 940:GOTO 930 920 FR= PEEK (I+ 13)+ PEEK (I+ 14)* 256:I= 999999 930 NEXT I:GOTO 160 940 NF= NF+ 1:FOR J= A+ 1TO A+ 9:IF J= A+ 7THEN N$(NF)= N$(NF)+ "." 950 N$(NF)= N$(NF)+ CHR$ (PEEK (J)):NEXT J 960 V(NF)= PEEK (A+ 10) 970 SB(NF)= PEEK (A+ 11)+ PEEK (A+ 12)* 256:SO(NF)= SB(NF) 980 NB(NF)= PEEK (A+ 13)+ PEEK (A+ 14)* 256 990 FOR J= A+ 15TO A+ 20:F$(NF)= F$(NF)+ CHR$ (PEEK (J)):NEXT J 1000 RETURN 1010 REM ** CONVERT DEC TO HEX ** 1020 S$= "0123456789ABCDEF":D= 65536:AD$= "" 1030 FOR II= 1TO 4:D= D/ 16:V= INT (AA/ D):AA= AA- V* D 1040 AD$= AD$+ MID$ (S$,V+ 1,1):NEXT II:RETURN 1050 REM ** CONVERT HEX TO DEC ** 1060 AD$= RIGHT$ ("0000"+ AD$,4):D= 65536:AA= 0:S$= "0123456789ABCDEF" 1070 FOR II= 1TO 4:D= D/ 16:FOR JJ= 1TO 16 1080 IF MID$ (AD$,II,1)< > MID$ (S$,JJ,1)THEN 1100 1090 AA= AA+ (JJ- 1)* D:JJ= 16 1100 NEXT JJ:NEXT II:RETURN 1110 REM ** KEEP MOST RECENT VERSIONS ** 1120 FOR I= 1TO NF:R= I:N$= N$(I) 1130 FOR J= I+ 1TO NF:IF N$= N$(J)AND V(R)< V(J)THEN R= J 1140 NEXT J:P(R)= R 1150 FOR J= 1TO NF:IF N$= N$(J)AND R< > JTHEN P(J)= - J 1160 NEXT J:NEXT I:RETURN 1170 REM ** DELETE DESIRED FILES ** 1180 FOR I= 1TO 99:IF I= NF+ 1THEN I= 99:GOTO 1260 1190 IF P(I)> 0THEN 1260 1200 IF I= NFTHEN I= 99:NF= NF- 1:GOTO 1260 1210 FOR J= ITO NF 1220 N$(J)= N$(J+ 1):SB(J)= SB(J+ 1):NB(J)= NB(J+ 1) 1230 F$(J)= F$(J+ 1):V(J)= V(J+ 1):SO(J)= SO(J+ 1) 1240 P(J)= J:IF P(J+ 1)< 0THEN P(J)= - J 1250 NEXT J:NF= NF- 1:GOTO 1190 1260 NEXT I:SB(1)= SB 1270 FOR I= 2TO NF:SB(I)= SB(I- 1)+ NB(I- 1) 1280 NEXT I:FR= 400- SB(NF)- NB(NF):IF NF= 0THEN FR= 400- SB 1290 RETURN 1300 REM ** CREATE NEW DIRECTORY ** 1310 PRINT TAB( 10):INPUT "ENTER DESTINATION DISK:";W$:REM 1320 IF W$< > "1"AND W$< > "0"THEN 1310 1330 W$= "WRITE "+ W$+ ":" 1340 POKE AD+ 1,0:POKE AD+ 2,DB- 1:POKE AD+ 3,ASC ("A") 1350 FOR I= AD+ 4TO AD+ 13 1360 POKE I,ASC (MID$ (DN$+ " ",I- AD- 3,1)):NEXT I 1370 BK= 0:F= 0:IF NF= 0THEN 1430 1380 FOR I= AD+ 24TO AD+ 128* (PEEK (AD+ 2)+ 1)STEP 21 1390 I1= I- AD- 1:IF I1/ 128< > INT (I1/ 128)THEN 1410 1400 BK= BK+ 1:POKE I,BK:POKE I+ 1,DB- 1:I= I+ 2 1410 F= F+ 1:IF F> NFTHEN J= I:I= 999999:GOTO 1430 1420 A= I:GOSUB 1640 1430 NEXT I:POKE J,1:SB= SB(NF)+ NB(NF) 1440 POKE J+ 11,SB- INT (SB/ 256)* 256:POKE J+ 12,INT (SB/ 256) 1450 NB= 400- SB:POKE J+ 13,NB- INT (NB/ 256)* 256 1460 POKE J+ 14,INT (NB/ 256):POKE J+ 15,128 1470 AA= AD+ 1:GOSUB 1010:BD$= AD$ 1480 AA= DB* 128:GOSUB 1010:ED$= AD$ 1490 PLOT 27,4:PRINT W$+ "0 "+ BD$+ " "+ ED$:PLOT 27,27 1500 REM ** MOVE FILES ** 1510 FOR I= 1TO NF 1520 SO= SO(I):SB= SB(I):NB= NB(I) 1525 IF MID$ (R$,6,1)= MID$ (W$,7,1)AND SO= SBTHEN 1635 1530 AA= NB(I):GOSUB 1010:NB$= AD$ 1540 FOR J= 0TO NBSTEP 32 1550 AA= SO:GOSUB 1010:SO$= RIGHT$ (AD$,2) 1560 AA= SB:GOSUB 1010:SB$= RIGHT$ (AD$,2) 1570 ED= 4096:IF NB- J< 32THEN ED= (NB- J)* 128 1580 AA= ED:GOSUB 1010:ED$= AD$ 1590 AA= AD+ 1:GOSUB 1010:BD$= AD$ 1600 PLOT 27,4:PRINT R$+ SO$+ " "+ BD$+ " "+ ED$ 1610 PRINT W$+ SB$+ " "+ BD$+ " "+ ED$:PLOT 27,27 1620 SO= SO+ 32:SB= SB+ 32:NEXT J 1635 NEXT I:RETURN 1640 REM ** PUT DIRECTORY FILE IN DIRECTORY ** 1650 POKE A,3 1660 FOR J= A+ 1TO A+ 6 1670 POKE J,ASC (MID$ (N$(F)+ " ",J- A,1)):NEXT J 1680 FOR J= A+ 7TO A+ 9 1690 POKE J,ASC (MID$ (N$(F)+ " ",J- A+ 1,1)):NEXT J 1700 POKE A+ 10,V(F) 1710 POKE A+ 11,SB(F)- INT (SB(F)/ 256)* 256 1720 POKE A+ 12,INT (SB(F)/ 256) 1730 POKE A+ 13,NB(F)- INT (NB(F)/ 256)* 256 1740 POKE A+ 14,INT (NB(F)/ 256) 1750 FOR J= A+ 15TO A+ 20 1760 POKE J,ASC (MID$ (F$(F),J- A- 14,1)):NEXT J 1770 RETURN 1780 REM ** RENAME A FILE ** 1790 PLOT 27,24:GOTO 1810 1800 PLOT 3,0,31,11:PRINT "BAD ENTRY"; 1810 PRINT TAB( 10):INPUT "ENTER NEW FILE NAME:";F1$:REM 1820 FL= LEN (F1$):IF F1$= "0"THEN RETURN 1830 FT$= MID$ (N$(N),8,3):D1= 0:C= 0 1840 FOR I= 1TO FL:I$= MID$ (F1$,I,1) 1850 IF D1= 0AND I$= "."THEN D1= I 1860 IF C= 0AND I$= ";"THEN C= I 1870 NEXT I:IF C> 0AND D1> CTHEN 1800 1880 IF D1= 0AND C= 0THEN M= 0:GOTO 1900 1890 M= D1:IF D1= 0THEN M= C:GOTO 1900 1900 IF M= 1THEN 1800 1910 F$= F1$:IF M> 0THEN F$= LEFT$ (F1$,M- 1) 1920 IF LEN (F$)> 6OR LEN (F$)< 1THEN 1800 1930 IF C= 0OR FL= CTHEN 1960 1940 AD$= "00"+ MID$ (F1$,C+ 1,2):GOSUB 1050:V(N)= AA 1950 IF AA< 1THEN 1800 1960 IF D1< 1THEN 2000 1970 IF C= 0THEN C= FL+ 1 1980 IF C- D1< 2THEN 1800 1990 FT$= LEFT$ (MID$ (F1$,D1+ 1,C- D1- 1)+ " ",3) 2000 N$(N)= LEFT$ (F$+ " ",6)+ "."+ FT$ 2010 PLOT 27,11:RETURN 2020 REM ** NEW VERSION NUMBERS ** 2030 FOR I= 1TO NF:V(I)= 0:NEXT I 2040 FOR I= 1TO NF:N$= N$(I):V= 0 2050 FOR J= 1TO NF:IF V(J)= 0AND N$= N$(J)THEN V= V+ 1:V(J)= V 2060 NEXT J,I:RETURN