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

⟦3a71ae2bd⟧ TextFile

    Length: 41472 (0xa200)
    Types: TextFile
    Names: »do32tx      «

Derivation

└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code
    └─⟦75ff9bef3⟧ 
        └─⟦this⟧ »do32tx      « 

TextFile

; do text 2 af 2



; procedure assign word(word,sorry);
; procedure assign variables(base);
; procedure assign array(base);
;       call:           exit:
; w0                    destroyed
; w1                    destroyed
; w2    base            word
; w3    link            destroyed;
b.j31                   ; begin
w.d21:  rl.w0 e25.      ; assign word:
        sn w0 8         ;   if next delim=8 then
        jl    x3+0      ;     goto sorry;
        al.w2 e13.      ;   base:= addr(word);
        al w3 x3+2      ;   link:= link+2;
        am    -2        ;   step:= -2
  d22:  am    -2        ; assign variable: or 0
  d23:  al w0 2         ; assign array:    or 2;
        rs.w3 e31.      ;
        al w3 0         ;   xy index:= 0;
        ds.w0 e16.      ;
        se w0 2         ;   operator:=
        am    2         ;       if step=2 then 34
        al w3 34        ;       else 36;
        rs.w3 e12.      ;   old operator:= operator;
        rs.w3 e18.      ;
        rl w1 x2+0      ;   word:= word(base);
        ds.w2 e14.      ;
        sn w0 -2        ;   if step=-2 then
        jl.   j1.       ;     goto next;
  j0:   rl.w0 e25.      ; test next delim:
        se w0 8         ;   if next delim<>8 then
        jl.   j31.      ;     goto exit;
  j1:                   ; next:
        jl.w3 d15.      ;   next param(
        jl.   a4.       ;       terminate,
        jl.   j2.       ;       integer,
        jl.   j23.      ;       name,
        jl.   j23.      ;       name,
                        ;       integer);
  j2:                   ; integer:
                        ;   value:= param;
        dl.w0 e13.      ; operation:
  j3:   jl.   x3+2      ;   goto case operator of(
        ac w2 x2+0      ;     0: increase,
        jl.   j5.       ;     2: decrease,
        ac w2 x2+0      ;     4: right shift,
        jl.   j6.       ;     6: left shift,
        jl.   j7.       ;     8: or,
        jl.   j8.       ;    10: and,
        jl.   j10.      ;    12: equal,
        jl.   j12.      ;    14: not equal,
        rx w0 4         ;    16: greater,
        jl.   j11.      ;    18: less,
        rx w0 4         ;    20: not greater,
        jl.   j9.       ;    22: not less,
        jl.   j15.      ;    24: multiply,
        jl.   j16.      ;    26: divide,
        jl.   j17.      ;    28: modulo,
        jl.   j18.      ;    30: power,
        jl.   j4.       ;    32: index value,
        jl.   j21.      ;    34: save value,
        jl.   j20.      ;    36: store word);
  j4:   rl.w0 e13.      ; index value:
        wa.w2 e17.
        rl w2 x2+0      ;   value:= word(value index+value);
        rl.w3 e18.      ;   operator:= old operator;
        jl.   j3.       ;   goto operation;
                        ; increase:
                        ;   value:= -value;
  j5:                   ; decrease:
        ws w0 4         ;   word:= word-value;
        jl.   j22.      ;   goto save word;
                        ; right shift:
                        ;   value:= -value;
  j6:                   ; left shift:
        ls w0 x2+0      ;   word:= word shift value;
        jl.   j22.      ;   goto save word;
  j7:                   ; or:
        lo w0 4         ;   word:= word or value;
        jl.   j22.      ;   goto save word;
  j8:                   ; and:
        la w0 4         ;   word:= word and value;
        jl.   j22.      ;   goto save word;
                        ; not greater:
                        ;   exchange(word,value);
  j9:                   ; not less:
        sl w0 x2+0      ;   if word>=value then
        al w0 x2+0      ;     word:= value;
  j10:                  ; equal:
        se w0 x2+0      ;   if word<>value then
        jl.   j14.      ;     goto set false;
        jl.   j13.      ;   goto set true;
                        ; greater:
                        ;   exchange(word,value);
  j11:                  ; less:
        sl w0 x2+0      ;   if word>=value then
        al w0 x2+0      ;     word:= value;
  j12:                  ; not equal:
        se w0 x2+0      ;   if word<>value then
  j13:                  ; set true:
        am    -1        ;     word:= -1
                        ;   else
  j14:                  ; set false:
        al w0 0         ;     word:= 0;
        jl.   j22.      ;   goto save word;
  j15:                  ; multiply:
        wm w0 4         ;   word:= word*value;
        jl.   j22.      ;   goto save word;
  j16:  al w3 0         ; divide:
        wd w0 4         ;   word:= word/value;
        jl.   j22.      ;   goto save word;
  j17:  al w3 0         ; modulo:
        wd w0 4         ;   word:= word mod value;
        al w0 x3+0      ;   goto save word;
        jl.   j22.
  j18:                  ; power:
        sh w2 -1        ;   if value<=-1 then
        al w0 0         ;     word:= 0;
        sh w2 0         ;   if value<=0 then
        al w0 1         ;     word:= 1;
        rl w1 0         ;   factor:= word;
  j19:                  ; test more:
        sh w2 1         ;   if value<=1 then
        jl.   j22.      ;     goto save word;
        wm w0 2         ;   word:= word*factor;
        al w2 x2-1      ;   value:= value-1;
        jl.   j19.      ;   goto test more;
  j20:  dl.w1 e14.      ; store word:
        wa.w1 e15.
        rs w0 x1+0      ;   word(base+xy index):= word;
        rl.w1 e15.
        wa.w1 e16.      ;   index:= xy index+step;
        sl.w1(e15.)     ;   if index>=xy index then
        rs.w1 e15.      ;     xy index:= index;
  j21:                  ; save value:
        al w0 x2+0      ;   word:= value;
  j22:  al w3 36        ; save word:
        ds.w0 e13.      ;   operator:= 36;
        jl.   j0.       ;   goto test next delim;
  j23:                  ; name:
        jl.w3 d10.      ;   lookup word(index,
        jl.   j25.      ;       point wz,
        jl.   j26.      ;       point xy,
        jl.   j27.      ;       set operator,
        jl.   j24.      ;       special,
        jl.   j28.      ;       text);
  j24:                  ; special:
        am    e10-e0    ;   index:= index+buf addr-w0 addr;
  j25:                  ; point wz:
        rl.w2 x1+e0.    ;   value:= word(w0 addr+index);
        jl.   j2.       ;   goto operation;
  j26:  dl.w3 e14.      ; point xy:
        wa.w3 e15.
        rs w2 x3+0      ;   word(base+xy index):= word;
        rl.w1 x1+e0.
        rs.w1 e17.      ;   value index:= word(w0 addr+index);
        al w1 32        ;   index:= 32;
  j27:                  ; set operator:
        rx.w1 e12.      ;   old operator:= operator;
        rs.w1 e18.      ;   operator:= index;
        rl.w0 e12.      ;   if old operator=36
        se w1 36        ;       or operator=32
        sn w0 32        ;       and old operator<>32 then
        sn w1 32        ;     goto test next delim;
        jl.   a1.       ;   goto list;
        jl.   j0.
  j28:  rl.w0 e12.      ; text:
        sh w0 32        ;   if operator<=32 then
        jl.   a1.       ;     goto list;
        rl.w0 e16.
        sn w0 2         ;   if step=2 then
        jl.   j29.      ;     goto store name;
        rl w2 x2+0      ;   value:= word(param);
        sn w0 0         ;   if step=0 then
        jl.   j2.       ;     goto operation;
        rl.w3 e31.      ;
        jl    x3-2      ;   goto sorry;
  j29:  dl.w1 e14.      ; store name:
        wa.w1 e15.
        rl.w3 e12.      ;   if operator=36 then
        se w3 36        ;     begin
        jl.   j30.      ;       word(base+xy index):= word;
        rs w0 x1+0      ;       xy index:= xy index+2
        am    2         ;     end;
  j30:  al w3 8
        wa.w3 e15.
        rs.w3 e15.      ;   xy index:= xy index+8;
        wa.w3 e14.      ;   addr:= xy index+base;
        dl w1 x2+2
        ds w1 x3-6      ;   words(addr-8:addr-2):=
        dl w1 x2+6      ;       words(param:param+6);
        ds w1 x3-2
        al w1 34
        rl w2 x3+0      ;   operator:= 34;
        ds.w2 e13.      ;   word:= word(addr);
        jl.   j0.       ;   goto test next delim;
  j31:  dl.w3 e14.      ; exit:
        wa.w3 e15.
        rs w2 x3+0      ;   word(base+xy index):= word;
        jl.  (e31.)     ;
