|
|
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: 3840 (0xf00)
Types: TextFile
Names: »algupdate«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt.
└─⟦0364f57e3⟧
└─⟦7e928b248⟧ »algbib«
└─⟦this⟧
update=algol connect.no list.no
begin
integer l,m,n,p,p0,segm; real s,ln10;
integer array tail(1:10);
array x,y,track(1:2);
zone z(128,1,stderror);
procedure split(n);
value n; integer n;
begin integer i,j,k,p; real lo;
j:= 48//n;
for i:=1 step 1 until j do begin
p:= s shift (n-48) extract n; k:= abs p;
k:= if p=0 then 1 else entier(ln(k)/ln10) + 1;
lo:= 0.0 add 3 shift 28 add k shift 4 add k
shift 8 add (if p<0 then 1 else 0) shift 6;
write(out,string lo,p);
s:= s shift n;
end end;
procedure pack(n);
value n; integer n;
begin integer i,j,k;
j:= 48//n; s:= 0;
for i:=1 step 1 until j do begin
read(in,k); if k<0 then k:= 2 shift (n-1) + k;
s:= s shift n add k
end; z(m):= s end;
if -,readinfp(track,1) then begin
name:
write(out,<:<10>Update track (in <>): :>); setposition(out,0,0);
readhead(in,track,1); readchar(in,l);
end;
l:= 1; open(z,4,string track(increase(l)),0);
if monitor(42,z,0,tail)<>0 then begin
l:=1; write(out,<:<10>***:>,string track(increase(l)),
<: unknown:>); close(z,true); goto name
end;
segm:= tail(1); ln10:= ln(10); p0:= -1;
igen:
x(2):= y(2):= 0.0 shift 40;
write(out,<:<10>Track index and r, t or i,bits: :>);
setposition(out,0,0);
readchar(in,l); repeatchar(in);
if l=115 then begin
comment 115 = s, for search;
search:
write(out,<:<10>search text in < >: :>);
setposition(out,0,0); l:= readhead(in,x,1);
if l=0 then begin
comment characters by integer value;
read(in,n); l:= -1;
for l:=l+1 while n<>0 do begin
x(1):= x(1) shift 8 add n;
read(in,n);
end;
if l=0 then goto igen;
x(1):= x(1) shift (48-8*l);
end else readchar(in,n);
if l>6 then begin
write(out,<:<10>***only 6 characters allowed:>);
goto search
end;
setposition(z,0,0); swoprec(z,128);
n:= l mod 6; p:= 48-l*8; p0:= 0; m:=1;
y(1):= z(1) shift (-p) shift p;
for n:=n+1 while y(1)<>x(1) do begin
if n=1 then begin
m:= m+1;
if m=129 then begin
m:=1; p0:= p0+1;
if p0=segm then begin
l:=1; write(out,<:<10>***:>,
string x(increase(l)),<: = :>);
s:= x(1); split(8); write(out,<: not found:>);
goto igen
end;
swoprec(z,128);
end end;
y(1):= y(1) shift (8-p) add
(z(m) shift (n*8-48) extract 8) shift p;
if n=6 then n:= 0
end n;
write(out,<:<10>Track index: :>,<<ddddd>,p0*128+m);
l:= 116
end else begin
read(in,m); if m<1 then goto stop;
p:= (m-1)//128; m:= (m-1) mod 128 + 1;
if p+1>segm then begin
write(out,<:<10>***Track index exceeds :>,
<<ddddd>,segm*128); goto igen
end;
if p<>p0 then begin
p0:= p; setposition(z,0,p); swoprec(z,128) end;
readchar(in,l); if l=116 then readchar(in,n)
end;
if l=105 then begin
read(in,n); write(out,<:<10>old integers: :>);
s:= z(m); split(n);
write(out,<:<10>new integers: :>); setposition(out,0,0);
readchar(in,l); if l<>10 then begin
repeatchar(in); pack(n) end
end else if l=116 then begin
write(out,<:<10>old text: :>);
for n:=8 step 8 until 48 do begin
l:= z(m) shift (n-48) extract 8;
if l>32 and l<127 then
write(out,false add l,1)
else
write(out,<:(:>,<<d>,l,<:):>);
end;
write(out,<:<10>new text: :>); setposition(out,0,0);
readchar(in,l); if l=60 then begin
repeatchar(in); readhead(in,x,1);
readchar(in,l); z(m):= x(1) end;
end else begin
write(out,<:<10>old real: :>,<<-d.ddddddddd'-d>,z(m),
<:<10>new real: :>); setposition(out,0,0);
readchar(in,l); readchar(in,l); if l<>10 then begin
repeatchar(in); read(in,z(m)) end
end;
goto igen;
stop: close(z,true)
end;
▶EOF◀