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

⟦c0d769d09⟧ Bits:30000870 GIER SIMULATOR GIERPROGTXT, 8-hole paper tape, TextFileEvenParity

    Length: 28901 (0x70e5)
    Description: Bits:30000870 GIER SIMULATOR GIERPROGTXT
    Types: 8-hole paper tape, TextFileEvenParity

TextFileEvenParity

;operator korutine;
b.a20,w.                 ;begin
a20:  3<12,0,0           ;
a19:  5<12,0,0           ;
a18:  <:res:>            ;
      <:hp<10>:>         ;
      <:sto:>            ;
      <:kb0:>            ;
      <:ka0:>            ;
      <:ka1:>            ;
      <:kb1:>            ;
a17:  <:et<10>:>         ;
a16:  <:p<10>:>          ;
a15:  <:<10>:>           ;
a14:  1<23               ;
a13:  <:?<10>:>,<:!<10>:>;
a12:  <:operator:>,0,0   ;

b20:                     ;
a0:   al. w3     a12.    ;
      al. w1     0       ;
      jl. w2     b0.     ;
      0,0                ;
      rl  w0  x2+10      ;
      jd         1<11+26 ;
      am.    (   c17.)   ;
      sn  w2  x2         ;
      se. w0 (   c2.)    ;
      jl.        a0.     ;
      al. w0     a20.+2  ;
      al. w1     a20.+4  ;
      ds. w1     a20.+4  ;
      al. w3     c15.    ;
      jl. w2     b0.     ;
      0,0                ;
      rl  w0  x2+10      ;
      jd         1<11+26 ;
      sn  w0     0       ;
      jl.        a6.     ;
      al  w3     0       ;
      dl. w2     a20.+4  ;
a1:   sn. w1 (x3+a18.)   ;
      jl.     x3+a2.     ;
      sl  w3     12      ;
      jl.        a6.     ;
      al  w3  x3+2       ;
      jl.        a1.     ;

a2:   jl.        a4.     ;
      am         6       ;
      jl.        a3.     ;
      am        -1       ;
      am.    (   a14.)   ;
      am         1       ;
      al  w1     1       ;
      se. w2 (   a15.)   ;
      jl.        a6.     ;
      al  w0     g11     ;texaddr(indikator);
      jl. w2     b14.    ;
      jl.        a5.     ;

a3:   se. w2 (   a16.)   ;
      jl.        a6.     ;
      am         g25-g26 ;
      al  w2    -g25     ;
      al  w1     1       ;
      ls  w1  x2+15      ;
      al  w0     g20     ;texaddr(fejlbits);
      jl. w2     b14.    ;
      jl.        a5.     ;

a4:   se. w2 (   a17.)   ;
      jl.        a6.     ;
      jl. w2     b15.    ;

a5:   am         2       ;
a6:   al. w1     a13.    ;
      al  w0  x1         ;
      ds. w1     a19.+4  ;
      al. w1     a19.    ;
      al. w3     c15.    ;
      jl. w2     b0.     ;
      0,0                ;
      jd         1<11+26 ;
      jl.        a0.     ;
e.                       ;end;

;texas korutine;
b.a20,w.                 ;begin
c99:                     ;
a20:  14<12              ;
h.                       ;
a19:  a0,a1,a2,a3,a4,a5,a6
w.                       ;

      10<12,0,r.6        ;
      jl. w2     b0.     ;
c100: 0,0                ;
      jl.        22      ;

      10<12,0,r.6        ;
      jl. w2     b0.     ;
c101: 0,0                ;
      rl  w0  x2+12      ;
      am.    (   c16.)   ;
      se  w1  x1         ;
      sl  w0     5       ;
      jl.        6       ;
      rs  w3  x1         ;
      jl.        b1.     ;
      al  w3  x3-16      ;
      dl  w1  x2+22      ;
      ds  w1  x3+12      ;
      dl  w1  x2+18      ;
      ds  w1  x3+8       ;
      rl  w1  x2+14      ;
      rl  w0  x2+10      ;
      ds  w1  x3+4       ;
      rl  w1  x2+12      ;
      jd         1<11+26 ;
      bz. w2  x1+a19.    ;
      jl.     x2-k       ;

;kanal rutiner;
b.e20,w.                 ;begin
e20:  0                  ;

a0:   rs. w3     e20.    ;stop:
      rs. w3     c17.    ;
      jl. w2     b4.     ;
      jl. w2     b18.    ;
      jl.        e2.     ;