i.e.                    ; end;

w.a0:   am    -2000     ; start:
        al.w3 h21.+2000 ;
        rs.w3 g61.      ;
        am    d15-d16   ;  next param or
  a1:   jl.w3 d16.      ; list: list and next param(
        jl.   a4.       ;       terminate,
        jl.   a7.       ;       array,
        jl.   a2.       ;       space name,
        jl.   a1.       ;       list,
        jl.   a1.       ;       list);
  a2:                   ; space name:
        jl.w3 d10.      ;   lookup word(index,
        jl.   a5.       ;       space wz,
        jl.   a6.       ;       space xy,
        jl.   a1.       ;       list,
        jl.   a1.       ;       list,
                        ;       action);
                        ; action:
        jl.w3 d13.      ;   lookup action(index,
        jl.   a1.       ;       list);
        jl    x1+2      ;   goto index+2;
  a5:   al.w2 x1+e0.    ; space wz:
        jl.w3 d22.      ;   assign variable(w0 addr+index);
        jl.   a0.       ;   goto start;
  a6:   al w3 f1        ; space xy:
        wm w3 2         ;   addr:= index*x words
        al.w2 x3+e4.    ;       +x0 addr;
        sh w1 6         ;   if index<=6 then
        rs.w2 x1+e0.    ;     word(w0 addr+index):= addr;
        sl w1 8         ;   if index>=8 then
        am    -10       ;     index:= index-10;
        rl.w2 x1+e0.    ;   param:= word(w0 addr+index);
  a7:                   ; array:
        jl.w3 d23.      ;   assign array(param);
        jl.   a0.       ;   goto start;

  a26:  am    c6-c7     ; niveau error: text:= <:niveau:>
  a27:  am    c7-c8     ; no core error:    or <:no core:>
  a28:  am    c8-c9     ; core addr error:  or <:core addr:>
  a29:  al.w2 c9.       ; format error:     or <:format:>;
        am      -2000
        jl.w3 g40.+2000 ;   error(text addr);
        jl.w3 f11.      ;   outend(10);
        am    2         ;   ok bit:= 1;
                        ;   goto terminate;
  a3:   al w0 -1        ; after interrupt:
        am    g3-f10
        rs.w0 f10.      ;   ok bit:= -1;
  a4:   rl.w0 e37.      ; terminate:
        am    h10+h76-h55-200
        rs.w0 h55.+200  ;   restore(fp interrupt instruction);
        am    -2000     ;
        al.w1 h19.+2000 ;
        se.w1(g60.)     ; if word(g60)<>h19 then
        jl.   12        ;   goto save variables;
        al w2 25        ; w2:=<em>;
        am    -2000     ;
        jl.w3 h34.+2000 ; close up `write` zone;
        am    -2000     ;
        jl.w3 h79.+2000 ; terminate `write` zone;
        jl.w3 d18.      ;   save variables;
        am    -2000     ;
        jl.   g26.+2000 ;   end program(ok bit);

b.j0
w.a30:  al w0 0         ; clear:
        rl.w1 e9.
        al.w3 a0.
  j0:   rs w0 x1+0      ;   for i:= save addr step 2
        al w1 x1+2      ;       until cur com-2 do
        sl.w1(e11.)     ;     word(i):= 0;
        jl.   d19.      ;   restore variables;
        jl.   j0.       ;   goto start;
i.e.

b.j22                   ; list 2:
w.j0:   al w0 -1        ; list:
        rs.w0 e20.      ;   written:= -1;
        al w0 0         ;
        rx.w0 e27.      ;   if w or z<>0 then
        se w0 0         ;     outend(10);
        jl.w3 f11.      ;   w or z:= 0;
        jl.   j1.       ;   goto list 1;
