10 *|" 20 *|"Tree Rename V.2 30 *|" 40 *|"Written by Alex Savvides 50 *|"For 8-Bit Public Domain 60 *|" 70 *|"A program to rename one 80 *|"or all directories to a 90 *|"new directory 100 *|" 110 *|"Updated : 2/9/91 120 *|" 130 *|"WER | 140 : 150 IFPAGE<>&1900THENPRINT'"Set PAGE to &1900 and re-load":END 160 : 170 *TV 255 180 MODE7 190 IFINKEY(-256)=253THENPRINT'"There is no guarantee that Tree Rename"'"works on a BBC Master - Good Luck":GGG=INKEY(200):CLS 200 DIMfile$(34),mark$(34) 210 DIMp%256 220 : 230 PROCinit 240 PROCoff 250 PROCtitle 270 ONERRORIFERR<>17PROCerror 271 REPEAT 280 PROCread_files 290 IFB%=0THENPROCno_files:GOTO270ELSEPROCnot_available 300 PROCwork_screen 310 IFH=68THENPROCclear_tags:GOTO270 320 UNTILH=81 330 CALL!-4 340 END 350 : 360 DEFPROCread_files 370 CLS 380 PROCoff 390 PRINTtag$"Reading files ... Please wait"; 400 PROCclr_mem 410 *FX3 2 420 *DIR$ 430 *. 440 *. 450 *FX3 460 A%=&0E08 470 B%=1 480 REPEAT 490 IF?(A%+7)=0THENR$="$."ELSER$=CHR$(?(A%+7))+"." 500 file$(B%)=R$ 510 D%=0 520 REPEAT 530 IF?(A%+D%)>0OR?(A%+D%)<>&FFTHENfile$(B%)=file$(B%)+CHR$((?(A%+D%))AND127) 540 D%=D%+1 550 UNTILD%=7OR?(A%+D%)=32 560 file$(B%)=FNupcase(file$(B%)) 570 : 580 IFMID$(file$(B%),3,1)<>CHR$0ANDLEN(file$(B%))>=3THENB%=B%+1:PRINTTAB(31,0);B%-1 590 A%=A%+8 600 UNTIL?A%=0ORA%=&F00ORB%=32 610 B%=B%-1 620 ENDPROC 630 : 640 DEFPROCrename_files 650 done=0 660 IFS$=D$PROCmessage("Source & rename are the same!",1):ENDPROC 670 LOCALz 680 IFFNcount_tagged=FNtaggedTHENPROCmessage("All files already exist",1):S$="":D$="":PROCuntag_files:z=1:ENDPROC 690 IFFNare_you_sure=FALSETHENENDPROC 700 PROCmessage("Please wait...",0) 710 FORn=1TOB% 720 HH=0 730 GG=FALSE 740 REPEAT:HH=HH+1 750 IFmark$(HH)=tag$THENGG=TRUE 760 UNTILGG=TRUEORHH=B% 770 IFGG=TRUETHENGOTO790 780 IFHH=B%THENGOTO950 790 a$=file$(HH) 800 JJJJ=INKEY(0) 810 IFJJJJ=9THENPROCmessage("Rename terminated",1):n=B%:GOTO950 820 IFa$=""THENGOTO950 830 z=LEN(a$)-2 840 b$=MID$(a$,3,z) 850 IFS$<>""ANDD$<>""THENIFLEFT$(a$,1)<>S$GOTO950 860 IFS$=""ANDD$<>""ANDLEFT$(a$,1)=D$THENGOTO730 870 IFFNms(a$)=TRUETHENGOTO720 880 PROCtreb(a$) 890 OSCLI"RENAME "+a$+" "+D$+"."+b$ 900 file$(HH)=D$+MID$(file$(HH),2,LEN(file$(HH))) 910 PROCsearch 920 PRINTTAB(ex,wi);" ";ren$;D$ 930 mark$(HH)=ren$ 940 done=done+1 950 NEXTn 960 PROCmessage(STR$(done)+" files renamed",1) 970 S$="":D$="" 980 PROCupdate_values 990 ENDPROC 1000 : 1010 DEFPROCerror 1020 *FX3 1030 VDU7,12 1040 IFERR=17THENENDPROC 1050 PRINTno$"An error has occured:" 1060 REPORT:PRINT" at line ";ERL 1070 PROCkey 1080 PROCset_drive(0) 1090 ENDPROC 1100 : 1110 DEFPROCinput(text$,forbid$) 1120 REPEAT 1130 G$=GET$ 1140 UNTILINSTR(forbid$,G$)=0 1150 IFG$=CHR$(13)THENG$="" 1160 ENDPROC 1170 : 1180 DEFPROCtitle 1190 FORK=0TO1 1200 PRINTTAB(0,K);"";CHR$157;CHR$141" Tree Rename Version 2" 1210 NEXT 1220 PRINTSPC(7);ren$;"Written by Alex Savvides" 1230 PRINTTAB(0,24);"";CHR$157;" An 8-Bit Public Domain Utility"; 1240 VDU28,0,23,39,4 1250 ENDPROC 1260 : 1270 DEFPROCinit 1280 tag$=CHR$131 1290 untag$=CHR$135 1300 ren$=CHR$134 1310 no$=CHR$129 1320 PROCclear_tags 1330 *FX4 2 1340 PROCset_drive(0) 1350 S$="":D$="" 1360 *FX11 1370 CLOSE#0 1380 PROCclr_mem 1390 ENDPROC 1400 : 1410 DEFPROCoff:VDU23;8202;0;0;0;:ENDPROC 1420 : 1430 DEFPROCmark_file 1440 IFLEFT$(file$(z),1)=D$THENVDU7:ENDPROC 1450 IFmark$(z)=untag$THENmark$(z)=tag$:ENDPROC 1460 IFmark$(z)=tag$THENmark$(z)=untag$ 1470 ENDPROC 1480 : 1490 DEFPROCwork_screen 1500 S$="":D$="" 1510 VDU26:PROCtitle 1520 VDU12,26 1530 PRINTTAB(3,4);" WHITE:untaggedYELLOW:tagged" 1540 PRINTTAB(3,5);"CYAN:renamed RED:not available" 1550 PRINTTAB(2,21);" (T)ag all (U)ntag all (D)rive" 1560 PRINTTAB(2,22);" (S)ource (R)ename (G)o!" 1570 PRINTTAB(2,23);" (C)lear (Q)uit (*) command" 1580 PROCdisplay_files 1590 z=1 1600 REPEAT 1610 PROCoff 1620 PROCupdate_values 1630 bar$=CHR$132+CHR$157 1640 PRINTTAB(x,y);bar$;mark$(z); 1650 xx=x:yy=y 1660 *FX4 1 1670 PROCmessage("Select files or key a command:",0) 1680 H=GET 1690 IFH=42THENPROCos_command 1700 IFH=83THENPROCinput_source 1710 IFH=68THENPROCselect_drive 1720 IFH=67THENPROCclear_CYAN_tags:PROCdisplay_files 1730 IFH=71THENPROCcheck_vars:PROCuntag_files:PROCdisplay_files 1740 IFH=82THENPROCselect_rename 1750 IFH=84THENPROCtag_all:PROCdisplay_files 1760 IFH=85THENPROCuntag_files:PROCdisplay_files 1770 IFH=136ANDx<>0THENx=x-13:PROCcursor_pos:GOTO1850 1780 IFH=136ANDx=0ANDy<>0THENx=26:y=y-1:PROCcursor_pos 1790 IFH=137ANDz=B%THENGOTO1830 1800 IFH=137ANDx=26THENy=y+1:x=0:PROCcursor_pos:GOTO1830 1810 IFH=137THENx=x+13:PROCcursor_pos 1820 IFH=138ANDfile$(z+3)<>""ANDy<>MAXTHENy=y+1:PROCcursor_pos 1830 IFH=139ANDy<>0THENy=y-1:PROCcursor_pos 1840 IFH=13PROCmark_file:PROCcursor_pos 1850 : 1860 PRINTTAB(xx,yy);" ";CHR$156; 1870 UNTILH=68ORH=81ORH=42 1880 IFH=42THENGOTO1580 1890 ENDPROC 1900 : 1910 DEFPROCcursor_pos 1920 IFH=136THENz=z-1 1930 IFH=137THENz=z+1 1940 IFH=139THENz=z-3 1950 IFH=138THENz=z+3 1960 ENDPROC 1970 : 1980 DEFFNare_you_sure 1990 PROCmessage("Confirm - Rename tagged files?",0) 2000 REPEAT 2010 YES$=GET$ 2020 UNTILINSTR("YyNn",YES$) 2030 IFINSTR("Nn",YES$)THEN=0 2040 =-1 2050 DEFPROCkey:VDU26:PRINTTAB(3,24);" Press any key to continue ";:AA=GET:PRINTTAB(0,24);"";CHR$157;" An 8-Bit Public Domain Utility";:VDU28,0,19,39,7,12,28,0,19,39,7,12:ENDPROC 2060 : 2070 : 2080 DEFPROCtag_all 2090 FORGG=1TOB% 2100 IFLEFT$(file$(GG),1)<>D$ANDmark$(GG)<>ren$ANDmark$(GG)<>no$THENmark$(GG)=tag$ 2110 NEXT 2120 PROCupdate_values:ENDPROC 2130 : 2140 DEFPROCuntag_files 2150 FORGG=1TOB% 2160 IFmark$(GG)<>ren$ANDmark$(GG)<>no$THENmark$(GG)=untag$ 2170 NEXT:ENDPROC 2180 : 2190 DEFPROCselect_rename 2200 VDU23;82090;0;0;0; 2210 PRINTTAB(21,12); 2220 PROCinput("",""":. "):D$=G$ 2230 PROCoff 2240 ENDPROC 2250 : 2260 DEFPROCinput_source 2270 VDU23;82090;0;0;0; 2280 PRINTTAB(11,12); 2290 PROCinput("",""":. "):S$=G$ 2300 PROCoff 2310 PROCuntag_files 2320 PROCtagit:PROCdisplay_files 2330 ENDPROC 2340 : 2350 DEFPROCupdate_values 2360 VDU26,28,0,20,39,7 2370 PRINTTAB(2,11);" DRIVE:";dr$;"FILES:";B%;"IN USE:";FNtagged;" "; 2371 PRINTTAB(11,12);" ";TAB(21,12);" " 2380 PRINTTAB(2,12);" SOURCE:";S$; 2390 PRINTTAB(12,12);"RENAME:";D$; 2400 ENDPROC 2410 : 2420 DEFFNtagged:tag=0 2430 LOCALG 2440 FORG=1TOB% 2450 IFmark$(G)=tag$THENtag=tag+1 2460 NEXT 2470 =tag 2480 : 2490 DEFPROCselect_drive 2500 VDU23;82090;0;0;0; 2510 PRINTTAB(10,11); 2520 REPEAT:dr$=GET$:UNTILINSTR("0123",dr$):OSCLI"dri. "+dr$:PRINTdr$:ENDPROC 2530 : 2540 : 2550 DEFPROCcheck_vars 2560 IFLEN(S$)=1ANDLEN(D$)=1THENGOTO2610 2570 IFLEN(S$)=1ORLEN(D$)=1ANDFNtagged=0THENPROCmessage("No files selected",1):ENDPROC 2580 IFS$=""ANDD$<>""ANDFNtagged<>0THENPROCms:GOTO2610 2590 IFS$=""ANDD$=""THENPROCmessage("Source/Rename directories?",1):ENDPROC 2600 IFFNtagged>0ANDD$=""THENPROCmessage("Rename directory?",1):ENDPROC 2610 PROCrename_files:ENDPROC 2620 : 2630 DEFPROCmessage(TEXT$,KEY) 2640 PRINTTAB(3,13);STRING$(36," "); 2650 PRINTTAB(0,13);"";CHR$157tag$;TEXT$;" ";CHR$156; 2660 VDU7 2670 IFKEY=0THENENDPROC 2680 A=INKEY(200) 2690 PRINTTAB(0,13);STRING$(37," ");:ENDPROC 2700 : 2710 DEFPROCclear_CYAN_tags 2720 LOCALH 2730 FORH=1TOB% 2740 IFmark$(H)=ren$THENmark$(H)=untag$ 2750 NEXTH 2760 ENDPROC 2770 : 2780 DEFPROCtagit 2790 GH=0 2800 FORVG=1TOB% 2810 IFLEFT$(file$(VG),1)=S$ANDmark$(VG)<>ren$ANDmark$(VG)<>no$THENmark$(VG)=tag$:GH=GH+1 2820 NEXT 2830 IFGH=0THENPROCmessage("No files found in '"+S$+"' directory",1):S$="":ENDPROC 2840 ENDPROC 2850 : 2860 DEFFNms(check$) 2870 LOCALF:LOCALT 2880 F=FALSE 2890 T=0:REPEAT 2900 T=T+1 2910 IFfile$(T)=D$+MID$(check$,2,LEN(check$))THENPROCmessage(D$+MID$(check$,2,LEN(check$))+" exists!",1):mark$(HH)=untag$:F=TRUE:PROCmessage("Please wait...",0) 2920 UNTILT=B%ORF=TRUE 2930 IFF=TRUETHEN=TRUE 2940 =FALSE 2950 : 2960 DEFPROCtreb(check$) 2970 LOCALG 2980 FORG=1TOB% 2990 IFMID$(check$,3,LEN(check$))=MID$(file$(G),3,LEN(file$(G)))ANDG<>HHTHENmark$(G)=no$ 3000 NEXTG 3010 ENDPROC 3020 : 3030 DEFPROCnot_available 3040 FORa=1TOB% 3050 FORb=aTOB% 3060 : 3070 IFMID$(file$(a),3,LEN(file$(a)))=MID$(file$(b),3,LEN(file$(b)))ANDfile$(a)<>file$(b)THENmark$(b)=no$ 3080 NEXTb 3090 NEXTa 3100 ENDPROC 3110 : 3120 DEFPROCms 3130 FORTT=1TOB% 3140 IFmark$(TT)<>tag$THENGOTO3160 3150 IFLEFT$(file$(TT),1)=S$mark$(TT)="" 3160 NEXT:ENDPROC 3170 : 3180 DEFPROCset_drive(drive) 3190 IFdrive>0ANDdrive<4THENdr$=STR$(drive) 3200 dr$=STR$(drive) 3210 OSCLI"DRI. "+dr$:ENDPROC 3220 : 3230 DEFPROCdisplay_files 3240 C=0 3250 VDU28,0,17,39,7,12 3260 FORY=1TOB% 3270 PRINT;" ";mark$(Y);file$(Y);SPC(12-LEN(file$(Y)+" "));CHR$156;:C=C+1 3280 IFC=3THENPRINT';:C=0 3290 NEXTY 3300 : 3310 x=0:y=0:z=1 3320 MAX=INT(B%/3) 3330 ENDPROC 3340 : 3350 DEFPROCsearch 3360 ex=-13:wi=0 3370 FORR=1TOHH 3380 ex=ex+13 3390 IFex=39THENwi=wi+1:ex=0 3400 NEXT 3410 ENDPROC 3420 : 3430 DEFFNupcase($p%) 3440 LOCALA%,B%,L%,Z% 3450 A%=ASC"a":Z%=ASC"z" 3460 FORL%=0TOLEN($p%)-1:B%=p%?L% 3470 IFB%>=A%IFB%<=Z%p%?L%=B%AND&5F 3480 NEXT:=$p% 3490 : 3500 DEFFNcount_tagged 3510 yes=0 3520 FORT=1TOB% 3530 IFmark$(T)<>tag$THENGOTO3550 3540 IFLEFT$(file$(T),1)=D$THENyes=yes+1 3550 NEXT 3560 =yes 3570 : 3580 DEFPROCno_files 3590 CLS 3600 ONERRORCALL!-4 3610 PRINTren$"There are no renameable files" 3620 PRINTren$"on this disk."' 3630 PRINTtag$"Please insert another disk, or enter" 3640 PRINTtag$"an alternative drive no.:" 3650 PRINT'"Enter new drive (ESCAPE TO QUIT) : " 3660 REPEAT 3670 DR$=GET$ 3680 UNTILINSTR("0123",DR$) 3690 OSCLI"DRI. "+DR$ 3700 ENDPROC 3710 : 3720 DEFPROCclear_tags 3730 FORT=1TO31:mark$(T)="":NEXTT 3740 ENDPROC 3750 : 3760 DEFPROCos_command 3770 CLS 3780 INPUT"Enter command: *"OS$ 3790 CLS 3800 OSCLIOS$ 3810 PROCkey 3820 ENDPROC 3830 DEFPROCclr_mem 3840 FORI=&0E08TO&F00 3850 ?I=0 3860 NEXT:ENDPROC