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

⟦f8e21acb1⟧ TextFile

    Length: 23808 (0x5d00)
    Types: TextFile
    Names: »ramanx«

Derivation

└─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ.
    └─⟦4334b4c0b⟧ 
        └─⟦this⟧ »ramanx« 

TextFile

clear temp raman
raman=set 14 disc5
scope temp raman
raman=algol list.no
\f



begin
  integer i,j,res,num,ver,int,tmin,fmin,fmax,nr,n1,n2,m,df,dt,pl,del,
  s,s1,s2,I,norm,N,b,nr1,nr2,ramme,t,type,sel,fint,key,savep,ram3;
  real T,fak,max,umax,min,umin,skax,skay,ymax,format,x,y,g;
  long array lis,com,navn,navn1,navn2(1:2);
  long l;
  integer array a(1:8),tail,hale(1:10);
  array mic,prg(1:3),text(1:12);
  boolean setup,pr,nl,sp;
  zone z(128,1,stderror);

  procedure ffil(nr,navn,type);
  long array navn; integer nr,type;
  begin
    integer s,i; boolean p,r; long array exn(1:2);

    navn(1):= navn(2):= 0;
D:  repeatchar(in);
A:  readchar(in,s); if s=32 then goto A;
    repeatchar(in);
    readchar(in,s);
    if s=10 then write(out,<:navn=  :>)
    else repeatchar(in); outendcur(0);
    readstring(in,navn,1);
    if navn(1)=0 then goto D;
    ramnc(nr,navn,type);
    if type=6 or type=7 then goto slut;
    if lookupentry(navn)=0 then goto slut;
    if type=1 then
    begin ramng(nr,exn,2);
          if lookupentry(exn)<>0 then goto L;
          ramng(nr,navn,2); type:=2; goto slut;
    end;
    if type=2 then
    begin ramng(nr,exn,1);
          if lookupentry(exn)=0 then goto slut;
          ramng(nr,navn,1); goto L;
    end;
    if type=9 then
    begin ramng(nr,navn,2);
          if lookupentry(navn)=0 then
          begin type:=2; goto slut; end;
          ramng(nr,navn,1);
          if lookupentry(navn)=0 then
          begin type:=1; goto slut; end
          else
          goto L;
    end;
L:  write(out,navn,<: *findes ikke:>);
    navn(1):=navn(2):=0;
    repeatchar(in);
C:  readchar(in,s); if s<>10 then goto C;
    goto nextcom;
slut:
end ffil;

  procedure gfil(navn,op);
  long array navn; integer op;
  begin integer s,t;
        if op=0 then goto C;
        navn(1):=navn(2):=0;
D:      repeatchar(in);
A:      readchar(in,s); if s=32 then goto A;
        repeatchar(in);
        readchar(in,s);
        if s=10 then write(out,case op of(
        <:navn=  :>,<:mnavn= :>,<:snavn= :>,<:knavn= :>,
        <:lnavn= :>,<:enavn= :>))
        else repeatchar(in); setposition(out,0,0);
        readstring(in,navn,1);
        ramnc(nr,navn,t);
        if t=7 then
        begin ramnc(nr,navn1,t);
              t:=case op of(0,3,4,0,0);
              ramng(nr,navn,t);
        end;
C:      if lookupentry(navn)=0 then removeentry(navn);
        reservesegm(navn,400); permentry(navn,15);
  end gfil;

  procedure indl(navn);
  long array navn;
  begin integer array t(1:10);
        if type=1 or type=2 then
        begin if type=1 then ramng(nr,navn,2);
              if lookupentry(navn) <> 0 then ramind(nr);
        end;
  end indl;



  boolean procedure fejl;
  begin
    if res<>1 or netiosw extract 7 <> 0 then
    begin
      fejl:=true;
      fejlinet(out,mic,res,netiosw);
    end
    else
    fejl:=false;
  end fejl;

  procedure status;
  begin
    integer array data(1:256);
    integer pos,segm,state;
    res:=netoperat(string inc(mic),opsense,0);
    if fejl then goto sslut;
    state:=netprogsw;
    state:=
    if state=0 then 1 else
    if state=1 then 2 else
    if state=2 then 3 else
    if state=4 then 4 else
    if state=8 then 5 else 6;

    res:=netabsio(string inc(mic),opinput,data,0);
    if fejl then goto sslut;
    pos:=(data(35) shift (-8))-771;
    segm:=pos//768;
    pos:=pos/3-segm-1;