a31:    am      -2000
        rl.w0 g60.+2000 ; write:
        am      -2000
        rs.w0 g61.+2000 ;
        al w0 -1        ;
        rs.w0 e20.      ;   written:= -1;
        al w0 0
        rs.w0 e27.      ;   w or z:= 0;
        rl.w0 e3.
        rs.w0 e0.-2     ;   w3 copy:= word(w3 addr);
        rl.w0 e3.+10    ;   z3 copy:= word(z3 addr);
        rs.w0 e0.+8
        am    d15-d16   ;   next param or
  j1:   jl.w3 d16.      ; list 1: list and next param(
        jl.   a4.       ;       terminate,
        jl.   j2.       ;       space integer,
        jl.   j3.       ;       space name,
        jl.   j0.       ;       list,
        jl.   j0.       ;       list);
  j2:                   ; space integer:
        al.w0 c7.+2
        rs.w0 e17.      ;   text addr:= addr(<:core:>);
        am    -2000     ;
        rl.w1 g16.+2000 ;   addr:= param;
        jl.   j7.       ;   goto set standard;
  j3:                   ; space name:
        jl.w3 d10.      ;   lookup word(index,
        jl.   j4.       ;       write wz,
        jl.   j5.       ;       write xy,
        jl.   j0.       ;       list,
        jl.   j6.       ;       write special,
                        ;       output);
                        ; output:
        jl.w3 d12.      ;   lookup output(index,
        jl.   j0.       ;       list);
        jl    x1+2      ;   goto index+2;
  j4:                   ; write wz:
        al.w1 x1+e0.    ;   addr:= w0 addr+index;
        al w0 -1
        rs.w0 e27.      ;   w or z:= -1;
        jl.   j7.       ;   goto set standard;
  j5:                   ; write xy:
        am    e0-e10    ;   addr:= word(w0 addr+index);
                        ;   goto set standard;
  j6:                   ; write special:
        rl.w1 x1+e10.   ;   addr:= case index of(buf addr,
                        ;       cur com, fp base, h names);
  j7:                   ; set standard:
        al w2 x1+2      ;   top:= addr+2;
        al.w3 b55.      ;   index:= word format index;
  j8:                   ; set false:
        rs.w1 e12.      ;   write base:= addr;
        rs.w1 e15.      ;   next addr:= write addr:= addr;
        ds.w2 e14.      ;   write top:= top;
        rs.w3 e22.      ;   format index:= index;
        jl.w3 f11.      ;   outend(10);
        rl.w0 e17.
        jl.w3 f13.      ;   outtext(text addr);
        rl.w0 e27.      ;   if w or z<>0 then
        sn w0 0         ;     begin
        jl.   j9.       ;       outtext(<: =:>);
        al.w0 c3.       ;       written:= 0;
        jl.w3 f13.      ;       goto next
        jl.   j10.      ;     end;
  j9:   jl.w3 f15.      ;   outchar(46);
        rl.w0 e12.
        jl.w2 f12.      ;   outinteger(<<d>,write base);
        jl.w3 f11.      ;   outend(10);
  j10:  am    1         ;   written:= 0;
                        ;   goto next;
  j11:  al w0 -1        ; set true:
        rs.w0 e20.      ;   written:= -1;
  j12:                  ; next:
        jl.w3 d15.      ;   next param(
        jl.   j20.      ;       term,
        jl.   j18.      ;       space i,
        jl.   j19.      ;       space n,
        jl.   j14.      ;       format,
                        ;       bytes);
  j13:  rl.w3 e27.      ; bytes:
        se w3 0         ;   if w or z<>0 then
        jl.   j0.       ;     goto list 2;
        wa.w2 e13.
        rl.w3 e13.      ;   write top:= write addr+param;
        ds.w3 e15.      ;   next addr:= write addr;
        jl.w3 d17.      ;   write item;
        jl.   j11.      ;   goto set true;
  j14:                  ; format:
        jl.w3 d11.      ;   lookup format(index,
        jl.   j15.      ;       variable);
        rs.w1 e22.      ;   format index:= index;
        sh.w1 d6.       ;   if index<=format index 63 then
        jl.   j12.      ;     goto next;
        al w1 x1+2      ;   index:= index+2;
        rs.w1 e22.      ;   format index:= index;
        bl w0 x1+0
        wa.w0 e13.      ;   write addr:=write addr
        rs.w0 e13.      ;         +byte(index);
        rs.w0 e15.      ;   next addr:=write addr;
        ba w0 x1+1      ;   write top:= next addr
        rs.w0 e14.      ;       +byte(index+1);
        jl.   j12.      ;   goto next;
  j15:                  ; variable:
        jl.w3 d10.      ;   lookup word(index,
        jl.   j16.      ;       wz value,
        jl.   j17.      ;       xy indexed,
        jl.   j0.       ;       list 2,
        jl.   j0.       ;       list 2,
        jl.   j0.       ;       list 2);
  j16:                  ; wz value:
        rl.w2 x1+e0.    ;   param:= word(w0 addr+index);
        jl.   j13.      ;   goto bytes;
  j17:                  ; xy indexed:
        rl.w1 x1+e0.    ;   write index:= word(w0 addr+index);
        rs.w1 e28.
        jl.w3 d15.      ;   next param(
        jl.   j21.      ;       list last,
        jl.   j21.      ;       list last,
        jl.   j21.      ;       list last,
        jl.   j0.       ;       list 2,
                        ;       index);
                        ; index:
        wa.w2 e28.      ;   param:= write index+param;
        rl w2 x2+0      ;   param:= word(param);
        jl.   j13.      ;   goto bytes;
  j21:  al w0 -10       ; list last:
        wa.w0(e38.)
        rs.w0(e38.)     ;   param addr:= param addr-10;
        jl.   j0.       ;   goto list 2;
  j18:  am    j2-j3     ; space i: return:= space integer
  j19:  am    j3-a4     ; space n:       or space name
  j20:  am    a4-a0     ; term:          or terminate
  i0:   al.w3 a0.       ; end:           or start;
        rx.w3 e20.
        sn w3 0         ;   if written=0 then
        jl.w3 d17.      ;     write item;
        al w2 0
        rs.w2 e27.      ;   w or z:= 0;
        am     -2000    ;
        rl.w1 g61.+2000 ;   w1:=output zone;
        rl. w3 e20.     ;   e3:=return;
        se. w3 a0.      ;   if not end
        jl     x3       ;   then goto return
        am     -2000    ;   else
        jl.    h33.+2000;   outend;
  i1:   am   (116)      ; bittable:
        dl w2 -6        ;   top:= top bittable;
        rx w2 2         ;   addr:= start bittable;
        al.w3 b61.      ;   index:= binary format index;
        jl.   j8.       ;   goto set false;
