0 '"RECOV3.TD2" Recover DO Files with TDD2 Drive for TDD1/TDD2 Disks. Copyright 1987 -- P.C. Wheeler Phil Wheeler [71266,125] 11/17/87 1 CLS:DEFINTR-V:CLEAR256,58704:POKE63056,128:MAXFILES=1:HX$="0123456789ABCDEF":CC=0:CT=0:E$=CHR$(27):Z=62297:GOSUB57:GOTO20 2 CLS:PRINTE$"pDisk Sector No."E$"q"S;:S1=PEEK(58709):IFS1=255THENPRINT@25,E$"pLast Sector"E$"q"ELSEIFS1=0THENPRINT@25,E$"pEmpty Sector"E$"q"ELSEPRINT@21,E$"pNext Sector"E$"q =";S1 3 FORN=0TO5:I=I0+8*N 4 K=I-65536 5 S$=STR$(S):PRINTRIGHT$(S$,2);:K1=K+65536-58708:FORR=1TO4:PRINTMID$(HX$,(INT(K1/16^(4-R))AND15)+1,1);:NEXT 6 AX$="":FORK=ITOI+7:R=PEEK(K):PRINT" "MID$(HX$,R/16+1,1);MID$(HX$,(RAND15)+1,1); 7 IFR<32THENR=46 8 AX$=AX$+CHR$(R):NEXT:PRINT" "AX$; 15 PRINT:NEXT 16 PRINT@286,E$"pPress for Recover Menu"E$"q"; 18 I$=INPUT$(1):IFI$=E$THENCLS:GOTO60ELSE18 20 PRINT@0," RECOV3.BA -- TDD2 DO File Recovery Pgm";:GOSUB24:GOTO60 21 S$="":PRINT@125,"Starting Sector ";:INPUTS$:IFS$=""THEN95ELSES=VAL(S$):GOTO30 24 FORI=64706TO64736:READA:POKEI,A:NEXT:RETURN 25 DATA 1,0,5,42,192,252,205,109,107,218,221,252,1,0,5,235 26 DATA 33,88,229,205,219,107,235,34,192,252,201,205,41,66,201 30 IFS>159THENBEEP:PRINT@125," Sector Out of Range!"SPACE$(20);:FORK=1TO1000:NEXT:GOTO21 40 CLS:PRINT@87,"Now Reading Sector No."S; 50 GOSUB 55:CALL Z,3,58704:GOSUB99:I0=58708:GOTO2 55 POKE58704,84:POKE58705,229:POKE58706,S:RETURN 57 IFPEEK(Z)<>229ORPEEK(Z+1)<>94ORPEEK(Z+239)<>4ORPEEK(Z+240)<>195THENBEEP:PRINT@135,"No System!":POKE63056,0:CLEAR256,MAXRAM:ENDELSERETURN 60 PRINT@40,E$"pSelect Next Action"E$"q":PRINT@86,"S)elect New Start Sector":PRINT@126,"G)o to Next Sector On Disk":PRINT@166,"R)ecover DO File at this Sector";:PRINT@206,"E)xit"; 70 ONINSTR("gGsSrReE",INPUT$(1))GOTO72,72,73,73,74,74,95,95:GOTO70 72 S=S+1:IFS<160THEN40ELSEBEEP:CLS:GOTO60 73 CLS:GOTO21 74 CLS:F$="":PRINT@80,"DO File to Recover ";:INPUTF$:IFF$=""THEN60 80 OPENF$FOROUTPUTAS1:GOTO84 84 AA=VARPTR(#1):FB=PEEK(AA+2)+256*PEEK(AA+3):BG=PEEK(FB)+256*PEEK(FB+1):DD=BG:GOSUB87:POKE64704,AL:POKE64705,AH 85 CLS:CALL64706:PRINT@290,"Writing Sector";S;:GOTO90 87 AL=256*(DD/256-INT(DD/256)):AH=INT(DD/256):RETURN 90 S=S1:IFS<>0ANDS<160GOTO110ELSEBEEP:CLS:GOTO60 95 POKE63056,0:CLEAR256,MAXRAM:MENU 96 PRINT@170,ER$:FORJJ=1TO1000:NEXT:CLS:GOTO60 97 CLS:GOTO20 99 ER=PEEK(58704):IFER<=1THENRETURNELSEBEEP 101 IFER=5THENER$="Sector Unreadable":GOTO96 102 IFER=6THENER$=" Write Protected":GOTO96 103 ER$="Check Drive & Disk":GOTO96 110 GOSUB55:CALLZ,3,58704:GOSUB99:I0=58798:PRINT@304,S;:S1=PEEK(58709):CALL64706:IFS1=255THENCLOSE:BEEP:GOTO60ELSEGOTO90