Listing of file='IDS2PU88' on disk='vmedia/701-2715B.wvd.zip'
# Sector 701, program filename = 'IDS2PU88' 1000 REM - "IDS2PU88" -- Release 2.1 -- KEY FILE RECOVERY 1030 IF F6$(17)<"^"THEN SELECT @PART"IDS2SUBM" : DIM C$(6)83 : GOSUB '32("IDS2sU88") 1060 GOSUB '34(1) : E2$=E$ : E3$=E2$OR ALL(20) : GOSUB '39(E3$,5) : IF Q=2THEN 1080 : GOSUB '38(106," ") : GOTO 1060 1080 DATA LOAD DA T#P,(A)C$() : CONVERT STR(C$(),10,1)TO T : IF T=2OR T=3THEN 1100 : IF T=1OR T=4THEN GOSUB '38(109," ") : IF T>4THEN GOSUB '38(110," ") : GOTO 1060 1100 GOSUB '45(2,"N") : GOSUB '34(2) : IF E$="Y"OR E$="y"OR Q=1THEN K=9 1130 GOSUB '38(129," ") : GOSUB '34(250) : IF Q=32THEN 1140 : IF Q=31THEN LOAD TR3$(1)1000, : IF Q=33THEN 1060 : GOTO 1130 1140 MAT SEARCHE1$(),=STR(E2$,,8)TO F9$STEP 8 : V=INT((VAL(F9$,2)+55)/56) : IF V>0THEN 1620 : IF F6$(53)<>"Y"THEN 1190 : GOSUB '38(105," ") : KEYIN E6$ : LOAD T#4,R3$(1) 1190 GOSUB '39(E3$,5) : MAT SEARCHC$()<275,128>,=HEX(2020202020202020)TO F9$STEP 8 : CONVERT STR(C$(),217,1)TO V : H=V+(VAL(STR(F9$),2)-1)/8 : IF F9$=HEX(0000)THEN H=V+16 : CONVERT STR(C$(),199,2)TO E : E=E+3 : F0$="IDS2SUB1IDS2SUB2IDS2SUB3IDS2SUB4IDS2SUB5IDS2SUB6IDS2LOCL" 1220 G=500 : COM CLEAR Y : IF F6$(17)=HEX(60)THEN 1230 : LOAD T#2,"IDS2P001"1000,1001BEG 1250 1230 LOAD T#2,"IDS2P001"0,1001BEG 1240 1240 LOAD T#2,<7>F0$0,999BEG 1250 1250 IF F6$(17)<"^"THEN SELECT @PART"IDS2SUBM" : DATA LOAD DA T#P,(A)C$() : MAT REDIM E3$(9)83 : F2$="IDS2fs " : IF R0<#PARTTHEN STOP # : A=(R0-#PART)/16+1 : IF A>0THEN CONVERT ATO STR(F2$,7,2),(##) : DATA LOAD DC OPEN T#2,F2$ : DATA LOAD DC #2,E3$() : MAT REDIM E$(6)83 : L=0 : FOR J=1TO 17 : J1$=E2$ : E$()=C$() : IF J=1THEN 1370 : J1$=STR(C$(),259+8*J,8) : IF J1$=" "THEN 1480 : J4$=J1$OR ALL(20) 1350 GOSUB '39(J4$,5) : IF Q=2THEN 1360 : GOSUB '38(78,J4$) : END 1360 DATA LOAD DA T#P,(A)E$() 1370 J5$=STR(E$(),105,3) : GOSUB 2010 : GOSUB '39(J1$,R) : R=P : IF Q=2THEN 1400 : GOSUB '38(107," ") : END 1400 L=L+1 : E1$(L)=STR(E$(),2,8)&BIN(R)&HEX(0001)&STR(E$(),403,1)&STR(E$(),405,42)&BI N(A,2) : UNPACK(####)STR(E1$(L),13)TO Q : STR(E1$(L),13,2)=BIN(Q,2) : S=(N-2)/VAL(STR(E1$(L),43),2) : STR(E1$(L),46,2)=BIN(S,2) : S=S-VAL(STR(E1$(L),45,1)) : A=VAL(STR(E1$(L),50)) : B=VAL(STR(E1$(L),51)) : STR(E1$(L),19,2)=BIN(S*B/A,2) 1470 IF J=1THEN 1500 : STR(E1$(L),13,2)=STR(E1$(VAL(STR(E1$(L),10),2)),13,2) 1480 GOTO 1590 1500 IF V=1THEN 1590 : FOR X=1TO V-1 : J5$=STR(C$(),251+3*X,3) : IF J5$=" "THEN 1590 : GOSUB 2010 : GOSUB '39(STR(C$(),2,8),R) : R=P : IF Q=2THEN 1550 : GOSUB '38(108," ") : END 1550 L=L+1 : E1$(L)=STR(C$(),2,8)&BIN(R)&HEX(0001)&HEX(00)&STR(C$(),405,42)&BIN(A,2) : F9$=BIN((N-2)/VAL(STR(E1$(L),43),2),2) : S=VAL(F9$,2) : A=VAL(STR(E1$(L),50)) : B=VAL(STR(E1$(L),51)) : STR(E1$(L),45,5)=HEX(00)&STR(F9$,,2)&BIN(S*B/A,2) : STR(E1$(L),19,2)=STR(E1$(L),48) : STR(E1$(L),13,2)=STR(E1$(VAL(STR(E1$(L),10),2)),13,2) : NEXT X 1590 NEXT J : V=1 1620 GOSUB '47 : D5=D : C5=B : J5=S : IF R8$>=STR(E1$(),54,1)THEN 1650 : GOSUB '38(42,R8$) : GOTO 1060 1650 GOSUB '39(E2$,D5) : D5=P : IF Q=2THEN 1660 : GOSUB '38(107," ") : END 1660 J5=(N-2)/C5 : DIM F2$(256)1 : C9=1E9 : Z=0 : U=0 : FOR J1=0TO C5-1 : DATA LOAD BA T#D5,(A+J1*J5)F2$() : J=VAL(STR(F2$(),11),2) : Z=Z+VAL(STR(F2$(),9),2) : GOSUB 2030 : IF J>=C9OR F9=9THEN 1760 : C9=J : U=J1+1 1760 NEXT J1 : IF C9=0THEN 1790 1780 GOSUB '38(111," ") : GOSUB '34(250) : GOTO 1780 1790 IF K<>9THEN 1960 1800 D5=VAL(STR(E1$(V),9)) : GOSUB '39(E2$,D5) : D5=P : IF Q=2THEN 1820 1820 FOR S=0TO N-3 : DATA LOAD BA T#D5,(A+S)F2$() : GOSUB 2030 : IF F=0THEN 1920 : CONVERT A+STO STR(E8$,8,5),(#####) : GOSUB '38(130,STR(E8$,8,5)) : STR(F2$(),1,1)=HEX(82) : STR(F2$(),3,1),STR(F2$(),87,1),STR(F2$(),171,1)=HEX(D3) : STR(F2$(),255,1)=HEX(FD) : DATA SAVE BA T#D5,(A+S)F2$() 1920 NEXT S : V=V+1 : IF LEN(E1$())/56<VTHEN 1960 : IF STR(E1$(V),,8)=E2$THEN 1800 1960 LOAD T#2,"IDS2PU90"1000, 1970 F0$="Device address "&STR(C$(),105,3)&" for file "&HEX(22)&STR(C$(),2,8)& HEX(22)&" has not been selected." : GOTO 1990 1980 F0$="Data file "&HEX(22)&STR(C$(),2,8)&HEX(22)&" not found on device "&ST R(E$(),R*3+83,3)&"." : GOTO 1990 1990 PRINT AT(20,10);HEX(07);"Error ";HEX(0E);F0$ : STOP 2010 MAT SEARCHE3$()<#PART*45-17,45>,=J5$TO F9$STEP 3 : IF F9$=HEX(0000)THEN 1970 : R=INT((VAL(F9$,2)+2)/3) : RETURN 2030 F=0 : E6$=STR(F2$(),1,1) : IF E6$<>HEX(82)AND E6$<>HEX(81)THEN F=9 : IF STR(F2$(),3,1)<>HEX(D3)OR STR(F2$(),87,1)<>HEX(D3)OR STR(F2$(),171,1)< >HEX(D3)OR STR(F2$(),255,1)<>HEX(FD)THEN F=9 : RETURN 3699 ON ERRORE1$,E2$GOTO 3700 3700 DEFFN'31 : E$="IDS2PU88" : IF E5$<"Y"THEN LOAD T#2,"IDS2PER1"1000, : STOP "ERROR"