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

⟦e15ebd219⟧ TextFile

    Length: 21504 (0x5400)
    Types: TextFile
    Names: »algolredtxt«

Derivation

└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ.  Detaljer om "HC8000" projekt.
    └─⟦0364f57e3⟧ 
        └─⟦this⟧ »algolredtxt« 
└─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ.
    └─⟦4334b4c0b⟧ 
        └─⟦this⟧ »algolredtxt« 

TextFile

(algolred=slang fpnames list.no xref.no type.yes
)
\f



s.  a40,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  a8.     ;
    jl. w3  h30.    ; unstack output-zone
    rl. w3  a11.    ;
    jl. w2  j33.    ; test punch
    al. w0  a9.     ;
    jl. w3  h31.-2  ;
    jl. w3  h30.-4  ; unstack in-zone
b4: al  w2  10      ;
    jl. w3  h34.-2  ;
    al  w2  0       ;
b5: jl.     h7.     ;
a0: 0               ; indryk
a1: 2               ; antal space pr. begin
a2: 8               ; antal space under comment
a3: 0               ; NL FF
a4: 0               ; klasse
a5: 0               ; sidste tegnnr. ved test label
a6: -1              ; pointer i a10 (buffer)
a8: 0,r.4           ; stack chain for stack curr. outputzone
a9: <:<10>slut <0>:>;
a11:0               ; adr of outputduc
a12:0               ; adr of inputduc
h.
                    ; klasse tabel
a15:0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0;
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;
    2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0;
    0,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6;
    6,6,6,6,6,6,6,6,6,6,6,6,6,6,0,6;
    0,7,7,7,6,7,6,6,6,6,6,6,6,6,6,6;
    6,6,6,6,6,6,6,6,6,6,6,6,6,6,0,0;
w.
\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      a11-a12 ;
j30:rl. w2  a12.    ; addr of duc
    ds. w1  g1.     ;
    ds. w3  g3.     ;
    al. w1  h21.    ; curr out zone descr
    al. w2  a8.     ;
    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.
a10:                ;
\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  a8.     ; 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  a11.    ;
    jl. w3  h28.-2  ; connect zone
    se  w0  0       ; if ok.no then
    jl.     j32.    ; goto j32
    rl. w3  a11.    ;
    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
    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  a12.    ;
    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.     j21.    ; goto start
    bz  w0  x2+1    ;
    sn  w0  4       ; if integer then goto f3
    jl.     f3.     ;
    al. w0  g0.     ;
    al. w1  h21.    ;
    al. w2  a8.     ;
    jl. w3  h30.    ; unstck outputzone
    jl. w3  h31.-2  ;
    bz  w1  x2+1    ;
    al  w0  x2+2    ;
    sn  w1  10      ; if name param then
    jl. w3  h31.-2  ; write name
    jl.     b4.     ; else goto stop
f3: rl  w0  x2+2    ; param
    rs. w0  x3+a1.  ;
    al  w3  x3+2    ;
    ba  w2  x2+1    ;
    sh  w3  2       ;
    jl.     f2.     ;
    jl.     j21.    ;
g0: <:<10>*** param to algolred  <0>:>;
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  a8.     ;
    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.
\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       ;
    jl.     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:
c.h57
    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
z.
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.

\f


    ;; læseprocedure
    ;  reg    call    retur
    ;  w0             klasse af sidst læste tegn
    ;  w1             uændret
    ;  w2             sidst læste tegns isoværdi
    ;  w3  returadr   udef
b.  f10,g10
w.
j4: am      1       ; læs og skip space
j3: am      4       ; læs og store space
j2: am      2       ; læs 1 tegn
j1: am      4       ; læs og store indtil klasse<2
j0: al  w2  0       ; læs og store indtil klasse<6
    ds. w1  g1.     ;
    ds. w3  g3.     ;
f0: jl. w3  h25.-2  ; læs et tegn
    bz. w0  x2+a15. ; klasse
    rs. w0  a4.     ; store klasse
    rl. w1  g2.     ;
    sl  w1  11      ; if spaceskip then
    jl.     f2.     ; goto f2
    sn  w1  6       ; if læs 1 karakter then
    jl.     f3.     ; goto f3
    jl. w3  j10.    ; else store  det læste tegn
    am.     (g2.)   ; og hop til aktion (g2)= 0 , 4 eller 10
    jl.     f1.     ; if læs indtil klasse<6 then
