|
|
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: 5376 (0x1500)
Types: TextFile
Names: »skrivindgtx «
└─⟦110021343⟧ Bits:30007476 RC8000 Backup tape fra HT's bus-radio system
└─⟦a957ba283⟧
└─⟦this⟧ »skrivindgtx «
skrivindg=set 1
skrivindg=algol
external
message procedure skrivindgang side 1. hko 860924;
procedure skrivindgang(linie,head_and_tail,nr,ord);
value nr; integer nr;
boolean ord;
long array linie;
integer array head_and_tail;
<* skrivindgang udskriver en katalogindgang
med samme format som benyttes af 'lookup'.
kald: skrivindgang(linie,head_and_tail);
linie (kald, long array) long array hvori katalog-
indgangen udskrives.
head_and_tail (kald, integer array) længde mindst
17 elementer. skal indeholde en katalog-
ingang, f. eks. tilvejebragt ved:
monitor(76,zentry,0,head_and_tail);
nr (kald, integer) indgang-nummer. Hvis nr<=0 så
udskrives nummer ikke.
ord (kald, boolean) hvis true udskrives tail(7)
til tail(10) som integers.
fejlreaktioner:
ingen.
kaldte procedurer:
ingen.
*>
\f
message procedure skrivindgang side 2. hko 860924;
begin
integer i,j,k,l,pos;
integer array ib(1:8);
real r;
real array ra(1:2);
real array field raf;
boolean bs;
long array navn(1:2);
pos:=i:=1;
bs:=false;
raf:=6;
if nr>0 then
begin
put_number(linie,pos,<<dddd>,nr);
put_char(linie,pos,'sp');
end;
j:=put_text(linie,pos,head_and_tail.raf);
put_char(linie,pos,'sp',12-j);
i:=head_and_tail(8);
if i shift (-12)>=2048 then
begin <* modekind *>
movestring(ra,1,case i extract 12//2 + 1 of (
<:ip:>,<:kind.2:>,<:bs:>,<:kind.6:>,
<:tw:>,<:tr:>,<:tp:>,<:lp:>,<:cr:>,<::>,<:pl:>));
j:=put_text(linie,pos,ra);
bs:= i extract 12 = 4;
if i extract 12=10 or i extract 12=12 then
j:=j+put_char(linie,pos,case (i shift (-12)-2046)//2 of (
'o','e','n','f','t'))
else if i extract 12=18 then
begin
if i shift (-12) extract 11 <128 then
movestring(ra,1,case (i shift (-12)-2046)//2 of (
<:mtlh:>,<:mte:>,<:mtll:>,<:nrze:>))
else
movestring(ra,1,case (i shift (-12) -2046 -128)//2 of (
<:mthh:>,<:mth2:>,<:mthl:>));
j:=j+put_text(linie,pos,ra);
end
end else
begin
j:=pos;
put_number(linie,pos,<<d>,i); <* size *>
j:=pos-j;
end;
i:=1;
raf:=16;
k:=pos;
put_char(linie,pos,'sp',7-j);
put_text(linie,pos,head_and_tail.raf);
put_char(linie,pos,'sp');
j:=j+pos-k;
i:=head_and_tail(16) shift (-12); <* contents *>
i:=if (i=4 or i>32) then 13 else 14;
if i<>13 and head_and_tail(13)<>0 then
begin
put_char(linie,pos,'sp',19-j);
k:=pos;
movestring(ra,1,<:d.:>);
put_text(linie,pos,ra);
put_number(linie,pos,<<dddddd>,systime(6,head_and_tail(13),r));
put_char(linie,pos,'.');
put_number(linie,pos,<<zddd>,(r-20)/100);
put_char(linie,pos,'sp');
j:=pos-k;
<* j:=write(z,<:d.:>,<<dddddd>,systime(6,head_and_tail(13),r),
<<zddd>,<:.:>,(r-20)/100,"sp",1);
*> end
else
begin
i:=13;
put_char(linie,pos,'sp',19-j);
j:=0;
end;
k:=pos;
for i:=i step 1 until 17 do
begin
if ord then
put_number(linie,pos,<<d>,head_and_tail(i))
else
begin
if head_and_tail(i) shift (-12) <>0 then
begin
put_number(linie,pos,<<d>,head_and_tail(i) shift (-12));
put_char(linie,pos,'.');
end;
put_number(linie,pos,<<d>,head_and_tail(i) extract 12);
end;
put_char(linie,pos,'sp');
end;
j:=j+pos-k;
\f
message procedure skrivindgang side 3. hko 860924;
<* k:=head_and_tail(1) extract 3;
system(11,i,ib); (* catalog bases *)
*>
put_char(linie,pos,'sp',30-j);
put_char(linie,pos,';');
<* if bs then
begin
integer i,j;
integer array wrk,ent(1:20);
zone z1(1,1,stderror);
long array field laf;
tofrom(ent,head_and_tail,34);
repeat
tofrom(wrk,ent,34);
getzone6(z1,ent);
for i:=1,2,3,4 do
ent(i+1):=wrk(i+8);
setzone6(z1,ent);
j:=monitor(76) lookup head and tail:(z1,1,ent);
until j<>0;
tofrom(navn,wrk.raf,8);
end;
*>
put_number(linie,pos,head_and_tail(1) extract 3);
put_number(linie,pos,head_and_tail(2));
put_number(linie,pos,head_and_tail(3));
put_char(linie,pos,0,6);
end skrivindgang;
end;
l skrivindg skrivindgtx
▶EOF◀