10 REM [0x0C] 20 *|"„ 30 *|"„ƒTree Rename v2.01 40 *|"„ 50 *|"„ƒFilename: TreRen2 60 *|"„ 70 *|"„ƒWritten by Alex Savvides 80 *|"„ƒFor 8-Bit Public Domain 90 *|"„ 100 *|"„ƒThanks to Hugh Williams 110 *|"„ 120 *|"„ƒA program to rename one 130 *|"„ƒor all files in one 140 *|"„ƒdirectory to another 150 *|"„ 160 *|"„ƒUpdated : 2 January 1992 170 *|"„ 180 *|"„ƒPlease see manual files: 190 *|"„ƒT.reetxt1 & T.reetxt2 200 *|"„ƒforƒfull instructions 210 *|"„ 220 *|"„ 230 *|"‡„THIS PROGRAM MAY BE COPIED 240 *|"‡„FREELY AND GIVEN TO ANYONE 250 *|"‡„WHO MAY FIND IT USEFUL 260 *|"„ 270 : 280 IFPAGE<>&1900THENPRINT'"ƒSet PAGE to &1900 and re-load":END 290 : 300 *TV 255 310 MODE7 320 PROCmaster 330 DIMfile$(34),mark$(34),p%256 340 : 350 PROCinit 360 PROCoff 370 PROCtitle 380 : 390 ONERRORIFERR<>17PROCerror 400 : 410 REPEAT 420 VDU28,0,23,39,4,12 430 PROCclear_tags 440 PROCread_files 450 IFB%=0THENPROCno_files:GOTO390 460 PROCsort 470 PROCnot_available 480 PROCget_title 490 PRINT"†Unlocking files..." 500 *ACC.*.* 510 PROCwork_screen 520 IFH=68THENPROCclear_tags:GOTO390 530 UNTILH=81 540 VDU26,12:PRINT"„";CHR$157"ƒThanks for using Tree Rename v2.01 !"'' 550 *B. 560 END 570 : 580 REM 590 REM"†Read in files 600 REM 610 DEFPROCread_files 620 PROCoff 630 PRINT"†Reading catalogueƒ"; 640 PROCclr_mem 650 *DIR$ 660 *FX3 2 670 REM"‚See note below: 680 *. 690 *. 700 REM"ƒIMPORTANT: This program 710 REM"ƒshould NOT be run if above 720 REM"ƒtwo lines are not identical 730 REM"This is to avoid the dfs 740 REM"corrupting the catalogue 750 REM"which itwill if the disk 760 REM"has not been allowed to 770 REM"stop spinning before the 780 REM"program is run... 790 *FX3 800 A%=&0E08 810 B%=1 820 REPEAT 830 IF?(A%+7)=0THENR$="$."ELSER$=CHR$(?(A%+7))+"." 840 file$(B%)=R$ 850 D%=0 860 REPEAT 870 IF?(A%+D%)>0OR?(A%+D%)<>&FFTHENfile$(B%)=file$(B%)+CHR$((?(A%+D%))AND127) 880 D%=D%+1 890 UNTILD%=7OR?(A%+D%)=32 900 file$(B%)=FNupcase(file$(B%)) 910 IFfile$(B%)="$.!BOOT"THENmark$(B%)=no$ 920 IFMID$(file$(B%),3,1)<>CHR$0ANDLEN(file$(B%))>=2THENB%=B%+1 930 A%=A%+8 940 UNTIL?A%=0ORA%=&F00ORB%=32 950 B%=B%-1 960 PRINT;B%;" file(s) found" 970 ENDPROC 980 : 990 REM 1000 REM"†Rename tagged files 1010 REM 1020 DEFPROCrename_files 1030 LOCALF 1040 done=0 1050 IFS$=D$PROCcode(2):ENDPROC 1060 IFFNcount_tagged=FNtaggedTHENPROCmessage("File(s) already exist",1):S$="":D$="":PROCuntag_all(1):hilited=1:ENDPROC 1070 IFFNare_you_sure=FALSETHENENDPROC 1080 PROCdubcheck 1090 VDU26 1100 fin=FNtagged 1110 PROChelp_menu 1120 VDU26 1130 PRINTTAB(26,20);fin;" ";CHR$156 1140 PRINTTAB(16,20);FNtagged 1150 VDU28,0,17,39,7,30 1160 F=0 1170 FORn=1TOB% 1180 ren=0 1190 found=FALSE 1200 REPEAT:ren=ren+1 1210 IFmark$(ren)=tag$THENfound=TRUE 1220 UNTILfound=TRUEORren=B%ORfin=F 1230 IFfound=TRUETHENF=F+1:GOTO1250 1240 IFren=B%ORF=finTHENGOTO1450 1250 a$=file$(ren) 1260 key=INKEY(0) 1270 IFkey=9THENPROCmessage("Rename terminated",1):n=B%:PROCuntag_all(0):n=B%:GOTO1450 1280 IFa$=""THENGOTO1450 1290 hilited=LEN(a$)-2 1300 b$=MID$(a$,3,hilited) 1310 IFS$<>""ANDD$<>""THENIFLEFT$(a$,1)<>S$GOTO1450 1320 IFS$=""ANDD$<>""ANDLEFT$(a$,1)=D$THENGOTO1190 1330 IFFNms(a$)=TRUETHENGOTO1430 1340 PROCtreb(a$) 1350 OSCLI"RENAME "+a$+" "+D$+"."+b$ 1360 file$(ren)=D$+MID$(file$(ren),2,LEN(file$(ren))) 1370 PROCsearch 1380 PRINTTAB(ex,wi);" ";ren$;D$; 1390 mark$(ren)=ren$ 1400 done=done+1 1410 VDU26 1420 PRINTTAB(16,20);" " 1430 PRINTTAB(16,20);FNtagged 1440 VDU28,0,17,39,7,30 1450 NEXTn 1460 S$="":D$="" 1470 menu=2 1480 PROCcommands 1490 PROCmessage(STR$(done)+" file(s) renamed",1) 1500 PROCdisplay_files 1510 PROCvalues 1520 ENDPROC 1530 : 1540 REM 1550 REM"†Error reporting 1560 REM 1570 DEFPROCerror 1580 *FX3 1590 IFERR=17THENENDPROC 1600 VDU26,28,0,23,39,4,12,7 1610 PRINT"ƒAn unexpected error has caused"'"ƒthe program to hault:" 1620 VDU26 1630 FORAS=7TO10:PRINTTAB(0,AS);"";:NEXT 1640 VDU28,2,10,39,7,12 1650 REPORT:PRINT;" at line ";ERL; 1660 VDU26,31,0,10 1670 PRINT'"‚Please report the error to 8-Bit as"'"‚soon as possible..." 1680 PROCkey 1690 PROCset_drive(0) 1700 ENDPROC 1710 : 1720 REM 1730 REM"†Input routine for source/ 1740 REM"†destination drives 1750 REM 1760 DEFPROCinput(text$,forbid$) 1770 VDU23;82090;0;0;0; 1780 REPEAT 1790 G$=GET$ 1800 UNTILINSTR(forbid$,G$)=0 1810 IFG$=CHR$(13)THENG$="" 1820 PROCoff 1830 ENDPROC 1840 : 1850 REM 1860 REM"†Titles etc. 1870 REM 1880 DEFPROCtitle 1890 FORK=0TO1 1900 PRINTTAB(0,K);"„";CHR$157;CHR$141"ƒ Tree Rename Version 2.01" 1910 NEXT 1920 PRINTSPC(7);ren$;"Written by Alex Savvides" 1930 PROCblu(" An 8-Bit Public Domain Utility") 1940 VDU28,0,23,39,4 1950 ENDPROC 1960 : 1970 REM 1980 REM"†Initialise variables 1990 REM 2000 DEFPROCinit 2010 IFTOP-2<>20595 THENSOUND1,-15,50,2:PRINT'"This is not an original version."''"The program has been changed and may "'"not run correctly. I advise that you"'"obtain an un-altered version for your"'"own protection.":END 2020 NA=0 2030 *FX4 1 2040 title$="" 2050 bar$=CHR$132+CHR$157 2060 tag$=CHR$131 2070 untag$=CHR$135 2080 ren$=CHR$134 2090 no$=CHR$129 2100 menu=1 2110 PROCclear_tags 2120 PROCset_drive(0) 2130 S$="":D$="" 2140 *FX11 2150 CLOSE#0 2160 PROCclr_mem 2170 x=0:y=0 2180 ENDPROC 2190 : 2200 REM 2210 REM"†Cursor off 2220 REM 2230 DEFPROCoff 2240 VDU23;8202;0;0;0;:ENDPROC 2250 : 2260 REM 2270 REM"†Tag file 2280 REM 2290 DEFPROCmark_file 2300 IFLEFT$(file$(hilited),1)=D$THENVDU7:ENDPROC 2310 IFmark$(hilited)=untag$THENmark$(hilited)=tag$:ENDPROC 2320 IFmark$(hilited)=tag$THENmark$(hilited)=untag$ 2330 ENDPROC 2340 : 2350 REM 2360 REM"†Main work-screen 2370 REM 2380 DEFPROCwork_screen 2390 S$="":D$="" 2400 VDU26,12 2410 : 2420 PROCtitle 2430 PROCcols 2440 PROCcommands 2450 PROCvals 2460 PROCvalues 2470 PROCdisplay_files 2480 : 2490 hilited=1 2500 : 2510 REPEAT 2520 *FX202 32 2530 PROCoff 2540 PRINTTAB(x,y);bar$;mark$(hilited); 2550 xx=x:yy=y 2560 H=GET 2570 IFH=32THENH=68:GOTO2840 2580 IFH=49THENmenu=2:PROCcommands 2590 IFH=72THENmenu=1:PROCcommands 2600 IFH=42THENPROCos_command:GOTO2840 2610 IFH=136ANDx<>0THENx=x-13:PROCcursor_pos:GOTO2630 2620 IFH=136ANDx=0ANDy<>0THENx=26:y=y-1:PROCcursor_pos 2630 IFH=137ANDhilited=B%THENGOTO2670 2640 IFH=137ANDx=26THENy=y+1:x=0:PROCcursor_pos:GOTO2670 2650 IFH=137THENx=x+13:PROCcursor_pos 2660 IFH=138ANDy<>MAXANDfile$(hilited+3)<>""THENy=y+1:PROCcursor_pos 2670 IFH=139ANDy<>0THENy=y-1:PROCcursor_pos 2680 IFH=136ORH=137ORH=138ORH=139THENGOTO2830 2690 : 2700 : 2710 IFH=13PROCmark_file:PROCvalues:PROCcursor_pos 2720 IFH=83THENPROCinput_source:PROCvalues 2730 IFH=68THENPROCinput_drive:PROCvalues 2740 IFH=67THENPROCclear_CYAN_tags 2750 IFH=82THENPROCinput_rename:PROCvalues 2760 IFH=84THENPROCtag_all 2770 IFH=85THENPROCuntag_all(1) 2780 IFH<>71GOTO2800 2790 IFH=71THENIFFNcheck_vars<>1THENPROCrename_files:PROCvalues 2800 : 2810 PROCmessage("Select file(s) or key a command:",0) 2820 VDU28,0,17,39,7 2830 PRINTTAB(xx,yy);" ";CHR$156; 2840 UNTILH=68ORH=81ORH=42 2850 IFH=42THENGOTO2400 2860 ENDPROC 2870 : 2880 REM 2890 REM"†Keep track of where high- 2900 REM"†light bar is on screen 2910 REM 2920 DEFPROCcursor_pos 2930 IFH=136THENhilited=hilited-1 2940 IFH=137THENhilited=hilited+1 2950 IFH=139THENhilited=hilited-3 2960 IFH=138THENhilited=hilited+3 2970 ENDPROC 2980 : 2990 REM 3000 REM"†Confirmation.... 3010 REM 3020 DEFFNare_you_sure 3030 PROCmessage("Rename tagged files? (Y/N) :",0) 3040 REPEAT 3050 YES$=GET$ 3060 UNTILINSTR("YyNn",YES$) 3070 IFINSTR("Nn",YES$)THEN=0 3080 =-1 3090 : 3100 REM 3110 REM"†Press a key... 3120 REM 3130 DEFPROCkey 3140 VDU26 3150 PROCblu("Tap a key to return to work-screen") 3160 key=GET 3170 ENDPROC 3180 : 3190 REM 3200 REM"†Sort files alphabetically 3210 REM 3220 DEFPROCsort 3230 PRINT"†Sorting filesƒ"; 3240 temp$="" 3250 IFB%=1THENENDPROC 3260 FORtop=1TOB% 3270 smallest=top 3280 FORtest=topTOB% 3290 f$=MID$(file$(top),2,LEN(file$(top))) 3300 IFMID$(file$(test),3,1)<=MID$(file$(smallest),3,1)THENsmallest=test 3310 NEXTtest 3320 temp$=file$(top) 3330 mtemp$=mark$(top) 3340 file$(top)=file$(smallest) 3350 mark$(top)=mark$(smallest) 3360 file$(smallest)=temp$ 3370 mark$(smallest)=mtemp$ 3380 NEXTtop 3390 PRINT"done" 3400 ENDPROC 3410 : 3420 REM 3430 REM"†Tag all files 3440 REM 3450 DEFPROCtag_all 3460 S$="" 3470 FORpass=1TOB% 3480 IFLEFT$(file$(pass),1)<>D$ANDmark$(pass)<>ren$ANDmark$(pass)<>no$THENmark$(pass)=tag$ 3490 NEXT 3500 PROCdisplay_files 3510 PROCvalues 3520 ENDPROC 3530 : 3540 REM 3550 REM"†Untag all 3560 REM 3570 DEFPROCuntag_all(opt) 3580 FORpass=1TOB% 3590 IFmark$(pass)<>ren$ANDmark$(pass)<>no$THENmark$(pass)=untag$ 3600 NEXT 3610 IFopt=0THENENDPROC 3620 PROCdisplay_files 3630 PROCvalues 3640 ENDPROC 3650 : 3660 REM 3670 REM"†Input directory to rename 3680 REM"†files to 3690 REM 3700 DEFPROCinput_rename 3710 PROCmessage("Enter dest. directory : ",0) 3720 PRINTTAB(27,20); 3730 PROCinput("",""":. "):D$=G$ 3740 IFS$=D$THENPROCcode(2):D$="":ENDPROC 3750 PROCoff 3760 ENDPROC 3770 : 3780 REM 3790 REM"†Input directory to rename 3800 REM"†files from 3810 REM 3820 DEFPROCinput_source 3830 PROCmessage("Enter source directory :",0) 3840 PRINTTAB(27,20); 3850 PROCinput("",""":. "):S$=G$ 3860 PROCoff 3870 IFD$=S$THENPROCcode(2):S$="":ENDPROC 3880 PROCuntag_all(0) 3890 PROCtagit:PROCdisplay_files 3900 ENDPROC 3910 : 3920 REM 3930 REM"†Display current values 3940 REM 3950 DEFPROCvals 3960 VDU26 3970 PRINTTAB(0,18);STRING$(38," "); 3980 PRINTTAB(0,19);STRING$(38," "); 3990 PRINTTAB(0,20);STRING$(38," "); 4000 PRINTTAB(2,18);"TOTAL:ƒ ‡‡TAGGED:ƒ ‡ N/A :ƒ " 4010 PRINTTAB(2,19);"DRIVE:ƒ ‡ SOURCE:ƒ" 4020 PRINTTAB(22,19);"‡‡RENAME:ƒ" 4030 ENDPROC 4040 : 4050 REM 4060 REM"†Update and display values 4070 REM 4080 DEFPROCvalues 4090 VDU26 4100 PRINTTAB(9,18);" " 4110 PRINTTAB(9,18);B%;"‡" 4120 PRINTTAB(20,18);" " 4130 PRINTTAB(20,18);FNtagged 4140 PRINTTAB(32,18);" " 4150 PRINTTAB(32,18);NA 4160 PRINTTAB(9,19);" ‡" 4170 PRINTTAB(9,19);dr$ 4180 PRINTTAB(20,19);" " 4190 PRINTTAB(20,19);S$ 4200 PRINTTAB(32,19);" " 4210 PRINTTAB(32,19);D$ 4220 PROCmessage("Select file(s) or key a command:",0) 4230 VDU28,0,17,39,7 4240 ENDPROC 4250 : 4260 REM 4270 REM"†Count tagged files 4280 REM 4290 DEFFNtagged 4300 tag=0 4310 FORcount=1TOB% 4320 IFmark$(count)=tag$THENtag=tag+1 4330 NEXT 4340 =tag 4350 : 4360 REM 4370 REM"†Input drive specification 4380 REM 4390 DEFPROCinput_drive 4400 PRINTTAB(10,11); 4410 PROCmessage("Enter drive to use : ",0) 4420 REPEAT:drv$=GET$:UNTILINSTR("0123",drv$) 4430 PROCset_drive(VAL(drv$)) 4440 PROCvalues 4450 ENDPROC 4460 : 4470 REM 4480 REM"†Validate source/rename 4490 REM"†directories 4500 REM 4510 DEFFNcheck_vars 4520 PROCmessage("Please wait...",0) 4530 IFLEN(S$)=1ANDLEN(D$)=1THENGOTO4580 4540 IFFNtagged=0THENPROCcode(1):=1 4550 IFS$=""ANDD$<>""ANDFNtagged<>0THENPROCuntag_matching:GOTO4580 4560 IFS$=""ANDD$=""THENPROCcode(3):=1 4570 IFFNtagged>0ANDD$=""THENPROCcode(5):=1 4580 =0 4590 : 4600 REM 4610 REM"†Message displays 4620 REM 4630 DEFPROCmessage(TEXT$,KEY) 4640 VDU26 4650 IFKEY=2THENADD$="Error: "ELSEADD$="" 4660 PRINTTAB(0,20);STRING$(39," "); 4670 PRINTTAB(0,20);"‡";CHR$157"„";ADD$;" ";TEXT$; 4680 IFKEY=0THENPRINT" ";CHR$156;:ENDPROC 4690 *FX15 1 4700 KEY$=INKEY$(150) 4710 PRINTTAB(0,20);STRING$(36," "); 4720 ENDPROC 4730 : 4740 REM 4750 REM"†Untag tagged files 4760 REM 4770 DEFPROCclear_CYAN_tags 4780 FORuntag=1TOB% 4790 IFmark$(untag)=ren$THENmark$(untag)=untag$ 4800 NEXTuntag 4810 VDU26 4820 IFmenu=2THENPRINTTAB(22,22);"‰" 4830 PROCdisplay_files 4840 ENDPROC 4850 : 4860 REM 4870 REM"†Tag selected file 4880 REM 4890 DEFPROCtagit 4900 found=0 4910 FORfind=1TOB% 4920 IFLEFT$(file$(find),1)=S$ANDmark$(find)<>ren$ANDmark$(find)<>no$THENmark$(find)=tag$:found=found+1 4930 NEXT 4940 IFfound=0THENPROCcode(4):S$="":PROCvalues 4950 ENDPROC 4960 : 4970 REM 4980 REM"†Check that file being 4990 REM"†renamed does not appear 5000 REM"†in another directory. 5010 REM 5020 DEFFNms(check$) 5030 LOCALF:LOCALT 5040 F=FALSE 5050 T=0:REPEAT 5060 T=T+1 5070 IFfile$(T)=D$+MID$(check$,2,LEN(check$))THENPROCmessage(D$+MID$(check$,2,LEN(check$))+" exists!",1):mark$(ren)=untag$:F=TRUE:PROCmessage("Please wait...",0) 5080 UNTILT=B%ORF=TRUE 5090 IFF=TRUETHEN=TRUE 5100 =FALSE 5110 : 5120 REM 5130 REM"†Check for duplicate file- 5140 REM"†names regardless of 5150 REM"†directory 5160 REM 5170 DEFPROCtreb(check$) 5180 FORpass=1TOB% 5190 IFMID$(check$,3,LEN(check$))=MID$(file$(pass),3,LEN(file$(pass)))ANDpass<>renTHENmark$(pass)=no$ 5200 NEXTpass 5210 ENDPROC 5220 : 5230 REM 5240 REM"†See REM(s) for PROCtreb 5250 REM 5260 DEFPROCnot_available 5270 PRINT"†Finding un-available files"; 5280 NA=0 5290 FORa=1TOB% 5300 FORb=a+1TOB% 5310 : 5320 IFMID$(file$(a),3,LEN(file$(a)))=MID$(file$(b),3,LEN(file$(b)))ANDfile$(a)<>file$(b)THENmark$(b)=no$ 5330 NEXTb 5340 NEXTa 5350 : 5360 FORcount=1TOB% 5370 IFmark$(count)=no$THENNA=NA+1 5380 NEXT 5390 PRINT;"ƒ";NA;" found" 5400 ENDPROC 5410 : 5420 REM 5430 REM"†Untag any files that match 5440 REM"†the source directory 5450 REM 5460 DEFPROCuntag_matching 5470 FORTT=1TOB% 5480 IFmark$(TT)<>tag$THENGOTO5500 5490 IFLEFT$(file$(TT),1)=S$THENmark$(TT)=untag$ 5500 NEXT:ENDPROC 5510 : 5520 REM 5530 REM"†*DRIVE selected drive 5540 REM 5550 DEFPROCset_drive(drive) 5560 dr$=STR$(drive) 5570 OSCLI"DRI. "+dr$ 5580 ENDPROC 5590 : 5600 REM 5610 REM"†Display files on screen 5620 REM 5630 DEFPROCdisplay_files 5640 C=0 5650 VDU28,0,17,39,7,30 5660 FORY=1TOB% 5670 PRINT;" ";mark$(Y);file$(Y);SPC(12-LEN(file$(Y)+" "));CHR$156;:C=C+1 5680 IFC=3THENPRINT';:C=0 5690 NEXTY 5700 : 5710 x=0:y=0:hilited=1 5720 MAX=INT(B%/3) 5730 VDU28,0,17,39,7 5740 ENDPROC 5750 : 5760 DEFPROCsearch 5770 ex=-13:wi=0 5780 FORR=1TOren 5790 ex=ex+13 5800 IFex=39THENwi=wi+1:ex=0 5810 NEXT 5820 ENDPROC 5830 : 5840 REM 5850 REM"†Convert filenames held in 5860 REM"†array to upper case 5870 REM 5880 DEFFNupcase($p%) 5890 LOCALA%,B%,L%,Z% 5900 A%=ASC"a":Z%=ASC"z" 5910 FORL%=0TOLEN($p%)-1:B%=p%?L% 5920 IFB%>=A%IFB%<=Z%p%?L%=B%AND&5F 5930 NEXT:=$p% 5940 : 5950 REM 5960 REM"†Total tagged files 5970 REM 5980 DEFFNcount_tagged 5990 any=0 6000 FORT=1TOB% 6010 IFmark$(T)<>tag$THENGOTO6030 6020 IFLEFT$(file$(T),1)=D$THENany=any+1 6030 NEXT 6040 =any 6050 : 6060 REM 6070 REM"†No files available for 6080 REM"†renaming 6090 REM 6100 DEFPROCno_files 6110 VDU28,0,17,39,4,12 6120 ONERRORCALL!-4 6130 PRINTren$"There are no files on this drive!"' 6140 PRINTtag$"Please insert another disk, and/or" 6150 PRINTtag$"enter a new drive no.:" 6160 PRINT'"…Enter new drive (ESCAPE TO QUIT) : " 6170 REPEAT 6180 DR$=GET$ 6190 UNTILINSTR("0123",DR$) 6200 PROCset_drive(VAL(DR$)) 6210 ENDPROC 6220 : 6230 REM 6240 REM"†Clear tagged files 6250 REM 6260 DEFPROCclear_tags 6270 FORpass=1TO31:mark$(pass)=untag$:NEXTpass 6280 ENDPROC 6290 : 6300 REM 6310 REM"†Input O.S. Command 6320 REM 6330 DEFPROCos_command 6340 VDU26,28,0,23,39,4,12 6350 INPUT"ƒEnter command: *"OS$ 6360 CLS 6370 OSCLIOS$ 6380 PROCkey 6390 ENDPROC 6400 : 6410 REM 6420 REM"†Display 'renaming' text 6430 REM 6440 DEFPROChelp_menu 6450 VDU26,28,0,23,39,21,12,30,26 6460 PRINTTAB(0,22);" terminate (response may not be" 6470 PRINTTAB(18,23);"immediate)." 6480 PROCmessage(" Remaining : out of ",0) 6490 VDU26:ENDPROC 6500 : 6510 REM 6520 REM"†Blank &0E08 - &0F00: 6530 REM"†Area of memory reserved 6540 REM"†for catalogue (DFS only) 6550 REM 6560 DEFPROCclr_mem 6570 FORmem=&0E08TO&F00 6580 ?mem=0 6590 NEXT:ENDPROC 6600 : 6610 REM"€Co‚lƒo„u…r† guide 6620 REM 6630 DEFPROCcols 6640 VDU12,26 6650 PRINTTAB(3,4);" WHITE:untaggedƒƒYELLOW:tagged" 6660 PRINTTAB(3,5);"†CYAN:renamed RED:not available" 6670 PRINTTAB((40-LEN("Disk title: "+title$+" "))/2);"ƒ";CHR$157"„Disk title: '";title$;"' ";CHR$156 6680 ENDPROC 6690 : 6700 REM 6710 REM"†Commands 6720 REM 6730 DEFPROCcommands 6740 VDU26,28,0,23,39,21,30,12 6750 IFmenu=2THENGOTO6810 6760 CLS 6770 PRINT" …(Cursor keys) move highlight bar" 6780 PRINT" …(RETURN) tag/untag file" 6790 PRINT" …(1) command summary"; 6800 GOTO6860 6810 CLS 6820 PRINT"…(T)ag all (U)ntag all (D)rive (G)o" 6830 PRINT"…(S)ource (R)ename (C)lear (*) Os" 6840 PRINT"…(Q)uit (SPC) Re-cat‡(H)elp Menu"; 6850 IFFNcount_tag=1THENPRINTTAB(22,1);"ˆ";TAB(31,1);"‰"; 6860 ENDPROC 6870 : 6880 REM"†Checks to see that any 6890 REM"†files tagged are not any 6900 REM"†in the destination directory 6910 REM"†This saves times renaming 6920 REM"†files to themselves!!! 6930 REM 6940 DEFPROCdubcheck 6950 FORcheck=1TOB% 6960 IFLEFT$(file$(check),1)=D$ANDmark$(check)=tag$THENmark$(check)=untag$ 6970 NEXT 6980 PROCdisplay_files 6990 PROCvalues 7000 ENDPROC 7010 : 7020 REM 7030 REM"†Totals tagged files 7040 REM 7050 DEFFNcount_tag 7060 found=0 7070 FORtotal=1TOB% 7080 IFmark$(total)=ren$THENfound=found+1 7090 NEXT 7100 IFfound>0THEN=1ELSE=0 7110 : 7120 REM 7130 REM"†Yellow text on blue 7140 REM"†highight bar ... 7150 REM 7160 DEFPROCblu(blu$) 7170 ASD=LEN(blu$)+3 7180 VDU26 7190 PRINTTAB(0,24);"„";CHR$157;"ƒ";blu$;STRING$(39-ASD," "); 7200 ENDPROC 7210 : 7220 : 7230 REM"†Checks whether machine is 7240 REM"†a BBC Master and displays 7250 REM"†message if it is 7260 REM 7270 DEFPROCmaster 7280 IFINKEY(-256)<>253THENENDPROC 7290 PRINT'"There is no guarantee that Tree Rename" 7300 PRINT"works on a BBC Master - you have" 7310 PRINT"been warned !" 7320 key=INKEY(250) 7330 CLS 7340 ENDPROC 7350 : 7360 REM 7370 REM"†Program error codes 7380 REM 7390 DEFPROCcode(err) 7400 IFerr=1THENPROCmessage("No file(s) selected",2) 7410 IFerr=2THENPROCmessage("Source & rename must differ",2) 7420 IFerr=3THENPROCmessage("Source/Rename directories?",2) 7430 IFerr=4THENPROCmessage("No files in '"+S$+"' directory",2) 7440 IFerr=5THENPROCmessage("Rename directory?",2) 7450 ENDPROC 7460 : 7470 REM 7480 REM"†Read disk title from memory 7490 REM 7500 DEFPROCget_title 7510 PRINT"†Getting disk titleƒ"; 7520 T%=&0DFF:T$="":al=T%:C$="" 7530 REPEAT 7540 al=al+1 7550 IFFNchar(?al)=0THENT$=T$+"?"ELSET$=T$+C$ 7560 UNTILal=&0E07 7570 T%=&0EFF:al=T%:C$="" 7580 REPEAT 7590 al=al+1 7600 IFFNchar(?al)=0THENT$=T$+"?"ELSET$=T$+C$ 7610 UNTILal=&0F03 7620 title$=T$ 7630 IFtitle$=STRING$(12,"?")THENtitle$="" 7640 PRINT"done" 7650 ENDPROC 7660 : 7670 REM 7680 REM"†Compare chars in disk title 7690 REM"†to valid ASCII chars in 7700 REM"†range 31 - 126 7710 REM 7720 DEFFNchar(char) 7730 chars=31 7740 REPEAT 7750 chars=chars+1 7760 UNTILCHR$(char)=CHR$(chars)ORchars=126 7770 IFCHR$(char)=CHR$(chars)THENC$=CHR$(char):=1 7780 IFchars=126THEN=0 7790 ENDPROC