f1: sh  w0  5       ; if klasse<6 then
    jl.     f3.     ; goto f3
    sh  w0  1       ; else if stop ved kl>2 then
    jl.     f3.     ; goto f3
    jl.     f0.     ; og læs næste
f2: se  w2  32      ; if tegn=space or
    sn  w2  0       ; tegn=0 then
    jl.     f0.     ; læs næste
f3: rl. w1  g1.     ; else stop
    jl.     (g3.)   ;
g0: 0               ;
g1: 0               ;
g2: 0               ;
g3: 0               ;
e.

\f


    ;; procedure store tegn(tegn)
    ;  reg   call   retur
    ;  w0           uændret
    ;  w1           udef
    ;  w2   tegn    uændret
    ;  w3  returadr    -
    ; ved hop til j9 gemmes tegnet i a10+0
    ; ved hop til j10 gemmes tegnet i a10+(a6)
b.  g5,f5
w.
j9: al  w1  -1      ;
    rs. w1  a6.     ;
j10:rl. w1  a6.     ; pointer i tegnbuffer
    al  w1  x1+1    ;
    rs. w1  a6.     ; tæl en frem
    hs. w2  x1+a10. ; store tegn
    jl      x3      ;
e.

\f


    ;; procedure udskrivtegn(antal)
    ;  reg    call        retur
    ;  w0    antal tegn    uændret
    ;  w1                     -
    ;  w2                     -
    ;  w3    returadr.        -
    ; udskriver det antal tegn, som w0 angiver,
    ; fra a10 og fremefter
b.  g5,f5
w.
j11:ds. w1  g1.     ;
    ds. w3  g3.     ;
    al  w0  0       ;
f0: am      (0)     ;
    bz. w2  a10.    ; næste tegn
    jl. w3  h26.-2  ;
    ba. w0  1       ; tæl
    sh. w0  (g0.)   ; if w0<=antal then
    jl.     f0.     ; goto f0
    rl. w1  g1.     ;
    dl. w3  g3.     ;
    jl      x3      ;
g0: 0               ;
g1: 0               ;
g2: 0               ;
g3: 0               ;
e.

\f


    ;; udskriver 1 tegn og sætter a3
    ;  reg    call   retur
    ;  w0    (1)      udef
    ;  w1            uændret
    ;  w2    tegn       -
    ;  w3    returadr  udef
    ; udskriver det tegn som står i w2
    ; ydlig udføres
    ; ved hop til j12 sættes a3 til 1
    ; ved hop til j13 sættes a3 også til 1 men da er
    ; w0 initialiseret i forvejen
b.  g5,f5
w.
j12:al  w0  1       ; a3:=1
j13:rs. w0  a3.     ; a3:=1
j14:ds. w2  g2.     ; kun udskrivning
    rs. w3  g3.     ;
    jl. w3  h26.-2  ; udskriv tegnet
    dl. w2  g2.     ;
    jl.     (g3.)   ;
g1: 0               ;
g2: 0               ;
g3: 0               ;
e.

\f


    ;; space og new-line skrivning
    ; reg   call          retur
    ; w0   antal space    uaendret
    ; w1                  udef
    ; w2                  uændret
    ; w3   returadr          -
    ; ved hop til j16 udskrives space hvis a3=1
    ; ved hop til j17 udskrives NL og space hvis a3=0, ellers
    ; kun space, ved retur er a3 altid 0
b.  g5,f5
w.
j15:rl. w0  a0.     ; hoppes til j15 init w0 her
j16:am      1       ;
j17:al  w1  0       ;
    ds. w1  g1.     ;
    ds. w3  g3.     ;
    rl. w2  a3.     ;
    se  w2  0       ; if -,nl then
    jl.     f0.     ; goto f0.
    se  w1  0       ; if hop til j16 then
    jl.     f1.     ; hoppes ud
    al  w2  10      ; else udskriv NL
    jl. w3  j14.    ;
f0: jl. w3  j18.    ; og space
    al  w3  0       ;
    rs. w3  a3.     ; NL:=falsk
f1: dl. w3  g3.     ;
    rl. w0  g0.     ;
    jl      x3      ;
g0: 0               ;
g1: 0               ;
g2: 0               ;
g3: 0               ;
e.

\f


    ;; spaceudskrivning
    ;  reg     call    retur
    ;  w0     antal    uaendret
    ;  w1                -
    ;  w2                -
    ;  w3    returadr    -
    ; udskriver antal space
b.  g5,f5
w.
j18:ds. w1  g1.     ;
    ds. w3  g3.     ;