a1:   rs. w3     e20.    ;hp:
      al  w1     38      ;
      jl. w2     b3.     ;
      al  w1     0       ;
      jl. w2     b5.     ;
      al  w1     0       ;
      jl. w2     b3.     ;
      al  w1     0       ;
      jl. w2     b6.     ;
      jl.        e2.     ;

a2:   rs. w3     e20.    ;vk:
      rs. w3     c16.    ;
      al  w1     960     ;
      wm  w1  x3+10      ;
      wa  w1  x3+8       ;
      ls  w1    -2       ;
      rs. w1     c20.    ;
      jl. w2     b3.     ;
      al  w0     0       ;
      rs. w0     c16.    ;
      jl.        e2.     ;

a3:   rs. w3     e20.    ;lk:
      rl. w1     c20.    ;
      al. w2     b6.     ;
      jl.        e0.     ;

a4:   rs. w3     e20.    ;sk:
      rl. w1     c20.    ;
      rl. w0     c19.    ;
      sl  w0  x1+1       ;
      jl.        e2.     ;
      al. w2     b5.     ;
e0:   sl. w1 (   c6.)    ;
      jl.        e1.     ;
      rl  w1  x3+12      ;
      jl  w2  x2         ;
      jl.        e2.     ;

e1:   rs  w1  x3+4       ;
e2:   rl. w1     e20.    ;
      al. w3     c8.     ;
      jd         1<11+16 ;
      al. w1     d0.     ;
      jd         1<11+18 ;
      al. w1     a20.    ;
      am.    (   e20.)   ;
      jl         14      ;
e.                       ;end;

;tegn rutiner;
b.e20,w.                 ;begin
e20:  0                  ;

a5:                      ;ly:
a6:                      ;sy:
      rl. w1     e20.    ;
      al. w3     c8.     ;
      jd         1<11+16 ;
      al. w1     d0.     ;
      jd         1<11+18 ;
      al. w1     a20.    ;
      am.    (   e20.)   ;
      jl         14      ;
e.                       ;end;

e.                       ;end;

;procedure sendmwaita;
;          call         return
;w0                     next buf
;w1        messaddr     last buf
;w2        link         buffaddr
;w3        nameaddr     link
b.a20,w.                 ;begin

b0:   rl. w0     c4.     ;   old first buf:= first buf;
      rs. w2     c4.     ;   first buf:= link;
      rs  w0  x2+2       ;   word(link+2):= old first buf;
      jd         1<11+16 ;   send message;
      sn  w2     0       ;   if no buffer then break 6;
      jd         1<11+18 ;
      rs. w2 (   c4.)    ;   word(link):= buffaddr;

a0:   al  w2     0       ;we:

b1:   jd         1<11+24 ;   wait event;
      se  w0     1       ;   if message then goto mes;
      jl.        a3.     ;
      al. w1     c4.     ;   i:= address(first buf);
a1:   rl  w3  x1         ;   for j:= word(i)
      sn  w2 (x3)        ;   while word(j)<>buffaddr do
      jl.        a2.     ;
      al  w1  x3+2       ;   i:= j+2;
      jl.        a1.     ;

a2:   rl  w0  x3+2       ;   word(i):= word(j+2);
      rs  w0  x1         ;
      jl      x3+4       ;   return;

a3:   jd         1<11+26 ;mes:
      al  w0     2       ;   get event;
      al. w1     0       ;   send answer(rejected);
      jd         1<11+22 ;
      jl.        a0.     ;   goto we;
e.                       ;end;

;procedure initsegm;
;          call         return
;w0                     ?
;w1                     ?
;w2        link         ?
;w3                     ?
b.a20,w.                 ;begin
a20:  0                  ;

b2:   rs. w2     a20.    ;   savelink:= link;
      am.    (   c3.)    ;
      rl  w3     24      ;   tsa:= top storage address;
      al. w1     b19.    ;
      al  w2  x1+4       ;   this:= startaddr+4;
      al  w1     0       ;   next:= 0; comment last segm;
      al  w0     2047    ;   written:= false; segmentnr:= impossible;
                         ;rep:
a0:   ds  w1  x2-2       ;   createsegm(written,segmentnr,next);
      al  w1  x2         ;   next:= this;
      al  w2  x2+964     ;   this:= this+segmentlength;
      sh  w2  x3-960     ;   if this+960<=tsa then goto rep;
      jl.        a0.     ;
      rs. w1     c5.     ;   firstsegm:= next;
      rl. w1     c20.    ;   søgkanal(valgte kanal);
      jl. w2     b3.     ;
      jl.    (   a20.)   ;   return
