|
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◀