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

⟦7571c25f8⟧ TextFile

    Length: 43008 (0xa800)
    Types: TextFile
    Names: »uti14«

Derivation

└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
    └─⟦b2ec5d50f⟧ 
        └─⟦f8e4b63af⟧ »trcfput« 
            └─⟦this⟧ 

TextFile

\f


; rc 17.6.69                                 editor i, tape 2, page 1.

     ; outstring:
     ;   comment: a string terminated by the current <del> is trans-
     ;   ferred from the correction document to the correction string
     ;   the value of numic specified characters are taken from
     ;   the byte table; if they are special marked the mark
     ;   is removed.
     ;
     ;   outstring 1 requiers the total string to be in the corr string
     ;   buffer.
     ;   outstring 2 puts no restrictions on the string.
     ;   outstring 3 requiers the total copied string to be in the
     ;   corr string buffer, and being not empty;

b.   h10,i4            ;
h.                     ; booleans for:
i0:  sn.w2 ( , se w1 x1;   outstring 3,
     sn w1 x1, rs.w2   ;   outstring 2,
     sn w1 x1, se w1 x1;   outstring 1;
w.                     ;
                       ; outstring 1:
a17: am         2      ;   long:=false; not empty:= false; goto a;
                       ; outstring 2:
a18: am         2      ;   long:=true;  not empty:= false; goto a;
                       ; outstring 3:
a27: rl. w0     i0.    ;   long:=false; not empty:= true;
                       ; a:
     rs. w2     i3.    ;   first:= cur corr;
     rs. w3     f67.   ;   save(cur pr);
     hs. w0     i1.    ;
     ls  w0    -12     ;
     hs. w0     i2.    ;
h1:                    ; next normal: boolean long;
i1:  rs. w2     f63.   ;   if long then save point:= cur corr;
     bl  w0  x1        ;   byte:= byte(cur in);
     sn  w0     g9     ;   if byte = <no line>
     jl. w1     c15.   ;   then input corr line;
     al  w1  x1+1      ;   cur in:= cur in + 1;
     sz  w0  g20+g21   ;   if byte = <special> ! <comp>
     jl.        h3.    ;   then goto test byte;
     sn. w0    (f6.)   ;   if byte = delim(1)
     jl.        h9.    ;   then goto to next pr;
                       ; store byte:
h2:  hs  w0  x2        ;   byte(cur corr):= byte;
     al  w2  x2+1      ;   cur corr:= cur corr + 1;
     sn. w2    (f50.)  ;   if cur corr = corr bottom
     jl. w2     c7.    ;   then save correction;
     jl.        h1.    ;   goto next normal;
                       ; test byte:
h3:  se. w0    (f37.)  ;   if byte = num char then
     jl.        h4.    ; begin
     ds. w3     f43.   ;   save(w2, w3);
     jl. w2     c14.   ;   read integer;
                       ; test num char:
h10: al  w1  x1+1      ;   cur in:= cur in +1;
     bl  w0  x1-1      ;   byte:= byte(cur in);
     sn  w0     g4     ;   if byte = <sp>
     jl.        h10.   ;   then goto test num char;
     se. w0    (f37.)  ;   if byte <> num char
     jl.        c25.   ;   then alarm(syntax);
\f


; rc 1.11.70                                 editor i, tape 2, page 2.


     rl. w0     f66.   ;
     sl  w0     0      ;   in integer < 0
     sl  w0     128    ;     integer >= 128
     jl.        c25.   ;   then alarm (syntax);
     am         (0)    ;
     bl. w0     f1.    ;   byte:= byte table(integer) and
     la. w0     i4.    ;   -, special and -,skipped;
     jl.        h2.    ;   goto store byte;
                       ; end;
h4:  sz  w0     g20    ;   if byte = <special>
     jl.        c25.   ;   then alarm (syntax);

                       ; test comp delim:
     al. w3     f6.    ;   delim pointer:= first delim
                       ; next comp:
h5:  rs. w0     f60.   ;   subbyte:= byte
     bl  w0  x3        ;   byte:= delim (delim pointer);
     rs. w3     f43.   ;   save (delim pointer);
     rx. w0     f60.   ;   cross (byte, subbyte);
     jl. w3     c12.   ;   search comp(
     jl.        h8.    ;     goto match);
                       ; no match:
     al. w3     f6.    ;   delim pointer:= first delim;
                       ; step delim pointer:
h6:  sn. w3    (f43.)  ;   if delim pointer = saved delim pointer
     jl.        h7.    ;   then goto transfer comp;
     bl  w0  x3        ;   byte:= delim (delim pointer);
     hs  w0  x2        ;   byte (cur corr):= byte;
     al  w2  x2+1      ;   cur corr := curcorr + 1;
     sn. w2    (f50.)  ;   if cur corr = corr bottom
     jl. w2     c7.    ;   then save correction;
     al  w3  x3+1      ;   delim pointer:= delim pointer + 1;
     jl.        h6.    ;   goto step delim pointer;
                       ; transfer comp:
h7:  bl  w0  x1-1      ;   byte:= byte(cur in);
     so  w0     g21    ;   if byte <> <comp>
     jl.        h2.    ;   then goto store byte;
     hs  w0  x2        ;   byte (cur corr):= byte;
     al  w2  x2+1      ;   cur corr:= cur corr + 1
     sn. w2    (f50.)  ;   if cur corr = corr bottom
     jl. w2     c7.    ;   then save correction;
     al  w1  x1+1      ;   cur in := cur in + 1
     jl.        h7.    ;   goto transfer comp;
                       ; match:
h8:  so  w0     g21    ;   if byte <> <comp>
     jl.        h9.    ;   then goto new pr;
     al  w3  x3+1      ;   delim pointer:= delim pointer + 1;
     bl  w0  x1        ;   byte:= byte (cur in);
     al  w1  x1+1      ;   cur in:=cur in +1;
     jl.        h5.    ;   goto next comp;
                       ; to next pr:
h9:  rl. w3     f67.   ;   restore(cur pr);
                       ; boolean not empty:
i2:  sn. w2    (i3.)   ;   if not empty and first=cur corr
     jl.        c25.   ;   then alarm(syntax);
     jl.        a4.    ;   goto next pr 2;
i3:             0      ; first:
i4:      -1-g20-g24    ;   not special and not skipped
e.                     ;
\f


; rc 17.6.69                                 editor i, tape 2, page 3.

a19: ; prep last:

     rs. w2     f63.   ;   save point:= cur corr;
     jl.        a4.    ;   goto next pr 2;


a20: ; set last:

     al  w0  x2        ;   byte:= cur corr - save point;
     ws. w0     f63.   ;  
     am.       (f63.)  ;   byte(save point + 1):= byte
     hs  w0     1      ; 
     jl.        a4.    ;   goto next pr 2;


     ; mark kind
     ;   comment: a name is read indicating one of the five
     ;   kinds: 1 empty, 2. standard, 3. numeric, 4. char,
     ;   and 5. line. cur pr is shifted to a corresponding
     ;   process string;

b.   h2, i1            ; begin
h.                     ;   byte array kind(1:6):=
h1:  83,69,78, 67,76   ;   s, e, n, c, l, -1;
     -1                ;
w.                     ;
a21: rs. w2     f67.   ;   save (cur corr)
     jl. w2     c13.   ;   read name (letter);
     hs. w0     i1.    ;
     al  w2     0      ;   for i:= 0 step 1 until 6 do
h2:  bl. w0  x2+h1.    ;   begin
     al  w2  x2+1      ;
     sn  w0     -1     ;   if kind(i) = -1
     jl.        c25.   ;   then alarm(syntax);
h.   se  w0            ;   if kind(i) = letter then
i1:      0             ;   begin cur corr:= saved cur corr;
w.   jl.        h2.    ;
     wa  w3     4      ;   cur pr:= cur pr + i + byte (cur pr + i);
     rl. w2     f67.   ;   goto next pr 3;
     ba  w3  x3        ;   end
     jl.        a5.    ;   end
e.                     ; end;
\f


; rc 17.6.69                                 editor i, tape 2, page 4.

a22: ; read char:
     ;   comment: a graphic not composed character is input
     ;   and transferred to the correction string;

     bl  w0  x1        ;   byte:= byte(cur in);
     al  w1  x1+1      ;   cur in:= cur in + 1;
     se  w0     g8     ;   if byte = <nl 1>
     sz  w0  g21+g22   ;     byte = (<non gr>  <comp>)
     jl.        c25.   ;   then alarm (syntax);
     al  w3  x3+1      ;   cur pr:= cur pr + 1;
     jl.        a2.    ;   goto out corr and next pr 3;


a23: ; read yes or no:
     ;   comment: a name is read. if it is yes the next cur pr
     ;   is output, if it is no the second cur pr is output;

b.   h1                ; begin
w.                     ; 
     rs. w2     f67.   ;
     jl. w2     c13.   ;   letter:= read name;
     rl. w2     f67.   ;
     al  w3  x3+3      ;   cur pr:= cur pr + 3;
     sn  w0     78     ;   if letter = <n>
     jl.        h1.    ;   then goto no
     se  w0     89     ;   if letter <> <y>
     jl.        c25.   ;   then alarm (syntax);
                       ; yes:
     am        -1      ;   byte:= byte(cur pr - 1); goto a;
                       ; no:
h1:  bl  w0  x3-1      ;   byte:= byte (cur pr - 2);
     jl.        a2.    ; a: goto out corr and next pr 3;
e.                     ; end read yes or no;
\f


; rc 9.1.70                                 editor i, tape 2, page 5.


a24: ; to nl:
     ;   comment: before transfer to the executor for copying
     ;   the line to be corrected it is tested that the mode
     ;   is on line and that the correct command is
     ;   terminated by a <nl>;

     bl  w0  x1        ;   byte:= byte (cur in);
     bl. w2     f70.   ;
     se  w2     1      ;   if mode <> on line
     se  w0     g8     ;     byte <> <nl>
     jl.        c25.   ;   then alarm (syntax);
     jl.        c21.   ;   goto start executor;


c19: ; after correction:
     ;   comment: after the corrected line has been composed
     ;   in the corr line string, curr corr and cur pr
     ;   are initialized and control is transferred to next pr 3;

     al  w0     g8     ;
     hs. w0     f6.    ;   delim(first delim):= <nl 1>
     rl. w2     f49.   ;   cur corr:= corr top
     al. w3     j18.   ;   cur pr:= j18
     jl.        a5.    ;   goto next pr 3;


a26: ; test nl:
     ;   comment: if the next byte is not <nl> an alarm
     ;   is given;

     bl  w0  x1        ;   byte:= byte(cur in);
     al  w1  x1+1      ;   cur in:= cur in +1;
     sn  w0     g8     ;    if byte = <nl1> then
     jl.        a4.    ;    goto next pr 2;
     sz  w0   g22+g23  ;    if byte = (<nongr> or <blind>)
     jl.        a26.   ;    then goto testnl
     jl.        c25.   ;    else alarm(syntax);


a28: ; out integer byte:
     ;   comment: an integer is read and output as a byte;

     ds. w3      f43.   ;   save(w2,w3);
     jl. w2      c14.   ;   read integer; restore(w2,w3);
     rl. w0      f66.   ;   byte:= integer;
     al  w3   x3+1      ;   cur pr:= cur pr +1;
     jl.         a2.    ;   goto out corr and next pr 3;
\f


; rc 29.06.71                                 editor i, tape 2, page 6.


c7:  ; procedure save correction;
     ;   w0: destroyed
     ;   w1: saved
     ;   w2: return/updated cur corr
     ;   w3: saved

     ; comment: the procedure is used for saving the correction string
     ; when it is full.
     ; 1. if <save point> is equal <corr top> a correction part is to
     ;    long. alarm <:syntax:> is given.
     ; 2. the byte at save point is replaced with <restore corr>.
     ; 3. if the byte at corr top is <first corr> no correction has yet
     ;    been saved. the correction area descriptor is connected for
     ;    output.
     ; 4. the output is performed.
     ; 5. the byte replaced is restored and the correction string from
     ;    <save point> to <corr bottom> is moved to <corr top>. when
     ;    exit w2, <cur corr>, points on the byte after the last moved
     ;    byte;

b.   d2                  ; begin
w.                       ;
     ds. w2     f42.     ;   save(w1,w2,w3);
     rs. w3     f43.     ;
     rl. w1     f63.     ;
     sn. w1    (f49.)    ;   if save point = corr top
     jl.        c25.     ;   then goto alarm(<:syntax:>);
     bl  w0  x1          ;
     rs. w0     f40.     ;   save(byte(save point));
     al  w0     b5       ;
     hs  w0  x1          ;   byte(save point):= <restore corr>;
     rl. w1     f88.     ;   w1:= correction area descriptor;
     bl. w0    (f49.)    ;
     se  w0     g11      ;   if byte(corr top) <> <first corr>
     jl.        d1.      ;   then goto  output;
                         ; connect:
     al  w0     1<1+0    ;   comment: one segment , pref. on disk
     al  w2  x1+h1+2     ;   w2:= corr descr.name;
     am.       (f77.)    ;
     jl  w3     h28      ;   connect output(w1,w2);
                         ; output:
d1 = k
c. h57<2 ; if system 2 then begin
     rl  w2  x1+h1+16    ;    get segment count
     sl. w2     (f25.)   ;    if area length <= segmentcount
     jl.          c38.   ;    then alarm (corr. area);
z.       ; end system 2;
     am.       (f77.)    ;
     jl  w3     h23      ;   outblock(w1);
                         ; move:
     rl. w1     f63.     ;   w1:= save point;
     rl. w0     f40.     ;   byte:= saved(byte(savepoint));
     rl. w2     f49.     ;   cur corr:= corr top;
     rs. w2     f63.     ;   save point:= corr top;
                         ; step:
d2:  hs  w0  x2          ;   byte(cur corr):= byte;
     al  w2  x2+1        ;   cur corr:= cur corr +1;
     al  w1  x1+1        ;   w1:= w1 +1;
     bl  w0  x1          ;   byte:= byte(w1);
     se. w1    (f50.)    ;   if w1 <> corr bottom
     jl.        d2.      ;   then goto step;
     rl. w1     f41.     ;
     rl. w3     f43.     ;   restore(w1,w3);
     jl.       (f42.)    ;   exit(saved w2);
                         ;
e.                       ; end save correction;
\f


; rc 29.06.71                                 editor i, tape 2, page 7.

c13: ; procedure read name;
     ;   w0: irrelevant / first letter of name in kapitel
     ;   w1: cur in / cur in pointing at byte after name
     ;   w2: return / destroyed
     ;   w3: saved
     ;
     ; comment: a name consisting of letters including comments, leading
     ;   spaces and new lines, and including following spaces
     ;   is by passed. the first letter of the name is delivered
     ;   in w0;

b.   h6, i2            ; begin
w.                     ;
     rs. w2     i1.    ;   save (w2);
                       ; skip prelude:
h1:  bl  w0  x1        ;   first letter:= byte (cur in);
     sn  w0     g9     ;   if first letter = <no line>
     jl. w1     c15.   ;   then input corr line;
     al  w1  x1+1      ;   cur in:= cur in + 1;
     la. w0     f18.   ; 
     se  w0     g8     ;   if first letter = <nl>
     sn  w0     g4     ;     first letter = <sp>
     jl.        h1.    ;   then goto skip prelude;
     sl  w0     97     ;   if first letter is a small letter
     ba. w0     i2.    ;   then first letter:= corresponding kapital letter;
     sl  w0     65     ;   if first letter
     sl  w0     94     ;     is not a letter
     jl.        h5.    ;   then goto test comment;
                       ; skip letter:
h2:  bl  w2  x1        ;   byte 1:= byte (cur in);
     la. w2     f18.   ;
     sl  w2     97     ;   if byte 1 is a small letter
h.   al  w2  x2        ;   then byte 1:= corresponding kapital letter;
i2:             -32    ;
w.   sl  w2     65     ;   if byte 1 is equal
     sl  w2     94     ;   a letter
     jl.        h4.    ;   then
     al  w1  x1+1      ;   begin cur in:= cur in +1;
     jl.        h2.    ;         goto skip letter end;
                       ; skip post lude:
h3:  se  w2     g4     ;   if byte 1 <> <sp>
     jl.       (i1.)   ;   then exit (saved w2);
     al  w1  x1+1      ;   cur in:= cur in + 1;
h4:  bl  w2  x1        ;   byte 1:= byte (cur in);
     la. w2     f18.   ;
     jl.        h3.    ;   goto skip post lude;
                       ;
                       ; test comment:
h5:  sn  w0     59     ;   if byte <> ; or
h6:  sn  w0     g7     ; next char: if byte = <em> then
     jl.        c25.   ;   alarm(syntax);
     se  w0     g8     ;  if byte = <nl1>
     sn  w0     g9     ;     or byte = <no line> then
     jl.        h1.    ;   goto skip prelude;
     al  w1  x1+1      ;   cur in := cur in + 1;
     bl  w0  x1        ;   byte := byte(cur in);
     jl.        h6.    ;   goto next char;
i1:             0      ; saved w2:
e.                     ; end read name;
\f


; rc 17.6.69                                 editor i, tape 2, page 8.

c14: ; procedure read integer;
     ;   w0: destroyed
     ;   w1: cur in / cur in pointing at terminating char
     ;   w2: return / saved w2
     ;   w3: irrelevant / saved w3
     ;   integer: the value of the integer
     ;
     ;   a integer consisting of a possible leading sign and termi-
     ;   nated by a non digit character is read and stored in
     ;   integer. spaces are regarded as blind.

b.   h5                ; begin
w.                     ;
     rs. w2     f40.   ;   save (return);
     al  w3     0      ;   value:= 0;
                       ; skip leading spaces:
h1:  bl  w0  x1        ;   byte:= byte(cur in);
     se  w0     g4     ;   if byte = <sp> then
     jl.        h2.    ;   begin
     al  w1  x1+1      ;     cur in:= cur in + 1;
     jl.        h1.    ;     goto skip leading spaces;
                       ;   end;
h2:  sn  w0     45     ;   if byte = <minus>
     am         -2     ;   then sign:= -1
     al  w2     1      ;   else sign:= +1;
     rs. w2     f66.   ;
     se  w0     43     ;   if byte = <plus>
     sn  w0     45     ;     byte = <minus> then
                       ; test digit:
h3:  al  w1  x1+1      ;   cur in := cur in +1;
     bl  w0  x1        ;   byte:= byte(cur in);
     sl  w0     48     ;   if byte < digit (0)
     sl  w0     58     ;     byte > digit (9)
     jl.        h5.    ;   then goto term;
     wm. w3     f21.   ;   value:= value * 10 + byte - 48;
     am        (0)     ;
     al  w3  x3-48     ;
     jl.        h3.    ;   goto test digit;
                       ; term:
h5:  wm. w3     f66.   ;   integer:= value * sign;
     rs. w3     f66.   ; 
     dl. w3     f43.   ;   restore(w2, w3);
     bl  w0  x1-1      ;
     se  w0     43     ;   if byte(cur in-1) =
     sn  w0     45     ;      (<plus> or <minus>)
     al  w1  x1-1      ;   then cur in:= cur in -1;
     jl.       (f40.)  ;   exit (saved return);
                       ;
e.                     ; end read integer;
\f


; rc 17.6.69                                 editor i, tape 2, page 9.


c15: ; procedure input corr line;
     ;   w0: irrelevant / first byte
     ;   w1: return / cur in pointing at first byte
     ;   w2: saved
     ;   w3: saved
     ;
     ;   comment: input line is called for reading of the next line;

b.   i3                ; begin
w.                     ;
     rs. w1     i1.    ;   save (w1, w2, w3);
     ds. w3     i3.    ;
     jl. w3     c1.    ;   cur in:= input line;
     bl  w0  x1        ;   first byte:= byte(cur in);
     dl. w3     i3.    ;   restore (w2, w3);
     jl.       (i1.)   ;   exit(saved w1);
                       ;
i1:  0, i2:  0, i3:  0 ;
e.                     ; end input corr line;
\f


; rc 17.6.69                                 editor i, tape 2, page 10.

     ; definition of byte values for command table and process table:

     ; value in command table referring to process table:

     e0  = j0  - b0    ;   syntax
     e1  = j21 - b0    ;   line
     e2  = j22 - b0    ;   print
     e3  = j23 - b0    ;   delete
     e4  = j24 - b0    ;   insert
     e5  = j25 - b0    ;   replace
     e6  = j26 - b0    ;   global
     e7  = j27 - b0    ;   correct
     e8  = j28 - b0    ;   mark
     e9  = j29 - b0    ;   verify
     e10 = j30 - b0    ;   where
     e11 = j31 - b0    ;   finis
     e12 = j32 - b0    ;   source


     ; value in process table referring to preprocesses:

     e20 = a25 - b1    ;   alarm (syntax)
     e21 = a6  - b1    ;   pos
     e22 = a7  - b1    ;   term print
     e23 = a8  - b1    ;   term
     e24 = a10 - b1    ;   out 6
     e25 = a11 - b1    ;   out 3
     e26 = a12 - b1    ;   out 2
     e27 = a13 - b1    ;   out 1
     e28 = a14 - b1    ;   out rel
     e29 = a15 - b1    ;   return
     e30 = a16 - b1    ;   delim
     e31 = a17 - b1    ;   out string 1
     e32 = a18 - b1    ;   out string 2
     e33 = a19 - b1    ;   prep last
     e34 = a20 - b1    ;   set last
     e35 = a21 - b1    ;   mark kind
     e36 = a22 - b1    ;   read char
     e37 = a23 - b1    ;   read yes or no
     e38 = a24 - b1    ;   to nl
     e39 = a9  - b1    ;   to executor
     e40 = a26 - b1    ;   test nl
     e41 = a27 - b1    ;   out string 3
     e42 = a28 - b1    ;   out integer byte
i.

e.                     ;   end preprocessor block 2;

m.end preprocessor
t.
i.

e.                     ;   end preprocessor block 1;
\f


; rc 76.05.17                                 editor i, tape 2, page ...11...

     ;global text string:

g30: <:  line.<10><0>:>
g31: <:  line, end document.<10><0>:>
g32: <:edit end.<10><0>:>
g33: <:  position not found. <10><0>:>
g34: <:  back space error. <10><0>:>
g35: <:  object too big. <10><0>:>
g36: <:  editor error. <10><0>:>
g37: <:  syntax. <10><0>:>
g38: <:  line too long. <10><0>:>
g39: <:  connect source.<10><0>:>
g40: <:***edit<0>:>
g41: <:  character.<10><0>:>
g42: <:  work area.<10><0>:>
g43: <:<10><0>:>
g44: <:  correction area.<10><0>:>
g45: <:  parity error on <0>:>
 g46: <:  source unknown.<10><0>:>

\f


; rc 17.6.69                                 editor i, tape 2, page 12.

c12: ; procedure search comp;
     ;   w0: byte
     ;   w1: saved
     ;   w2: saved
     ;   w3: return / cur sub
     ;   sub byte: byte value / destroyed
     ;   save w3; f43: cur sub
     ;   match return: return
     ;   no match return: return + 2
     ;   comment: it is tested whether the byte can be found among
     ;   a composed set of characters in the substring. if a match is
     ;   found the current subbyte and the found subbyte change
     ;   position in the substring.

b.   h4                ; begin
w.   rs. w3     f42.   ;   save w2:= return;
     rl. w3     f43.   ;   i:= cur sub;
     sn. w0    (f60.)  ;   if byte = subbyte
     jl.       (f42.)  ;   then exit (save w2);
     rx. w0     f60.   ; 
     so  w0     g21    ;   if byte (cur sub) <> <comp>
     jl.        h4.    ;   then goto no match
                       ; search:
h1:  al  w3  x3+1      ;   i:= i + 1;
     bl  w0  x3        ;   sub byte:= byte (i);
     so  w0     g21    ;   if sub byte <> <comp>
     jl.        h3.    ;   then goto test last;
     se. w0    (f60.)  ;   if byte <> subbyte
     jl.        h1.    ;   then goto search;
     bl. w0    (f43.)  ;
                       ; match:
h2:  hs  w0  x3        ;   byte (i):= byte (cur sub);
     rl. w3     f43.   ;
     rl. w0     f60.   ;
     hs  w0  x3        ;   byte(cur sub):= byte;
     jl.       (f42.)  ;   exit (save w2);
                       ; test last:
h3:  lo. w0     f16.   ;   sub byte:= sub byte ! comp;
     se. w0    (f60.)  ;   if byte <> subbyte
     jl.        h4.    ;   then goto no match;   
     bl. w0    (f43.)  ;
     la. w0     f17.   ;   byte:= byte & not comp;
     jl.        h2.    ;   goto match;
                       ; no match:
h4:  dl. w0     f60.   ;   restore(byte,cur sub);
     am.       (f42.)  ;
     jl         2      ;   exit (save w2 + 2);
e.                     ; end search comp;
\f


; rc 9.1.70                                 editor i, tape 2, page 13.

c1:  ; procedure input line;
     ;   w0: destroyed
     ;   w1: irrelevant / line address
     ;   w2: destroyed
     ;   w3: return / destroyed
     ;   line address: actual line address
     ;   descriptor: actual descriptor address
     ;   call: jl. w3      c1.

     ;   comment: a line is input and stored on the internal line format.
     ;     the bytes are input by the fp inchar function, and the
     ;   corresponding byte is fetched from the byte table.
     ;     special bytes are treated as follows:
     ;   <nl>: is replaced by <nl 1>, a not special byte, and the line
     ;         is terminated
     ;   <em>: is stored and the line is terminated
     ;   <bs> and <cr>: the line is updated in accordance with
     ;         the characters graphical behaviour.
     ;     the mark characters are transformed to not special
     ;   bytes in case the input file is the source file. for the
     ;   correction file following actions are taken:
     ;   line char: input is started a freach.
     ;   char char: in stead of the char char the graphical position
     ;         is replaced by a space.
     ;   number char: the char is just treated as a normal
     ;         character.

     ;   the procedure is used for composing a line after a <cr> has
     ;   been simulated:
     ;   w0: destroyed
     ;   w1: irrelevant / line address
     ;   w2: destroyed
     ;   w3: destroyed
     ;   line address: actual line address
     ;   descriptor: actual descriptor address
     ;   line top: actual line address - 1
     ;   line bottom: actual line bottom
     ;   bottom: last character of line + 1;
     ;   input line return: return
     ;   call:    jl.     c2.

b.   h30, i1           ; begin
w.                     ;
     rs. w3     f36.   ;   input line return:= return;
                       ; first:
h1:  rl. w1     f33.   ;   w1:=
     al  w1  x1-1      ;   cur:=
     al  w2  x1+d4-2   ;   line top:= line address -1;
     ds. w2     f53.   ;   line bottom:= line top +max line length -2;
\f


; rc 9.1.70                                 editor i, tape 2, page 14.


                       ; next:
h2:  al  w0  x1        ;   w0:= cur;
     rl. w1     f32.   ;   w1:= descriptor;
     jl. w3    (f84.)  ;   w2:= inchar;
                       ; inchar return 1:
i1:  sl  w2     128    ;   if char error
     jl.        c36.   ;   then alarm(character);
     bl. w2  x2+f1.    ;   byte:= byte table(w2);
     sz  w2  g20+g24   ;   if byte = <special> or <skipped>
     jl.        h20.   ;   then special 1(inchar return 1);
                       ; store 1:
h27: ba. w0     1      ;   cur:= cur +1;
     hs  w2    (0)     ;   byte(cur):= byte;
     sl. w0    (f53.)  ;   if cur >= line bottom
     jl.        h6.    ;   then goto terminate;
     jl.       (f84.)  ;   w2:= inchar; goto inchar return 1;
                       ; store:
h3:  rl  w2     0      ;   w2:= byte;
     al  w0  x1        ;   w0:= cur;
     rl. w1     f32.   ;   w1:= descriptor;
     al. w3     i1.    ;   w3:= inchar return 1;
     jl.        h27.   ;   goto store 1;
                       ; nl:
h4:  al   w2     g8    ;   byte:= <nl 1>;
                       ; em:
h5:  rl. w0     f35.   ;   cur:= bottom;
     ba. w0     1      ;   cur:= cur +1;
     hs  w2    (0)     ;   byte(cur):= byte;
                       ; terminate:
h6:  al  w2     g9     ;   byte:= <no line>;
     ba. w0     1      ;   cur:= cur +1;
     hs  w2    (0)     ;   byte(cur):= byte;
     rl. w1     f33.   ;   w1:= line address;
     jl.       (f36.)  ;   exit(input line return);

c2:  ; comment: entry for processing after simulation of <cr>;

                       ; cr:
h7:  rl. w1     f34.   ;   cur:= line top;
     am         1      ;    delete next instruction
                       ; bs:
h8:  al  w1  x1-1      ;    cur := cur-1;
     sn. w1    (f34.)  ;   if cur = line top
     jl.        h9.    ;   then goto next comp;
     bl  w0  x1        ;   byte:= byte(cur);
     sz  w0  g21+g22   ;   if byte = <comp> or <non gr>
     jl.        h8.    ;   then goto bs;
                       ; next comp:
h9:  al  w0  x1        ;   w0:= cur;
     rl. w1     f32.   ;   w1:= descriptor;
     jl. w3    (f84.)  ;   w2:= inchar;
     sl  w2     128    ;   if char error
     jl.        c36.   ;   then alarm(character);
                       ; inchar return 2:
     bl. w2  x2+f1.    ;   byte:= byte table(w2);
     sz  w2  g20+g24   ;   if byte = <special> or <skipped>
     jl.        h21.   ;   then special 2(in char return 2);
     rx  w2     0      ;   w0:= byte;
     al  w1  x2        ;   w1:= cur;
\f


; rc 17.6.69                                 editor i, tape 2, page 15.

                       ; skip non graphic:
h10: sn. w1    (f35.)  ;   if cur = bottom
     jl.        h3.    ;   then goto store;
     al  w1  x1+1      ;   cur:= cur + 1;
     bl  w3  x1        ;   byte 1:= byte (cur);
     sz  w3     g22    ;   if byte 1 = <non gr>
     jl.        h10.   ;   then goto skip non graphic;
     sz  w0     g22    ;   if byte = <non gr>
     jl.        h16.   ;   then goto make room;
                       ; test sp:
h11: la. w3     f17.   ;   byte 1:= byte 1 & not comp
     se  w0     g4     ;   if byte = <sp> !
     sn  w0  x3        ;     byte = byte 1
     jl.        h19.   ;   then goto skip forward;
     sn  w3     g4     ;   if byte 1 = <sp>
     jl.        h18.   ;   then goto store comp;
     se  w0     g5     ;   if byte <> <underline>
     jl.        h13.   ;   then goto test bar;
                       ; underline:
h12: lo. w0     f16.   ;   byte:= byte ! comp;
     jl.        h16.   ;   goto make room;
                       ; test bar:
h13: se  w0     g6     ;   if byte <> <bar>
     jl.        h14.   ;   then goto test comp;
     se  w3     g5     ;   if byte 1 <> <underline>
     jl.        h12.   ;   then goto underline;
     bl  w3  x1        ;   byte 1:= byte (cur);
     so  w3     g21    ;   if byte 1 <> <comp>
     jl.        h15.   ;   then goto comp and make room;
     al  w1  x1+1      ;   cur:= cur + 1;
     bl  w3  x1        ;   byte 1:= byte (cur);
     la. w3     f17.   ;   byte 1:= byte 1 & not comp
     sn  w0  x3        ;   if byte 1 = byte
     jl.        h19.   ;   then goto skip forward
     jl.        h12.   ;   goto underline;
                       ; test comp:
h14: bl  w3  x1        ;   byte 1:= byte (cur);
     so  w3     g21    ;   if byte 1 <> <comp>
     jl.        h15.   ;   then goto comp and make room;
     al  w1  x1+1      ;   cur:= cur + 1;
     bl  w3  x1        ;   byte 1:= byte (cur);
     la. w3     f17.   ;   byte 1:= byte 1 & not comp;
     se  w0  x3        ;   if byte 1 <> byte
     jl.        h14.   ;   then goto test comp;
     jl.        h19.   ;   else goto skip forward;
\f


; rc 17.6.69                                 editor i, tape 2, page 16.

                       ; comp and make room:
h15: lo. w3     f16.   ;   byte 1:= byte 1 ! comp;
     hs  w3  x1        ;   byte (cur):= byte 1;
     al  w1  x1+1      ;   cur:= cur + 1;
                       ; make room:
h16: rl. w2     f35.   ;   cur 1:=
     al  w2  x2+1      ;   bottom:= bottom + 1;
     rs. w2     f35.   ;
     sl. w2    (f53.)  ;   if bottom >= line bottom
     jl.        h25.   ;   then goto line over flow
                       ; step room:
h17: sn  w2  x1        ;   if cur 1 = cur
     jl.        h18.   ;   then goto store comp;
     al  w2  x2-1      ;   cur 1:= cur 1 - 1;
     bl  w3  x2        ;
     hs  w3  x2+1      ;   byte (cur 1 + 1):= byte (cur 1);
     jl.        h17.   ;   then goto step room;
                       ; store comp:
h18: hs  w0  x1        ;   byte (cur):= byte;
                       ; skip forward:
h19: bl  w3  x1        ;   byte 1:= byte (cur)
     sz  w3     g22    ;   if byte 1 = <non gr>
     jl.        h8.    ;   then goto bs;
     so  w3     g21    ;   if byte 1 <> <comp>
     jl.        h9.    ;   then goto next comp;
     al  w1  x1+1      ;   cur:= cur + 1;
     jl.        h19.   ;   goto skip forward;
                       ; line overflow:
h25: al  w0     g9     ;
     hs  w0  x2-1      ;   byte (bottom - 1):= <no line>
     jl.        c26.   ;   alarm (line to long);


     ; procedure special 1, special 2;
     ;   w0: cur
     ;   w1: descriptor
     ;   w2: byte
     ;   w3: return -6
     ;   call special 1:  jl.        h20.
     ;   call special 2:  jl.        h21.
     ;
     ;   comment: the difference between special 1 and special 2 is
     ;   that special 1 sets the value of bottom to cur, special 2 does
     ;   not.
     ;     on the special bytes <nl>, <bs>, <cr>, and <em> jump is
     ;   made to relevant actions.
     ;     if the descriptor is the source descriptor the special mark
     ;   on the mark characters are removed and return is made.
     ;     otherwise:
     ;   line char: will cause jump to first.
     ;   char char: cause replacement with <sp> and compressing
     ;     if necessary and then return either to store or to store comp.
     ;   numeric char: cause imediate return.
\f


; rc 1.11.70                                 editor i, tape 2, page 17.


b.   i1                ; begin
w.                     ; special 1:
h20: rs. w0     f35.   ;   bottom:= cur;
                       ; special 2:
h21: sz  w2     g24    ;   if byte = <skipped> then inchar(w3);
     jl.       (f84.)  ;
     sn  w2     g1     ;   if byte = <nl> then goto nl;
     jl.        h4.    ;
     sn  w2     g3     ;   if byte = <bs> then goto bs 1;
     jl.        h26.   ;
     sn  w2     g2     ;   if byte = <cr> then goto cr;
     jl.        h7.    ;
     sn  w2     g7     ;   if byte = <em> then goto em;
     jl.        h5.    ;
     sn  w2    g15     ;   if byte = <sub> then
     jl.       c39.    ;   alarm (parity error);
     se. w1    (f28.)  ;   if descriptor <> source descriptor
     jl.        h22.   ;   then goto del char;
     la. w2     f18.   ;   byte:= byte and not special;
     jl      x3+10     ;   exit(return);
                       ; bs 1:
h26: rl  w1     0      ;   w1:= cur;
     jl.        h8.    ;   goto bs;
                       ; del char:
h22: se. w2    (f38.)  ;   if byte = line char then
     jl.        h28.   ; begin a: char:= inchar
     jl. w3    (f84.)  ;   if char <> <nl>
     se  w2     10     ;   then goto a;
     jl.       -4      ;   goto first;
     jl.        h1.    ; end;
h28: sn. w2    (f37.)  ;   if byte = num char then exit(return);
     jl      x3+10     ;

                       ; erasing:
     rl  w1     0      ;   w1 := cur;
     al  w0     g4     ;   byte := <sp>;
     al  w2  x1        ;   cur1 := cur;
                       ; step distance:
h23: bl  w3  x2+1      ;   byte1 := byte(cur1 + 1);
     sz  w3    g21+g22 ;   if byte1 <> (<nongr> or <comp>)
     sn. w2    (f35.)  ;   or cur1 = bottom
     jl.        h24.   ;   then goto move;
     al  w2  x2+1      ;   cur1 := cur1 + 1;
     jl.        h23.   ;   goto step distance;
                       ; move:
h24: al  w3  x1        ;   
     ws  w3     4      ;   distance := cur - cur1;
     hs. w3     i1.    ;
                       ; test move:
h29: sn. w2    (f35.)  ;   if cur1 = bottom
     jl.        h30.   ;   then goto set new bottom;
     al  w2  x2+1      ;   cur1 := cur1 + 1;
     bl  w3  x2        ;
i1 = k+1               ; integer distance:
     hs  w3  x2+0      ;   byte(cur1 + distance) := byte(cur1);
     jl.        h29.   ;   goto test move;
                       ; set new bottom:
h30: ba. w2     i1.    ;   bottom := bottom + distance;
     rs. w2     f35.   ;
     sn  w1  x2        ;   if cur = bottom
     jl.        h3.    ;   then goto store;
     al  w1  x1+1      ;   cur := cur + 1;
     jl.        h18.   ;   goto store comp;

e.                     ; end special;
e.                     ; end input line;
\f


; rc 76.05.17                                 editor i, tape 2, page ...18...

     ; procedure alarm (message text);
     ;   comment: for normal alarms the current value of the correction
     ;   number and the message text are printed on the message docu-
     ;   ment. for the editor error, the call address (the value of w1)
     ;   is printed in stead of the correction number. in on-line
     ;   mode control is transfered to start preprocessing. in off-
     ;   line mode the editing is terminated.

b.   h1, i1            ; begin
w.                     ;
                       ; connect source:
c34: rl. w2     f56.   ;   w2:= cur obj;
     sn  w0  3
     am      g46-g39        ;   mess:=<:source unknown:>
     am      g39-g33   ;   mess:= mess 7; goto save pointer;
                       ;
     am            -1  ; position not found:
c23: am     g33-g34+1  ;   mess:= mess1; goto save pointer;
                       ;
                       ; back space error:
c24: am     g34-g35    ;   mess:= mess 2; goto save pointer;
                       ;
                       ; obj to big:
c27: al. w0     g35.   ;   mess:= mess 3;
     ds. w2     f56.   ; save pointer: save (cur source, cur obj);
     jl.        h1.    ;   goto print;
                       ;
                       ; editor error:
c29: rs. w1     f69.   ;   corr no:= call address;
     am      g36-g42   ;   mess:= editor error; else
                       ; work area:
c37: al  w0  g42-g37   ;   mess:= work area;
     al  w1     2      ;   if work alarm
     sn  w0  g42-g37   ;   then bypass close object;
     hs. w1     f92.   ;
     al  w1     1      ;
     hs. w1     f70.   ;   opr mode:= off line;
     am        (0)     ;   goto print;
                       ;
                       ; syntax:
c25: am      g37-g41   ;   mess:= mess5; goto print;
                       ; character:
c36: am      g41-g44   ;   mess:= character; goto print;
                       ;
                       ; correction area
c38: am      g44-g38   ;    mess := corr. area; goto print;
                       ;
                       ; line to long:
c26: al. w0     g38.   ;   mess:= mess 6;
                       ; print:
h1:  rs. w0     i1.    ;
     al. w2     g40.   ;
     jl. w3     c17.   ;   printtext(<:***edit:>);
     rl. w0     f69.   ;
     jl. w3     c16.   ;   print value (corr no);
     32<12+5           ;
     rl. w2     i1.    ;
     jl. w3     c17.   ;   print text (mess);
     rl. w2     i1.    ;   if <position not found> during
     sn. w2     g33.   ;     string search then
     jl. w3     c41.   ;     print searched string;
     bl. w0     f70.   ;
     rl. w2    f56.   ;   w2:=cur. obj.
     se  w0     0      ;   if opr mode = off line
     jl.        c18.   ;   then goto error terminate editor;
     jl.        c20.   ;   goto start preprocessor;
i1:      0             ;
e.                     ; end alarm;
\f


; rc 1.11.70                                 editor i, tape 2, page 19.


c16: ; procedure print value;
     ;   w0: value
     ;   w1:  -
     ;   w2:  -
     ;   w3: return
     ;   return: <layout>

     ; comment: the procedure just transferes the call to 
     ; out integer on current output;

b.   i2                ; begin
w.                     ;
     am.       (f77.)  ;
     jl         h32-2  ;   out integer current(w0);
                       ; end print value;
c17: ; procedure print text;
     ;   w0: destroyed
     ;   w1: destroyed
     ;   w2: addr / destroyed
     ;   w3: return / destroyed
     ;
     ;   comment: a string terminated by <0> is printed
     ;   on the message document;
                       ; begin
     rs. w3     i2.    ;   save( return);
     al  w0  x2        ;   w0:= addr;
     am.       (f77.)  ;   
     jl  w3     h31-2  ;   outtext current(w0);
     al  w2     0      ;
     am.       (f77.)  ;
     jl  w3     h33-2  ;   outend current(0);
     jl.       (i2.)   ;   exit(saved return);
i2:  0                 ;
e.                     ; end print text;

c39: ;print parity alarm
     ; called from special1 or special2 in
     ; input line (c1)
     ; w0   -        / unchanged
     ; w1 descriptor / unchanged
     ; w2 par.char.  / unchanged
     ; w3 return-10  / unchanged
b. i1
w.
     ds. w1     i0.     ;   begin
     la. w2    f18.     ;   byte := <sub>;
     ds. w3     i1.     ;   save registers;
     rl. w2    f77.     ;   get fp-base;
     al. w0    g45.     ;   get text addr
     jl  w3  x2+h31-2   ;   outtext(parity error on);
     rl. w3     i0.     ;   
     al  w0  x3+h1+2    ;   get document name address
     jl  w3  x2+h31-2   ;   outtext(document name);
     al  w2     10      ;
     am.       (f77.)   ;
     jl  w3    +h33-2   ;   outend(nl);
     dl. w1     i0.     ;   restore registers;
     dl. w3     i1.     ;
     jl      x3+10      ;   return; end;
     
     0, i0:0, 0, i1: 0  ;   saved registers

e.
\f


; rc 1.11.70                                 editor i, tape 2, page 20.

f1:                    ; byte table:
h.

g24+0    , g22+1    , g22+2    , g22+3    ; skipped, non gr , non gr , non gr 

g22+4    , g22+5    , g22+6    , g22+7    ; non gr , non gr , non gr , non gr 

g3=8+g20            , g1=10+g20           ; <bs>   , <ht>   , <nl>   , <vt>
   g3    , g22+9    ,   g1     , g22+11   ; spec   , non gr , spec   , non gr

           g2=13+g20                      ; <ff>   , <cr>   ,
g22+12   ,   g2     , g22+14   , g22+15   ; non gr , spec   , non gr , non gr

                                          ;        , red rb , black rb
g22+16   , g22+17   , g22+18   , g22+19   ; non gr , non gr , non gr , non gr

g22+20   , g22+21   , g22+22   , g22+23   ; non gr , non gr , non gr , non gr

           g7=25+g20, g15=26+g20          ;          <em>   , <sub>
g22+24   ,   g7     ,   g15    , g22+27   ; non gr , spec   ,  spec  , non gr

                                          ;                          , <us>
g22+28   , g22+29   , g22+30   , g22+31   ; non gr , non gr , non gr , non gr

g4=32+g23, g6=33                          ; <sp>   , <bar>  ,
  g4     ,   g6     ,     34   ,     35   ; blind  ,        ,        ,

      36 ,     37   ,     38   ,     39   ;        ,        ,        ,

      40 ,     41   ,     42   ,     43   ; (      , )      ,        , +

      44 ,     45   ,     46   ,     47   ;  ,     , -      , .      , /

      48 ,     49   ,     50   ,     51   ; 0      , 1      , 2      , 3

      52 ,     53   ,     54   ,     55   ; 4      , 5      , 6      , 7

      56 ,     57   ,     58   ,     59   ; 8      , 9      , :      , ;

      60 ,     61   ,     62   ,     63   ; <      , =      , >      ,
\f


; rc 17.6.69                                 editor i, tape 2, page 21.

     64   ,     65   ,     66   ,     67   ;        , a     , b     , c

     68   ,     69   ,     70   ,     71   ; d      , e      , f      , g
 
     72   ,     73   ,     74   ,     75   ; h      , i      , j      , k

     76   ,     77   ,     78   ,     79   ; l      , m      , n      , o

     80   ,     81   ,     82   ,     83   ; p      , q      , r      , s

     84   ,     85   ,     86   ,     87   ; t      , u      , v      , w

     88   ,     89   ,     90   ,     91   ; x      , y      , z      , æ

                                  g5=95    ;
     92   ,     93   ,     94   ,     95   ; ø      , å      , &      , 
     96   ,     97   ,     98   ,     99   ;        , a      , b      , c

     100  ,     101  ,     102  ,     103  ; d      , e      , f      , g

     104  ,     105  ,     106  ,     107  ; h      , i      , j      , k

     108  ,     109  ,     110  ,     111  ; l      , m      , n      , o

     112  ,     113  ,     114  ,     115  ; p      , q      , r      , s
   
     116  ,     117  ,     118  ,     119  ; t      , u      , v      , w
     120  ,     121  ,     122  , g20+123  ; x      , y      , z      , æ
 g20+124  , g20+125  ,     126             ; ø      , å      ,

g23+g24+127                                ; <del> blind skipped 



m.rc 76.05.17, editor i, tape 2. 


\f


▶EOF◀