e.                       ;end;

;procedure søgkanal;
;          call         return
;w0                     ?
;w1        kanalnr      segmentnr
;w2        link         ?
;w3                     førsteadr
b.a20,w.                 ;begin
a20:  320                ;
a19:  960                ;
a18:  0                  ;
a17:  0                  ;

b3:   sl. w1 (   c6.)    ;
      jl      x2         ;
      rs. w2     a18.    ;   savelink:= link;
      wm. w1     a20.    ;
      wd. w1     a19.    ;
      rs. w0     a17.    ;
      al. w2     c5.     ;   i:= address(first segm);
a0:   rl  w3  x2         ;   for j:= word(i)
      bz  w0  x3-3       ;   while byte(j-3)<>segmentnr do
      sn  w0  x1         ;
      jl.        a1.     ;   if word(j-2)=0 then goto findes ikke
      rl  w0  x3-2       ;   else i:= j-2;
      sn  w0     0       ;
      jl.        a2.     ;
      al  w2  x3-2       ;
      jl.        a0.     ;

a1:   rl  w0  x3-2       ;
      rs  w0  x2         ;   word(i):= word(j-2);
      al  w2  x3         ;   old first segm:= first segm;
      rx. w2     c5.     ;   first segm:= j;
      rs  w2  x3-2       ;   word(j):= old first segm;
      jl.        a3.     ;   goto slut;

a2:   rs  w0  x2         ;findes ikke:
      al  w2  x3         ;   old first segm:= first segm;
      rx. w2     c5.     ;   first segm:= j;
      rs  w2  x3-2       ;   word(j):= old first segm;
      bz  w0  x3-4       ;   if written then
      se  w0     0       ;
      jl. w2     b8.     ;   outputsegm;
      jl. w2     b7.     ;   inputsegm;
                         ;slut:
a3:   wa. w3     a17.    ;   adjust address;
      rs. w3     c18.    ;   store address;
      jl.    (   a18.)   ;   return;
e.                       ;end;

;procedure clearsegm;
;          call         return
;w0                     ?
;w1                     unchanged
;w2        link         ?
;w3                     0
b.a20,w.                 ;begin
a20:  0                  ;

b4:   rs. w2     a20.    ;   savelink:= link;
      rl. w3     c5.     ;   segm:= firstsegm;
a0:   sn  w3     0       ;rep:
      jl.    (   a20.)   ;   if segm=0 then return;
      bz  w0  x3-4       ;   if written then
      se  w0     0       ;
      jl. w2     b8.     ;   outputsegm;
      rl  w3  x3-2       ;   segm:= next(segm);
      jl.        a0.     ;   goto rep;
e.                       ;end;

;procedure skriv (læs) kanal;
;          call         return
;w0                     ?
;w1        gieradr<2    ?
;w2        link         ?
;w3                     ?
b.a20,w.                 ;begin
a20:  0,r.5              ;
a19:  0                  ;
a18:  3940               ;
a17:  4096               ;

b5:   al  w0     1       ;skriv kanal:
      rl. w3     c5.     ;
      hs  w0  x3-4       ;
      am        -2       ;

b6:   al  w0     5       ;læs kanal:
      hs. w0     a20.    ;
      rl. w3     c18.    ;
      sl. w1 (   a18.)   ;
      jl.        a1.     ;
      al  w0  x3+318     ;
      ds. w0     a20.+4  ;
      al  w1  x1+g30     ;
      ds. w2     a20.+8  ;
a0:   al. w3     c8.     ;
      al. w1     a20.    ;
      jl. w2     b0.     ;
      0,0                ;
      rl  w0  x2+10      ;
      jd         1<11+26 ;
      se  w0     320     ;
      jl.        a0.     ;
      jl.    (   a20.+8) ;

a1:   rl. w0     a17.    ;
      ws  w0     2       ;
      ls  w0     1       ;
      rs. w0     a19.    ;
      am     (   0)      ;
      al  w0  x3-2       ;
      ds. w0     a20.+4  ;
      al  w1  x1+g30     ;
      ds. w2     a20.+8  ;
