Listing of file='2229FS' on disk='vmedia/mvp-diag-2.6.2.wvd.zip'
# Sector 1446, program filename = '2229FS' 0010 REM % File name "2229FS" - part of 2229 utilities package 0015 REM ST 01/21/1983 0020 REM % Create reference file which contains names of files to back up to t ape 0030 COM F$8 : DIM D$3,N$(2048)8,N1$(2048)3,S(2048),L$(2048)2,W$(2048)4,I$(16),J8$1,J9$1 ,K$1,T1$30,F1$8,D1$3,Y$1,J$8 0040 J8$=HEX(80) : J9$=HEX(96) : T1$="REFERENCE FILE CREATOR" : PRINT HEX(03020402040E);AT(0,(40-LEN(T1$)/2));T1$ : L$()=ALL(00) : N1$()=ALL(J8$) : PRINT HEX(0202020E) 0050 REM % GET DISK ADDRESS : PRINT HEX(0F); 0060 IF D$=" "THEN D$="D11" : PRINT AT(2,0);HEX(020402000F); : LINPUT "Source disk address ",D$ : SELECT #2<D$> : ERRORA=1 : GOTO 80 0070 VERIFY T#2,(0,0)A : ERRORA=1 : GOTO 80 0080 IF A=0THEN 90 : PRINT AT(2,25);"Error ";ERR;HEX(07) : GOTO 60 0090 PRINT HEX(06) : PRINT "Sorting disk catalog - please wait ..." 0100 N$()=ALL(FF) : J=1 : DATA LOAD BA T#2,(0)I$() : C=VAL(STR(I$(),2)) : FOR A=0TO C : DATA LOAD BA T#2,(A)I$() : FOR B=1TO 16 : IF A=0AND B=1THEN NEXT B 0110 IF STR(I$(B),1,2)=HEX(1000)THEN 120 : IF STR(I$(B),1,2)=HEX(1100)THEN 130 : IF STR(I$(B),1,2)=HEX(1080)THEN 140 : IF STR(I$(B),1,2)=HEX(1180)THEN 150 : GOTO 170 0120 STR(N1$(J),2,2)=" D" : GOTO 160 0130 STR(N1$(J),2,2)="SD" : GOTO 160 0140 STR(N1$(J),2,2)=" P" : GOTO 160 0150 STR(N1$(J),2,2)="SP" : GOTO 160 0160 STR(N1$(J),1,1)=J8$ : STR(N$(J),1,8)=STR(I$(B),9,8) : S(J)=VAL(STR(I$(B),5,2),2)-VAL(STR(I$(B),3,2),2)+1 : J=J+1 : IF J<2048THEN 170 : PRINT AT(02,0); "CANNOT HAVE MORE THAN 2048 ENTRIES IN INDEX" : STOP : GOTO 10 0170 NEXT B,A : J=J-1 : REM CORRECT # OF FILES : P=INT(J/16) : REM GET # OF PAGES FOR DISPLAY : IF P=J/16THEN 180 : ELSE P=P+1 0180 MAT SORTN$()TO W$(),L$() : PRINT HEX(06),AT(1,0,) 0190 PRINT AT(12,58);HEX(020402000E);"ACTIVE KEYS";HEX(0F) : PRINT AT(14,55);"Cursor Up/Down" : PRINT AT(15,55);"Space/Backspace" : PRINT AT(16,55);"Insert/Delete" : PRINT AT(17,55);"A / Select all files" : PRINT AT(18,55);"N / Next Screen" 0200 PRINT AT(19,55);"P / Previous Screen" : PRINT HEX(0E);AT(21,55);"Press Run When Done";HEX(0F) 0210 PRINT AT(6,55);"Disk address ";D$ : PRINT AT(7,55);"Files selected" 0220 PRINT AT(4,5);HEX(020402000E); " Name Type Sectors";HEX(0F0D ) : J1=1 : P1=0 : REM SUBSCRIPT POINTER TO FILES AND CURRENT PAGE 0230 REM CLEAR OLD SCREEN : FOR A=6TO 22 : PRINT HEX(06);AT(A,0,35); : NEXT A 0240 C=1 0250 %############## ###.##% 0260 PRINT AT(J1+5,C); : X=VAL(L$(J1+P1*16),2) : PRINTUSING 270,STR(N1$(X),1,1),N$(X),STR(N1$(X),2,2),S(X); 0270 % # ######## ## ##### 0280 J1=J1+1 : IF J1+P1*16>JTHEN 290 : IF J1<17THEN 260 0290 J1=1 : REM CURRENT NAME : C=2 0300 X=VAL(L$(J1+P1*16),2) 0310 PRINT AT(J1+5,C);HEX(02050F); : KEYIN K$,,330 : REM % REG KEYS : PRINT HEX(06); : ON POS(HEX(504E20084182)=K$) GOTO 340,350,370,390,420,490 0320 PRINT HEX(07) : GOTO 310 0330 REM % SF KEYS : PRINT HEX(06); : K$=AND HEX(0F) : ON POS(HEX(06050A090203)=K$)GOTO 390,370,460,480,340,350 : PRINT HEX(07) : GOTO 310 0340 REM % PREVIOUS SCREEN : IF P1=0THEN 290 : REM ON FIRST SCREEN : P1=P1-1 : J1=1 : GOTO 230 0350 REM % NEXT SCREEN : IF P1+1 <PTHEN 360 : J1=1 : GOTO 240 0360 P1=P1+1 : J1=1 : GOTO 230 0370 REM % SPACE DOWN : J1=J1+1 : IF J1+P1*16>JTHEN 380 : IF J1<17THEN 300 : J1=1 : GOTO 300 0380 J1=1 : GOTO 300 0390 REM % SPACE REVERSE : IF J1=1THEN 400 : J1=J1-1 : GOTO 300 0400 IF P1+1=PTHEN 410 : J1=16 : GOTO 300 0410 J1=MOD(J,16) : GOTO 300 0420 REM % A = ALL 0430 REM % LAST SCREEN PARTIAL 0440 FOR J2=1TO J : STR(N1$(J2),1,1)=J9$ : NEXT J2 : F=J : PRINT AT(7,70); : PRINTUSING 470,F 0450 R1=16 : IF MOD(J,16)<>0AND P1=INT(J/16)THEN R1=MOD(J,16) : FOR R=1TO R1 : PRINT AT(R+5,2);J9$ : NEXT R : GOTO 300 0460 REM % INSERT : X=VAL(L$(J1+P1*16),2) : IF STR(N1$(X),1,1)=J8$THEN F=F+1 : STR(N1$(X),1,1)=J9$ : PRINT AT(J1+5,C);J9$ : PRINT AT(7,70); : PRINTUSING 470,F : GOTO 370 0470 %#### 0480 REM % DELETE : X=VAL(L$(J1+P1*16),2) : IF STR(N1$(X),1,1)=J9$THEN F=F-1 : STR(N1$(X),1,1)=J8$ : PRINT AT(J1+5,C);J8$ : PRINT AT(7,70); : PRINTUSING 470,F : GOTO 370 0490 PRINT HEX(06);AT(1,0,) : G,G1=1 0500 IF STR(N1$(G1),1,1)=J8$THEN 510 : N$(G)=N$(G1) : G=G+1 0510 G1=G1+1 : IF G1<=1000THEN 500 : G=G-1 : REM # OF FILES : IF G=0THEN 720 : G1=INT(G/32)*2+3 : REM # OF SECTORS TO SAVE 0520 PRINT HEX(060202000F);AT(1,0,) 0530 PRINT AT(2,0); : LINPUT "Reference file name",-F1$ 0540 PRINT AT(3,0); : LINPUT "Reference file address ",-D1$ : SELECT #3<D1$> : ERRORA=1 : GOTO 560 0550 VERIFY T#3,(0,0)A : ERRORA=1 : GOTO 560 0560 IF A=0THEN 570 : PRINT AT(3,30);"ERROR ";ERR;HEX(07) : GOTO 540 0570 LIMITS T#3,F1$,A,B,C,D : IF ABS(D)<>1THEN 580 : PRINT AT(2,25,49);"ERROR - PROGRAM FILE" : GOTO 530 0580 PRINT AT(3,30,40) : IF D<>0THEN 610 : REM JUMP IF ALREADY ON DISK : PRINT AT(4,0); F1$;" does not exist - OK to create new file (Y/N)"; : Y$="Y" : LINPUT -Y$ : IF Y$="Y"OR Y$="y"THEN 590 : GOTO 520 0590 REM EXTRA SECTORS? 0600 DATA SAVE DC OPEN T#3,(G1)F1$ : LIMITS T#3,F1$,A,B,C,D : GOTO 670 0610 PRINT AT(6,0,79);"'";F1$;"' already exists " : PRINT "Can file be overwritten (Y OR N)"; : Y$="N" : LINPUT -Y$ : IF Y$="Y"OR Y$="y"THEN 620 : GOTO 520 0620 IF G1<=B-A+1THEN 660 : PRINT AT(6,0,79);"Old file is too small. " : J$="@JUNKAAA" 0630 LIMITS T #3,J$,A,A,A,A : IF A=0THEN 640 : A=POS(-J$<"Z") : STR(J$,A,1)=ADD HEX(01) : IF A<8 THEN STR(J$,A+1)=ALL("A") : GOTO 630 0640 PRINT "Can the file be junked (renamed to ";J$;" & scratched)?"; : Y$="N" : LINPUT -Y$ : IF Y$="Y"OR Y$="y"THEN 650 : GOTO 520 0650 SCRATCH T #3,F1$ : DATA SAVE DC OPEN T #3,F1$,J$ : SCRATCH T #3,J$ : PRINT AT(6,0,159); : GOTO 590 0660 SCRATCH T#3,F1$ : DATA SAVE DC OPEN T#3,(F1$)F1$ 0670 REM % FILE IS READY TO BE SAVED : MAT REDIM N$(G)8 : REM REMOVE UNUSED SPACE : DATA LOAD DC OPEN T#3,F1$ : ERRORREM 0680 DATA SAVE DC #3,D$,N$() : ERRORREM 0690 DATA SAVE DC #3,END : ERRORREM 0700 DATA SAVE DC CLOSEALL : PRINT : PRINT HEX(07);"DONE" 0710 F$=".2229" : $PSTAT=".2229" : LOAD T"@MENU" 0720 PRINT : PRINT "No file names selected" : GOTO 710