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

⟦a19e2954a⟧ TextFile

    Length: 3072 (0xc00)
    Types: TextFile
    Names: »tnextparam«

Derivation

└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
    └─⟦b2ec5d50f⟧ 
        └─⟦0b817e319⟧ »ctramos« 
            └─⟦this⟧ 

TextFile

<*nextparam 1981.11.17 Anders Lindgård*>

procedure init_alf(chartable);
integer array chartable;
begin
integer i;
<*convert all capital letters to small*>
for i:=0 step 1 until 255 do chartable(i):=0;
for i:='a' step 1 until 'å' do chartable(i):=6 shift 12+i;
for i:='A' step 1 until 95 do chartable(i):=chartable(i+32);
chartable('sp'):=7 shift 12+'sp';
for i:='.','/',':' do chartable(i):=7 shift 12+'.';
for i:='!' step 1 until '*',';' step 1 until 63,96,126,127 do
     chartable(i):=9 shift 12+i;
chartable(',') :=7 shift 12+ ',';
chartable('nl'):=8 shift 12+'nl';
chartable('em'):=8 shift 12+'em';
for i:=0 step 1 until 9 do chartable('0'+i):=2 shift 12+('0'+i);
for i:=0,2 do chartable('+'+i):=3 shift 12+('+'+i);
tableindex:=0;
intable(chartable);
end initalf;

integer procedure nextparam(c_buffer,name,int,del);
integer int,del;
long array name;
zone c_buffer;
begin
integer c,char,i;
<* value of nextparam
  -1 syntax error
   0 end of list
   1 <name>
   2 <integer>
   5 <name>.
   6 <integer>.
*>
del:='em';
nextparam:=-1;
for c:=readchar(c_buffer,char) while char='sp' do;
if c<>8 then repeatchar(c_buffer);
if char=',' then <*skip until 'nl'*>
begin
  for c:=readchar(c_buffer,char) while c<>8 do;
  c:=readchar(c_buffer,char);
  repeatchar(c_buffer);
end;
if c=8 then
begin
  del:=char;
  nextparam:=0;
end else
if c<7 then
begin
  if c=6 then
  begin
   <*name*>
   name(1):=name(2):=0;
   i:=readstring(c_buffer,name,1);
   if i>0 then nextparam:=1;
   repeatchar(c_buffer);
   for c:=readchar(c_buffer,char) while char='sp' do;
   if c<=6 then repeatchar(c_buffer);
   del:=if c<=6 then 'sp' else char;
   if del=',' then
   begin
    for c:=readchar(c_buffer,char) while c<>8 do;
    if char<>'nl' then repeatchar(c_buffer);

    del:='sp';
   end else
   if c=8 then repeatchar(c_buffer);
   if del='.' and i>0 then nextparam:=5;
  end else
  if c>1 and c<6 then
  begin
   <*integer*>
   i:=read(c_buffer,int);
   if i=1 and int<max_integer then
   begin
     repeatchar(c_buffer);
     for c:=readchar(c_buffer,char) while char='sp' do;
     if c<=6 then repeatchar(c_buffer);
     del:=if c<=6 then 'sp' else char;
     if del=',' then
     begin
       for c:=readchar(c_buffer,char) while c<>8 do;
       if char<>'nl' then repeatchar(c_buffer);
       del:='sp';
     end else
     if c=8 then repeatchar(c_buffer);
     nextparam:=if del<>46 then 2 else 6;
   end legal integer;
  end integer;
end legal item else
for c:=readchar(cbuffer,char) while c<>8 do;
end nextparam;
▶EOF◀