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

⟦a5579678b⟧ TextFile

    Length: 9216 (0x2400)
    Types: TextFile
    Names: »htudskriv   «

Derivation

└─⟦cde9d517b⟧ Bits:30007477 RC8000 Backup tape fra HT's bus-radio system
    └─⟦6a563b143⟧ 
        └─ ⟦this⟧ »htudskriv   « 

TextFile

htudskriv.
:4: udskriv: erklæringer
\f

message procedure out_xxx_bits side 1 - 810406/cl;

procedure outboolbits(zud,b);
  value                   b;
  zone                zud;
  boolean                 b;
begin
  integer i;

  for i:= -11 step 1 until 0 do
  outchar(zud,if b shift i then '1' else '.');
end;

procedure outintbits(zud,j);
  value                  j;
  zone               zud;
  integer                j;
begin
  integer i;

  for i:= -23 step 1 until 0 do
  begin
    outchar(zud,if j shift i extract 1 = 1 then '1' else '.');
    if i<>0 and abs(i) mod 6 = 0 then outchar(zud,'sp');
  end;
end;
\f

message procedure skriv_id side 1 - 820301/cl;

procedure skriv_id(z,id,lgd);
  value              id,lgd;
  integer            id,lgd;
  zone             z;
begin
  integer type,p,li,lø,bo;

  type:= id shift (-22);
  case type+1 of
  begin
    <* 1: bus *>
    begin
      p:= write(z,<<d>,id extract 14);
      if id shift (-14) <> 0 then
        p:= p + write(z,".",1,string garagenavn(id shift (-14)));
    end;

    <* 2: linie/løb *>
    begin
      li:= id shift (-12) extract 10;
      bo:= id shift (-7) extract 5;
      if bo<>0 then bo:= bo + 'A' - 1;
      lø:= id extract 7;
      p:= write(z,<<d>,li,false add bo,(bo<>0) extract 1,"/",1,lø);
    end;

    <* 3: gruppe *>
    begin
      if id shift (-21) = 4 <* linie-gruppe *> then
      begin
        li:= id shift (-5) extract 10;
        bo:= id extract 5;
        if bo<>0 then bo:= bo + 'A' - 1;
        p:= write(z,<<d>,li,false add bo,(bo<>0) extract 1);
      end
      else <* special-gruppe *>
        p:= write(z,"G",1,<<d>,id extract 7);
    end;

    <* 4: telefon *>
    begin
      bo:= id shift (-20) extract 2;
      li:= id extract 20;
      case bo+1 of
      begin
        p:= write(z,string kanalnavn(li));
        p:= write(z,<:K*:>);
        p:= write(z,<:OMR :>,string områdenavn(li));
        p:= write(z,<:OMR*:>);
      end;
    end;
  end case;
  write(z,"sp",lgd-p);
end skriv_id;
<*+3*>
\f

message skriv_new_sem side 1 - 810520/cl;

procedure skriv_new_sem(z,type,ref,navn);
  value                   type,ref;
  zone                  z;
  integer                 type,ref;
  string                           navn;
<* skriver en identifikation af en semafor 'ref' i zonen z.

    type:       1=binær sem
                2=simpel sem
                3=kædet sem

    ref:        semaforreference

    navn:       semafornavn, max 18 tegn
*>
begin
  disable if testbit29 then
    write(z,"nl",1,"sp",26*(type-1),case type of(<:bs:>,<:ss:>,<:cs:>),
      true,5,<<zddd>,ref,true,19,navn);
end;
\f

message procedure skriv_newactivity  side 1 - 810520/hko/cl;

