|
|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 3072 (0xc00)
Types: TextFile
Names: »tmulticopy«
└─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ.
└─⟦4334b4c0b⟧
└─⟦162d2eb5b⟧ »talgprog«
└─⟦this⟧
(mode list.yes
multicopy=algol connect.no blocks.yes
global multicopy
mode list.no)
1980-10-22
begin
integer array t(1:10);
array ver,inp,wrk,outp(1:3);
boolean cont,print;
integer i,j,fpc,copy,copies,char,ch,res,chff,
modekindlp,vtype,lines,totlines,linespp,maxlp;
real r;
integer array line(1:500);
modekindlp:=1 shift 23+14;
totlines:=0;
readifp(<:lines:>,maxlp,-1);
i:=vtype:=0;
readsfp(<:version:>,ver,<::>);
repeat i:=i+1;
if ver(1)=real (case i of (<:algol:>,<:slang:>,<:fp:>,
<:compo:> add 's')) then vtype:=i;
until vtype>0 or i=4;
readifp(<:copies:>,copies,1);
generaten(wrk);
print:=true;
cleararray(outp);
movestring(outp,1,<:lp:>);
if -,readlsfp(outp) then else
begin
res:=lookuptail(outp,t);
print:=res=0 and t(1)=modekindlp;
if -,print then begin wrk(1):=outp(1); wrk(2):=outp(2); end;
end;
print:=print and fpinareas>0;
if print then
begin
res:=reservesegm(wrk,1);
if res<>0 then alarm(<:***bs claims exceeded:>);
res:=permentry(wrk,2);
end;
res:=connectcuro(wrk);
if res<>0 then
begin
unstackcuro;
alarm(<:***connect :>,string inc(wrk),res);
end;
cont:=false;
linespp:=0;
for copy:=1 step 1 until copies do
begin
for fpc:=1 step 1 until fpinareas do
begin
readinfp(inp,fpc);
res:=connectcuri(inp);
if res<>0 then
begin
closeout;
alarm(<:***connect input :>,string inc(inp),res);
end;
lines:=0;
lookuptail(inp,t);
if vtype>0 then
begin
write(out,"ff",1,
"nl",1,
case vtype of (<:<*:>,<:;:>,<:;:>,<:*cm:>),
";",12,"sp",4,true,12,string inc(inp),
<< dd dd dd>,systime(6,t(6),r),r,
"sp",4,";",12,
case vtype of (<:*>:>,<:;:>,<:;:>,<:*:>),
"nl",2);
if vtype=1 then linespp:=3;
lines:=lines+3;
end;
repeat
if -,cont then ch:=0;
repeat ch:=ch+1;
readchar(in,char);
line(ch):=char;
if char='nl' then lines:=lines+1;
until char='em' or char='nl' or ch=499;
cont:=char='em';
chff:=0;
if -,cont then
begin
for i:=1 step 1 until ch do
begin
chff:=chff +
(if line(i)='ff' then 1 else 0);
if chff>1 then line(i):=0;
if line(i)<>'em' then outchar(out,line(i));
end;
end;
until char='em';
totlines:=totlines+lines;
unstackcuri;
end for fpc;
end for copy;
if cont then
begin
for i:=1 step 1 until ch do outchar(out,line(i));
end;
closeout;
i:=j:=1;
if print then
begin
printfile(string outp(increase(i)),string wrk(increase(j)));
write(out,"sp",4,<:lines :>,totlines);
end else
write(out,"nl",1,true,12,string outp(increase(i)),
"sp",4,<:lines :>,totlines);
end
▶EOF◀