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

⟦1b0f34a33⟧ TextFile

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

Derivation

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

TextFile

atomic=algol list.yes index.no

external
boolean procedure atomic(mass,Na);
value Na; integer Na; array mass;
begin
integer i,j,l,c,M;
procedure alarm;
begin write(out,<:<10>***atomic symbol no.:>,<<dd>,i,
   <<ddddd>,M,false add (c+64),1,false add l,1,<:  illegal:>);
   atomic:= true; goto stop
end;
atomic:= false;

for i:=1 step 1 until Na do begin
c:= M:= 0;
for l:=c while (c<65 or c>90) and c<>46 and M<>-1 do begin
   readchar(in,c);
   if M=12 and l<>50 and c<>67 then begin
      repeatchar(in); c:= 67 end;
   if c>=48 and c<=57 then M:= M*10+c-48;
   if c=49 and l=45 then M:= -1
end;

if M=-1 then mass(i):= mass(i-1) else
if c=46 then begin
   repeatchar(in); read(in,mass(i));
   mass(i):= mass(i)+M
end else begin
readchar(in,l); if l<97 then begin l:= 0; repeatchar(in) end;
c:= c-64; if c>19 then alarm;

case c of begin
   begin if l<>108 or -,(M=27 or M=0) then alarm;
         mass(i):= 26.981535 end;
   begin j:= if l=0 then M-9 else if l=114 then M//2-36 else 0;
         if j<1 or j>4 then alarm;
         mass(i):= case j of (10.012939,11.009305,
                   78.91835,80.91634) end;
   begin j:= if l=0 then M-11 else if l=108 then M//2-14 else 0;
         if j=-11 then j:= 1; if j<1 or j>4 then alarm;
         mass(i):= case j of (12,13.003354,
                   34.968855,36.965896) end;
   mass(i):= 2.014102;
   alarm;
   mass(i):= 18.998405;
   alarm;
   begin j:= if M=0 then 1 else M;
         if j<1 or j>2 then alarm;
         mass(i):= case j of (1.007825,2.014102) end;
   begin if -,(M=127 or M=0) then alarm;
         mass(i):= 126.90435 end;
   begin if -,(M=127 or M=0) then alarm;
         mass(i):= 126.90435 end;
   alarm;
   alarm;
   alarm;
   begin j:= if M=0 then 1 else M-13; if j<1 or j>2 then alarm;
         mass(i):= case j of (14.003074,15.000108) end;
   begin j:= if M=0 then 1 else M-15; if j<1 or j>3 then alarm;
         mass(i):= case j of (15.994915,16.999133,17.999160) end;
   begin if -,(M=31 or M=0) then alarm;
         mass(i):= 30.973763 end;
   alarm;
   if i>1 then mass(i):= mass(i-1) else alarm;
   begin j:= if l=0 then (if M=0 then 1 else M-31) else
           if l=105 then (if M=0 then 4 else M-24) else 0;
         if j<1 or j>6 then alarm;
         mass(i):= case j of (31.972074,32.971460,33.967864,
                   27.976927,28.976491,29.973761) end;
end c end
end i;
stop:
end;
end
▶EOF◀