|
|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 27648 (0x6c00)
Types: TextFile
Names: »kkslrtxt«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt.
└─⟦0364f57e3⟧
└─⟦this⟧ »kkslrtxt«
(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
a12: 0 ; =0 indtil b. eller s.
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: 15 ; 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 x- del
ds. w2 a8. ;
al w2 x2+3 ;
rs. w2 a21. ; antal space til adressedelen
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 2 hvis det er
; nl eller ff og 1 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
rl. w3 a12. ;
se w3 0 ; if første s. eller b. er mødt then
jl. f11. ; goto f11= retur0
; else
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. ;
bz w3 ( 0) ;
se w3 10 ; if første tegn = nl or
sn w3 12 ; = ff then
jl. f4. ; goto f4 else
jl. w3 j7. ; udskriv
f4: 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 40 ; if not venstreparentes then
jl. f4. ; then goto f4
al w0 x1 ;
jl. w3 j7. ; udskriv (
al w0 x1+1 ; else
jl. w3 j9. ; skip space and
rl. w1 a6. ;
bz w2 x1 ;
f4: 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 = +
sn w2 45 ; or næste tegn = - then
jl. f3. ; goto f3 else
jl. f2. ; goto f2
f3: 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
se w2 98 ; if b. or
sn w2 115 ; s. then
rs. w2 a12. ; sæt a12 <> 0
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◀