home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
MBUG
/
MBUG022.ARC
/
RTW.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1979-12-31
|
2KB
|
132 lines
PROGRAM RTW;
{program to recover crashed wordstar/turbo files}
{crs 25-9-85}
const
{wordstar constants}
wc_file=$846d;{address of base of crashed file}
wo_fname=$34b9;{string containg old file name}
{turbo constants}
tc_file=$8118;
to_fname=$4500;
type
file_string=string[16];
var
x,r_type:char;
wend_mkr:integer absolute $37bc;
tend_mkr:integer absolute $4528;
i,j,end_mkr,c_file,o_fname : integer;
o_file : text;
fname : file_string;
PROCEDURE GETFN(NUM,BASE : INTEGER);
{recover the filename}
var
i:integer;
begin
i:=0;
while (i<=num)and(mem[to_fname+i+base]<>$20)do
begin
fname :=fname +chr(mem[to_fname+i+base]);
i :=i+1;
end;
end;
PROCEDURE SOURCE_TYPE(VAR R_TYPE : CHAR);
{WAS IT TURBO EDITOR OR WORDSTAR FILE}
BEGIN
WRITELN('PROGRAM TO RECOVER CRASHED WORDSTAR/TURBO FILES');
WRITELN('CRS 25 SEPTEMBER 85');
WRITELN;
WRITE('TURBO OR WORDSTAR FILE TO RESTORE (T OR W) ?');
REPEAT
READ(KBD,R_TYPE)
UNTIL(UPCASE(R_TYPE) ='T' ) OR (UPCASE(R_TYPE) = 'W');
R_TYPE :=UPCASE(R_TYPE);
WRITELN(R_TYPE);
WRITELN;
END;
PROCEDURE SETUP_VAR;
BEGIN
IF R_TYPE = 'T' THEN
BEGIN
END_MKR :=TEND_MKR-1;
C_FILE :=TC_FILE;
FNAME :='';
GETFN(8,0);
FNAME :=FNAME +'.';
GETFN(3,8);
end
else begin
end_mkr :=wend_mkr;
c_file :=wc_file;
i := 0;
fname :='';
while(mem[wo_fname+i]<> 0) do
begin
fname:=fname + chr(mem[wo_fname+i]);
i := i+1;
end;
end;
end;
function check_fname(fname : file_string) :file_string;
Var
x : char;
begin
writeln('OLD NAME OF FILE IS ',FNAME);
WRITE('USE THIS NAME (Y OR N) ? ');
REPEAT
READ(KBD,X);
UNTIL (UPCASE(X)= 'Y') OR (UPCASE(X)= 'N');
X :=UPCASE(X);
WRITELN;
IF UPCASE(X) = 'N' THEN
BEGIN
WRITE('ENTER NEW NAME ?');
READLN(FNAME);
END;
CHECK_FNAME :=FNAME;
END;
BEGIN
SOURCE_TYPE(R_TYPE);
SETUP_VAR;
IF END_MKR = C_FILE THEN
BEGIN
WRITE('THE FILE YOU ARE ATTEMPTING TO RESTORE ');
WRITELN('IS EITHER OF ZERO LENGTH');
WRITE('OR IS AN UNCHANGED IMAGE OF AN ');
WRITELN('EXISTING FILE. ')
end else
begin
write('CALCULATED LENGHT OF RESTORABLE ');
WRITELN('IMAGE IS',END_MKR-C_FILE,' BYTES');
WRITELN;
FNAME :=CHECK_FNAME(FNAME);
ASSIGN(O_FILE,FNAME);
REWRITE(O_FILE);
FOR i :=C_FILE TO END_MKR-1 DO
WRITE(O_FILE,CHR(MEM[i]));
close(o_file);
writeln('FILE CLOSED.');
END;
END.