Listing of file='609.VAUR' on disk='vmedia/731-0067F-disk1.wvd.zip'
# Sector 2809, program filename = '609.VAUR' 0010 REM 609.VAUR 238-08/07/86 0012 DIM B2$80,C$2,C1$2,C2$2,C3$2,C5$2,C7$2,C8$2,C9$2,D0$2,D1$2,D2$2,D3$2,D4$2 ,D7$2,D8$2,D9$2,J0$3,J2$1,J3$2,J4$2,J5$2,J9$90 : DIM @P$4,@P,@D$(3)82,@D$3 0014 DIM C2$(256)1,D$(84)4,D3$(84)8,J1$(256)1,J4$(64)2,J5$(84)2 : J9$="V o l u m e R e c o v e r yVolume "&D5$&" on "&STR(D6$,1,3)&" VAU Map errors"&" "&STR(R2$,,2)&"/"&STR(R2$,3,2)&"/"&STR(R2$,5,2) : I3,D2=0 : GOSUB 1610 : GOSUB 1910 : IF D6$<>" "THEN 316 : GOSUB 2440 0314 GOSUB 1685 : GOTO 1412 0316 SELECT #5<D6$> : LIMITS T#5,D5$,J0,X,X,X : ERRORGOTO 314 0322 IF P=0AND Q=0THEN 878 : GOSUB 2300 : GOSUB 1685 : A=1 : J5=0 : GOSUB 916 : IF STR(C1$(),255)=HEX(0002)AND X=2THEN 370 : A=3 : L=1 0352 GOSUB 916 : A=VAL(STR(C1$(),5+17),2) : L=L+1 : IF L<4THEN 352 : STR(C1$(),255,2)=HEX(0002) : A=1 : GOSUB 956 0370 C0=VAL(STR(C1$(),32)) : C9=VAL(STR(C1$(),28),2) : C1=INT(C9/C0) : C8=FIX(C1/127)+1 : C7=1+FIX(C1/127/C0) : C3=MAX(1,FIX(8/C0)) : J1=VAL(STR(C1$(),30),2) : IF Q=0THEN 435 0371 FOR N=1TO Q : GOSUB 2320 : GOSUB 1685 : D$(N)=STR(D2$(N),,4) : NEXT N : FOR H=1TO C5 : IF STR(D9$(H),5,1)<>HEX(14)THEN 377 : A=VAL(STR(D9$(H),,2),2) : GOSUB 916 : MAT SEARCHSTR(D1$(),3),=STR(C1$(),34,2)TO J4$STEP 4 : IF J4$=HEX(0000)THEN 377 : D$(N)=STR(D9$(H),,2)&STR(C1$(),34,2) : N=N+1 0377 NEXT H 0435 P1=P : IF P<>0THEN GOSUB 3333 : IF P<>P1THEN 371 0442 IF P=0THEN 574 : P1=P : GOSUB 2340 : GOSUB 1685 : FOR J4=1TO P1 : IF VAL(STR(D1$(J4),5,2),2)=3AND VAL(STR(D1$(J4),7,2),2)=3THEN 476 : IF VAL(STR(D1$(J4),,2),2)<1OR VAL(STR(D1$(J4),,2),2)>C9THEN 476 : IF VAL(STR(D1$(J4),5,2),2)<1OR VAL(STR(D1$(J4),5,2),2)>C9THEN 476 : IF STR(D1$(J4),3,2)=HEX(0000)AND STR(D1$(J4),7,2)=HEX(0000)THEN 482 : GOSUB 1266 : GOTO 560 0476 IF STR(D1$(J4),5,2)=HEX(0003)OR STR(D1$(J4),7,2)=HEX(0003)THEN GOSUB 1012 : ELSE GOTO 482 : GOTO 560 0482 IF STR(D1$(J4),3,2)=HEX(0000)AND STR(D1$(J4),7,2)=HEX(0000)THEN GOSUB 104 0 : ELSE GOTO 486 : GOTO 560 0486 MAT SEARCHSTR(D$(),3),=STR(D1$(J4),3,2)TO J4$STEP 4 : A=VAL(STR(D1$(J4),,2),2) : GOSUB 916 : IF STR(D1$(J4),3,2)<>HEX(0000)THEN 510 : A=VAL(STR(D1$(J4),5,2),2) : GOTO 516 0510 IF STR(D1$(J4),5,2)=HEX(FFFF)OR STR(D1$(J4),7,2)=HEX(0000)THEN 514 : GOTO 564 0514 A=VAL(STR(D1$(J4),,2),2) 0516 GOSUB 916 : D2=256 : J4$,J4$()=ALL(00) : MAT SEARCHC1$(),>HEX(2F)TO J4$() : MAT MOVE C1$(),J4$(),D2TO C2$() : MAT SEARCHSTR(C2$(),,D2),<HEX(7B)TO J4$ : IF VAL(J4$,2)=0THEN 548 : J4$=HEX(0000) : IF J4<>1THEN MAT SEARCHSTR(D1$(),3,(J4-1)*8-2),=STR(D1$(J4),3,2)TO J4$STE P 4 : MAT SEARCHSTR(D1$(),8*J4+3),=STR(D1$(J4),3,2)TO J4$STEP 4 : IF J4$<>HEX(0000)THEN 564 0538 GOSUB 984 : STR(J1$(),A1,2)=HEX(0000) : GOSUB 970 : GOTO 564 0548 C4$()=C1$() : GOSUB 1705 : C1$()=ALL(00) : GOSUB 956 0560 GOSUB 1060 : IF D9=1THEN J4=65 0564 NEXT J4 : IF P1=0THEN 854 0574 IF P1=0AND N=0THEN 878 : IF P1>0AND N=0THEN 854 : FOR J2=1TO N : GOSUB 2360 : GOSUB 1685 : D=VAL(STR(D$(J2),3,2),2) : D0=VAL(STR(D$(J2),1,2),2) : A=D0 : GOSUB 916 : GOSUB 1086 : IF J4$=HEX(0000)THEN J5=2 : J5$=STR(C1$(),5,2) : C7$=STR(C1$(),14,2) : C8$=STR(C1$(),20,2) : C9$=STR(C1$(),34,2) : C3$=HEX(0000) : D7$,D8$=HEX(0000) : J6=1 : J5=0 : A=VAL(C7$,2) : IF A>1OR A<C9THEN 646 0636 J4$=HEX(0000) : MAT SEARCHSTR(D1$(),3),=STR(C9$)TO J4$STEP 4 : IF J4$<>HEX(0000)THEN 646 : GOTO 850 0646 GOSUB 916 : D9$=C7$ : GOTO 664 0654 D7=D7+SGN(VAL(STR(J1$(),A1,2),2)+J0-1-A)*J6^2 : D7$=BIN(MIN(VAL(D7$,2),VAL(STR(J1$(),A1,2),2)),2) : D8$=BIN(MAX(VAL(D8$,2),VAL(STR(J1$(),A1,2),2)),2) : D9$=STR(J1$(),A1,2) 0664 IF STR(J0$,,2)=C9$THEN 682 : IF C3$<>STR(J0$,,2)OR C3$=HEX(00)THEN 676 : IF J5=0THEN J5=3 : GOTO 682 0676 IF J5<>4THEN J5=2 : C3$=STR(J0$,,2) 0682 GOSUB 984 : IF J5=0THEN J5=1 : IF VAL(STR(J1$(),A1,2),2)=0OR STR(J1$(),A1,2)=HEX(FFFF)THEN 698 : J6=J6+1 : GOSUB 1000 : GOTO 654 0698 IF C9$<HEX(0005)THEN J5=3 : ON J5GOSUB ,1098,1126 : IF D9=0THEN 720 : IF VAL(STR(J1$(),A1,2),2)=0THEN 850 : STR(J1$(),A1,2)=HEX(0000) : GOSUB 970 : D9=0 : GOTO 720 0720 D3$()=ALL(00) : J=0 : GOSUB 1144 : IF POS(D3$()>HEX(00))>0AND J6+J>=VAL(J5$,2)THEN 750 : D7$=D7$SUBCHEX(01) : D8$=D8$ADDCHEX(01) : GOSUB 1144 : IF POS(D3$()>HEX(00))>0AND J6+J>=VAL(J5$,2)THEN 750 : D7$=D7$SUBCHEX(01) : D8$=D8$ADDCHEX(01) : GOSUB 1144 : IF POS(D3$()>HEX(00))>0AND J6+J>=VAL(J5$,2)THEN 750 0750 FOR I=1TO J : IF STR(D1$(VAL(J5$(J),2)),3,2)<>C9$OR STR(D1$(VAL(J5$(J),2)),7,2)<>C9$THE N 756 : GOTO 774 0756 MAT SEARCHSTR(D$(),J2*4+1,(N-J2)*4),=STR(D1$(VAL(J5$(J),2)),3,2)TO J4$STE P 4 : IF J4$<>HEX(0000)THEN 766 : MAT SEARCHSTR(D$(),J2*4+1,(N-J2)*4),=STR(D1$(VAL(J5$(J),2)),7,2)TO J4$STE P 4 : IF J4$<>HEX(0000)THEN 766 : GOTO 774 0766 IF J6+J<=VAL(J5$,2)THEN 774 : STR(D3$(),(J-1)*8+1)=STR(D3$(),J*8+1) : STR(J5$(),(J-1)*2+1)=STR(J5$(),J*2+1) : J=J-1 0774 NEXT I : J4$=HEX(0000) : FOR H1=1TO J : D3$,D4$=HEX(0000) : D8,D9=0 : FOR I=1TO J : MAT SEARCHSTR(D3$(),5,J*8),=STR(D3$(I),,2)TO J4$STEP 8 : IF J4$<>HEX(0000)THEN 796 : IF STR(D3$(I),,2)=HEX(0000)THEN GOSUB 1196 : ELSE GOSUB 1182 0796 NEXT I : IF D4$<>HEX(0000)THEN 810 : FOR I=1TO J : MAT SEARCHSTR(D3$(),5,J*8),=STR(D3$(I),,2)TO J4$STEP 8 : IF J4$<>HEX(0000)THEN 808 : IF STR(D3$(I),,2)=HEX(0000)THEN GOSUB 1222 : ELSE GOSUB 1208 0808 NEXT I 0810 GOSUB 1234 : GOSUB 984 : STR(J1$(),A1,2)=D4$ : GOSUB 970 : D9$=D4$ : STR(D3$(K),1,8)=D4$&C9$&STR(D3$(K),5,2)&C9$ : A=VAL(D4$,2) : GOSUB 940 : STR(C1$(),254,2)=C9$ : GOSUB 956 : NEXT H1 : FOR I=1TO J : J4=VAL(J5$(I),2) : GOSUB 1060 : NEXT I : IF D9=1THEN J2=N 0850 NEXT J2 0854 IF P1=0THEN 878 : FOR I=1TO P1 : A=VAL(STR(D1$(I),,2),2) : GOSUB 916 : C4$()=C1$() : GOSUB 1705 : C1$()=ALL(00) : GOSUB 956 : NEXT I 0878 $CLOSE#5 : COM CLEAR C5 : SELECT PRINT 005(80) : D8$()="609@VER Prime 62" : LOAD DC T<2>D8$() 0892 PRINT AT(22,3);B2$;P : PRINT HEX(020404000E) : PRINT AT(23,3);B2$;HEX(0F) 0916 D0$=HEX(00) : DATA LOAD BA T#5,(J0+A-1)C1$() : ERRORD0$=BIN(ERR) : GOSUB 2400 : I3=1 : GOSUB 1685 : GOTO 1412 0922 IF STR(C1$(),256)=HEX(FD)OR STR(C1$(),256)>HEX(04)THEN J0$=STR(C1$(),254, 3) : ELSE J0$=STR(C1$(),255)&HEX(00) : RETURN 0940 D0$=HEX(00) : DATA LOAD BA T#5,(J0+A-1)J1$() : ERRORD0$=BIN(ERR) : GOSUB 2400 : I3=1 : GOSUB 1685 : GOTO 1412 0946 IF STR(J1$(),256)=HEX(FD)THEN J0$=STR(J1$(),254,3) : ELSE J0$=STR(J1$(),255)&HEX(00) : RETURN 0956 D0$=HEX(00) : DATA SAVE BA T#5,(J0+A-1)C1$() : ERRORD0$=BIN(ERR) : GOSUB 2400 : I3=1 : GOSUB 1685 : GOTO 1412 0962 RETURN 0970 D0$=HEX(00) : DATA SAVE BA T#5,(J0+A-1)J1$() : ERRORD0$=BIN(ERR) : GOSUB 2400 : I3=1 : GOSUB 1685 : GOTO 1412 0976 RETURN 0984 A1=MOD(A-1,127)*2+1 : A=INT(((A)/127)+J1) : GOSUB 940 : C$=STR(J1$(),A1,2) : RETURN 1000 A=VAL(STR(J1$(),A1,2),2) : GOSUB 916 : RETURN 1012 A=2 : GOSUB 916 : C5$=STR(D1$(J4),1,2)SUBCHEX(01) : MAT SEARCHC1$(),=STR(C5$)TO J4$STEP 2 : J3=VAL(J4$,2) : IF J3<=4THEN RETURN : STR(C1$(),J3,255-J3)=STR(C1$(),J3+2,253-J3)&ALL(00) : STR(C1$(),3,2)=STR(C1$(),3,2)SUBCHEX(01) : GOSUB 956 : RETURN 1040 A=VAL(STR(D1$(J4),1,2),2) : GOSUB 984 : STR(J1$(),A1,2)=HEX(FFFF) : GOSUB 970 : RETURN 1060 STR(D1$(),(J4-1)*8+1)=STR(D1$(),(J4)*8+1) : P1=P1-1 : J4=J4-1 : IF P1>0THEN D9=0 : IF P1<=0THEN D9=1 : RETURN 1086 J4$=HEX(0000) : MAT SEARCHSTR(D2$(),1,2),=STR(C9$)TO J4$STEP 20 : RETURN 1098 A=VAL(C7$,2) : GOSUB 916 : H=1 1104 IF STR(C1$(),256)=HEX(FD)THEN STR(C1$(),254,2)=C9$ : ELSE STR(C1$(),255)=C9$ : GOSUB 956 : GOSUB 984 : IF VAL(STR(J1$(),A1,2),2)=0THEN RETURN : H=H+1 : IF H>J6THEN RETURN : GOSUB 1000 : GOTO 1104 1126 A=D0 : GOSUB 916 : STR(C1$(),34,2)=C3$ : IF J6>VAL(J5$,2)THEN STR(C1$(),5,2)=BIN(J6,2) : GOSUB 956 : RETURN 1144 FOR I=1TO P : J3$=BIN(I,2) : J4$=HEX(0000) : MAT SEARCHJ5$(),=STR(J3$)TO J4$STEP 2 : IF J4$<>HEX(0000)THEN 1172 : IF STR(D1$(I),,2)>=D7$AND STR(D1$(I),,2)<=D8$THEN 1166 : IF STR(D1$(I),5,2)>=D7$AND STR(D1$(I),5,2)<=D8$THEN 1166 : IF STR(D1$(I),3,2)=C9$OR STR(D1$(I),7,2)=C9$THEN 1166 : GOTO 1172 1166 STR(D3$(),J*8+1,8)=D1$(I) : J=J+1 : J5$(J)=BIN(I,2) 1172 NEXT I : RETURN 1182 IF D7<0THEN IF STR(D3$(I),,2)<=D9$THEN D4$=BIN(MAX(VAL(D4$,2),VAL(STR(D3$ (I),,2),2)),2) : IF D7>=0THEN IF STR(D3$(I),,2)>=D9$THEN D4$=BIN(MIN(VAL(D4$,2),VAL(STR(D3 $(I),,2),2)),2) : D8=1 : RETURN 1196 IF D7<0THEN IF STR(D3$(I),,2)<=D9$THEN D4$=BIN(MAX(VAL(D4$,2),VAL(STR(D3$ (I),5,2),2)+1),2) : IF D7>=0THEN IF STR(D3$(I),,2)>=D9$THEN D4$=BIN(MIN(VAL(D4$,2),VAL(STR(D3 $(I),5,2),2)-1),2) : RETURN 1208 IF D7<0THEN D4$=BIN(MIN(VAL(D4$,2),VAL(STR(D3$(I),,2),2)),2) : IF D7>=0THEN D4$=BIN(MAX(VAL(D4$,2),VAL(STR(D3$(I),,2),2)),2) : D8=2 : RETURN 1222 IF D7<0THEN D4$=BIN(MIN(VAL(D4$,2),VAL(STR(D3$(I),,2),2)-1),2) : IF D7>=0THEN D4$=BIN(MAX(VAL(D4$,2),VAL(STR(D3$(I),,2),2)+1),2) : RETURN 1234 MAT SEARCHSTR(D3$(),,J*8),=STR(D4$)TO J4$STEP 8 : IF J4$<>HEX(0000)THEN 1256 : D3$=D4$SUBCHEX(01) : IF D7<0AND D8=1THEN MAT SEARCHSTR(D3$(),,J*8),=STR(D3$)TO J4$STEP 8 : IF J4$<>HEX(0000)THEN 1256 : IF D7>0AND D8=2THEN MAT SEARCHSTR(D3$(),,J*8),=STR(D3$)TO J4$STEP 8 : IF J4$<>HEX(0000)THEN 1256 : D3$=D4$ADDCHEX(01) : IF D7>0AND D8=1THEN MAT SEARCHSTR(D3$(),,J*8),=STR(D3$)TO J4$STEP 8 1252 IF J4$<>HEX(0000)THEN 1256 : IF D7<0AND D8=2THEN MAT SEARCHSTR(D3$(),,J*8),=STR(D3$)TO J4$STEP 8 1256 K=FIX(VAL(J4$,2)/8)+1 : RETURN 1266 J3$=STR(D1$(J4),,2) 1268 GOSUB 1336 : IF J4$=HEX(0000)THEN 1304 : J4$=HEX(0000) : MAT SEARCHSTR(D1$(),,P1*8),=STR(C$)TO J4$STEP 4 : IF J4$<>HEX(0000)THEN 1326 : MAT SEARCHSTR(D1$(),5,P1*8),=STR(C$)TO J4$STEP 4 : IF J4$<>HEX(0000)THEN 1326 1282 A=VAL(C$,2) : GOSUB 916 : J3$=STR(J0$,,2) : IF J3$=STR(D1$(J4),7,2)THEN 1296 : A=VAL(STR(D1$(J4),5,2),2) : GOSUB 1380 : IF J3$=STR(D1$(J4),7,2)THEN 1300 1296 A=VAL(STR(D1$(J4),,2),2) : GOSUB 1380 1300 RETURN 1304 C$=STR(D1$(J4),5,2) 1306 A=VAL(C$,2) : IF A<1OR A>C9THEN 1300 : GOSUB 984 : A=VAL(C$,2) : J4$=HEX(0000) : MAT SEARCHSTR(D1$(),,P1*8),=STR(C$)TO J4$STEP 4 : IF J4$<>HEX(0000)THEN 1306 : MAT SEARCHSTR(D1$(),5,P1*8),=STR(C$)TO J4$STEP 4 : IF J4$<>HEX(0000)THEN 1306 : GOTO 1282 1326 J3$=C$ : GOTO 1268 1336 A=INT((VAL(J3$,2)/127)+J1) : GOSUB 1364 : IF J4$<>HEX(0000)THEN 1354 : FOR I=1TO C8 : A=J1+I-1 : GOSUB 1364 : IF J4$<>HEX(0000)THEN I=C8 : NEXT I : IF J4$=HEX(0000)THEN RETURN 1354 C$=BIN((((A-J1)*127)+(VAL(J4$,2)+1)/2),2) : RETURN 1364 GOSUB 940 : J4$=HEX(0000) : IF STR(J1$(),255)<>HEX(0001)THEN RETURN : MAT SEARCHJ1$(),=STR(J3$)TO J4$STEP 2 : RETURN 1380 GOSUB 916 : C4$()=C1$() : GOSUB 1705 : IF STR(C1$(),256)=HEX(FD)OR STR(C1$(),256)>HEX(04)THEN STR(C1$(),254,2)=J 3$ : ELSE STR(C1$(),255)=J3$ : GOSUB 956 : RETURN 1396 PRINT AT(23,3);B2$; : GOSUB 2420 1400 PRINT HEX(0601);AT(23,59);B2$;HEX(07); 1402 KEYIN J2$,1406,1406 : GOTO 1402 1406 IF J2$=HEX(F0)THEN 878 : ELSE GOTO 1400 1410 % DO NOT RENUMBER THE FOLLOWING 1412 GOSUB 2420 : PRINT AT(23,3);B2$;HEXOF(D0$) : GOTO 1400 2300 B2$="Checking for damaged FCB" : RETURN 2320 B2$="Creating error array D$()" : RETURN 2340 B2$="Compressing error array D1$(), irreparable VAU types 1,2,3,4,6a,6b,7 " : RETURN 2360 B2$="Resolving intra-file conflicts for file ID" : RETURN 2380 B2$="Matching orphan VAU's to surrogate parents" : RETURN 2400 B2$="Disk I/O error "&D0$&" has occurred" : RETURN 2420 B2$="Please Cancel" : RETURN 2440 B2$="Disk address has not been brought from 609.VER2" : RETURN 3333 FOR I=1TO P : @P$=STR(D1$(I),5,4) : IF @P$=HEX(FFFFFFFF)THEN 3377 : MAT SEARCHD1$(),=STR(@P$)TO J4$()STEP 8 : @P=INT((7+VAL(J4$(1),2))/8) : IF @P<1OR @P>PTHEN 3377 : IF @P$<>STR(D1$(@P),1,4)THEN 3377 : GOSUB 3395 : IF STR(@D$,2,2)<>STR(D1$(@P),7,2)THEN 3371 : D1$(@P)=ALL(FF) : P=P-1 : GOTO 3377 3371 STR(D1$(@P),3,2)=STR(@D$,2,2) 3377 NEXT I : FOR I=1TO P1 : @P$=STR(D1$(I),5,4) : IF STR(@P$,3,2)<>HEX(0001)THEN 3385 : GOSUB 3395 3385 NEXT I : IF P=P1THEN 3394 : FOR I=1TO P1 3392 IF POS(HEX(FF)<>D1$(I))>0THEN 3393 : FOR I1=1TO 8 : ROTATEC(STR(D1$(),1+(I-1)*8),8) : NEXT I1 : STR(D1$(),LEN(D1$())-8)=ALL(00) : GOTO 3392 3393 NEXT I 3394 RETURN 3395 @D$()=ALL(80) : STR(@D$(),1,1)=HEX(8F) : STR(@D$(),80,1)=HEX(83) : STR(@D$(),82)="...Note...Set.by.Verify.and.Recovery.program!.@@@" : STR(@D$(),1+LEN(@D$()),1)=HEX(8F) : @D$="T" : STR(@D$,2,2)=STR(D1$(I),3,2) : A=VAL(STR(D1$(I),1,2),2) : DATA SAVE DA T#5,(J0+A)@D$(),@D$ : D1$(I)=ALL(FF) : P=P-1 : RETURN