<**>  procedure skriv_newactivity(zud,actno,cause);
<**>    value                         actno,cause;
<**>    zone                      zud;
<**>    integer                       actno,cause;
<**>    begin
<*+2*>
<**>      if testbit28 then
<**>      begin integer array field cor;
<**>        cor:= coroutine(actno);
<**>        write(zud,<:  coroutine::>,<< dd>,actno,<:  ident::>,
<**>          << zdd>,d.cor.coruident//1000);
<**>      end;
<**>      if -, testbit23 then goto skriv_newact_slut;
<*-2*>
<**>      write(zud,"nl",1,<:newactivity(:>,<<d>,actno,
<**>                <:) cause=:>,<<-d>,cause);
<**>      if cause<1 then write(zud,<: !!!:>);
<**>      skriv_coru(zud,actno);
<**> skriv_newact_slut:
<**>    end skriv_newactivity;
<*-3*>
<*+99*>
\f

message procedure skriv_activity  side 1 - 810313/hko;

<**> procedure skriv_activity(zud,actno);
<**>    value                     actno;
<**>    zone                  zud;
<**>    integer                     actno;
<**>    begin
<**>      integer i;
<**>      integer array iact(1:12);
<**>
<**>      i:=system(12,actno,iact);
<**>      write(zud,"nl",1,<:  activity(:>,<<d>,actno,<:) af :>,i,"sp",1,
<**>                if i=0 then <:neutral:> else (case sign(iact(3))+2 of
<**>                (<:disable:>,<:monitor:>,<:activity:>)),<: mode:>);
<**>      if i>0 and actno>0 and actno<=i then
<**>      begin
<**>        write(zud,"nl",1,"sp",4,<:tilstand= :>,case iact(8)+1 of
<**>                  (<:tom:>,<:passivate:>,
<**>                   <:implicit passivate:>,<:activate:>));
<**>        if iact(1)<>0 then
<**>         write(zud,<: ventende på message:>,iact(1));
<**>        if iact(7)>0 then
<**>          write(zud,"nl",1,"sp",4,<:virtuel stak::>,iact(7),"sp",2,
<**>                    <:hovedlager stak benyttes af activity(:>,<<d>,
<**>                    iact(2));
<**>        write(zud,"nl",1,"sp",4,<:stak(top,bund,sidst,csr,cza)=:>,
<**>                  iact(4),iact(5),iact(6),iact(10),iact(11));
<**>        if iact(9)<> 1 shift 22 then
<**>           write(zud,"nl",1,"sp",4,<:'head of zonechain'=:>,iact(9));
<**>         write(zud,"nl",1,"sp",4,<:'trap chain'=:>,iact(12));
<**>       end;
<**>     end skriv_activity
<*-99*>
<*+98*>
\f

message procedure identificer side 1 - 810520/cl;

procedure identificer(z);
  zone                z;
begin
disable write(z,<:coroutine::>,<< dd>,curr_coruno,
          <:  ident::>,<< zdd >,curr_coruid);
end;
\f

message procedure skriv_coru  side 1 - 810317/cl;

<**> procedure skriv_coru(zud,cor_no);
<**>   value                  cor_no;
<**>   zone               zud;
<**>   integer                cor_no;
<**> begin
<**>   integer i;
<**>   integer array field cor;
<**>
<**>
<**>   write(zud,"nl",1,<:  coroutine: :>,<<d>,cor_no);
<**>
<**>   cor:= coroutine(cor_no);
<**>   if cor = -1 then
<**>     write(zud,<: eksisterer ikke !!!:>)
<**>   else
<**>   begin
<**>     write(zud,<:;      ident = :>,<<zdd>,d.cor.coruident//1000,
<**>       <:      refbyte: :>,<<d>,cor,"nl",1,
<**>       <:    prev:             :>,<<dddd>,d.cor.prev,"nl",1,
<**>       <:    next:             :>,d.cor.next,"nl",1,
<**>       <:    timerchain.prev:  :>,d.cor(corutimerchain//2-1),"nl",1,
<**>       <:    timerchain.next:  :>,d.cor.corutimerchain,"nl",1,
<**>       <:    opchain.prev:     :>,d.cor(coruop//2-1),"nl",1,
<**>       <:    opchain.next:     :>,d.cor.coruop,"nl",1,
<**>       <:    timer:            :>,d.cor.corutimer,"nl",1,
<**>       <:    priority:         :>,d.cor.corupriority,"nl",1,
<**>       <:    typeset:          :>);
<**>     for i:= -11 step 1 until 0 do
<**>       write(zud,if d.cor.corutypeset shift i then <:1:> else <:.:>);
<**>     write(zud,"nl",1,<:    testmask:         :>);
<**>     for i:= -11 step 1 until 0 do
<**>       write(zud,if d.cor.corutestmask shift i then <:1:> else <:.:>);
<*+99*>
<**>     skriv_activity(zud,cor_no);
<*-99*>
<**>   end;
<**> end skriv_coru;
<*-98*>
<*+98*>
\f

message procedure skriv_op side 1 - 810409/cl;

<**> procedure skriv_op(zud,opref);
<**>   value                opref;
<**>   integer              opref;
<**>   zone             zud;
<**> begin
<**>   integer array field op;
<**>   real array field raf;
<**>   integer lgd,i;
<**>   real t;
<**>
<**>   raf:= data;
<**>   op:= opref;
<**>   write(zud,"nl",1,<:op:>,<<d>,opref,<:::>);
<**>   if opref<first_op ! optop<=opref then
<**>   begin
<**>     write(zud,<:  !!! illegal reference !!!:>,"nl",1);
<**>     goto slut_skriv_op;
<**>   end;
<**>
<**>   lgd:= d.op.opsize;
<**>   write(zud,"nl",1,<<d>,
<**>     <:  opsize     :>,d.op.opsize,"nl",1,
<**>     <:  optype     :>);
<**>   for i:= -11 step 1 until 0 do
<**>     write(zud,if d.op.optype shift i then <:1:> else <:.:>);
<**>   write(zud,"nl",1,<<d>,
<**>     <:  prev       :>,d.op.prev,"nl",1,
<**>     <:  next       :>,d.op.next);
<**>   if lgd=0 then goto slut_skriv_op;
<**>   write(zud,"nl",1,<<d>,
<**>     <:  kilde      :>,d.op.kilde extract 10,"nl",1,
<**>     <:  tid        :>,<<zddddd>,systime(4,d.op.tid,t),<:.:>,t,"nl",1,<<d>,
<**>     <:  retur-sem  :>,if d.op.retur<>0 then <:cs:> else <:--:>,<<b>,
                           d.op.retur,"nl",1,
<**>     <:  opkode     :>,<<b>,d.op.opkode shift (-12),"sp",1,<<d>,
<**>                       d.op.opkode extract 12,"nl",1,
<**>     <:  resultat   :>,d.op.resultat,"nl",2,
<**>     <:data::>);
<**>   skriv_hele(zud,d.op.raf,lgd-data,1278);
<**>slut_skriv_op:
<**> end skriv_op;
<*-98*>
\f

message procedure corutable side 1 - 810406/cl;

procedure corutable(zud);
  zone              zud;
begin
  integer i;
  integer array field cor;

  write(zud,"ff",1,<:***** coroutines *****:>,"nl",2,
    <:no  id  ref   chain    timerch   opchain  timer pr:>,
    <:    typeset    testmask:>,"nl",2);
  for i:= 1 step 1 until maxcoru do
  begin
    cor:= coroutine(i);
    write(zud,<<zd>,i,<< zdd>,d.cor.coruident//1000,<< dddd>,cor,
      d.cor.prev,d.cor.next,d.cor(corutimerchain//2-1),
      d.cor.corutimerchain,d.cor(coruop//2-1),d.cor.coruop,<< ddddd>,
      d.cor.corutimer,<< dd>,d.cor.corupriority);
    outchar(zud,'sp');
    outboolbits(zud,d.cor.corutypeset);
    outchar(zud,'sp');
    outboolbits(zud,d.cor.corutestmask);
    outchar(zud,'nl');
  end;
end;
▶EOF◀