0 '"RECOV2.TD2" Recover DO Files with TDD2 Drive for TDD1/TDD2 Disks. Copyright 1987 -- P.C. Wheeler Phil Wheeler [71266,125] 7/20/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@22,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," RECOV2.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"; 62 PRINT@206,"A)ppend to Recover File":PRINT@246,"L)ink Next Sector Automatically":PRINT@286,"E)xit"; 70 ONINSTR("gGsSrRaAlLeE",INPUT$(1))GOTO72,72,73,73,74,74,82,82,90,90,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 82 OPENF$FORAPPENDAS1:GOTO85 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:PRINT@125,"Writing to RAM File....";:CALL64706 86 CLOSE:CLS:GOTO60 87 AL=256*(DD/256-INT(DD/256)):AH=INT(DD/256):RETURN 90 S=S1:IFS<>0ANDS<>255ANDS<160GOTO40ELSEBEEP: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