Listing of file='MOVFIL.BAS;01' on disk='vmedia/ncc_10-sector.ccvf'
10 REM 20 REM PROGRAM NAME: UTIL02 30 REM PROGRAMMER: JIM PARKER 40 REM 50 REM PURPOSE: 60 REM THIS PROGRAM MOVES A FILE FROM ONE DISK 70 REM TO ANOTHER DISK USING ONLY ONE DRIVE. 80 REM THE PROGRAM WILL PROMT FOR THE NAME OF 90 REM THE FILE TO BE MOVED. THE FORMAT OF THE 100 REM REPLY IS: 110 REM FILENM.TYP;VR 120 REM WHERE: 130 REM FILENM IS THE NAME OF THE FILE TO BE 140 REM MOVED. THIS PARAMETER MUST BE PRESENT. 150 REM 160 REM TYP IS THE FILE TYPE: BAS, RND, ETC. 170 REM THIS PARAMETER IS OPTIONAL. IF OMMITED 180 REM BAS WILL BE ASSUMED. 190 REM 200 REM VR IS THE VERSION NUMBER OF THE FILE 210 REM TO BE MOVED. THIS PARAMETER IS OPTIONAL. 220 REM IF OMMITED THE HIGHEST NUMBERED VERSION 230 REM WILL BE MOVED. 240 REM 250 REM IF IT IS NECESSARY TO USE THIS PROGRAM 260 REM WITH DISKS HAVING MORE THAN 8 DIRECTORY 270 REM BLOCKS LINE 31040 WILL HAVE TO BE MODIFIED. 280 REM 290 REM DELETE THESE REMARKS TO INCREASE THE 300 REM AVAILABLE BUFFER SPACE. 310 REM 1000 CLEAR 150 1010 DIM H(6) 2000 REM 2010 REM GET NAME OF FILE TO BE MOVED 2020 REM 2040 INPUT " ENTER NAME OF FILE TO BE MOVED : ";FL$ 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:GOTO 4150 4020 NM$= NM$+ C$ 4040 GOTO 4150 4050 IF C$= ";"THEN PM= 3:GOTO 4150 4060 TP$= TP$+ C$ 4080 GOTO 4150 4100 VS$= VS$+ C$ 4150 NEXT I 4160 IF LEN (NM$)< 6THEN NM$= NM$+ " ":GOTO 4160 4170 IF LEN (TP$)< 3THEN TP$= TP$+ " ":GOTO 4170 4180 IF LEFT$ (NM$,1)= "0"THEN PLOT 6,2:END 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 " ILLEGAL HEXADECIMAL VERSION NUMBER " 4280 GOTO 2000 4300 VS= VS* 16+ C 4310 IF VS> 255GOTO 4270 4320 NEXT I 4400 GOSUB 31000 5000 REM 5100 REM 5110 REM SEARCH DIRECTORY FOR NAMES OF FILE TO BE MOVED 5120 REM 5130 LM= PEEK (B* 256+ 34)- 1 5140 FOR S= 0TO LM 5150 FOR R= 0TO 5 5160 IF R+ S= 0GOTO 5400 5170 FB= B* 256+ S* 128+ R* 21+ 3 5180 LB= FB+ 5 5190 IF PEEK (FB- 1)= 1GOTO 5500 5200 NA$= "" 5210 FOR I= FBTO LB 5220 NA$= NA$+ CHR$ (PEEK (I)) 5230 NEXT I 5240 FB= LB+ 1:LB= FB+ 2 5250 TY$= "" 5260 FOR I= FBTO LB 5270 TY$= TY$+ CHR$ (PEEK (I)) 5280 NEXT I 5290 VR= PEEK (I) 5300 REM 5310 REM DETERMINE IF THIS IS THE FILE TO MOVE 5320 REM 5330 IF NA$< > NM$GOTO 5450 5340 IF TY$< > TP$GOTO 5450 5350 IF VS> 0AND VS< > VRGOTO 5450 5360 SS= S 5370 SR= R 5400 GOSUB 33000 5410 SV$= VN$ 5450 NEXT R,S 5500 IF SS+ SR< > OGOTO 5600 5510 PRINT " FILE NOT FOUND ON VOLUME "SV$;" " 5520 GOTO 2000 5600 FB= B* 256+ SS* 128+ SR* 21+ 13 5610 S1= PEEK (FB+ 1) 5620 S2= PEEK (FB) 5630 S3= PEEK (FB+ 3) 5640 S4= PEEK (FB+ 2) 5645 FOR I= 1TO 6 5646 H(I)= PEEK (FB+ 3+ I) 5647 NEXT I 5650 X= S1:GOSUB 30000:S1$= H$ 5660 X= S2:GOSUB 30000:S2$= H$ 7000 REM 7010 REM READ DIRECTORY ON DESTINATION DISK 7020 REM 7025 VS= 0 7030 INPUT " INSERT DESTINATION DISK THEN HIT RETURN";X$ 7040 GOSUB 31000 7050 LM= PEEK (B* 256+ 34)- 1 7060 FOR S= 0TO LM- 1 7070 FOR R= 0TO 5 7080 IF S+ R= 0GOTO 7500 7090 FB= B* 256+ S* 128+ R* 21+ 3 7100 LB= FB+ 5 7110 IF PEEK (FB- 1)= 1GOTO 7800 7120 NA$= "" 7130 FOR I= FBTO LB 7140 NA$= NA$+ CHR$ (PEEK (I)) 7150 NEXT I 7160 TY$= "" 7170 FB= LB+ 1:LB= FB+ 2 7180 FOR I= FBTO LB 7190 TY$= TY$+ CHR$ (PEEK (I)) 7200 NEXT I 7210 VR= PEEK (I) 7300 REM 7310 REM IF THIS FILE HAS SAME NAME, UPDATE THE VERSION NUMBER 7320 REM 7330 IF NA$< > NM$GOTO 7700 7340 IF TY$< > TP$GOTO 7700 7350 VS= VR 7360 GOTO 7700 7500 GOSUB 33000 7510 DV$= VN$ 7700 NEXT R,S 7800 DS= S:DR= R 7805 IF S= LM- 1AND R= 5GOTO 7910 7810 D1= PEEK (FB+ 11) 7820 D2= PEEK (FB+ 10) 7830 D3= PEEK (FB+ 13) 7840 D4= PEEK (FB+ 12) 7850 X= D1:GOSUB 30000:D1$= H$ 7860 X= D2:GOSUB 30000:D2$= H$ 7865 DB= D1* 256+ D2 7870 SZ= S3* 256+ S4 7880 DZ= D3* 256+ D4 7890 IF DZ- SZ= > 0GOTO 7950 7900 PRINT " THERE IS NOT ENOUGH FREE SPACE ON THIS DISK" 7905 GOTO 7920 7910 PRINT " DIRECTORY FULL" 7920 PRINT " RE-INSERT SOURCE DISK" 7930 GOTO 2000 7950 VS= VS+ 1 7955 BM= PEEK (32987)+ 2 7960 TM= T+ 1- BM 7965 EB= SZ- TM 7970 TA= BM+ SZ- 1 7975 IF TA> TTHEN TA= T 8000 REM 8010 REM LOAD FILE FROM SOURCE DISK 8020 REM 8030 GOSUB 35000 8040 TK$= S1$+ RIGHT$ (S2$,2) 8050 X= BM:GOSUB 30000:B$= H$ 8060 X= TA:GOSUB 30000:T$= H$ 8070 GOSUB 32000 8100 REM 8110 REM WRITE FILE TO DESTINATION DISK 8120 REM 8130 GOSUB 35500 8140 TK$= D1$+ RIGHT$ (D2$,2) 8150 X= BM:GOSUB 30000:B$= H$ 8160 X= TA:GOSUB 30000:T$= H$ 8170 GOSUB 32500 8200 REM 8210 REM DETERMINE IF THE WHOLE FILE HAS BEEN MOVED OR NOT 8220 IF EB> 0GOTO GOTO 8300 8230 GOTO 8600 8300 REM 8310 REM THERE ARE EB MORE BLOCKS TO MOVE 8320 REM 8330 S2= S2+ SZ 8340 IF S2< 256GOTO 8370 8350 S1= S1+ 1 8360 S2= S2- 256 8370 X= S1:GOSUB 30000:S1$= H$ 8380 X= S2:GOSUB 30000:S2$= H$ 8390 D2= D2+ SZ 8400 IF D2< 256GOTO 8430 8410 D1= D1+ 1 8420 D2= D2- 256 8430 X= D1:GOSUB 30000:D1$= H$ 8440 X= D2:GOSUB 30000:D2$= H$ 8450 IF EB< SZGOTO 8480 8460 EB= EB- SZ 8470 GOTO 8000 8480 TA= BM+ EB- 1 8490 EB= 0 8500 GOTO 8000 8600 REM 8610 REM PUT NEW FILE IN DIRECTORY 8620 REM 8630 X= DS:GOSUB 30000:TK$= H$ 8640 X= BM- 1:GOSUB 30000 8650 B$= H$:T$= H$ 8660 GOSUB 32000 8670 FB= BM* 256- 254+ DR* 21 8680 POKE FB,3 8690 FOR I= 1TO 6 8700 C$= MID$ (NM$,I,1) 8710 C= ASC (C$) 8720 POKE FB+ I,C 8730 NEXT I 8740 FOR I= 1TO 3 8750 C$= MID$ (TP$,I,1) 8760 C= ASC (C$) 8770 POKE FB+ 6+ I,C 8780 NEXT I 8790 POKE FB+ 10,VS 8800 POKE FB+ 13,S4 8810 POKE FB+ 14,S3 8820 FOR I= 1TO 6 8830 POKE FB+ 14+ I,H(I) 8840 NEXT I 9000 REM 9010 REM WRITE FREE SPACE RECORD 9020 REM 9030 DR= DR+ 1 9040 FB= BM* 256- 254+ DR* 21 9050 IF DR< 6GOTO 9200 9060 FB= BM* 256- 256 9070 D1= PEEK (FB) 9080 D2= PEEK (FB+ 1) 9090 FB= FB+ 130 9100 POKE FB- 2,D1+ 1 9110 POKE FB- 1,D2 9120 FOR I= 21TO 125 9130 POKE FB+ I,0 9140 NEXT I 9200 POKE FB,1 9210 FOR I= 1TO 20 9220 POKE FB+ I,0 9230 NEXT I 9240 DB= DB+ SZ 9250 DZ= DZ- SZ 9260 D1= INT (DB/ 256):D2= DB- D1* 256 9270 D3= INT (DZ/ 256):D4= DZ- D3* 256 9280 POKE FB+ 11,D2 9290 POKE FB+ 12,D1 9300 POKE FB+ 13,D4 9310 POKE FB+ 14,D3 9320 GOSUB 32500 9330 PLOT 27,4 9340 PRINT "DIR" 9350 PLOT 27,27 9360 GOTO 7920 10000 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 31000 REM 31010 REM LOAD DIRECTORY INTO MEMORY 31020 REM 31030 T= PEEK (32941)- 2 31040 B= T- 7 31050 X= T:GOSUB 30000:T$= H$ 31060 X= B:GOSUB 30000:B$= H$ 31070 TK$= " 00" 32000 REM 32010 REM READ BLOCKS FROM DISK TO MEMORY 32020 REM 32030 PLOT 27,4 32040 PRINT "READ"TK$;B$;"00-";T$;"FF" 32050 PLOT 27,27 32060 RETURN 32500 REM 32510 REM WRITE BLOCKS TO DISK FROM MEMORY 32520 REM 32530 PLOT 27,4 32540 PRINT "WRITE"TK$;B$;"00-";T$;"FF" 32550 PLOT 27,27 32560 RETURN 33000 REM 33010 REM READ VOLUME NAME 33020 REM 33030 FB= B* 256+ 3 33040 VN$= "" 33050 FOR I= FBTO FB+ 9 33060 VN$= VN$+ CHR$ (PEEK (I)) 33070 NEXT I 33080 RETURN 34000 REM 34010 REM RE-READ VOLUME NAME 34020 REM 34030 TK$= "00" 34040 X= BM- 1:GOSUB 30000 34050 B$= H$:T$= H$ 34060 GOSUB 32000 34070 FB= 256* BM- 253 34080 GOTO 33040 35000 REM 35010 REM INSERT SOURCE DISK 35020 REM 35030 PRINT " INSERT SOURCE DISK <";SV$;"> "; 35040 INPUT "HIT RETURN";X$ 35050 GOSUB 34000 35060 IF VN$= SV$THEN RETURN 35070 PRINT " WRONG VOLUME MOUNTED <";VN$;">" 35080 GOTO 35030 35500 REM 35510 REM INSERT DESTINATION DISK 35520 REM 35530 PRINT " INSERT DESTINATION DISK <";DV$;"> "; 35540 INPUT "HIT RETURN";X$ 35550 GOSUB 34000 35560 IF VN$= DV$THEN RETURN 35570 PRINT " WRONG VOLUME MOUNTED <";VN$;">" 35580 GOTO 35530 65000 REM 65005 REM LIST PROGRAM TO PRINTER 65010 REM 65020 PLOT 27,18,3,27,13 65030 PRINT " "; 65035 OUT 6,27 65040 PRINT "1 "; 65045 OUT 6,27 65050 PRINT "1 "; 65055 OUT 6,27 65060 PRINT "1" 65065 LIST 65070 POKE 33265,0 65100 REM 65110 REM 65120 REM 65130 REM WARNING 65140 REM ======= 65150 REM 65160 REM THIS PROGRAM MODIFIES THE DIRECTORY OF THE 65170 REM DESTINATION DISK. THE PROGRAMMER HAS USED 65180 REM IT SUCCESSFULLY WITH LARGE FILES AND SMALL 65190 REM FILES; BASIC FILES AND DISPLAY FILES. 65200 REM HOWEVER, BACKING UP THE DESTINATION DISK 65210 REM IS STILL RECOMMENDABLE. 65220 REM 65230 REM 65240 REM DELETE LINE 1 AND LINES 65100 - 65250 65250 REM