i.e.

b.j1
w.a32:  rl w3 x3+0      ; monitor procedure:
        al w3 x3-1<11
        hs.w3 j0.       ;   function:= word(link);
        dl.w1 e1.
        dl.w3 e3.       ;   restore(w0,w1,w2,w3);
  j0=k+1
        jd    1<11;+func;   monitor call(function);
  j1:   ds.w1 e1.
        ds.w3 e3.       ;   save(w0,w1,w2,w3);
        jl.   a0.       ;   goto start;

w.a33:  wa w3 x3+0      ; fp procedure:
        dl.w1 e1.       ;   addr:= link+word(link);
        rl.w2 e2.       ;   restore(w0,w1,w2);
        jl w3 x3+0      ;   fp call(addr);
        se w1 1
        jl.   j1.       ;   save(w0,w1,w2,w3);
        jl.   j1.       ;   goto start;
i.e.

w.a34:                  ; do:
        jl.w3 d14.      ;   stack pointer;
        jl.   a0.       ;   goto start;

w.a35:                  ; if:
        jl.w3 d21.      ;   assign word(word,
        jl.   a1.       ;       list);
        dl.w1 f97.      ;
        sl w2 0         ;   if word>=0 then
        jl.w3 d20.      ;     skip block(<:if:>,<:fi:>);
        jl.   a0.       ;   goto start;

w.a36:                  ; while:
        jl.w3 d21.      ;   assign word(word,
        jl.   a1.       ;       list);
        sh w2 -1        ;   if word<=-1 then
        jl.   a0.       ;   goto start;
        dl.w1 f98.      ;
        jl.w3 d20.      ;   skip block(<:do:>,<:od:>);
  a11:  al w0 -2        ; unstack pointer:
        wa.w0 e33.      ;   niveau:= repeat niveau-2;
        sl w0 0         ;   if niveau>=0 then
        rs.w0 e33.      ;     repeat niveau:= niveau;
        jl.   a0.       ;   goto start;

w.a37:                  ; od:
        am.  (e33.)     ;   addr:= repeat(repeat niveau);
        rl.w0 e19.      ; set param addr:
  a10:  rs.w0(e38.)     ;   param addr:= addr;
        jl.   a0.       ;   goto start;

b.j7                    ; wait:
w.a38:  jl.w3 d15.      ;   next param(
        jl.   a4.       ;       terminate,
        jl.   j0.       ;       seconds,
        jl.   j3.       ;       process,
        jl.   a1.       ;       list,
        jl.   a1.       ;       list);
  j0:                   ; seconds:
        ls w2 6         ;   slice:= param*64;
  j1:   sh w2 0         ; again:
        jl.   a0.       ;   if slice<=0 then
        al w2 x2-1      ;     goto start;
        al w1 1952      ;   slice:= slice-1;
  j2:   al w1 x1-1
        sl w1 0         ;   wait 15620 usecs;
        jl.   j2.       ;   goto again;
        jl.   j1.
  j3:   al w3 x2+0      ; process:
        jd    1<11+8    ;   reserve process(param,result);
        sh w0 1         ;   if result<=1 then
        jl.   j5.       ;     goto check result;
        al.w1 j7.       ;
        jd    1<11+42   ;   look up entry(param,result);
        al w3 x1+2      ;   param:= tail+2;
        sn w0 0         ;   if result=0 then
                        ; again:
  j4:   jd    1<11+8    ;     reserve process(param,result);
  j5:                   ; check result:
        sn w0 0         ;   if result=0 then
        jl.   a0.       ;     goto start;
        se w0 1         ;   if result<>1 then
        jl.   a1.       ;     goto list;
        rs.w3 e32.
        al.w3 c14.
        al.w1 j6.
        jd    1<11+16   ;   send message(<:clock:>,1,buf);
        al w1 x1+4
        jd    1<11+18   ;   wait answer(buf);
        rl.w3 e32.
        jl.   j4.       ;   goto again;
  j6:   0,1
  j7:   0,r.10
i.e.

w.a39:                  ; go:
        jl.w3 d21.      ;   assign word(word,
        jl.   a1.       ;       list);
        sl w2 f5        ;   if word>=repeat niveaus then
        jl.   a1.       ;     goto list;
        ls w2 1         ;   word:= word shift 1;
        rl.w0 x2+e26.   ;   addr:= procedure(word);
        al.w3 a10.      ;   if addr<>0 then
        se w0 0         ;     begin
        jl.   d14.      ;       stack pointer;
                        ;       goto set param addr
        rl.w0(e38.)     ;     end;
        rs.w0 x2+e26.   ;   procedure(word):= param addr;
        dl.w1 f99.      ;
        jl.w3 d20.      ;   skip block(<:go:>,<:og:>);
        jl.   a0.       ;   goto start;
w.a40:  rl.w3 e33.      ; og:
        sh w3 0         ;   if repeat niveau=<0 then
        jl.   a1.       ;     goto list;
        rl.w0 x3+e19.   ;   param addr:=
        rs.w0(e38.)     ;       repeat(repeat niveau);
        jl.   a11.      ;   goto unstack pointer;