sp:=false add 32;

    write(out,<:Status::>,sp,17,case state of (
    <:ingen bruger process eller stoppet.:>,
    <:aktiv.:>,
    <:venter på meddelelse.:>,
    <:venter på svar.:>,
    <:venter på begivenhed (meddelelse eller svar).:>,
    <:ukendt status.:>),nl,1,<< ddddd>,
    <:Antal punkter opsamlet::>,pos,nl,1,
    <:Antal cm-1 scannet::>,sp,4,pos/8.4);
sslut:
  end status;



  mic(1):=real (long <:miclo:> + (long <:c:> shift (-40)));
  mic(2):=real <:al6:>;
  prg(1):=real (long <:raman:> + (long <:p:> shift (-40)));
  prg(2):=real <::>;
  mic(3):=prg(3):=real <::>;
  nl:=false add 10;
  ram3:=0; pr:=true; sel:=0; savep:=0;
\f

nextcom:
  setup:=false; com(1):=com(2):=0; write(out,nl,2,<:com=:>);
  setposition(out,0,0); readstring(in,com,1); l:=com(1);
  if l=long <:cdraw:> or l= long <:cdr:> then goto cdraw;
  if l=long <:cdump:> or l= long <:cdu:> then goto cdump;
  if l=long <:cd1:>   or l= long <:cd2:> then goto cdump;
  if                     l= long <:con:> then goto conv;
  if l=long <:draw:>  or l= long <:dra:> then goto draw;
  if l=long <:dump:>  or l= long <:dum:> then goto dump;
  if l=long <:hent:>  or l= long <:hen:> then goto hent;
  if l=long <:load:>  or l= long <:loa:> then goto load;
  if l=long <:mikro:> or l= long <:mik:> then goto mikro;
  if l=long <:progr:> or l= long <:pro:> then goto progr;
  if l=long <:setup:> or l= long <:set:> then goto set;
  if l=long <:start:> or l= long <:sta:> then goto start;
  if l=long <:status:> or l=long <:sts:> then goto stat;
  if l=long <:stop:>  or l= long <:sto:> then goto stop;
  if l=long <:clear:> or l= long <:cle:> then goto clear;
  if l=long <:kat:>                      then goto kat;
  if l=long <:katr:>  or l= long <:ktr:> then goto katr;
  if l=long <:kats:>  or l= long <:kts:> then goto kats;
  if l=long <:look:>  or l= long <:loo:> then goto look;
  if l=long <:nr:>    or l= long <:rnr:> then goto ranr;
  if l=long <:adder:> or l= long <:add:> then goto adder;
  if l=long <:b:>     or l= long <:bag:> then goto bagr;
  if l=long <:z:>     or l= long <:fsm:> then goto fsmo;
  if                     l= long <:get:> then goto getl;
  if l=long <:g:>     or l= long <:gsn:> then goto gsnit;
  if l=long <:i:>     or l= long <:ind:> then goto ind;
  if l=long <:kopi:>  or l= long <:kop:> then goto kopi;
  if                     l= long <:kvo:> then goto kvot;
  if l=long <:log:>                      then goto log;
  if l=long <:max:>                      then goto maks;
  if l=long <:min:>                      then goto minl;
  if l=long <:mul:>                      then goto mult;
  if l=long <:n:>     or l= long <:nor:> then goto nor;
  if l=long <:jus:>   or l= long <:npf:> then goto npf;
  if                     l= long <:ny4:> then goto ny4;
  if l=long <:opl:>                      then goto opl;
  if l=long <:pli:>                      then goto pli;
  if l=long <:p:>     or l= long <:plo:> then goto plot;
  if l=long <:plrny:> or l= long <:plr:> then goto plrny;
  if l=long <:pot:>                      then goto pot;
  if                     l= long <:put:> then goto putl;
  if l=long <:r:>     or l= long <:ret:> then goto putl;
  if l=long <:m:>     or l= long <:rn1:> then goto rn1;
  if l=long <:rny:>   or l= long <:rn2:> then goto rn2;
  if                     l= long <:sap:> then goto sap;
  if                     l= long <:smo:> then goto smo;
  if                     l= long <:sms:> then goto sms;
  if l=long <:c:>     or l= long <:sub:> then goto sub;
  if l=long <:u:>     or l= long <:udl:> then goto getl;
  if l=long <:sky:>   or l= long <:ysk:> then goto yska;
  if l=long <:skx:>   or l= long <:xsk:> then goto xska;
  if l=long <:list:>  or l= long <:lis:> then goto list;
  if l=long <:perm:>  or l= long <:per:> then goto perm;
  if l=long <:vent:>  or l= long <:ven:> then goto vent;
  if                     l= long <:tes:> then goto test;
  if l=long <:slut:>  or l= long <:end:> then goto slut
  else
  begin write(out,<:kommando :>,com,<: findes ikke:>,nl,1,
        <:ved kommando list skrives kommandoliste:>);
        repeatchar(in);
