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

⟦65b66b81a⟧ TextFile

    Length: 26880 (0x6900)
    Types: TextFile
    Names: »kkslrtxt«

Derivation

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

TextFile

(slangred=slang fpnames list.no xref.no type.yes;
scope user slangred;
     )                 ;
\f



s.   a21,b40,j40       ;
w.                     ;
     k=h55             ;
b0:  0,0               ;
     al  w1  x1+2      ;
     rs. w1     b0.    ; fp base+2
     al. w3     b1.    ;
     al  w3  x3 -14    ;
     al  w0     0      ;
     jd         1<11+0 ; set interrupt
     jl.        j31.   ;
b1:  al  w2     10     ;
     jl. w3     h26.-2 ;
     al  w2     0      ;
b2:  rl. w0  x2+b1.-14 ;
     sn  w2     10     ;
     ws. w0     b0.    ;
     jl. w3     h32.-2 ;
     1<23+32<12+8      ;
     al  w2  x2+2      ;
     sh  w2     12     ;
     jl.        b2.    ;
     al  w2     10     ;
     jl. w3     h33.-2 ;
     dl. w1     b1.-12 ;
     dl. w3     b1.-8  ;
     jl.        (b1.-4);

b3:  al  w2     25     ;
     jl. w3     h34.-2 ;
     al. w1     h21.   ; curr out zone descr
     al. w2     a16.   ;
     jl. w3     h30.   ; unstack output-zone
     rl. w3     a18.   ;
     jl. w2     j33.   ; test punch
     al. w0     a17.   ;
     jl. w3     h31.-2 ;
     jl. w3     h30.-4 ; unstack in-zone
b4:  al  w2     10     ;
     jl. w3     h34.-2 ;
     al  w2     0      ;
     jl.        h7.    ;
a0:  5                 ; space indtil ordre
a1:  23                ; space indtil <;>
a2:  100               ; antal space for hele linien
a3:  0                 ; er 0 efter semikolon
                       ; og 2 efter NL FF og 1 efter EM
a4:  0                 ; antal udskrevne tegn
a5:  0                 ; adresse på sidst læste tegn
a6:  0                 ; adresse på aktuelt tegn
a7:  8                 ; antal tegn til w-reg
a8:  12                ; antal tegn til x-delen
a9:  0                 ; adr. på hak i :>
a10: 0                 ; boolean for ;; og ;.
a11: 0                 ; sem.no=0 og sem.yes=1
a16: 0,r.4             ; stack chain for stack curr. outputzone
a17: <:<10>slangred slut <0>:>;
a18: 0                 ; adr of outputdoc
a19: 0                 ; adr of inputdoc
a21: 16                ; antal tegn til adressedelen
\f


     ;; giveupaction for io
     ;  reg   call           retur
     ;  w0    answer addr
     ;  w1    zone descr addr
     ;  w2    share descr addr
     ;  w3    status word
b.   g5,f5             ;
w.                     ;
     am         a18-a19;
j30: rl. w2     a19.   ; addr of duc
     ds. w1     g1.    ;
     ds. w3     g3.    ;
     al. w1     h21.   ; curr out zone descr
     al. w2     a16.   ;
     jl. w3     h30.   ; unstack curr output
     jl. w3     h30.-4 ; unstck curr input
     dl. w2     g3.    ;
     jl.        h7.    ;
g0:  0                 ;
g1:  0                 ;
g2:  0                 ;
g3:  0                 ;
e.                     ;
a20:                   ;
\f


     ;; parametercheck
b.   f10,g10           ;
w.                     ;
j31: bl  w0  x2+10     ;
     se  w0     6      ; if no source then
     jl.        f0.    ; goto f0
     rs. w2     j31.   ;
     al. w1     h21.   ; curr. out zone descr addr
     al. w2     a16.   ; stack chain addr
     jl. w3     h29.   ; stack outputzone
     al  w2     0      ;
     al. w3     j30.-2 ;
     ds  w3  x1+h2+2   ;
     rl. w2     j31.   ;
     al  w2  x2+2      ; source name
     rs. w2     a18.   ;
     jl. w3     h28.-2 ; connect zone
     se  w0     0      ; if ok.no then
     jl.        j32.   ; goto j32
     rl. w3     a18.   ;
     jl. w2     j33.   ; test punch
     rl. w2     j31.   ;
     ba  w2  x2+1      ;