b.j16                   ; slang:
w.a41:  jl.w3 d21.      ;   assign word(addr,
        jl.   a1.       ;       list);
        al w2 x2-2      ;
        rs.w2 e12.      ;   slang addr:= addr-2;
        rl w0 x2+0      ;   instruction:= word(slang addr);
        al w1 -1        ;   slang mode:= -1;
        ds.w1 e14.      ;
  j0:   am    d15-d16   ; next: next param or
  j15:  jl.w3 d16.      ; list: list and next param(
        jl.   j16.      ;       terminate,
        jl.   j13.      ;       space integer,
        jl.   j2.       ;       space name,
        jl.   j1.       ;       point name,
        jl.   j12.      ;       point integer);
  j16:  rl.w0 e13.      ;   output last
        rs.w0 (e12.)    ;   instr;
        jl.    a4.      ;   goto terminate;
  j1:                   ; point name:
        jl.w3 d10.      ;   lookup word(index,
        jl.   j5.       ;       point wz,
        jl.   j7.       ;       point xy,
        jl.   j15.      ;       list,
        jl.   j15.      ;       list,
        jl.   j15.      ;       list);
  j2:                   ; space name:
        jl.w3 d10.      ;   lookup word(index,
        jl.   j6.       ;       space wz,
        jl.   j8.       ;       space xy,
        am              ;   name,
        am              ;   name,
                        ;   name);
                        ; name:
        al w1 0         ;   op:= 0;
                        ; next op:
  j3:   al w0 -1-255    ;   mask:= -1-255;
        la.w0 x1+c0.    ;   mod:= mask and op codes(op);
        sn w0(x2+0)     ;   if mod=word(param) then
        jl.   j4.       ;     goto found;
        al w1 x1+2      ;   op:= op+2;
        sh w1 64*2*2    ;   if op<=64*2*2 then
        jl.   j3.       ;     goto next op;
        dl w1 x2+2      ; not found:
        sn.w0(f96.)     ;   if word(param)<><:end:>
        se w1 0         ;       or word(param+2)<>0 then
        jl.   j15.      ;     goto list;
        rl.w0 e13.      ;
        rs.w0(e12.)     ;   word(slang addr):= instruction;
        jl.   a0.       ;   goto start;
  j4:                   ; found:
        sl w1 128       ;   if second table then
        al  w1  x1-128  ;   opcode:=opcode-128;
        rs.w1 e14.      ;   slang mode:= op;
        ls w1 17        ;   word:= op shift 17;
        dl.w3 e13.      ;   word(slang addr):=
        rs w3 x2+0      ;       instruction;
        al w0 x2+2      ;   slang addr:= slang addr+2;
        ds.w1 e13.      ;   instruction:= word;
        jl.   j0.       ;   goto next;
  j5:                   ; point wz:
        al w1 x1+1      ;   index:= index+1;
  j6:                   ; space wz:
        sl w1 8         ;   if index>=8 then
        jl.   j11.      ;     goto delim z;
        ls w1 3         ;   mod:= index shift 3;
        al w2 -1-56     ;   mask:= -1-56;
        jl.   j9.       ;   goto set mod;
  j7:                   ; point xy:
        al w1 x1+1      ;   index:= index+1;
  j8:                   ; space xy:
        sl w1 8         ;   if index>=8 then
        jl.   j10.      ;     goto delim y;
        sz w1 2.1       ;   if index(23)=1 then
        al w1 x1+7      ;     index:= index+7;
        ls w1 -1        ;   mod:= index shift -1;
        al w2 -1-7      ;   mask:= -1-7;
  j9:   rl.w0 e14.      ; set mod:
        sz w0 1<7       ;   if slang mode(16)=1 then
        jl.   j15.      ;     goto list;
        bl.w3 e13.      ;
        la w3 4         ;   instruction(0:11):=
        wa w3 2         ;       instruction(0:11) and mask
        hs.w3 e13.      ;       or mod;
        jl.   j0.       ;   goto next;
  j10:                  ; delim y:
        am    -10       ;   index:= index-10;
  j11:                  ; delim z:
        rl.w2 x1+e0.    ;   param:= word(w0 addr+index);
        sz w1 2.1       ;   if index(23)=1 then
  j12:                  ; point integer:
        ac w2 x2+0      ;   param:= -param;
  j13:  rl.w0 e14.      ; space integer:
        sz w0 1<7       ;   if slang mode(16)=1 then
        jl.   j14.      ;     goto word;
        ba.w2 e13.+1    ;   instruction(12:23):=
        hs.w2 e13.+1    ;       instruction(12:23)+param;
        jl.   j0.       ;   goto next;
  j14:  sh w0 0         ; word:
        jl.   j15.      ;   if slang mode<=0 then
        wa.w2 e13.      ;     goto list;
        rs.w2 e13.      ;   instruction:= instruction+param;
        jl.   j0.       ;   goto next
i.e.                    ; end;

w.a42:                  ; jump:
        jl.w3 d21.      ;   assign word(addr,
        jl.   a1.       ;       list);
        dl.w1 e1.       ;
        rx.w2 e2.       ;   restore(w0,w1,w2);
        jl.w3(e2.)      ;   jump link(addr);
        ds.w1 e1.       ;   save(w0,w1,w2);
        rs.w2 e2.       ;
        jl.   a0.       ;   goto start;

; compound format table
w.                                              b28.,b29.
        b30.,b31.,b32.,b33.,b34.,b35.,b36.,b37.,b38.,b39.
        b40.,b41.,b42.,b43.,b44.,b45.,b46.,b47.,b48.,b49.
        b50.,b51.,b52.,b53.,b54.,b55.,b56.,b57.,b58.,b59.
        b60.,b61.,b62.,b63.
  d0:

; fpnames
c. g8<3 ; if system 3 then
   h52=1<23
   h53=1<23
z.
c.g8<2
   h76=1<23
  h95=1<23
  h96=1<23
  h97=1<23
  h98=1<23
z.
w.       h0, h1, h2, h3, h4, h5, h6, h7, h8, h9
        h10,h11,h12,h13,h14,h15,h16,h17,h18,h19
        h20,h21,h22,h23,h24,h25,h26,h27,h28,h29
        h30,h31,h32,h33,h34,h35,h36,h37,h38,h39
        h40,h41,h42,h43,h44,h45,h46,h47,h48,h49
        h50,h51,h52,h53,h54,h55,h56,h57,h58,h59
        h60,h61,h62,h63,h64,h65,h66,h67,h68,h69
        h70,h71,h72,h73,h74,h75,h76,h77,h78,h79
        h80,h81,h82,h83,h84,h85,h86,h87,h88,h89
        h90,h91,h92,h93,h94,h95,h96,h97,h98,h99

; word table
w.d1:   <:w0:>,<:w1:>,<:w2:>,<:w3:>
        <:z0:>,<:z1:>,<:z2:>,<:z3:>
        <:x0:>,<:x1:>,<:x2:>,<:x3:>
        <:y0:>,<:y1:>,<:y2:>,<:y3:>
        <:in:>,<:de:>,<:ri:>,<:le:>
        <:or:>,<:an:>,<:eq:>,<:ne:>
        <:gr:>,<:ls:>,<:ng:>,<:nl:>
        <:mu:>,<:di:>,<:mo:>,<:po:>
        <:ba:>,<:cc:>,<:fp:>,<:hn:>
  d2:   0
  f94=d1-1000
  f95=f94+16