a2:   al. w3     c8.     ;
      al. w1     a20.    ;
      jl. w2     b0.     ;
      0,0                ;
      rl  w0  x2+10      ;
      jd         1<11+26 ;
      se. w0 (   a19.)   ;
      jl.        a2.     ;
      rl. w3     a20.+4  ;
      al  w3  x3+2       ;
      al  w0     320     ;
      ws. w0     a19.    ;
      rs. w0     a19.    ;
      am     (   0)      ;
      al  w0  x3-2       ;
      ds. w0     a20.+4  ;
      al  w0     g30     ;
      rs. w0     a20.+6  ;
a3:   al. w3     c8.     ;
      al. w1     a20.    ;
      jl. w2     b0.     ;
      0,0                ;
      rl  w0  x2+10      ;
      jd         1<11+26 ;
      se. w0 (   a19.)   ;
      jl.        a3.     ;
      jl.    (   a20.+8) ;
e.                       ;end;

;procedure insegm;
;          call         return
;w0                     ?
;w1        segmentnr    segmentnr
;w2        link         firstaddr
;w3        firstaddr    firstaddr
b.a20,w.                 ;begin
a20:  3<12,0,r.4         ;

b7:   ds. w2     a20.+8  ;   segmnr(mes):= segment nr;
      rs  w1  x3-4       ;   segmnr(segm):= segment nr;
      al  w0  x3+510     ;   savelink:= link;
      ds  w0     a20.+4  ;   fstadr(mes):= firstaddr;
a0:   al. w1     a20.    ;   lstadr(mes):= firstaddr+510;
      al. w3     c7.     ;again:
      jl. w2     b0.     ;    sendmwaita;
      0,0                ;
      dl  w1  x2+10      ;   status:= buf(8); bytes:= buf(10);
      jd         1<11+26 ;   get event;
      sn  w0     0       ;   if status<>0 or bytes=0 then 
      sn  w1     0       ;   goto again;
      jl.        a0.     ;
      rl. w3     a20.+2  ;
      al  w3  x3+480     ;
      al  w2  x3+480     ;
a1:   bz  w1  x3-1       ;   unpacksegm;
      bz  w0  x3-2       ;
      ds  w1  x2-2       ;
      bz  w1  x3-3       ;
      bl  w0  x3-4       ;
      ds  w1  x2-6       ;
      bz  w1  x3-5       ;
      bz  w0  x3-6       ;
      ds  w1  x2-10      ;
      bz  w1  x3-7       ;
      bl  w0  x3-8       ;
      ds  w1  x2-14      ;
      bz  w1  x3-9       ;
      bz  w0  x3-10      ;
      ds  w1  x2-18      ;
      bz  w1  x3-11      ;
      bl  w0  x3-12      ;
      ds  w1  x2-22      ;
      bz  w1  x3-13      ;
      bz  w0  x3-14      ;
      ds  w1  x2-26      ;
      bz  w1  x3-15      ;
      bl  w0  x3-16      ;
      ds  w1  x2-30      ;
      bz  w1  x3-17      ;
      bz  w0  x3-18      ;
      ds  w1  x2-34      ;
      bz  w1  x3-19      ;
      bl  w0  x3-20      ;
      ds  w1  x2-38      ;
      bz  w1  x3-21      ;
      bz  w0  x3-22      ;
      ds  w1  x2-42      ;
      bz  w1  x3-23      ;
      bl  w0  x3-24      ;
      ds  w1  x2-46      ;
      bz  w1  x3-25      ;
      bz  w0  x3-26      ;
      ds  w1  x2-50      ;
      bz  w1  x3-27      ;
      bl  w0  x3-28      ;
      ds  w1  x2-54      ;
      bz  w1  x3-29      ;
      bz  w0  x3-30      ;
      ds  w1  x2-58      ;
      bz  w1  x3-31      ;
      bl  w0  x3-32      ;
      ds  w1  x2-62      ;
      bz  w1  x3-33      ;
      bz  w0  x3-34      ;
      ds  w1  x2-66      ;
      bz  w1  x3-35      ;
      bl  w0  x3-36      ;
      ds  w1  x2-70      ;
      bz  w1  x3-37      ;
      bz  w0  x3-38      ;
      ds  w1  x2-74      ;
      bz  w1  x3-39      ;
      bl  w0  x3-40      ;
      ds  w1  x2-78      ;
      al  w2  x2-80      ;
      al  w3  x3-40      ;
      se  w3  x2         ;
      jl.        a1.     ;
      rl. w1     a20.+6  ;   segment nr:= segmnr(mes);
      jl.    (   a20.+8) ;   return;