f0:  ba  w2  x2+1      ; next param
     bz  w0  x2+1      ; 
     se  w0     10     ; if no object
     jl.        f1.    ; then goto f1
     rl  w1  x2+2      ;
     se. w1     (g1.)  ; if -,parm=<:sem:> then
     jl.        f5.    ; goto f5.
     rl  w1  x2+10     ;
     se. w1     (g2.)  ; hvis der ikke følger et punkt then
     jl.        f5.    ; goto f5
     ba  w2  x2+1      ; else
     rl  w1  x2+2      ; if
     sn. w1     (g3.)  ; next param=<:no:> then
     jl.        f6.    ; goto f6.
     sn. w1     (g4.)  ; else if <:yes:>
     jl.        f7.    ; goto f7
f8:  al. w2     a16.   ;
     al. w1     h21.   ;
     jl. w3     h30.   ; unstack curr out
     al. w0     g0.    ;
     jl. w3     h31.-2 ; fejludskrift
     al  w0  x2+2      ;
     bz  w1  x2+1      ;
     sn  w1     10     ;
     jl. w3     h31.-2 ;
     jl.        b4.    ; goto slut
f7:  al  w1     1      ;
     rs. w1     a11.   ; set sem.yes
f6:  ba  w2  x2+1      ;
     bz  w1  x2+1      ;
     se  w1     10     ; if no object
     jl.        f1.    ; goto f1
f5:  rs. w2     j31.   ;
     jl. w3     h29.-4 ; stack curr in-zone
     al  w2     0      ;
     al. w3     j30.   ;
     ds  w3  x1+h2+2   ;
     rl. w2     j31.   ;
     al  w2  x2+2      ; object name
     rs. w2     a19.   ;
     jl. w3     h27.-2 ; connect inputzone
     se  w0     0      ; if ok.no then
     jl.        j32.   ; goto j32
     rl. w2     j31.   ;
     ba  w2  x2+1      ; next param
f1:  al  w3     0      ;
f2:  bl  w0  x2        ;
     sh  w0     2      ;
     jl.        f4.    ; goto f4
     bz  w0  x2+1      ;
     se  w0     4      ; if -,integer 
     jl.        f8.    ; then goto f8 (fejludskrift)
     rl  w0  x2+2      ; else get param
     rs. w0  x3+a0.    ;
     al  w3  x3+2      ;
     ba  w2  x2+1      ;
     sh  w3     4      ;
     jl.        f2.    ;
f4:  dl. w2     a1.    ;
     rl. w3     a2.    ; sorter indholdw6et af a0,a1 og a2
     sh  w2  x1        ;
     rx  w1     4      ;
     sh  w3  x2        ;
     rx  w2     6      ;
     sh  w2  x1        ;
     rx  w1     4      ;
     ds. w2     a1.    ;
     rs. w3     a2.    ;
     al  w1  x1+4      ; antal space til reg. del
     al  w2  x1+4      ; antal space til adr. del
     ds. w2     a8.    ;
     jl.        b6.    ;
g0:  <:<10>*** param to slangred  <0>:>;
g1:  <:sem:>           ;
g2:  8<12+10           ;
g3:  <:no<0>:>         ;
g4:  <:yes:>           ;
e.                     ;
\f


     ;; fejludskrift for connect zone
b.   f10,g12           ;
w.                     ;
g4:  <:  name format illegal<10><0>:>;
g5:  <:  not allowed<10><0>:>;
g6:  <:  convention error<10><0>:>;
g7:  <:  not user, non exist<10><0>:>;
g8:  <:  malfunctioning<10><0>:>;
g9:  <:  no more resources in your process<10><0>:>;
h.                     ;
g10: 0,0,g8-g9,g7-g9,g6-g9,g5-g9,g4-g9;
w.                     ;
j32: am         (0)    ;
     bl. w1     g10.   ; text adresse
     al. w0  x1+g9.    ;
     rs. w0     g0.    ;
     al. w1     h21.   ;
     al. w2     a16.   ;
     jl. w3     h30.   ; unstack outputzone
     rl. w2     j31.   ;
     al  w0  x2+2      ;
     jl. w3     h31.-2 ; udskriv entry name
     rl. w0     g0.    ;
     jl. w3     h31.   ; udskriv fejl
     jl.        b4.    ; goto slut