B:      readchar(in,s); if s<>10 then goto B; goto nextcom;
  end;
\f




load:
  res:=netprogload(string inc(mic),string inc(prg));
  fejl;
  if setup then goto start;
  goto nextcom;


start:
  res:=netoperat(string inc(mic),opstart,0);
  fejl;
  if setup then
  begin write(out,<:*START MICRO:>,nl,2); setposition(out,0,0);
        wait(2);
        write(out,<:*START RS100:>,nl,1); setposition(out,0,0);
        wait(5);
        goto cdump;
  end;
  goto nextcom;


stop:
  if setup then
  begin write(out,nl,1,<:*STOP RS100:>,nl,1);
        setposition(out,0,0);
  end;
  res:=netoperat(string inc(mic),opstop,0);
  fejl;
  goto nextcom;


cdraw:
  if -,htal(fmin) and -,htal(int) or htal(i) then
  begin write(out,<:tmin int (cm-1)= :>); setposition(out,0,0);
        read(in,tmin,int);
  end;
  ramcdr(mic,tmin,int);
  goto nextcom;


cdump:
  if -,htal(tmin) and -,htal(int) or htal(i) then
  begin write(out,<:tmin int (cm-1)=:>);
        setposition(out,0,0); read(in,tmin,int);
  end;
  if pr then
  begin write(out,nl,1,<:n:>,nl,2); setposition(out,0,0);
        ramcdu(mic,tmin,int);
  end
  else
  begin write(out,nl,1,<:g:>,nl,2); setposition(out,0,0);
        ramcdg(mic,tmin,int);
  end;
  if setup then goto stop;
  goto nextcom;


conv:
  if -,htal(s1) and -,htal(s2) or htal(i) then
  begin write(out,<:nr1 nr2= :>); setposition(out,0,0);
        read(in,s1,s2);
  end;
  ramcon(s1,s2,1);
  goto nextcom;


draw:
  if -,htal(tmin) and -,htal(int) or htal(i) then
  begin write(out,<:tmin int (cm-1)= :>); setposition(out,0,0);
        read(in,tmin,int);
  end;
  goto nextcom;


dump:
  goto nextcom;


hent:
  goto nextcom;


mikro:
  write(out,<:mikro= :>,string inc(mic)); 
  write(out,nl,1,<:mikro= :>); setposition(out,0,0);
  readchar(in,res); if res<>10 then
  begin mic(1):=mic(2):=mic(3):=long <::>;
        repeatchar(in); readstring(in,mic,1);
  end;
  goto nextcom;


progr:
  write(out,<:program= :>,string inc(prg)); setposition(out,0,0);
  write(out,nl,1,<:program= :>); setposition(out,0,0);
  readchar(in,res); if res<>10 then
  begin prg(1):=prg(2):=prg(3):=real <::>;
        repeatchar(in); readstring(in,prg,1);
        pr:=-,pr;
  end;
  goto nextcom;


set:
  setup:=true; goto load;


stat:
  status;
  goto nextcom;
\f




clear:
  write(out,<:nr1 nr2 type=:>); setposition(out,0,0);
  read(in,nr1,nr2,type);
  ramcle(nr1,nr2,type);
  goto nextcom;


look:
  if -,htal(nr1) and -,htal(nr2) 
  and -,htal(type) or htal(i) then
  begin write(out,<:nr1 nr2 type=:>); setposition(out,0,0);
        read(in,nr1,nr2,type);
  end;
  ramloo(nr1,nr2,type);
  goto nextcom;


kat:
  if -,htal(nr1) and -,htal(nr2) or htal(i) then
  begin write(out,<:nr1 nr2=:>); setposition(out,0,0);
        read(in,nr1,nr2);
  end;

  lookuptail(<:ramkatn:>,hale);
  hale(8):=1; hale(9):=nr1; hale(10):=nr2;
  changetail(<:ramkatn:>,hale);
  ramkat;
  goto nextcom;


