|
|
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: 6144 (0x1800)
Types: TextFile
Names: »slangcp3tx «
└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code
└─⟦75ff9bef3⟧
└─⟦this⟧ »slangcp3tx «
; rc 76.07.01 textcompr
b.
d.
p.<:fpnames:>
l.
;this program compresses a slang text i.e. removes all
;blind characters (spaces and non-graphics) except in text
;strings and messages. all vt and ff is converted to nl.
; call: result=textcompr infile
s. j5, i5, g5, f5, e5, d5, c10, b5, a5
w.
k=h55
0
b2: 0 ;
ds. w3 b2. ; entry: save fpparam
sn w3 x2 ; if no left side then
jl. a1. ; alarm(call)
al. w1 h19.
jl. w3 h79.
al. w3 b1.
rs. w3 h80.+2
al w3 x3-1
rs w3 x1+h0
al w3 x3+512
rs w3 x1+h0+2
al w2 x2+2
al w0 1<1+1
jl. w3 h28.
se w0 0
jl. a2.
rl. w3 b2. ;
bl w1 x3+10
sh w1 3
jl. a3. ; if no param then alarm
bl w1 x3+11 ;
se w1 10 ; if param<>text
jl. a3. ; then alarm(param)
jl. w3 h29.-4 ; stack cur in
rl. w3 b2. ;
al w2 x3+12 ; connect input
jl. w3 h27.-2 ;
se w0 0
jl. a2.
jl. c1. ; goto next;
c0: rs. w2 f3. ; outnext:
al. w1 h19.
jl. w3 h26. ; outchar(char);
c1: jl. w3 h25.-2 ; next: inchar(char)
d0: bl. w3 x2+g0. ; take action: action:= table(char);
al w0 1 ;
j0: jl. x3 ; goto action;
d1: al w0 1 ; normal1:
c2=k-j0
sn. w0 (f0.) ; normal:
jl. c1. ; goto if comment then next else outnext;
jl. c0. ;
c3=k-j0
se. w0 (f1.) ; space:
sn. w0 (f2.) ; goto if string or message
jl. c0. ; then outnext else next;
jl. c1. ;
c4=k-j0
al w2 10 ; nl: vt: ff:
al w0 0 ; char:= nl;
se. w0 (f2.) ; if message then message:= false else
rs. w0 f2. ;
se. w0 (f0.) ; if comment then comment:= false;
rs. w0 f0. ;
al w3 10 ;
sn. w0 (f1.) ; if string or
se. w3 (f3.) ; char<>10 then
jl. c0. ; goto outnext else
jl. c1. ; goto next;
c5=k-j0
jl. w3 h30.-4 ; unstack cur in
al. w1 h19. ; em:
rl w0 x1+h3 ;
ws w0 x1+h0 ;
hs. w0 c10. ; recbase-basebuf
jl. w3 h95.
jl. w3 h79. ; terminate program
al w2 x1
al w3 x1+h1+2
al. w1 h54. ; lookup area
jd 1<11+42 ; lookup entry
rl w3 x2+h1+16 ; tail(0):=segm.count
rs w3 x1 ;
al w3 x3-1 ; (segm-1)
ls w3 9 ; *512
c10=k+1
al w3 x3+80 ; +(recbase-basebuf
al w3 x3+2 ; +2)
rs w3 x1+18 ; => loadlength
dl w0 110 ;
ld w0 5 ;
rs w3 x1+10 ; shortclock
al w3 x2+h1+2 ; restore w3
bz w2 x2+h1+1 ; output kind
sn w2 4 ; if kind=bs then
jd 1<11+44 ; changeentry
al w2 0 ; ok:=true;
jl. h7. ; goto fp end program;
c6=k-j0
sn. w0 (f0.) ; semicolon:
jl. c1. ; if comment then goto next;
se. w0 (f1.) ;
sn. w0 (f2.) ; if string or message
jl. c0. ; then goto outnext;
rs. w0 f0. ; comment:= true;
jl. c1. ; goto next;
\f
; rc 21.05.74 page 2
c7=k-j0
am 1 ; m: m: mess:= true; goto inn;
c8=k-j0
al w3 0 ; less than: mess:= false;
hs. w3 b0. ; inn:
sn. w0 (f0.) ; if comment then goto next;
jl. c1. ;
se. w0 (f1.) ;
sn. w0 (f2.) ; if string or message then goto outnext;
jl. c0. ;
al. w1 h19.
jl. w3 h26. ; outchar(char);
jl. w3 h25.-2 ; inchar(char);
b0=k+1;mess, true=1,false=0
se w3 x3 ; if mess then goto message;
jl. a0. ;
se w2 58 ; if char<>colon then goto take action;
jl. d0. ;
rs. w0 f1. ; string:= true;
jl. c0. ; goto outnext;
a0: se w2 46 ; message:
jl. d0. ; if char<>point then goto take action;
rl. w3 f3. ;
sh w3 63 ; if oldchar<>letter then
rs. w0 f2. ; message:= true;
jl. c0. ; goto outnext;
c9=k-j0
al w0 0 ; colon:
sn. w0 (f1.) ;
jl. d1. ; if not string then goto normal1;
al. w1 h19.
jl. w3 h26. ; outchar(char);
jl. w3 h25.-2 ; inchar(char);
se w2 62 ; if char<>greater than then
jl. d0. ; then goto take action;
rs. w0 f1. ; string:= false;
jl. c0. ; goto outnext;
e1: <:***textcompr call<10><0>:>
e2: <:***textcompr connect error<10><0>:>
e3: <:***textcompr param<10><0>:>
a1: am e1-e2
a2: am e2-e3
a3: al. w0 e3.
jl. w3 h31.-2
al w2 1
jl. h7.
;booleans, true=1, false=0
f0: 0 ; comment
f1: 0 ; string
f2: 0 ; message
f3: 0 ; oldchar
h.
c0=c0-j0, c1=c1-j0
g0:
;0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
c1,c1,c1,c1,c1,c1,c1,c1,c1,c1,c4,c4,c4,c1,c1,c1; 0-15
c1,c1,c1,c1,c1,c1,c1,c1,c1,c5,c1,c1,c1,c1,c1,c1;16-31
c3,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2;32-47
c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c9,c6,c8,c2,c2,c2;48-63
c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c7,c2,c2;64-79
c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2;80-95
c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c7,c2,c2;96-111
c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c1;112-127
w.
b1: 0, r.256 ; buffer for program zone
e.
e.
e.
▶EOF◀