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