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

⟦c54c4e24b⟧ TextFile

    Length: 2304 (0x900)
    Types: TextFile
    Names: »charpacktxt«

Derivation

└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ.  Detaljer om "HC8000" projekt.
    └─⟦0364f57e3⟧ 
        └─⟦this⟧ »charpacktxt« 
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
    └─⟦b2ec5d50f⟧ 
        └─⟦this⟧ »charpacktxt« 
        └─⟦this⟧ »tplot/charpacktxt« 
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
    └─⟦b2ec5d50f⟧ 
        └─⟦dd2c1b53f⟧ »tplot« 
            └─⟦this⟧ 

TextFile

scope temp charpack
clear temp charpack
charpack=set 100
message charpack
charpack=algol message.no list.no

begin
integer i, j, idx, segm, n, point;
boolean array charfound(0:255);
integer array ia(1:10), POINTS(1:100), INDEX(0:255);
real array NAME(1:3);
boolean array field IDX, P;
zone ch(2*128,2,stderror);
packtext(NAME,<: unknown:>);
readlsfp(NAME);
i:=1;
open(ch,4,string(NAME(increase(i))),0);
ia(1):=8; for i:=2 step 1 until 10 do ia(i):=0;
if createentry(NAME,ia)>0 then
  begin
  alarm(<:<10>***area cannot be created :>);
  end;

for i:=0 step 1 until 255 do
begin
  INDEX(i):=0;
  charfound(i):=false;
  end;
segm:=1; IDX:=0; P:=256;

outrec6(ch,512);

READ:
read(in,idx);
if idx>255 then goto END;
charfound(idx):=true;
n:=0;
for i:=read(in,point) while point<>77 do
  begin n:=n+1; POINTS(n):=point; end;

if n mod 2 =0 then
  begin POINTS(n+1):=POINTS(n+2):=77; n:=n+2; end
else
  begin POINTS(n+1):=77; n:=n+1;end;

if P+n//2>512 then
  begin
  for i:=1 step 1 until (512-P) do ch.P(i):=true;
  segm:=segm+1;
  outrec6(ch,512);
  P:=0;
  end;
INDEX(idx):=P+1+(segm-1)*512;

for i:=2 step 2 until n do
  ch.P(i//2):=false add( POINTS(i-1)//10 )shift 3
                    add( POINTS(i-1) mod 10 )shift 3
                    add( POINTS(i)//10 )shift 3
                    add( POINTS(i) mod 10);
P:=P+n//2;

goto READ;

END:
for i:=1 step 1 until (512-P) do ch.P(i):=true;
setposition(ch,0,0);
swoprec6(ch,512);
for i:=1 step 1 until 256 do
  ch.IDX(i):=false add INDEX(i-1);
ia(1):=segm;
changetail(NAME,ia);
permentry(NAME,4);
for i:=0 step 1 until 255 do
begin
  if -,charfound(i) then write(out,<:<10>:>,i,<: undefined:>);
end;
close(ch,true);

end;

\f

mode message.no list.no 15.no
▶EOF◀