|
|
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: 6912 (0x1b00)
Types: TextFile
Names: »retopio3tx «
└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code
└─⟦75ff9bef3⟧
└─⟦this⟧ »retopio3tx «
mode list.yes
openio4tx=edit openio3tx
; termzone i open har skiftet kaldmåde (proc isf. rutine)
l./b. c7,/, d./g0 =/, i$
g0 = 3 ; no of externals
\f
; fgs 1988.08.07 algol 8, openinout, closeinout, resetzones page ... 2...
b. c7, j94, p1, o4 ; block for first segment
w.
k=10000 ; k assignment to catch missing relative
h.
c1 : c2 , c3 ; rel last point, rel last absword
j2: 1<11o.2, 0 ; own segment, segment 2
j4 : g0 + 4, 0 ; - 4, take expression
j8 : g0 + 8, 0 ; - 8, end addr expression
j13: g0 + 13, 0 ; - 13, last used
j18: g0 + 18, 0 ; - 18, zone index alarm
j30: g0 + 30, 0 ; - 30, saved sref, w3
j94: g0 + 94, 0 ; - 94, take value integer
c3 = k-2-c1 ; rel last absword
c2 = k-2-c1 ; rel last point
w.
$, p2
l./c0 = k - c1/, i$
\f
; fgs 1986.10.10 algol 8, openinout, closeinout, resetzones page ... 3...
b. a11, b18, d5, e5 ; block for local names in expellinout
w.
b0 : h5 ; constant, zone descriptor length
b17 = 32 ; slang constant, inout bit in zone state
i9 = i4 ; entry expellinout, segment part:
i7 = k - c1 ; entry expellinout:
rl. w2 (j13.) ; get last used;
ds. w3 (j30.) ; save sref, w3;
dl w1 x2+12 ; w0w1 := formal (index);
so w0 16 ; if expression then
jl. w3 (j4.) ; goto take expression;
ds. w3 (j30.) ; save sref, w3;
al w0 3 ;
la w0 x2+11 ; w0 := type (index);
jl. w3 (j94.) ; take value integer;
rs w1 x2+12 ; formal (2) := value (index);
wm. w1 b0. ; index.formal (1) :=
wa w1 x2+8 ; base address zones +
rs w1 x2+10 ; index * zone descr length;
el w0 x2+6 ;
rl w1 x2+12 ;
sh w1 (0) ; if index > no of zones
sh w1 0 ; or index <= 0 then
jl. w3 (j18.) ; goto zone index alarm;
rl w3 x2+10 ; zone := index.formal (1);
rl w1 x3+h2+6 ; state := zone.state;
se w1 b17+0 ; if state <> after openinout and
sn w1 b17+8 ; state <> after openinout on mt then
jl. a11. ; goto zone state alarm;
jl. d1. ;
a11: se w3 (x3+h2+2) ; if zone <> inputzone then
rs w3 x3+h2+4 ; zone.partial word := zone;
jl. w3 (j8.) ; goto end address expression;
\f
; fgs 1984.02.22 algol 8, openinout, closeinout, resetzones page ... 4...
d4: rx w1 0 ; zone number alarm:
am f3 ;
d2: am f2 ; zone share alarm:
d1: am f1 ; zone state alarm :
d0: al w0 f0 ; share state alarm:
hs. w0 d3. ; set relative entry on next segment;
rl. w3 (j2.) ; w3 := segtable (segment 2);
d3 = k + 1 ;
jl x3+0 ; goto next sement + rel;
i.
e. ; end block expellinout
\f
; fgs 1984.02.22 algol 8, openinout, closeinout, resetzones page ... 5...
$, p2
l./page ... 2/, r/... 2/... 6/
l./page ... 3/, r/... 3/... 7/
l./page ... 5/, r/... 5/... 8/
l./page ... 5/, r/... 5/... 9/
l./page ... 6/, r/... 6/...10/, r/83.11.18/88.11.08/
l./am. (b2.)/, d3, i/
am. (b3.) ; buflength :=
rl w3 +h0+8 ; ((last zone.last share +
al w0 x3+h6-1 ; share descr length - 1 -
am. (b2.) ;
ws w0 +h0 ; first zone.base buffer -
/, l1, p-4
l./page ... 7/, r/... 7/...11/, r/84.10.02/88.11.18/
l./dl. w2 b13./, d7, i/
rl. w1 b12. ; first share;
am. (b3.) ; zone.base buffer := base area;
rl w2 +h0+2 ; zone.last buffer := last zone.last buffer;
ds w2 x3+h0+2 ;
rs w1 x3+h3 ; zone.last share := last share;
ws w2 2 ; zone.record base := base area;
rs w2 x3+h3+4 ; zone.record length := last area - base area;
wa. w1 b7. ; zone.last halfword := base area + buflength;
rs w1 x3+h3+2 ;
/
l./page ... 8/, r/... 8/...12/
l./page ... 9/, r/... 9/...13/
l./page ...10/, r/...10/...14/
l./page ...12/, r/...12/...16/
l./b. c7/, r/p1/p2/
l./j1 :/, d
l./i5 = i5 + k/, r/j1/c1/
l./j18:/, d
l./j94:/, d
l./p1 :/, i/
p2 : 2, 0 ; point 2. external (termzone)
/, p-1
l./page ...13/, r/...13/...17/
l./page ...13/, r/...13/...18/
l./page ...14/, r/...14/...19/
l./c7 = /, l-1, d./jl w3 x3+0/, i/
al w1 -4 ;
jl. w3 (j3.) ; reserve 4 halfs;
dl w0 x2+8 ; move 1. formal
ds w0 x1+2 ; to new stacktop;
al w0 x2 ; w0 := sref <
ls w0 4 ; 4;
rl. w1 p2. ; w1 := point (termzone);
jl. w3 (j4.) ; take expression;
ds. w3 (j30.) ; save sref, w3;
rs. w2 (j13.) ; unstack reserved memory;
/, p1
l./a7:/, d, i/
; end <*stop all zones*>;
\f
; fgs 1988.11.08 algol 8, openinout, closeinout, resetzones page ...20...
a7: rl. w3 b2. ;
/, p-2
l./al w0 0/, d2, i/
al w0 h53 ; char conv table claim :=
so w1 1 ; if first zone.rel entry block proc even then
al w0 0 ; 0 <*init by algol rts version 1*>
rs. w0 b6. ; else
al w0 0 ; h53; <*init by algol rts version 2*>
/, p-5
l./wa w1 x3+h0+0/, r/first/ first/
l./al w1 x1+1/, d
l./wa. w1 b2./, d1, i#
am. (b3.) ; + last zone.last of buffer
wa w1 +h0+2 ;
wa w1 x3+h0+8 ; + first zone.last share
ws w1 x3+h0+6 ; - first zone.first share
al w1 x1+h6 ; + share descr length )) //
al w0 0 ;
#, l1, p-3
l./page ...16/, r/...16/...21/
l./page ...17/, r/...17/...22/
l./page ...18/, r/...18/...23/
l./page ...19/, d./a11:/, d./jl. w3 (j8.)/
l./page ...20/, r/...20/...24/
l./page ...19/, r/...19/...25/
l./page ...22/, r/...22/...26/
l./g1:/, l./1<11+i3/, r/i3/i9/
l./m.rc 1986/, r/1986.10.10/1988.11.18/
f
end
▶EOF◀