e.                       ;end;

;procedure outsegm;
;          call         return
;w0                     ?
;w1                     unchanged
;w2        link         ?
;w3        firstaddr    firstaddr
b.a20,w.                 ;begin
a20:  5<12,0,r.3         ;
a19:  0,0                ;

b8:   ds. w2     a19.+2  ;   savelink:= link;
      bz  w0  x3-3       ;
      rs  w0  x3-4       ;   written:= false;
      rs. w0     a20.+6  ;   segmnr(mes):= segment nr;
      al  w0  x3+510     ;
      ds  w0     a20.+4  ;   fstadr(mes):= firstaddr;
      al  w2  x3         ;   lstadr(mes):= firstaddr+510;
a0:   dl  w1  x2+2       ;   packsegm;
      hs  w0  x3+0       ;
      hs  w1  x3+1       ;
      dl  w1  x2+6       ;
      hs  w0  x3+2       ;
      hs  w1  x3+3       ;
      dl  w1  x2+10      ;
      hs  w0  x3+4       ;
      hs  w1  x3+5       ;
      dl  w1  x2+14      ;
      hs  w0  x3+6       ;
      hs  w1  x3+7       ;
      dl  w1  x2+18      ;
      hs  w0  x3+8       ;
      hs  w1  x3+9       ;
      dl  w1  x2+22      ;
      hs  w0  x3+10      ;
      hs  w1  x3+11      ;
      dl  w1  x2+26      ;
      hs  w0  x3+12      ;
      hs  w1  x3+13      ;
      dl  w1  x2+30      ;
      hs  w0  x3+14      ;
      hs  w1  x3+15      ;
      dl  w1  x2+34      ;
      hs  w0  x3+16      ;
      hs  w1  x3+17      ;
      dl  w1  x2+38      ;
      hs  w0  x3+18      ;
      hs  w1  x3+19      ;
      dl  w1  x2+42      ;
      hs  w0  x3+20      ;
      hs  w1  x3+21      ;
      dl  w1  x2+46      ;
      hs  w0  x3+22      ;
      hs  w1  x3+23      ;
      dl  w1  x2+50      ;
      hs  w0  x3+24      ;
      hs  w1  x3+25      ;
      dl  w1  x2+54      ;
      hs  w0  x3+26      ;
      hs  w1  x3+27      ;
      dl  w1  x2+58      ;
      hs  w0  x3+28      ;
      hs  w1  x3+29      ;
      dl  w1  x2+62      ;
      hs  w0  x3+30      ;
      hs  w1  x3+31      ;
      dl  w1  x2+66      ;
      hs  w0  x3+32      ;
      hs  w1  x3+33      ;
      dl  w1  x2+70      ;
      hs  w0  x3+34      ;
      hs  w1  x3+35      ;
      dl  w1  x2+74      ;
      hs  w0  x3+36      ;
      hs  w1  x3+37      ;
      dl  w1  x2+78      ;
      hs  w0  x3+38      ;
      hs  w1  x3+39      ;
      al  w3  x3+40      ;
      al  w2  x2+80      ;
      se  w3  x2-480     ;
      jl.        a0.     ;
a1:   al. w3     c7.     ;again:
      al. w1     a20.    ;
      jl. w2     b0.     ;   sendmwaita;
      0,0                ;
      dl  w1  x2+10      ;   status:= buf(8); bytes:= buf(10);
      jd         1<11+26 ;   get event;
      sn  w0     0       ;   if status<>0 or bytes=0 then
      sn  w1     0       ;   goto again;
      jl.        a1.     ;
      rl. w1     a19.    ;   w1:= savew1;
      rl. w3     a20.+2  ;   firstaddr:= fstadr(mes);
      jl.    (   a19.+2) ;   return;
e.                       ;end;

;procedure parentmessage;
;          call         return
;w0                     ?
;w1                     unchanged
;w2        link         ?
;w3        name adr.    name adr.
b.a20,w.                 ;begin
a20:  2<12+1,<:finis:>,0 ;
a19:  16<12,<:wait for :>;
a18:  24<12,<:load :>,0  ;       
a17:  26<12+1,<:change :>;
a16:  0,0                ;
a15:  0,0                ;

b9:   al. w3     c8.     ;
      al. w1     a19.    ;
      jd         1<11+16 ;
      jd         1<11+18 ;
      jd         1<11+10 ;
      am         a20-a19 ;