katr:
  if -,htal(nr) or htal(i) then
  begin write(out,<:nr=:>); setposition(out,0,0);
        read(in,nr);
  end;
  ramkatr(nr);
  goto nextcom;


kats:
  if -,htal(nr1) and -,htal(nr2) or htal(i) then
  begin write(out,<:nr1 nr2=:>); setposition(out,0,0);
        read(in,nr1,nr2);
  end;
  lookuptail(<:ramkatn:>,hale);
  hale(8):=0; hale(9):=nr1; hale(10):=nr2;
  changetail(<:ramkatn:>,hale);
  psubmit(<:ramks:>,0);
  goto nextcom;


ranr:
  ramrnr;
  goto nextcom;
\f




adder:
  ffil(nr,navn,type);
  if -,htal(b) or htal(i) then
  begin write(out,<:med konstant=:>); setposition(out,0,0);
        read(in,b);
  end;
  indl(navn); rambag(navn,1,b,1.0);
  goto nextcom;


bagr:
  ffil(nr,navn,type);
  if -,htal(b) or htal(i) then
  begin write(out,<:med konstant=:>); setposition(out,0,0);
        read(in,b);
  end;
  indl(navn); rambag(navn,1,-b,1.0);
  goto nextcom;


getl:
  ffil(nr,navn,type);
  if -,htal(nr1) and -,htal(nr2) or htal(i) then
  begin write(out,<:nr1 nr2= :>);
        setposition(out,0,0); read(in,nr1,nr2);
  end;
  begin array S(1:nr2-nr1+1);
        indl(navn); get(navn,nr1,nr2,S);
        for i:=1 step 1 until nr2-nr1+1 do
        write(out,nl,1,<<ddd>,i+nr1-1,<< ddddd>,S(i));
        setposition(out,0,0);
  end;
  goto nextcom;


gsnit:
  ffil(nr,navn,type); if -,htal(ver) or htal(i) then
  begin write(out,<:ver=:>); setposition(out,0,0);
        read(in,ver);
  end;
  indl(navn); ramgsn(navn,ver,g);
  goto nextcom;


ind:
  if -,htal(nr) or htal(i) then
  begin write(out,<:nr= :>); setposition(out,0,0);
        read(in,nr);
  end;
  ramind(nr);
  goto nextcom;


kopi:
  ffil(nr,navn1,type); gfil(navn2,4);
  indl(navn1); rammul(navn1,navn2,2,1.0,1,max);
  goto nextcom;


kvot:
  ramsub(2);
  goto nextcom;


log:
  ffil(nr,navn1,type); gfil(navn2,5);
  indl(navn1); rammul(navn1,navn2,3,1.0,1,max);
  goto nextcom;


maks:
  ffil(nr,navn,type);
  if -,htal(s1) and -,htal(s2) or htal(i) then
  begin write(out,<:s1 s2 (cm-1)= :>); 
        setposition(out,0,0); read(in,s1,s2);
  end;
  indl(navn); rammax(navn,s1,s2,max,umax);
  goto nextcom;


minl:
  ffil(nr,navn,type);
  if -,htal(s1) and -,htal(s2) or htal(i) then
  begin write(out,<:s1 s2 (cm-1)= :>);
        setposition(out,0,0); read(in,s1,s2);
  end;
  indl(navn); rammin(navn,s1,s2,min,umin);
  goto nextcom;


mult:
  ffil(nr,navn,type);
  if -,retal(fak) or htal(i) then
  begin write(out,<:med faktor=:>); setposition(out,0,0);
        read(in,fak);
  end;
  indl(navn); rambag(navn,2,1,fak);
  goto nextcom;


nor:
  ffil(nr,navn,type);
  if -,htal(s1) and -,htal(s2) or htal(i) then
  begin write(out,<:s1 s2 (cm-)= :>);
        setposition(out,0,0); read(in,s1,s2);
  end;
  indl(navn); rammax(navn,s1,s2,max,umax);
  rambag(navn,5,1,max);
  goto nextcom;


