|
|
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: 2304 (0x900)
Types: TextFile
Names: »tprintfile«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt.
└─⟦0364f57e3⟧
└─⟦e4d872f9f⟧ »cproc«
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
└─⟦b2ec5d50f⟧
└─⟦e4d872f9f⟧ »cproc«
└─⟦this⟧
mode listing.yes list.yes
printfile=algol
1980-10-23
external
integer procedure printfile(printer,file);
string printer,file;
begin
integer result,pda,i,trnr;
own boolean test;
real ers;
array field r;
long array field trans,sender,receiver,user;
integer array c(1:30),an(1:11);
integer array tail(1:10);
array name(1:3);
ers:=real <:<10>** printfile :>;
trnr:=-1;
cleararray(name);
movestring(name,1,file);
result:=lookuptail(name,tail);
if result>0 or tail(1)<=0 or tail(9)>0 then
begin
i:=1;
write(out,string ers,string name(increase(i)),
<: entry:>);
if result=0 then
begin
if tail(1)<0 then write(out,<: size:>,tail(1)) else
write(out,<: content:>,tail(9));
end else
write(out,<: lookup result :>,result);
if result=0 then result:=if tail(1)<0 then 7 else 8;
result:=32+result;
end area improper
else
begin
user:=16;
sender:=40;
receiver:=50;
r:=0;
cleararray(c);
for i:=7,8,13 step 1 until 20,25,30 do c(i):=-1;
pda:=wordload(66);
for i:=1,2 do c.user(i):=doubleload(pda+4*i);
for i:=1,2 do c.sender(i):=long name(i);
movestring(c.receiver.r,1,printer);
if c.receiver(1)=long <::> then movestring(c.receiver.r,1,<:lp:>);
i:=0;
if test then
begin
repeat i:=i+1;
write(out,c(i),"nl",if i mod 5=1 then 1 else 0);
until i=30
end
else
result:=transfer(2,c,30,an,11);
if test then else
if result>0 then
write(out,string ers,true,12,c.sender,"sp",1,
case result-1 of (<:primo rejected:>,
<:primo unintelligible:>,<:primo malfunction:>,
<:primo does not exist:>,<:buffer claim exceeded:>,
<:illegal parameter:>,<:parameter error:>,
<:criterion error:>))
else
if result=0 and an(1)=0 then
begin
trnr:=an(2);
write(out,"nl",1,true,12,c.sender,<: transport :>,<<ddd>,an(2))
end
else
begin
result:=an(1)+16;
write(out,string ers,true,12,c.sender,"sp",1,case an(1)-1 of
(<:transport unknown:>,<:missing resources:>,
<::>,<:file trouble:>,<:printer trouble:>));
if an(1)=6 then write(out,"sp",1,true,12,c.receiver);
if an(1)>4 then
begin
i:=case an(1)-4 of (8,10);
i:=an(i);
write(out,case i of (<: entry troubles:>,<: device troubles:>));
end receiver sender troubles
end troubles;
end entry exist;
printfile:=if trnr>0 then trnr else -result;
end;
end
mode 15.no list.no
▶EOF◀