b10:  am         a19-a18 ;
b11:  am         a18-a17 ;
b12:  al. w0     a17.    ;
      ds. w1     a16.+2  ;
      ds. w3     a15.+2  ;
      dl  w1  x3+2       ;
      ds. w1     d0.+10  ;
      dl  w1  x3+6       ;
      ds. w1     d0.+14  ;
      rl. w3     a16.    ;
      dl  w1  x3+2       ;
      ds. w1     d0.+2   ;
      dl  w1  x3+6       ;
      ds. w1     d0.+6   ;
      al. w1     d0.     ;
      al. w3     c14.    ;
      jd         1<11+16 ;
      jd         1<11+18 ;
      rl. w3     a15.+2  ;
      rl. w1     a16.+2  ;
      jl.    (   a15.)   ;
e.                       ;end;

;procedure wait;
;          call         return
;w0                     unchanged
;w1                     unchanged
;w2        link         ?
;w3                     unchanged
b.a20,w.                 ;begin
a20:  0,1                ;
a19:  0,0                ;
a18:  0,0                ;
a17:  <:clock:>,0,0,0    ;

b13:  ds. w3     a19.+2  ;
      ds. w1     a18.+2  ;
      al. w1     a20.    ;
      al. w3     a17.    ;
      jd         1<11+16 ;
      al. w1     d0.     ;
      jd         1<11+18 ;
      rl. w3     a19.+2  ;
      dl. w1     a18.+2  ;
      jl.    (   a19.)   ;
e.                       ;end;

;procedure bitsetandclear;
;          call         return
;w0        texaddr      ?
;w1        mask         ?
;w2        link         ?
;w3                     ?
b.a20,w.                 ;begin
a20:  0,0                ;
a19:  3<12,0,0,0         ;
a18:  5<12,0,0,0         ;
a17:  4<12               ;
a16:  8<12               ;
a15:  0                  ;

b14:  ds. w2     a20.+2  ;
      rs. w0     a19.+6  ;
      rs. w0     a18.+6  ;
      al. w3     c8.     ;
      al. w1     a17.    ;
      jd         1<11+16 ;
      al. w1     d0.     ;
      jd         1<11+18 ;
      al. w1     a15.    ;
      al  w0  x1         ;
      ds. w1     a19.+4  ;
      ds. w1     a18.+4  ;
      al. w1     a19.    ;
      jd         1<11+16 ;
      al. w1     d0.     ;
      jd         1<11+18 ;
      rl. w0     d0.+2   ;
      se  w0     2       ;
      jl.       -12      ;
      rl. w0     a15.    ;
      lo. w0     a20.    ;
      sh  w0     0       ;
      lx. w0     a20     ;
      rs. w0     a15.    ;
      al. w1     a18.    ;
      jd         1<11+16 ;
      al. w1     d0.     ;
      jd         1<11+18 ;
      rl. w0     d0.+2   ;
      se  w0     2       ;
      jl.       -12      ;
      al. w1     a16.    ;
      jd         1<11+16 ;
      al. w1     d0.     ;
      jd         1<11+18 ;
      jl.    (   a20.+2) ;
e.                       ;

;procedure reset;
;          call         return
;w0
;w1
;w2        link
;w3
b.a20,w.                 ;begin
b15:
e.                       ;end;

;procedure initkb;
;          call         return
;w0                     ?
;w1                     ?
;w2        link         ?
;w3                     ?
b.a20,w.                 ;begin
a20:  0                  ;
a19:  <:gierprog:>,0,0   ;
a18:  3<12,0,0,a15       ;

b18:  rs. w2     a20.    ;
      al. w3     a19.    ;
      al. w1     a18.    ;
      jd         1<11+16 ;
      al. w1     d0.     ;
      jd         1<11+18 ;
      dl. w1     d0.+2   ;
      sn  w0     0       ;
      sn  w1     0       ;
      jl.       -14      ;

b19:                     ;entry: 
;(her starter også tromlebuffer og kontrolbord)
b.e20,w.                 ;  begin
e20:  jl.        e0.     ;
e19:  <:gier:>,0,0       ;
e18:  <:gier980a:>,0,0   ;
e17:  3<12,0,0,1         ;
e16:  5<12,0,0,0         ;
e15:  1<18               ;
e14:  20<12              ;
e13:  <:process io:>     ;
e12:  <:gier psproc:>    ;