npf:
  begin integer array t(1:10);
        lookuptail(<:ramnpf:>,t);
        write(out,nl,1,<:alfa= :>,<< d.ddd>,t(9)/1000);
        setposition(out,0,0);
        write(out,nl,1,<:alfa= :>); setposition(out,0,0);
        readchar(in,i); if i<>10 then
        begin repeatchar(in); read(in,t(9));
              t(9):=t(9)*1000;
        end;
        write(out,nl,1,<:npf = :>,<< d.ddd>,t(10)/10);
        setposition(out,0,0);
        write(out,nl,1,<:npf = :>); setposition(out,0,0);
        readchar(in,i); if i<>10 then
        begin repeatchar(in); read(in,t(10));
              t(10):=t(10)*10;
        end;
  end;
  goto nextcom;


ny4:
  ffil(nr,navn,type);
  indl(navn); rambag(navn,6,1,1.0); rammax(navn,0,0,max,umax);
  goto nextcom;


opl:
  ffil(nr,navn,type); indl(navn);
  open(z,4,navn,0); inrec(z,128);
  for i:=1 step 1 until 12 do text(i):=z(99+i);
  write(out,nl,2,string inc(text),nl,1);
  write(out,
  nl,1,<:antal segmenter=:>,<< ddd ddd ddd>,z(1),
  nl,1,<:antal punkter  =:>,<< ddd ddd ddd>,z(2),<: (:>,
                            << ddd ddd>,z(3),<:):>,
  nl,1,<:minimum        =:>,<< ddd ddd ddd>,z(4),
  nl,1,<:minimum freq.  =:>,<< ddd ddd ddd>,z(5)/10+z(11),<: cm-1:>,
  nl,1,<:maximum        =:>,<< ddd ddd ddd>,z(6),
  nl,1,<:maximum freq.  =:>,<< ddd ddd ddd>,z(7)/10+z(11),<: cm-1:>,
  nl,1,<:min. tælletal  =:>,<< ddd ddd ddd>,z(8),
  nl,1,<:max. tælletal  =:>,<< ddd ddd ddd>,z(9),
  nl,1,<:minimal freq.  =:>,<< ddd ddd ddd>,z(11),<: cm-1:>,
  nl,1,<:maximal freq.  =:>,<< ddd ddd ddd>,z(12),<: cm-1:>,nl,1);
  setposition(out,0,0); close(z,true);
  goto nextcom;


rn1:
  ffil(nr,navn1,type); gfil(navn2,2);
  if -,htal(norm) and -,retal(T) or htal(i) then
  begin write(out,<:norm T(K)=:>); setposition(out,0,0);
        read(in,norm,T);
  end;
  indl(navn1); rammul(navn1,navn2,1,T,1,max);
  if norm>0 then rambag(navn2,5,1,max);
  goto nextcom;


rn2:
  ffil(nr,navn,type); indl(navn);
  ramng(nr,navn1,3); ramng(nr,navn2,4);
  gfil(navn1,0); gfil(navn2,0);
  ramgsn(navn,3,g);
  rammul(navn,navn1,1,298.0,1,max);
  rambag(navn1,5,1,max);
  ramfsm(navn1,navn2,10,1000);
  rammax(navn2,20,220,max,umax);
  rambag(navn2,5,1,max);
  goto nextcom;


fsmo:
  ffil(nr,navn1,type); gfil(navn2,3);
  if -,htal(I) or htal(i) then
  begin write(out,<:I (cm-1)=:>);
  setposition(out,0,0); read(in,I);
  end;
  indl(navn1); ramfsm(navn1,navn2,I,500);
  rammax(navn2,0,0,max,umax);
  goto nextcom;


pli:
  ffil(nr,navn,type);
  write(out,<:plotter=:>); setposition(out,0,0);
  Y: if readchar(in,m) <> 6 then goto Y;
  m:=m-96;
  open(z,4,navn,0); inrec(z,128);
  write(out,nl,1,<:fre. int.= :>,<< dddd>,z(11),z(12),nl,1);
  close(z,true);
  write(out,<:fmin fmax df dt (cm-1) del= :>); 
  setposition(out,0,0); read(in,fmin,fmax,df,dt,del);
  pl:=m*10+3;
  indl(navn); rampli(navn,pl,fmin,fmax,df,dt,del);
goto nextcom;


