Trailing-Edge
-
PDP-10 Archives
-
decuslib20-01
-
decus/20-0003/map.pas
There are no other files named map.pas in the archive.
program map(input:-);
{Asks for a file name. Tells you what pages are in use in the file,
also the end of file figured in 3 different ways. output is self-
explanatory.}
var
count,bperw,bperp,used,first,page:integer;
fdb:packed record
fbret:0..77B;fbbsz:0..77B;fbmod:0..77B;fbpgc:0..777777B;
fbsiz:integer
end;
function ffufp(page:integer):integer;
var val,ret:integer;
begin
jsys(211B,2,ret;input:page;val);
if ret = 2
then begin
val := val mod 1000000B;
count := count + 1;
end
else begin
if val <> 600546B
then writeln(tty,'? Unexpected jsys error on FFUFP');
val := -1;
end;
ffufp := val
end;
begin
jsys(63B;0:input,2:11B,fdb);
with fdb do
begin
if fbbsz = 0
then bperw := 1
else bperw := 36 div fbbsz;
bperp := bperw * 512;
page := (fbsiz + bperp - 1) div bperp;
writeln(tty);
writeln(tty,'EOF at byte ',fbsiz:0,'(',fbbsz:0,'), implying ',page:0,' pages');
writeln(tty,'GTFDB page count: ',fbpgc:0);
end;
writeln(tty,'Used pages:');
count := 0;
first := ffufp(0);
page := first;
if first < 0
then writeln(tty,'% Empty file')
else repeat
repeat
page := page+1;
used := ffufp(page)
until used <> page;
if first = page-1
then writeln(tty,' ',first:0)
else writeln(tty,' ',first:0, ':', page-1:0);
first := used;
page := first;
until used < 0;
writeln(tty,'Actual count of pages: ',count:0);
end.