e0:   ds. w1     c1.     ;
      ds. w3     c3.     ;
      al. w3     c15.    ;
      jl. w1     e2.     ;
      rl. w2     c1.     ;
      al. w3     c14.    ;
      jl. w1     e2.     ;
      rl. w2     c0.     ;
      se. w2 (   c2.)    ;
      jl.        e7.     ;
      se. w2 (   c1.)    ;
      jl.        e1.     ;
      al. w1     c9.     ;
      al. w3     c14.    ;
      jd         1<11+16 ;
      al. w1     d0.     ;
      jd         1<11+18 ;
      rl. w2     d0.+6   ;
      rs. w2     c2.     ;
e1:   al. w3     c9.     ;
      al. w1     e3.     ;

e2:   rs. w1     e20.    ;
      dl  w1  x2+4       ;
      ds  w1  x3+2       ;
      dl  w1  x2+8       ;
      ds  w1  x3+6       ;
      jl.    (   e20.)   ;

e3:   al. w3     c7.     ;
      al. w1     d0.     ;
      jd         1<11+42 ;
      jd         1<11+52 ;
      jd         1<11+8  ;
      se  w0     0       ;
      jl.        e8.     ;
      rl. w1     d0.     ;
      wm. w1     c6.     ;
      rs. w1     c6.     ;
      al. w3     e19.    ;
      jd         1<11+86 ;
      se  w0     0       ;
      jl.        e9.     ;
      jd         1<11+4  ;
      rs. w0     psgd1   ;
      rs. w0     psgd2   ;
      al. w3     c8.     ;
      jd         1<11+8  ;
      sn  w0     0       ;
      jl.        e4.     ;
      jl. w2     b10.    ;
      jl. w2     b13.    ;   wait(1)
      jd         1<11+8  ;
      se  w0     0       ;
      jl.       -6       ;

e4:   al. w1     e14.    ;
      jd         1<11+16 ;
      al. w1     d0.     ;
      jd         1<11+18 ;
      al. w3     e18.    ;
      jd         1<11+52 ;
      se  w0     0       ;
      jl.        e10.    ;
      al. w3     a16.    ;
      al  w0  x3+510     ;
      ds. w0     e17.+4  ;
      ds. w0     e16.+4  ;
e5:   al. w3     e18.    ;
      al. w1     e17.    ;
      jd         1<11+16 ;
      al. w1     d0.     ;
      jd         1<11+18 ;
      dl. w1     d0.+4   ;
      sz. w0 (   e15.)   ;
      jl.        e6.     ;
      sn  w0     0       ;
      se  w1     512     ;
      jl.       -18      ;
      rl. w1     e17.+6  ;
      al. w1  x1+1       ;
      rs. w1     e17.+6  ;
      al. w3     c8.     ;
      al. w1     e16.    ;
      jd         1<11+16 ;
      al. w1     d0.     ;
      jd         1<11+18 ;
      rl. w0     d0.+2   ;
      se  w0     512     ;
      jl.       -12      ;
      rl. w1     e16.+6  ;
      al  w1  x1+256     ;
      rs. w1     e16.+6  ;
      jl.        e5.     ;

e6:   jd         1<11+64 ;
      al. w3     a19.    ;
      jd         1<11+52 ;
      se  w0     0       ;
      jl.        e11.    ;
      al. w3     b19.    ;
      al. w0     a14.    ;
      ds. w0     a18.+4  ;
      al. w0     c100.   ;
      rx. w0     c4.     ;
      rs. w0     c100.+2 ;
      al. w3     c8.     ;
      al. w1     c99.    ;
      jd         1<11+16 ;
      rs. w2     c100.   ;
      al. w0     c101.   ;
      rx. w0     c4.     ;
      rs. w0     c101.+2 ;
      jd         1<11+16 ;
      rs. w2     c101.   ;
      jl. w2     b15.    ;
      jl.        b20.    ;

e7:   am         e13-c7  ;
e8:   am         c7-e12  ;
e9:   am         e12-e18 ;
e10:  am         e18-a19 ;
e11:  al. w1     a19.    ;
      al  w2  x1+6       ;
      ds. w2     e16.+4  ;
      al. w1     e16.    ;
      al. w3     c15.    ;
      jd         1<11+16 ;
      jd         1<11+18 ;
      jl.        b9.     ;
e.                       ;  end;
a16:
m. skal der loades ved kald
a17=(:(:a16+510:)/512*512-a16:)>1
c.    a17-1              ;
      0,r.a17            ;