plot:
  ffil(nr,navn,type);
  if -,htal(ramme) or htal(i) then
  begin write(out,<:ramme=:>); setposition(out,0,0);
        read(in,ramme);
  end;

  if ramme=0 then
  begin if sel=0 then ramme:=1;
  end;

  if ramme > 0 then
  begin if sel<>0 then plotclose;
        write(out,<:plotter= :>); setposition(out,0,0);
        X: if readchar(in,sel)<>6 then goto X; sel:=sel-96;
        setplotname(case sel of(
        <:tek4006a:>,<:houstona:>,<:tek4006c:>,<:tek4006d:>),
        if sel=4 then 3 else 0);
        if savep=1 then
        begin ramng(nr,navn1,5);
              if lookupentry(navn1)=0 then removeentry(navn1);
              cleararray(tail); tail(1):=50;
              reservesegm(navn1,50); permentry(navn1,15);
              j:=1; saveplot(0,string navn1(increase(j)),0);
        end;
              
        indl(navn);

        if type<6 then
        begin open(z,4,navn,0); inrec(z,128); ymax:=z(6);
              close(z,true);
        end
        else
        ymax:=100;

        write(out,nl,1);
        write(out,<:ord: ymax= :>,<< ddd ddd ddd>,ymax,nl,1);
        write(out,<:     ymax= :>); setposition(out,0,0);
        readchar(in,i); readchar(in,i);
        setposition(out,0,0);
        if i<>10 then
        begin repeatchar(in); read(in,ymax);
        end;
  end;
  ramplo(navn,ramme,fmin,fmax,format,ymax);
  plotend;
  goto nextcom;


plrny:
  ffil(nr,navn,type); indl(navn);
  ramng(nr,navn1,3); ramng(nr,navn2,4);
  gfil(navn1,0); gfil(navn2,0);
  ramgsn(navn,3,g);
  rammul(navn,navn1,1,298.0,1,max);
  rambag(navn1,5,1,max);
  ramfsm(navn1,navn2,10,1000);
  rammax(navn2,20,220,max,umax);
  rambag(navn2,5,1,max);
  rampli(navn2,43,0,400,10,100,5);
  goto nextcom;


pot:
  ffil(nr,navn1,type); gfil(navn2,6);
  if -,htal(norm) and -,htal(m) or htal(i) then
  begin write(out,<:exponent= :>); setposition(out,0,0);
        read(in,m);
  end;
  indl(navn1); rammul(navn1,navn2,5,1.0,m,max);
  if norm>0 then rambag(navn2,5,1,max);
  goto nextcom;


putl:
  ffil(nr,navn,type);
  if -,htal(nr1) and -,htal(nr2) or htal(i) then
  begin write(out,<:nr1 nr2= :>);
        setposition(out,0,0); read(in,nr1,nr2);
  end;
  begin array S(1:nr2-nr1+1);
        indl(navn); get(navn,nr1,nr2,S);
        for i:=1 step 1 until nr2-nr1+1 do 
        begin write(out,<<ddd>,i+nr1-1,<:=:>,<< ddd ddd>,S(i));
              write(out,nl,1,<<ddd>,i+nr1-1,<:=:>);
              setposition(out,0,0); read(in,S(i));
        end;
        put(navn,nr1,nr2,S);
  end;
  goto nextcom;


sap:
  savep:=1;
  goto nextcom;


smo:
  goto nextcom;


sms:
  ffil(nr,navn1,type); gfil(navn2,3);
  if -,htal(I) and -,htal(N) or htal(i) then
  begin write(out,<:I (cm-1) N (antal) = :>); setposition(out,0,0);
        read(in,I,N);
  end;
  indl(navn1); ramfsm(navn1,navn2,I,N);
  rammax(navn2,0,0,max,umax);
  goto nextcom;


sub:
  ramsub(1);
  goto nextcom;


xska:
  write(out,<:fmin fmax=:>,<< dddd>,fmin,fmax,<: cm-1:>);
  setposition(out,0,0);
  goto nextcom;


yska:
  write(out,<:ymax: :>,<< ddd ddd ddd>,ymax);
  write(out,nl,1,<:ymax: :>); setposition(out,0,0);
  readchar(in,i); if i<>10 then
  begin repeatchar(in); read(in,ymax);
  end;
  setposition(out,0,0);
  goto nextcom;


list:
  lis(1):=lis(2):=0;
  repeatchar(in); A:readchar(in,i); if i=32 then goto A;
  repeatchar(in);
  readchar(in,i);
  if i=10 then