f0: al  w2  32      ;
    sh  w0  0       ; if antal er udskrevet then
    jl.     f1.     ; goto f1
    jl. w3  h26.-2  ; else udskriv 1 space
    bs. w0  1       ; w0:=w0-1
    jl.     f0.     ;
f1: dl. w1  g1.     ;
    dl. w3  g3.     ;
    jl      x3      ;
g0: 0               ;
g1: 0               ;
g2: 0               ;
g3: 0               ;
e.

\f


    ;; compare
    ;  reg    call         retur
    ;  w0
    ;  w1
    ;  w2
    ;  w3    returadr      returadr+ se kommentar
    ; sammenligner ordet i a10 or fremefter med hhv
    ; end else array begin comment
    ; er ordet i a10 lig med et af de nævnet hoppes hhv
    ; 2 4 6 8 10 byte over ved returhop
b.  f10 ,g15        ;
h.
g4: 101,110,100,  0,  0,  0,  0,  3; end
g5: 101,108,115,101,  0,  0,  0,  4; else
g6: 097,114,114, 97,121,  0,  0,  5; array
g7: 098,101,103,105,110,  0,  0,  5; begin
g8: 099,111,109,109,101,110,116,  7; comment
w.
j19:ds. w1  g1.     ;
    ds. w3  g3.     ;
    al. w1  a10.    ; adr paa ord
    al. w2  g4.     ; 1. ord
f0: rl  w0  x2      ; 
    sn  w0  (x1)    ; if 2 1. tegn er ens then
    jl.     f1.     ; goto f1
    al  w2  x2+8    ; else
    sh. w2  g8.     ; if flere then
    jl.     f0.     ; goto f0
    jl.     f3.     ; else goto f3
f1: bz  w3  x2+7    ; laengde
    se. w3  (a6.)   ; if fundne ords laenge<>ordlaengde then
    jl.     f3.     ; goto f3
    al  w3  x3-1    ;
f2: am      x3      ;
    bz  w0  x2      ; load tegn
    am      x3      ;
    bs  w0  x1      ; minus næste tegn i buffer
    se  w0  0       ; if tegn er forskellige then
    jl.     f3.     ; goto f3.
    al  w3  x3-1    ;
    sl  w3  2       ; if flere tegn then
    jl.     f2.     ;
    al. w3  g4.-8   ; else beregn returadresse
    ws  w3  4       ;
    ac  w3  x3      ;
    ls  w3  -2      ; nu er w3 2 4 6 8 10 for hhv
    am      x3      ; end else array begin comment
f3: al  w3  0       ;
    wa. w3  g3.     ;
    dl. w1  g1.     ;
    rl. w2  g2.     ;
    jl      x3      ;
g0: 0               ;
g1: 0               ;
g2: 0               ;
g3: 0               ;
e.

\f


    ;; kopiering
    ;  reg     call         retur
    ;  w0   antal space     uændret
    ;  w1   udhopstegn      uaendret
    ;  w2   sidste tegn     sidste tegn
    ;  w3  returadr         udef
    ; først undersøges om (w1)<>(w2), for er de ens hoppes
    ; retur, ellers udskrives tegnet i w2, og der læses og
    ; skrives, indtil tegnet i w1 mødes, dette sidste tegn 
    ; udskrives ikke. Mødes der et NL sættes det antal space,
    ; som w0 angiver
b.  g5,f5           ;
w.
j20:ds. w1  g1.     ;
    ds. w3  g3.     ;
    rl. w0  a4.     ; 1. tegns klasse hentes
f0: sn. w2  (g1.)   ; w2<> udhopstegn
    jl.     f1.     ; hvis ja - hop ud
    jl. w3  j14.    ;udskriv tegnet
    jl. w3  j2.     ; det næste tegn læses
    se  w0  1       ; er tegnet NL eller FF uskrives
                    ; det, og evt efterfølgende space
                    ; skippes, ellers
    jl.     f0.     ;
    jl. w3  j13.    ;
    rl. w0  g0.     ; hent space og
    jl. w3  j18.    ; sæt space
    jl. w3  j4.     ; læs tegn sålænge de er space
    al  w3  0
    rs. w3  a3.
    jl.     f0.     ;
f1: dl. w1  g1.     ;
    rl. w3  g3.     ;
    jl      x3      ;
g0: 0               ;
g1: 0               ;
g2: 0               ;
g3: 0               ;
e.

\f


    ;; læs og vælg
