DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦86a3e2bf1⟧ TextFile

    Length: 3840 (0xf00)
    Types: TextFile
    Names: »algupdate«

Derivation

└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ.  Detaljer om "HC8000" projekt.
    └─⟦0364f57e3⟧ 
        └─⟦7e928b248⟧ »algbib« 
            └─⟦this⟧ 

TextFile

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◀