; format table
b.j73
w.                                                   j29.
        j30.          ,j33.,j34.,j35.,j36.,j37.,j38.,j39.
                            j54.,j55.,j56.,j57.,j58.,j59.
        j60.,j61.     ,j63.,j64.,j65.,j66.,j67.,j68.,j69.
        j70.,j71.     ,j73.
c.h57<3
                  j72.
z.
        d3.
                              b28: -1
        14<18+11<12+ 5<6+12
         4<18
  j29:  <:binword:>         , b29: -1
        28<18+ 3<12
  j30:  <:words5:>,0        , b30: -1
        31<18+ 3<12
                              b31: -1
        14<18+20<12+12<6+ 4
                              b32: -1
        14<18+21<12+12<6+ 4
  j33:  <:bytes10:>         , b33: -1
        32<18+ 3<12
  j34:  <:name:>            , b34: -1
        52<18+ 3<12
  j35:  <:procname:>        , b35: -1
        41<18+ 3<12
  j36:  <:procnames:>,0     , b36: -1
        42<18+ 3<12
  j37:  <:code:>            , b37: -1
        40<18+ 3<12
  j38:  <:double:>,0        , b38: -1
        43<18+ 3<12
  j39:  <:groups:>,0        , b39: -1
        62<18+ 3<12
                              b40: -1
        14<18+19<12+12<6+ 4
                              b41: -1
        14<18+17<12+12<6+ 4
                              b42: -1
        14<18+18<12+12<6+ 4
                              b43: -1
        15<18+12<12+ 4<6   
                              b44: -1
        14<18+11<12+ 6<6+12
         4<18
                              b45: -1
        14<18+ 5<12+12<6+ 4
                              b46: -1
        14<18+ 6<12+12<6+ 4
                              b47: -1
        14<18+ 7<12+12<6+ 4
                              b48: -1
        14<18+ 8<12+12<6+ 4
                              b49: -1
        14<18+ 9<12+12<6+ 4
                              b50: -1
        14<18+10<12+12<6+ 4
                              b51: -1
        14<18+11<12+12<6+ 4
                              b52: -1
        14<18+16<12+12<6+ 4
                              b53: -1
        14<18+19<12+10<6+ 5
         6<18+ 8<12+ 7<6+12
         4<18
  j54:  <:empty:>           , b54: -1
        13<18+ 3<12
  j55:  <:word:>            , b55: -1
        45<18+ 3<12
  j56:  <:bytes:>           , b56: -1
        46<18+ 3<12
  j57:  <:text:>            , b57: -1
        47<18+ 3<12
  j58:  <:octets:>,0        , b58: -1
        48<18+ 3<12
  j59:  <:sixtets:>         , b59: -1
        49<18+ 3<12
  j60:  <:octal:>           , b60: -1
        50<18+ 3<12
  j61:  <:binary:>,0        , b61: -1
        51<18+ 3<12
                              b62: -1
        14<18+ 5<12+ 6<6+ 8
         9<18+10<12+12<6+ 4
  j63:  <:all:>,0           , b63: -1
        53<18+ 3<12
  d6:
  j64:  <:buffer:>,0        , -1 h.0,24
w.      45<18+45<12+41<6+41
        62<18+62<12+62<6+62
        62<18+62<12+62<6+62
         2<18
c.h57<2
  j65:  <:area:>            , -1 h.0,20
w.      45<18+52<12+46<6+42
        42<18+45<12+45<6+ 2
  j66:  <:peripheral:>      , -1 h.0,96
w.      45<18+52<12+49<6+42
        42<18+45<12+45<6+45
        39<18
  j67:  <:internal:>        , -1 h.0,74
w.      45<18+52<12+44<6+51
        45<18+45<12+45<6+45
        45<18+45<12+46<6+44
        51<18+44<12+51<6+45
        62<18+62<12+62<6+62
        45<18+45<12+41<6+45
        43<18+43<12+43<6+45
        45<18+51<12+51<6+ 2
z.
c.h57<3
  j65:  <:area:>            , -1 h.-4,24
w.      45<18+45<12+45<6+52
        41<18+42<12+42<6+45
        45<18+52<12+ 2<6
  j66:  <:peripheral:>      , -1 h.-4,100
w.      45<18+45<12+45<6+52
        62<18+42<12+42<6+45
        45<18+45<12+39<6
  j67:  <:internal:>        , -1 h.-4,92
w.      45<18+45<12+45<6+52
        44<18+51<12+45<6+45
        45<18+45<12+45<6+45
        46<18+44<12+45<6+44
        51<18+45<12+62<6+62
        62<18+62<12+45<6+45
        41<18+45<12+43<6+43
        43<18+45<12+45<6+45
        45<18+45<12+45<6+45
        56<18
z.
  j68:  <:tail:>            , -1 h.0,20
w.      46<18+52<12+45<6+62
        62<18+62<12+62<6+ 2
  j69:  <:zone:>            , -1 h.-36,h5
w.      45<18+45<12+45<6+45
        45<18+12<12+46<6+52
        45<18+45<12+45<6+45
        12<18+51<12+45<6+14
         8<18+ 7<12+12<6+62
        12<18+45<12+45<6+45
        62<18+12<12+62<6+62
        62<18+39<12
  j70:  <:share:>           , -1 h.0,h6
w.      45<18+45<12+45<6+46
        45<18+45<12+45<6+45
        45<18+45<12+45<6+45
        39<18
c.h57<2
  j71:  <:note:>            , -1 h.0,22
w.      47<18+46<12+52<6+45
        45<18+45<12+46<6+45
         2<18
z.
c.h57<3
  j71:  <:entry:>           , -1 h.0,36
w.      62<18+45<12+45<6+52
        45<18+52<12+39<6
  j72:  <:chaintable:>      , -1 h.-36,66
w.      45<18+62<12+45<6+45
        52<18+45<12+52<6+45
        45<18+46<12+46<6+46
        33<18
z.
  j73:  <:answer:>, 0       , -1 h.0,10
w.      44<18+45<12+45<6+45
        45<18+ 2<12
  d3:   -1
i.e.

; output table
b.j1
w.       j0., j1.
        d4.
  f96:
  j0:   <:end:>                         ,0,-1, jl.   i0.
  j1:   <:bittable:>                      ,-1, jl.   i1.
  d4:   -1
i.e.

; action table
b.i14,j80
w.       i0., i1., i2., i3., i4., i5., i6., i7., i8.
        i10.,i11.,i12.,i13.,i14.
c.h57<3
            j71.,j72.,j73.,j74.,j75.,j76.