b.  g10,f10         ;
w.
j21:jl. w3  j2.     ; læs et tegn
f1: sn  w2  60      ; tegn forskellig fra <
    jl.     j29.    ; ellers hop til behandling af venstrehak
    sn  w2  25      ; tegn <> EM
    jl.     b3.     ; ellers hop til EM udskrivning or slut
    sn  w0  1       ; tegn <> NL
    jl.     f3.     ; ellers hop til behandling af NL
    sl  w0  6       ; tegn <> bogstav
    jl.     f4.     ; ellers hop til behandling af bogstaver
    rl. w3  a3.     ; a3 er 1 efter NL og ellers 0
    se  w3  0       ;
    jl. w3  j15.    ; sæt space hvis a3=1
j22:jl. w3  j14.    ; udskriv tegn i w2
    jl.     j21.    ;
f3: jl. w3  j12.    ; udskriv 1 tegn og sæt a3=1
    jl. w3  j4.     ; skip space
    jl.     f1.     ; når der skippes space står der et tegn
                    ; i w2 så læsningen ved f2 udelades
f4: jl. w3  j9.     ;
    se  w0  7       ; if tegn<> a,b,c,e then
    jl.     j27.    ; goto j27 (test label og udskriv)
    jl. w3  j0.     ; læs indtil kl<6
    jl. w3  j19.    ; compare
    jl.     j27.    ; ikke fundet
    jl.     j25.    ; end
    jl.     j27.    ; else
    jl.     j26.    ; array
    jl.     j23.    ; begin
    jl.     j24.    ; comment
e.

\f


    ;; begin
b.  g5,f5           ;
w.
j23:rl. w0  a0.     ; hent space
    jl. w3  j17.    ; udskriv NL og space
    al  w0  4       ;
    jl. w3  j11.    ; udskriv begin
    rl. w0  a0.     ;
    wa. w0  a1.     ; space:=space+indryk
    rs. w0  a0.     ;
    al  w2  10      ;
    jl. w3  j12.    ; udskriv NL og sæt a3 til 1
    jl. w3  j4.     ; skip space
    se  w0  1       ; w0 er 1 ved NL eller FF
    jl.     j21.+2  ; er det ikke tilfældet bruges 
                    ; karakteren i w2
    jl.     j21.    ; ellers skippes den (der læses oveni)
                    ; behandling af begin slut
e.

\f


    ;; comment
b.  g5,f5           ;
w.
j24:rl. w0  a0.     ; hent space
    jl. w3  j17.    ; udskriv NL og space
    al  w0  6       ;
    jl. w3  j11.    ; udskriv comment
    bz. w2  a10.+7  ; hent det 1. tegn efter comment
    rl. w0  a0.     ;
    wa. w0  a2.     ; etekst+space til w0
    al  w1  59      ; semikolon
    jl. w3  j20.    ; kopier
    jl. w3  j14.    ; udskriv semikolon
    jl.     j21.    ; og behandling af comment er slut
e.

\f


    ;; end
b.  g10,f10         ;
w.
j25:rl. w0  a0.     ;
    ws. w0  a1.     ; space:=space-indryk
    sh  w0  -1      ; if indryk var lig med 0 then
    jl.     j27.    ; goto j27 (der er ikke mødt et begin endnu)
    rs. w0  a0.     ;
    jl. w3  j17.    ; sæt space
    al  w0  2       ;
    jl. w3  j11.    ; udskriv end
    rl. w0  a0.     ; space hentes og er
    sl  w0  1       ; den <= 0 hoppes
    jl.     f0.     ; til slut
    al  w1  25      ;
    bz. w2  a10.+3  ;
    jl. w3  j20.    ; kopier indtil EM mødes
    jl.     b3.     ; og hop saa til slut
f0: bz. w2  a10.+3  ; hent tegn efter end
f1: rl. w0  a4.     ; hent tegnklasse
f2: sn  w2  59      ; er tegnet ';' er der ingen 
                    ; kommentarer  efter end
    jl.     j22.    ; og der hoppes ud
    sn  w2  25      ; if tegn=25 then
    jl.     b3.     ; goto b3   (stop)
    sl  w0  5       ;
    jl.     f4.     ; bogstav
    sn  w0  1       ;
    jl.     f3.     ; NL eller FF
    jl. w3  j15.    ; lav evt space
    jl. w3  j14.    ;
    jl. w3  j2.     ; læs 1 tegn
    jl.     f2.     ;
f3: jl. w3  j13.    ; sæt nl og skip space
    jl. w3  j4.     ;
    jl.     f2.     ;
