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

⟦3b6f8bff4⟧ TextFile

    Length: 6912 (0x1b00)
    Types: TextFile
    Names: »retopio3tx  «

Derivation

└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code
    └─⟦75ff9bef3⟧ 
        └─⟦this⟧ »retopio3tx  « 

TextFile

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◀