g0:  0                 ;
e.                     ;
j33: jl      x2 
      ;
c.   -1                ;
\f


     ;; test punch
     ;  reg      call        return
     ;  w0                   uaendret
     ;  w1                      -
     ;  w2      returadr     udef
     ;  w3      entryadr       -
     ; tester om outputduc. er puncher, idet der da laves
     ; 150 nulkarakterer
b.   g12,f5            ;
w.                     ;
j33: ds. w1     g1.    ;
     ds. w3     g3.    ;
     sn  w3     0      ; if no address then
     jl.        f3.    ; goto f3
     al. w1     g4.    ;
     jd         1<11+42; lookupentry
     se  w0     0      ; if result<>0 then
     jl.        f1.    ; goto f1  (test note)
f0:  bz  w2  x1+1      ; kind
     se  w2     12     ; if kind<>12 then
     jl.        f3.    ; goto f3.
     al. w2     g9.    ;
     al. w3     g10.   ; first and last address
     ds. w3     g8.    ;
     al  w3  x1+2      ;
     al. w1     g5.    ;
     jd         1<11+8 ; reserve punch
     jd         1<11+16;
     al. w1     g11.   ;
     jd         1<11+18;
     rl. w2     g12.   ;
     se  w2     0      ; if g12<>0 then
     jd         1<11+10; release punch
     rs. w3     g12.   ; else lad g12<>0
     jl.        f3.    ; retur
f1:  rl  w3  x3        ; 
     al. w1     h52.+2 ; first note
f2:  sn  w3     (x1-2) ; if entry = note then goto 
     jl.        f0.    ; goto f0
     al  w1  x1+22     ;
     sh. w1     h53.   ; 
     jl.        f2.    ; goto f2
f3:  dl. w1     g1.    ;
     jl.        (g2.)  ;
g0:  0                 ;
g1:  0                 ;
g2:  0                 ;
g3:  0                 ;
g4:  0,r.10            ;
g5:  5<12+2            ;
g7:  0                 ;
g8:  0                 ;
g9:  0,r.50            ;
g10:                   ;
g11: 0,r.8             ;
g12: 0                 ;
e.                     ;
z.                     ;
\f


     ;; læseprocedure
     ; læser forfra på en linie indtil 1. tegn er forskellig
     ; fra space, er dette tegn (nl eller ff udskrives det
     ; og der startes forfra igen, ellers læses og gemmes
     ; tegnene i a20 og fremefter indtil der mødes enten et 
     ; semikolon eller em, nl eller ff. ved retur er a5
     ; adresse på det sidst læste tegn,
     ; og a3 er 0 hvis det er et semikolon og 1 hvis det er
     ; nl eller ff og 2 hvis det er em, a4 er lig med 0
b.   f15,g10 w.        ;
j0:  ds. w1     g1.    ;
     ds. w3     g3.    ;
f0:  ld  w1     -65    ; nulstil
     ds. w1     a5.    ; a4 og a5
     rs. w0     a3.    ; og a3
     al. w0     a20.   ;
     rs. w0     a6.    ;
f1:  jl. w3     h25.-2 ; læs et tegn
     se  w2     0      ; if nulkarakter or
     sn  w2     32     ; tegn= space then
     jl.        f1.    ; goto f1
f2:  sn  w2     59     ; if semikolon then
     jl.        f3.    ; goto f3
     sn  w2     25     ; if em then
     jl.        f4.    ; goto f4 else
     se  w2     10     ; if nl or
     sn  w2     12     ; ff then
     jl.        f5.    ; goto f5 else
     sn  w2     60     ; if < then
     jl.        f10.   ; goto test tekststreng
f7:  hs  w2     (0)    ; gem tegn
     ba. w0     1      ; tæl i pointer
     jl. w3     h25.-2 ; læs næste
     jl.        f2.    ; goto test
f3:  am         -1     ; semikolon
f4:  am         -1     ; )em
f5:  al  w3     2      ; nl og ff
     rs. w3     a3.    ;
     se. w0     a20.   ; if if tegn før ;,em,ff,nl then
     jl.        f8.    ; goto f8
     se  w3     2      ; else if tegn<>ff and tegn<>nl then
     jl.        f6.    ; goto f6
     jl. w3     h26.-2 ; else udskriv tegnet og
     jl.        f0.    ; start forfra