f4: jl. w3  j9.     ; store tegn i a10+0
    jl. w3  j1.     ; læs indtil kl<2
    jl. w3  j19.    ; sammenligning med hhv end else array
                    ; begin comment 
    jl.     f6.     ; ikke genkendt
    jl.     j25.    ; end
    jl.     j28.    ; else
    jl.     f6.     ; array
    jl.     f6.     ; begin
f6: rl. w0  a6.     ; comment
    bs. w0  1       ;
    jl. w3  j11.    ;
    am.     (a6.)   ;
    bz. w2  a10.    ;
    jl.     f1.     ;
e.

\f


    ;; array
b.  g5,f5           ;
w.
j26:jl. w3  j15.    ; evt NL og spaceskrivning
    al  w0  4       ;
    jl. w3  j11.    ; udskriv array
    bz. w2  a10.+5  ; 1. tegn efter array
    rl. w0  a0.     ; space
    al  w1  59      ; udhopstegn
    jl. w3  j20.    ; kopier
    jl. w3  j14.    ; udskriv semikolon
    jl.     j21.    ; behandling af array slut
e.

\f


    ;; test label og udskriv
b.  f5,g5           ;
w.
j27:rl. w0  a4.     ;
    sl  w0  2       ; if tegnklassen>= 2 then
    jl. w3  j1.     ; goto j1 (læs indtil kl<2)
    rl. w1  a6.     ; lad a5 pege på 1. tegn med
    rs. w1  a5.     ; klasse mindre end 2
    se  w2  32      ; if sidste tegn<>32 then
    jl.     f0.     ; hoppes følgende spacelæsning over
    jl. w3  j3.     ; læs indtil tegn<>space
f0: se  w2  58      ; er det læste tegn <>58 (kolon)
    jl.     j28.    ; hoppes videre
    jl. w3  j3.     ; ellers læs og store space
    sn  w0  1       ; er det 1. tegn derefter et NL eller FF
    jl.     f1.     ; antages det foranstående, at være en label
    se  w2  59      ; else if tegn=semikolon eller dets 
    sl  w0  6       ; tegnklasse er 6 eller 7 then
    jl.     f1.     ; goto f1 (labelbehandling)
\f


    ;; udskrivning
j28:jl. w3  j15.    ; sæt evt space
    rl. w0  a6.     ; det sidst læste tegn udskrives ikke
    bs. w0  1       ; da det kan være starten på begin end
    jl. w3  j11.    ; osv, udskrivning 
    rl. w3  a6.     ;
    bz. w2  x3+a10. ; hent a(a6) til w2
    rl. w0  a4.     ; og dets tegnklasse til w0
    jl.     j21.+2  ; hop til behandling af et karakter


\f


    ;; label
f1: al  w0  0       ;
    jl. w3  j17.    ; skriv NL og sæt nul space
    al  w1  58      ;
    rl. w2  a5.     ;
    hs. w1  x2+a10. ;
    al  w0  x2      ;
    jl. w3  j11.    ; ved retur er w0 (a5)+1
    rl. w2  a0.     ; hent space, skal der sættes flere
    ws  w2  0       ; space efter etiketten er w2 nu >0
    sh  w2  0       ;
    jl.     f3.     ;
    al  w0  x2      ; og antallet flyttes til w0
    jl. w3  j18.    ; og de sættes
f3: al  w1  0       ; sæt NL
    rs. w1  a3.     ; til falsk
    am.     (a6.)   ; a6 peger på det 1. bogstav efter
    bz. w2  a10.    ; kolon, som hentes til w2
    rl. w0  a4.     ; tegnklasse
    jl.     j21.+2  ; hop til behandling af en karakter
e.

\f


    ;; venstrehak
b.  g5,f5           ;
w.
j29:jl. w3  j15.    ; hent space til w0
    jl. w3  j14.    ; venstrehak
    jl. w3  j2.     ; hent et tegn
    se  w2  58      ; er tegnet ikke et kolen
    jl.     j22.    ; hoppes til udskrivning af dette
f0: al  w1  58      ;
    rl. w0  a0.     ;
    jl. w3  j20.    ;
    jl. w3  j14.    ;
    jl. w3  j2.     ; der læses et tegn er det
    se  w2  62      ;et højrehak et strengen slut
    jl.     f0.     ; ellers hoppes til videre læsning
    jl.     j22.    ; det sidst læste tegn udskrives
e.
e.
e.
\f


▶EOF◀