z.
         j0., j1., j2., j3., j4., j5., j6., j7., j8., j9.
        j10.,j11.,j12.,j13.,j14.,j15.,j16.,j17.,j18.,j19.
        j20.,j21.,j22.,j23.,j24.,j25.,j26.,j27.,j28.,j29.
        j30.,j31.,j32.,j33.,j34.,j35.,j36.,j37.,j38.,j39.
        j40.,j41.,j42.,j43.,j44.,j45.,j46.,j47.,j48.,j49.
        j50.,j51.,j52.,j53.,j54.,j55.,j56.,j57.,j58.,j59.
        j60.,j61.,j62.,j63.,j64.,j65.,j66.,j67.,j68.,j69.
        j70.
                                                      i9.
        d5.
  d8:   jl.   a32.
  d9:   jl.   a33.
  i0:   <:clear:>                              ,-1
        jl.   a30.
  i1:   <:write:>                              ,-1
        jl.   a31.
  i2:   <:monitor:>  ,0,f0,<:procedure:>,0,f0-6,-1
        rl w0 x2+0
        rs.w0 4
        jl.w3 a32.
        0
  i3:   <:fp:>   ,0,0,0,f0,<:procedure:>,0,f0-6,-1
        rl.w0 8
        wa w0 x2+0
        rs.w0 4
        jl.w3 d9.
        -k
  i4:   <:do:>                                 ,-1
        jl.   a34.
  i5:   <:if:>                                 ,-1
        jl.   a35.
  i6:   <:while:>                              ,-1
        jl.   a36.
        <:if:>,f97:
  i7:   <:fi:>                                 ,-1
        jl.   a0.
        <:do:>,f98:
  i8:   <:od:>                                 ,-1
        jl.   a37.
  i9:   <:wait:>                               ,-1
        jl.   a38.
  i10:  <:exit:>                               ,-1
        jl.   a4.
  i11:  <:go:>                                 ,-1
        jl.   a39.
        <:go:>,f99:
  i12:  <:og:>                                 ,-1
        jl.   a40.
  i13:  <:slang:>                              ,-1
        jl.   a41.
  i14:  <:jump:>                               ,-1
        jl.   a42.
  j0:   <:set:>  ,0,0,0,f0,<:interrupt:>,0,-1,jl.w3 d8., 0
  j1:   <:process:>  ,0,f0,<:description:>,-1,jl.w3 d8., 4
  j2:   <:initialize:> ,f0,<:process:>    ,-1,jl.w3 d8., 6
  j3:   <:reserve:>  ,0,f0,<:process:>    ,-1,jl.w3 d8., 8
  j4:   <:release:>  ,0,f0,<:process:>    ,-1,jl.w3 d8.,10
  j5:   <:include:>  ,0,f0,<:user:>       ,-1,jl.w3 d8.,12
  j6:   <:exclude:>  ,0,f0,<:user:>       ,-1,jl.w3 d8.,14
  j7:   <:send:>   ,0,0,f0,<:message:>    ,-1,jl.w3 d8.,16
  j8:   <:wait:>   ,0,0,f0,<:answer:>   ,0,-1,jl.w3 d8.,18
  j9:   <:wait:>   ,0,0,f0,<:message:>    ,-1,jl.w3 d8.,20
  j10:  <:send:>   ,0,0,f0,<:answer:>   ,0,-1,jl.w3 d8.,22
  j11:  <:wait:>   ,0,0,f0,<:event:>      ,-1,jl.w3 d8.,24
  j12:  <:get:>  ,0,0,0,f0,<:event:>      ,-1,jl.w3 d8.,26
  j13:  <:get:>  ,0,0,0,f0,<:clock:>      ,-1,jl.w3 d8.,36
  j14:  <:set:>  ,0,0,0,f0,<:clock:>      ,-1,jl.w3 d8.,38
  j15:  <:create:> ,0,0,f0,<:entry:>      ,-1,jl.w3 d8.,40
  j16:  <:look:>   ,0,0,f0
        <:up:>   ,0,0,0,f0,<:entry:>      ,-1,jl.w3 d8.,42
  j17:  <:change:> ,0,0,f0,<:entry:>      ,-1,jl.w3 d8.,44
  j18:  <:rename:> ,0,0,f0,<:entry:>      ,-1,jl.w3 d8.,46
  j19:  <:remove:> ,0,0,f0,<:entry:>      ,-1,jl.w3 d8.,48
  j20:  <:permanent:>,0,f0,<:entry:>      ,-1,jl.w3 d8.,50
  j21:  <:create:> ,0,0,f0
        <:area:>   ,0,0,f0,<:process:>    ,-1,jl.w3 d8.,52
  j22:  <:create:> ,0,0,f0
        <:peripheral:> ,f0,<:process:>    ,-1,jl.w3 d8.,54
  j23:  <:create:> ,0,0,f0
        <:internal:> ,0,f0,<:process:>    ,-1,jl.w3 d8.,56
  j24:  <:start:>  ,0,0,f0
        <:internal:> ,0,f0,<:process:>    ,-1,jl.w3 d8.,58
  j25:  <:stop:>   ,0,0,f0
        <:internal:> ,0,f0,<:process:>    ,-1,jl.w3 d8.,60
  j26:  <:modify:> ,0,0,f0
        <:internal:> ,0,f0,<:process:>    ,-1,jl.w3 d8.,62
  j27:  <:remove:> ,0,0,f0,<:process:>    ,-1,jl.w3 d8.,64
  j28:  <:generate:> ,0,f0,<:name:>       ,-1,jl.w3 d8.,68
  j65:  <:copy:>                          ,-1,jl.w3 d8.,70
c.h57<2
  j29:  <:modify:> ,0,0,f0
        <:backing:>  ,0,f0,<:store:>      ,-1,jl.w3 d8.,72
  j30:  <:select:> ,0,0,f0
        <:backing:>  ,0,f0,<:store:>      ,-1,jl.w3 d8.,74
  j66:  <:select:> ,0,0,f0,<:mask:>       ,-1,jl.w3 d8.,76
  j67:  <:test:>   ,0,0,f0,<:log:>        ,-1,jl.w3 d8.,78
  j68:  <:return:> ,0,0,f0,<:status:>   ,0,-1,jl.w3 d8.,80