z.                       ;
a15=k/512                ;

k=b19
;kontrolbord rutine;
b.e30,w.                 ;  begin

      al  w1     0       ;
      jl. w2     e1.     ;
      se  w1     10      ;
      sn  w1     32      ;
      jl.        b19.    ;
      jl. w2     e3.     ;
      jl. w2     e1.     ;
      jl. w2     e3.     ;
      jl. w2     e1.     ;
      jl. w2     e3.     ;
      al  w1     0       ;
      jl. w2     e1.     ;
      se  w1     10      ;
      jl.       -6       ;
      jl.        e25.    ;

e30:  0                  ;

;procedure inblock;
b.f20,w.                 ;    begin
f20:  0,r.10             ;
f19:  3<12,0,0           ;
f18:  0,0                ;
f17:  0                  ;

e0:   ds. w0     f18.+2  ;
      rs. w2     f17.    ;
      al. w1     f20.    ;
      al  w2  x1+18      ;
      ds. w2     f19.+4  ;
      al. w3     c15.    ;
      al. w1     f19.    ;
      jd         1<11+16 ; 
      al. w1     d0.     ;
      jd         1<11+18 ;
      rl. w0     d0.+2   ;
      sn  w0     0       ;
      jl.       -12      ;
      wa. w0     f19.+2  ;
      rs. w0     e30.    ;
      al. w1     f20     ;
      dl. w0     f18.+2  ;
      jl.    (   f17.)   ;
e.                       ;

;procedure readchar;
b.f20,w.                 ;
f20:  0                  ;
f19:  0                  ;

e1:   rx. w2     f20.    ;
      se  w2     0       ;
      jl.        f0.     ;
      rx. w1     f19.    ;
      al  w1  x1+2       ;
      sl. w1 (   e30.)   ;
      jl. w2     e0.     ;
      rl  w2  x1         ;
      rx. w1     f19.    ;
f0:   ld  w2     8       ;
      rx. w2     f20.    ;
      jl      x2         ;

;procedure repeatchar;
e2:   rx. w2     f20.    ;
      ld  w2    -8       ;
      rx. w2     f20.    ;
      jl      x2         ;
e.                       ;

;procedure find kommando;
b.f20,w.                 ;
f20:  0                  ;
f19:  <:cel:>            ;
      <:<0><0>F:>        ;
      <:<0><0>M:>        ;
      <:<0><0>R:>        ;
      <:<0>bl:>          ;
      <:<0>bs:>          ;
      <:<0>by:>          ;
      <:<0><0>g:>        ;
      <:<0>in:>          ;
      <:<0><0>p:>        ;
      <:<0>r1:>          ;
      <:<0>s1:>          ;
      <:<0>ta:>          ;
      <:<0>tk:>          ;
      <:<0>a0:>          ;
      <:<0>b0:>          ;
      <:fin:>            ;
      <:fri:>            ;
      <:<0>hh:>          ;
      <:<0>hp:>          ;
      <:ka0:>            ;
      <:ka1:>            ;
      <:kb0:>            ;
      <:kb1:>            ;
      <:<0>o0:>          ;
      <:<0>o1:>          ;
      <:res:>            ;
      <:sta:>            ;
      <:<0>T0:>          ;
      <:<0>T1:>          ;
      <:udf:>            ;
      <:<0>:=:>          ;
      <:<0><0>=:>        ;
h.                       ;
     -1                  ;
f18:  e4                 ;
      e5,r.13            ;
      e6                 ;
      e7                 ;
      e8                 ;
      e9                 ;
      e10                ;
      e11                ;
      e12                ;
      e13                ;
      e14                ;
      e15                ;
      e16                ;
      e17                ;
      e18                ;
      e19                ;
      e20                ;
      e21                ;
      e22                ;
      e23                ;
      e24                ;
w.                       ;

e3:   rs. w2     f20.    ;
      al  w3     127     ;
      la  w3     2       ;
      sn  w3     10      ;
      jl.        e25.    ;
      al  w2    -2       ;
f0:   al  w2  x2+2       ;
      rl. w0  x2+f19.    ;
      sh  w0     0       ;
      jl.    (   f20.)   ;
      se  w0  x1         ;
      jl.        f0.     ;
      ls  w2    -1       ;
      bz. w1  x2+f18.    ;
      jl.     x1-k       ;
e.                       ;

e.                       ;
a14=k+510                ;
e.                       ;end;
e.e.e.e.e.
▶EOF◀