f6:  sn  w2     25     ; if EM then
     jl.        b3.    ; goto b3
f8:  hs  w2     (0)    ; gem tegnet
     rs. w0     a5.    ; og sæt adr. på sidst læste tegn
     dl. w1     g1.    ;
     dl. w3     g3.    ;
     jl      x3        ;
g0:  0                 ;
g1:  0                 ;
g2:  0                 ;
g3:  0                 ;
\f



f10: hs  w2     (0)    ; gem tegn
     ba. w0     1      ;
     jl. w3     h25.-2 ; læs næste tegn
     se  w2     58     ; if not kolon then
     jl.        f7.    ; goto f7
f11: hs  w2     (0)    ;
     ba. w0     1      ;
f12: jl. w3     h25.-2 ; næste tegn
     hs  w2     (0)    ;
     ba. w0     1      ;
     se  w2     58     ; if -,kolon then
     jl.        f12.   ; goto f12
     jl. w3     h25.-2 ;
     se  w2     62     ; if -,> then
     jl.        f11.   ; goto f11
     rs. w0     a9.    ;
     jl.        f7.    ;

e.                     ;
\f


     ;; find tekst
     ; hopper til
     ; returadr. + 0 hvis (a6) og fremefter er ordre
     ;     -     + 2    -   -   -     -      - label
     ;     -     + 4    -   -   -     -      - b.,...
     ;     -     + 6    -   -   -     -      - semik.
     ;     -     + 8    -   -   -     -      - (:
     ;     -     +10    -   -   -     -      - <:
     ;     -     +12    -   -   -     -      - andet
     ; ved retur peger w1 ofte på det sidste tegn og
     ; w0 og w2 er udefinerede
b.   f11,g10 w.        ;
j1:  rs. w3     g3.    ;
     rl. w1     a6.    ; hent tegn
     bz  w0  x1        ; hent 1. tegn
     jl. w3     j3.    ; test lille bogstav
     jl.        f3.    ; if ikke lille bogstav then goto f3
     al  w1  x1+1      ; else hent
     bz  w0  x1        ; næste tegn
     jl. w3     j3.    ; if ikke lille bogstav then
     jl.        f0.    ; goto f0
     jl.        f11.   ; else goto f11= retur0
f0:  sn  w0     46     ; if punkt then
     jl.        f9.    ; retur4
     sh  w0     57     ; if ikke
     sh  w0     47     ; tal then
     jl.        f5.    ; retur12
f1:  al  w1  x1+1      ; else
     bz  w0  x1        ; 
     sh  w0     57     ; if ikke tal
     sh  w0     47     ; then
     jl.        f2.    ; goto f2
     jl.        f1.    ; else goto f1
f2:  sn  w0     58     ; if kolon then
     jl.        f10.   ;retur2
     jl.        f5.    ; else retur12 andet
f3:  sn  w0     59     ; if semikolon then
     jl.        f8.    ; retur6
     sn  w0     40     ; else if venstreparentes then
     jl.        f4.    ; goto f4
     se  w0     60     ; else if -,venstrehak then
     jl.        f5.    ; retur12
     bz  w0  x1+1      ;
     sn  w0     58     ; if næste tegn er kolon then
     jl.        f6.    ; retur10
     jl.        f5.    ; else retur12
f4:  bz  w0  x1+1      ;
     sn  w0     58     ; if næste tegn er kolon then
     jl.        f7.    ; retur8
f5:  am         2      ; retur12   andet
f6:  am         2      ; retur10   <:
f7:  am         2      ; retur8    (:
f8:  am         2      ; retur6    semikolon
f9:  am         2      ; retur4    b.,e.,s.,...
f10: am         2      ; retur2    label
f11: al  w3     0      ; retur0    ordre
     wa. w3     g3.    ;
     jl      x3        ;
g3:  0                 ;
e.                     ;
\f


     ;; test lille bogstav: hopper til returadr.+2
     ; hvis w0 indeholder isoværdien for et lille bogstav
b.   f10,g10 w.        ;
j3:  sl  w0     97     ;
     sl  w0     126    ;
     jl      x3        ;
     jl      x3+2      ;
e.                     ;



     ;; udskriver w0-(a4) space
     ; ved retur er alle registre uændrede
b.   f10,g10 w.        ;
j4:  ds. w1     g1.    ;
     ds. w3     g3.    ;
     ws. w0     a4.    ; træk antallet af allerede udskrevne
f0:  sh  w0     0      ; tegn fra det antal w0 indeholder
     jl.        f1.    ; retur
     al  w2     32     ; space
     jl. w3     h26.-2 ;
     jl. w3     j8.    ; tæl i antal udskrevne tegn
     bs. w0     1      ;
     jl.        f0.    ;
f1:  dl. w1     g1.    ;
     dl. w3     g3.    ;
     jl      x3        ;
g0:  0                 ;
g1:  0                 ;
g2:  0                 ;
g3:  0                 ;
e.                     ;
\f


     ;; udskriver fra (w0) til (a5)
b.   f10,g10 w.        ;
j6:  rl. w0     a6.    ; ved hop til j6 initialiseres w0 her
j5:  ds. w1     g1.    ;
     ds. w3     g3.    ;
     rl. w1     a5.    ; adr. på sidste tegn
     bz  w2  x1 
      ;
f0:  sl  w0  x1        ; if adr. på 1. tegn>=adr. på sidste
     jl.        f1.    ; then goto f1
     al  w1  x1 -1     ; else tæl ned i sidste adr. på sidste 
     bz  w2  x1        ; tegn. Hent tegn
     sn  w2     32     ; if tegn=space then
     jl.        f0.    ; goto f0
f1:  sn  w2     59     ;
     jl.        f2.    ;
     jl. w3     j7.    ; udskriv
     rl. w3     a3.    ;
     sh  w3     0      ; if semikolon then
     jl.        f2.    ; goto f2
     rl. w3     a11.   ; else get sem.mode
     se  w3     1      ; if sem.no then
     jl.        f3.    ; goto f3
f2:  rl. w0     a1.    ; else udskriv evt. maglende space
     jl. w3     j4.    ;
     al  w2     59     ;
     jl. w3     h26.-2 ; udskriv semikolon
f3:  dl. w1     g1.    ;
     dl. w3     g3.    ;
     jl      x3        ;
g0:  0                 ;
g1:  0                 ;
g2:  0                 ;
g3:  0                 ;
e.                     ;
\f


     ;; udskriver fra x0 til x1
     ; og tæller op i a4
     ; ved retur eralle registre uændrede
b.   f10,g10 w.        ;
j7:  ds. w1     g1.    ;
     ds. w3     g3.    ;
f0:  sh. w0     (g1.)  ;
     jl.        f1.    ;
     jl.        f2.    ;
f1:  bz  w2     (0)    ; hent tegn
     jl. w3     h26.-2 ; udskriv
     jl. w3     j8.    ; tæl i a4
     ba. w0     1      ;
     jl.        f0.    ;
f2:  dl. w1     g1.    ;
     dl. w3     g3.    ;
     jl      x3        ;
g0:  0                 ;
g1:  0                 ;
g2:  0                 ;
g3:  0                 ;
e.                     ;
\f


     ;; tæller i a4
     ; ved retur er w0,w1 og w2 uændrede
b.   f10,g10 w.        ;
j8:  rs. w3     g3.    ;
     rl. w3     a4.    ;
     al  w3  x3+1      ;
     rs. w3     a4.    ;
     jl.        (g3.)  ;
g3:  0                 ;
e.                     ;




     ;; finder 1. tegn som er forskellig fra space efter
     ; den adr. som w0 peger på
     ; ved retur er alle registre uændrede
b.   f10,g10 w.        ;
j9:  ds. w1     g1.    ;
f0:  bz  w1     (0)    ;
     se  w1     32     ; if not space then
     jl.        f1.    ; goto f1
     ba. w0     1      ; else næste
     jl.        f0.    ;
f1:  rs. w0     a6.    ; 
     dl. w1     g1.    ;
     jl      x3        ;
g0:  0                 ;
g1:  0                 ;
e.                     ;
\f


     ;; test FF NL, hvis det tegn (a6) peger paa er NL eller FF
     ; udskrives space og semikolon og der hoppes til retur2
     ; ellers retur1
b.   f10,g10 w.        ;
j16: ds. w1     g1.    ;
     ds. w3     g3.    ;
     bz. w2     (a6.)  ;
     se  w2     10     ; if NL or
     sn  w2     12     ; FF then
     jl.        f0.    ; goto f0
     jl.        f1.    ; else goto f1  (retur1)
f0:  rl. w3     a3.    ;
     sh  w3     0      ; if semikolon then
     jl.        f2.    ; goto f2
     rl. w3     a11.   ; else get sem.mode
     se  w3     1      ; if if sem.no then
     jl.        f3.    ; goto f3
f2:  rl. w0     a1.    ; udskriv a1
     jl. w3     j4.    ; space
     al  w2     59     ;
     jl. w3     h26.-2 ; udskriv semikolon
f3:  am         2      ; retur2
f1:  al  w3     0      ; retur1
     wa. w3     g3.    ;
     dl. w1     g1.    ;
     rl. w2     g2.    ;
     jl      x3        ;
g0:  0                 ;
g1:  0                 ;
g2:  0                 ;
g3:  0                 ;
e.                     ;
\f


     ;; den centrale løkke
b6:  jl. w3     j0.    ; læs
b7:  rl. w2     a10.   ; tæl 1 ned i a10
     ld  w3     -2     ; tæl 1 ned i de 2 bagerste bit
     ls  w2     -1     ; hvis de er <>0, og tæl 1 ned i
     ls  w3     -1     ; bit21-bit22, hvis de er <> 0
     ld  w3     2      ;
     rs. w2     a10.   ;
     jl. w3     j1.    ; find art
     jl.        j10.   ; ordre
     jl.        j11.   ; label
     jl.        j12.   ; b.s.e. ...
     jl.        j13.   ; semikolon
     jl.        j14.   ; parenteskolon
     jl.        j15.   ; hak kolon
     rl. w0     a0.    ; andet
     jl. w3     j4.    ; udskriv space
     jl. w3     j6.    ; tøm buffer
b8:  rl. w3     a3.    ;
     sn  w3     1      ; if næste tegn er EM then
     jl.        b3.    ; goto stop
     se  w3     2      ; if ikke NL or FF then
     jl.        b9.    ; goto b9
     bz. w2     (a5.)  ; sidste tegn
b10: jl. w3     h26.-2 ; udskrives
     jl.        b6.    ; ny linie
\f


b9:  al. w0     a20.   ; kopiering og linieafkortning
     al  w3     0      ; nulstil tegntæller
b11: rs. w3     a5.    ;
     jl. w3     h25.-2 ; læs et tegn
b5:  hs  w2     (0)    ;
     rs. w0     a6.    ;
     ba. w0     1      ;
     se  w2     25     ; if EM or
     sn  w2     32     ; space then
     jl.        b12.   ; goto b12
     se  w2     10     ; else if NL or
     sn  w2     12     ; FF then goto b12
     jl.        b12.   ;
     rl. w3     a5.    ; tæl 1 op i tegn tæller
     al  w3  x3+1      ;
     jl.        b11.   ; læs næste tegn
b12: rl. w3     a4.    ;
     wa. w3     a5.    ;
     sh. w3     (a2.)  ; if a4+a5<=a2 then
     jl.        b14.   ; goto b14
     al  w2     10     ; else udskriv NL
     jl. w3     h26.-2 ;
     al  w3     0      ; nulstil
     rs. w3     a4.    ; a4
     rl. w3     a10.   ; 
     sl  w3     3      ; if mode.;. then
     jl.        b13.   ; goto b13
     se  w3     0      ; else
     am         -2     ; if mode.;; then load a0 else
     rl. w0     a1.    ; load a1.
     jl. w3     j4.    ; udskriv space
b13: al  w2     59     ; udskriv
     jl. w3     h26.-2 ; semikolon
     jl. w3     j8.    ;
b14: al. w0     a20.   ;
     rl. w1     a6.    ; 1. og sidste tegn
     al  w1  x1 -1     ;
     jl. w3     j7.    ; udskriv det læste ord
     al  w1  x1+1      ;
     bz  w2  x1        ; sidste tegn
     sn  w2     25     ; if EM then
     jl.        b3.    ; goto b3
     se  w2     32     ; if FF or NL then
     jl.        b10.   ; goto b10
     hs. w2     a20.   ; else gem tegn og læs videre
     al. w0     a20.+1 ;
     al  w3     1      ; sæt antal tegn til 1
     jl.        b11.   ;
\f


     ;; ordre
b.   g10,f10 w.        ;
j10: rl. w0     a0.    ;
     jl. w3     j4.    ; udskriv evt. space
     rl. w0     a6.    ; udskriv
     jl. w3     j7.    ; to små bogstaver
     al  w0  x1+1      ;
     bz  w2     (0)    ; næste tegn
     se  w2     46     ; if -,punkt then
     jl.        f0.    ; goto f0
     jl. w3     h26.-2 ; else udskriv det
     ba. w0     1      ;
     jl. w3     j8.    ; tæl i a4
f0:  jl. w3     j9.    ; skip space
     rl. w1     a6.    ; næste tegn
     bz  w2  x1        ;
     se  w2     119    ; if -, w then
     jl.        f1.    ; then goto f1
     rl. w0     a7.    ; else udskriv
     jl. w3     j4.    ; space
     al  w0  x1        ;
     al  w1  x1+1      ;
     jl. w3     j7.    ; udskriv og tæl
     al  w0  x1+1      ;
     jl. w3     j9.    ; skip space
f1:  rl. w0     a8.    ;
     jl. w3     j4.    ; udskriv space
     rl. w1     a6.    ;
     bz  w2  x1        ; næste tegn
     se  w2     120    ; if næste tegn<>x then
     jl.        f2.    ; goto f2.
     al  w0  x1        ;
     al  w1  x1+1      ;
     jl. w3     j7.    ; udskriv xi
     al  w0  x1+1      ;
     jl. w3     j9.    ; skip evt space
     rl. w1     a6.    ;
     bz  w2  x1        ; w2:=næste tegn
     se  w2     43     ; if næste tegn <> + then
     jl.        f2.    ; goto f2
     al  w0  x1        ;
     jl. w3     j7.    ; skriv +
     al  w0  x1+1      ;
     jl. w3     j9.    ; skip space
f2:  rl. w0     a21.   ;
     jl. w3     j4.    ; udskriv evt space
     jl. w3     j6.    ; udskriv rest
     jl.        b8.    ;
e.                     ;
\f


     ;; label 
b.   f10,g10 w.        ;
j11: rl. w0     a6.    ;
     jl. w3     j7.    ; udskriv label
     al  w0  x1+1      ;
     jl. w3     j9.    ; skip space
     jl. w3     j16.   ; if -,FF or -,NL then
     jl.        b7.    ; retur til ny søgning
     jl.        b8.    ; else goto b8.
e.                     ;


     ;; b.,c.,e.,f.,h.,i.,j.,m.,n.,p.,s.t.,...
b.   f10,g10 w.        ;
j12: rl. w0     a6.    ;
     bz  w2     (0)    ; 1. char
     jl. w3     j7.    ; udskriv de 2 tegn
     al  w0  x1+1      ;
     jl. w3     j9.    ; skip space
     jl. w3     j16.   ; if -,FF or -,NL then
     jl.        f0.    ; goto f0
     jl.        b8.    ; else goto b8
f0:  sn  w2     109    ; if m. then
     jl.        f1.    ; goto f1
     sn  w2     99     ; if c. then
     jl.        f1.    ; goto f1
     sn  w2     112    ; if p. then 
     jl.        f1.    ; goto f1.
     jl.        b7.    ; else goto b7
f1:  rl. w0     a0.    ; udskriv space
     jl. w3     j4.    ;
     jl. w3     j6.    ; tøm buffer
     jl.        b8.    ; goto b8
e.                     ;
\f


     ;; semikolon
b.   f10,g10           ;
w.                     ;
j13: am         -2000  ;
     jl. w3     h25.+1998; læs næste tegn
     rl. w0     a0.    ;
     sn  w2     59     ; if semikolon then mode.;;
     jl.        f1.    ; goto f1
     sn  w2     46     ; if punkt then mode.;.
     jl.        f0.    ; goto f0
     rl. w0     a1.    ;
     rl. w1     a10.   ;
     sh  w1     0      ; if -,(mode.;; or mode.;.) then
     jl.        f2.    ; goto f2
     rl. w0     a0.    ; else 
     sl  w1     3      ; if mode.;. then
f0:  am         6      ; lad  a10:=2.1000
f1:  am         2      ; else a10:=2.0010
f2:  al  w3     0      ; a10:=0
     rs. w3     a10.   ;
     sh  w3     3      ; if -,mode.;. then
     jl. w3     j4.    ; udskriv space
     al  w0  x2        ; gem det læste tegn
     al  w2     59     ; udskriv
     am         -2000  ;
     jl. w3     h26.+1998; semikolon
     jl. w3     j8.    ;
     al  w2     (0)    ; det læste tegn
     se  w2     10     ; if NL or
     sn  w2     12     ; FF then
     jl.        b10.   ; goto b10
     sn  w2     25     ; else if EM then
     jl.        b3.    ; goto stop
     al  w3     0      ; reset
     rs. w3     a5.    ; a5
     al. w0     a20.   ;
     jl.        b5.    ; goto kopier
e.                     ;

\f


     ;;    (:
b.   g10,f10 w.        ;
j14: rl. w0     a0.    ;
     jl. w3     j4.    ; skriv space
     ld  w1     -65    ; nulstil
     ds. w1     g1.    ; g0 og g1
     rl. w0     a6.    ;
f0:  bz  w2     (0)    ; hent tegn
     rl. w1     g0.    ;
     ls  w1     12     ;
     hl  w1     5      ;
     rs. w1     g0.    ; store sidste og næstsidste tegn
     rl. w3     g1.    ; load (: tæller
     sn. w1     (g2.)  ; if (: then
     al  w3  x3+1      ; tæl 1 op
     sn. w1     (g3.)  ; else if :) then
     al  w3  x3 -1     ; tæl 1 ned
     rs. w3     g1.    ;
     am         -2000  ;
     jl. w3     h26.+1998; skriv tegn
     jl. w3     j8.    ;
     dl. w2     g1.    ;
     sl  w1     128    ; if -,første tegn and
     se  w2     0      ; niveautæller<>0 then
     jl.        f3.    ; goto f3
     ba. w0     1      ;
     jl.        f4.    ;
f3:  ba. w0     1      ;
     sh. w0     (a5.)  ;
     jl.        f0.    ;
     rl. w0     a5.    ;
f4:  jl. w3     j9.    ; skip space
     jl. w3     j16.   ;
     jl.        b7.    ;
     jl.        b8.    ;
g0:  0                 ;
g1:  0                 ;
g2:  40<12+58          ;
g3:  58<12+41          ;
e.                     ;
\f


     ;;  <:
b.   g10,f10 w.        ;
j15: rl. w0     a0.    ;
     jl. w3     j4.    ; skriv space
     rl. w0     a6.    ;
     rl. w1     a9.    ;
     jl. w3     j7.    ; udskriv tekststreng
     al  w0  x1+1      ;
     jl. w3     j9.    ; skip space
     jl. w3     j16.   ;
     jl.        b7.    ;
     jl.        b8.    ;
e.                     ;
e.                     ;
e.                     ;
▶EOF◀