z.
c.h57<3
  j29:  <:set:>  ,0,0,0,f0
        <:catalog:>  ,0,f0,<:base:>       ,-1,jl.w3 d8.,72
  j30:  <:set:>  ,0,0,0,f0
        <:entry:>  ,0,0,f0,<:base:>       ,-1,jl.w3 d8.,74
  j66:  <:lookup:> ,0,0,f0,<:head:>     ,0,0,f0
        <:and:>  ,0,0,0,f0,<:tail:>       ,-1,jl.w3 d8.,76
  j67:  <:set:>  ,0,0,0,f0,<:backing:>    ,0,f0
        <:storage:>  ,0,f0,<:claims:>     ,-1,jl.w3 d8.,78
  j68:  <:create:> ,0,0,f0
        <:pseudo:> ,0,0,f0,<:process:>    ,-1,jl.w3 d8.,80
  j71:  <:regret:> ,0,0,f0,<:message:>    ,-1,jl.w3 d8.,82
  j72:  <:create:> ,0,0,f0
        <:backing:>  ,0,f0,<:storage:>    ,-1,jl.w3 d8.,84
  j73:  <:insert:> ,0,0,f0,<:entry:>      ,-1,jl.w3 d8.,86
  j74:  <:remove:> ,0,0,f0
        <:backing:>  ,0,f0,<:storage:>    ,-1,jl.w3 d8.,88
  j75:  <:permanent:>,0,f0
        <:entry:>  ,0,0,f0,<:in:>     ,0,0,0,f0
        <:auxiliary:>,0,f0,<:catalog:>    ,-1,jl.w3 d8.,90
  j76:  <:create:> ,0,0,f0,<:entry:>    ,0,0,f0
        <:lock:>   ,0,0,f0,<:process:>    ,-1,jl.w3 d8.,92
z.
  j69:  <:finis:>  ,0,0,f0,<:message:>    ,-1,jl.w3 d9.,h14.
  j31:  <:inblock:>  ,0,f0,<:current:>    ,-1,jl.w3 d9.,h22.-2
  j32:  <:inblock:>                       ,-1,jl.w3 d9.,h22.
  j33:  <:outblock:> ,0,f0,<:current:>    ,-1,jl.w3 d9.,h23.-2
  j34:  <:outblock:>                      ,-1,jl.w3 d9.,h23.
  j35:  <:wait:>   ,0,0,f0
        <:ready:>  ,0,0,f0,<:input:>      ,-1,jl.w3 d9.,h24.-4
  j36:  <:wait:>   ,0,0,f0
        <:ready:>  ,0,0,f0,<:output:>   ,0,-1,jl.w3 d9.,h24.-2
  j37:  <:wait:>   ,0,0,f0,<:ready:>      ,-1,jl.w3 d9.,h24.
  j38:  <:inchar:> ,0,0,f0,<:current:>    ,-1,jl.w3 d9.,h25.-2
  j39:  <:inchar:>                      ,0,-1,jl.w3 d9.,h25.
  j40:  <:outchar:>  ,0,f0,<:current:>    ,-1,jl.w3 d9.,h26.-2
  j41:  <:outchar:>                       ,-1,jl.w3 d9.,h26.
  j42:  <:connect:>  ,0,f0
        <:current:>  ,0,f0,<:input:>      ,-1,jl.w3 d9.,h27.-2
  j43:  <:connect:>  ,0,f0,<:input:>      ,-1,jl.w3 d9.,h27.
  j44:  <:connect:>  ,0,f0
        <:current:>  ,0,f0,<:output:>   ,0,-1,jl.w3 d9.,h28.-2
  j45:  <:connect:>  ,0,f0,<:output:>   ,0,-1,jl.w3 d9.,h28.
  j46:  <:stack:>  ,0,0,f0,<:input:>      ,-1,jl.w3 d9.,h29.-4
  j47:  <:stack:>  ,0,0,f0,<:zone:>       ,-1,jl.w3 d9.,h29.
  j48:  <:unstack:>  ,0,f0,<:input:>      ,-1,jl.w3 d9.,h30.-4
  j49:  <:unstack:>  ,0,f0,<:zone:>       ,-1,jl.w3 d9.,h30.
  j50:  <:outtext:>  ,0,f0,<:current:>    ,-1,jl.w3 d9.,h31.-2
  j51:  <:outtext:>                       ,-1,jl.w3 d9.,h31.
  j52:  <:outinteger:> ,f0,<:current:>    ,-1,jl.w3 d9.,h32.-2
  j53:  <:outinteger:>                    ,-1,jl.w3 d9.,h32.
  j54:  <:outend:> ,0,0,f0,<:current:>    ,-1,jl.w3 d9.,h33.-2
  j55:  <:outend:>                      ,0,-1,jl.w3 d9.,h33.
  j56:  <:closeup:>  ,0,f0,<:current:>    ,-1,jl.w3 d9.,h34.-2
  j57:  <:closeup:>                       ,-1,jl.w3 d9.,h34.
  j58:  <:parent:> ,0,0,f0,<:message:>    ,-1,jl.w3 d9.,h35.
  j59:  <:wait:>   ,0,0,f0
        <:free:>   ,0,0,f0,<:input:>      ,-1,jl.w3 d9.,h48.-4
  j60:  <:wait:>   ,0,0,f0
        <:free:>   ,0,0,f0,<:output:>   ,0,-1,jl.w3 d9.,h48.-2
  j61:  <:wait:>   ,0,0,f0,<:free:>       ,-1,jl.w3 d9.,h48.
  j70:  <:break:>  ,0,0,f0,<:message:>    ,-1,jl.w3 d9.,h67.
  j62:  <:terminate:>,0,f0,<:input:>      ,-1,jl.w3 d9.,h79.-4
  j63:  <:terminate:>,0,f0,<:output:>   ,0,-1,jl.w3 d9.,h79.-2
  j64:  <:terminate:>,0,f0,<:zone:>       ,-1,jl.w3 d9.,h79.
  d5:   -1
i.e.

; first free addr:
  e8=h55+(:k-h55+511:)/512*512
i.e.                    ; end program block;
  g0=k-h55              ; length:= load addr-first addr;
i.e.                    ; end program segment;
w.
i2=g70-h55
e.
g3=k-h55   ; length
g0:g1:(:g3+511:)>9   ; segm
      0, r.4
      s2             ; date
      0, 0           ; file block
      2<12+i2        ; contents, entry
      g3             ;
m.rc do 1977.09.26
c.h57<3
d.
p.<:insertproc:>
z.
▶EOF◀