L:begin write(out,nl,1,<:
list ana    lister analyse kommandoer
list div    lister diverse kommandoer
list kat    lister katalog kommandoer
list mik    lister mikro   kommandoer:>);
        goto nextcom;
  end
  else repeatchar(in); setposition(out,0,0);
  readstring(in,lis,1); l:=lis(1);
  if l=long <:ana:> then goto L1;
  if l=long <:div:> then goto L2;
  if l=long <:kat:> then goto L3;
  if l=long <:mik:> then goto L4
  else
  goto L;
L1:
  write(out,<:
RAMAN ANALYSE
com  parametre              betydning

add  navn addend            navn+addend
bag  navn konstant          navn-konstant
div  navn divisor           navn:divisor
fsm  navn1 navn2 I          navn2=glat navn1; I: glatteint i cm-1
get  navn nr1 nr2           udlæser navn i tælletal int. nr1 til nr2
gsn  navn ver               gennemsnitsbregning
ind  nr                     konverterer ra<nr> til p<nr>
kvo                         navn=navn1/navn2
kop  navn1 navn2            navn2=navn1
log  navn1 navn2            navn2=log(navn1)
max  navn s1 s2             finder maximum mellem s1 og s2 cm-1
min  navn s1 s2             finder minimum mellem s1 og s2 cm-1
mul  navn fak               navn*fak
nor  navn s1 s2             normerer navn fra s1 til s2 (cm-1)
npf                         udlæser (ændre) npf og alfa
ny4  navn                   korrigerer for v**4
opl  navn                   udskriver oplysninger om navn
pli  navn                   plotter navn
plo  navn ramme             plotter navn med rammespecifikation
plr  navn                   plotter smo rny(navn)
pot  navn1 navn2 norm n     navn1=(navn2)**n
put  navn nr1 nr2           ændre navn i tælletalint. nr1 til nr2
rn1  navn1 navn2 n T        navn2=rny(navn1) n=norm T=grad K
rny  navn=p<nr>             s<nr>=smo rny(navn)
sub                         navn=navn1-fak*navn2
xks                         udskriver frekvensint. på sidste plot
ysk                         udskriver (ændre) y-skala på sidste plot
:>);
  goto nextcom;
L2:
  write(out,<:

RAMAN DIVERSE   kommandoliste

com                         betydning

end (slut)                  afslutter raman-programmet
list                        udskriver kommandoliste
loo nr1 nr2 type            finder x<nr1> til x<nr2>
perm nr1 nr2 type           permanenter fra x<nr1> til x<nr2>
vent                        venter på att:>,nl,1);
  goto nextcom;
L3:
write(out,<:

RAMAN KATALOG
com  parametre              betydning
cle                         sletter indgange
kat  nr1 nr2                udskriver liste over kataloget
katr nr                     retter i kataloget
kats nr1 nr2                udskriver liste over kataloget på printer
loo  nr1 nr2 type           finder indgange x<nr1> til x<nr2>
rnr                         udskriver og retter ramnr og snr
:>);
  goto nextcom;
L4:
  write(out,<:
RAMAN MIKRO
com   parametre             betydning

cdraw
cdump fmin int              dumper under optagelsen
draw
dump
hent
load                        overfører program til mikro
mikro                       udskriver (evt. ændre) navnet på mikro
progr                       udskriver (evt. ændre) navnet på mikroprg.
:>);
  goto nextcom;


perm:
  if -,htal(n1) and -,htal(n2) and
     -,htal(type) and -,htal(key) or htal(i) then
  begin write(out,<:nr1 nr2 type key= :>); setposition(out,0,0);
        read(in,n1,n2,type,key);
  end;
  for j:=n1 step 1 until n2 do
  begin ramng(j,navn,type);
        if permentry(navn,key)=0 then
        write(out,nl,1,navn,<: perm.:>,<<dd>,key);
  end;
  goto nextcom;


test:
  ffil(nr,navn1,type);
  write(out,nl,1,<:navn1 nr type=:>,navn1,<< ddd>,nr,type,nl,1);
  setposition(out,0,0);
  gfil(navn2,2);
  write(out,nl,1,<:navn2 nr type=:>,navn2,<< ddd>,nr,type);
  setposition(out,0,0);
  ramnc(nr,navn1,type);
  write(out,nl,1,<:navn1 nr type=:>,navn1,nr,type);
  indl(navn1);
  goto nextcom;


vent:
  waitanswer(att,a);
  goto nextcom;

slut: if sel<>0 then plotclose; end
▶EOF◀