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

⟦600d69e32⟧ TextFile

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

Derivation

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

TextFile

mode list.yes
algpass94tx=edit algpass93tx
; pass 9 message skal ikke sætte sorry true, kun alarmer skal
; kind messsage udelades hvis den ny procedures specs er bredere end den gamles
; abs own segment og abs own point : som i release 14.0 skal rel. segment
;   tages med fortegn i 11 bits    : 1<23 + relsegm. < 12 
;   hvorved lokale referencer fra segmenter udover 2047 er mulige, mens
;   lange referencer ud over 2047 skal opdages af pass 8
;
l./page 1/, r/85.10.03/88.12.15/
l./a203/, r/b33/b99/, r/c50/c99/, r/g62/g99/

l./page 2/, r/83.05.17/88.12.16/
l./g51./, r/g51./g71./, i/
      am          +2000 ;
/, p1
l./g52./, r/g52./g72./, i/
      am          +2000 ;
/, p1
l./g50./, r/g50./g70./, i/
      am          +2000 ;
/, p1

l./page 5/, r/83.05.17/88.12.16/
l./jl. w1  c7./, r/c7. /c77./

l./page 17/, r/85.12.19/88.12.15/
l./a21:/, d./a23:/, i#

a21:  rl  w0  x3        ; test kind and spec:
      sh  w0  0         ;   if name (entry) <= 0 then
      jl.     a23.      ;     goto prepare next external item;
      rl  w0  x3+8      ;
      ls  w0 -18        ;   w0 := external.type;
      rl  w1  x2+h4     ;
      ls  w1 -18        ;   w1 := entry.type;
      sn  w0  1         ;   if external.type = no type procedure and
      sl  w1  8         ;      entry   .type =         procedure then
      jl.     a132.     ;     goto test_type else
      jl.     a151.     ;     goto test _param;
a132: se  w0  x1        ;   if entry.type <> external.type then
      jl.     a22.      ;     goto kind message;

a151: al  w0 -2         ; test_param;
      hs. w0  b34.      ;   offset1 :=
      hs. w0  b36.      ;   offset2 := -2;
      al  w0 -12        ;
      hs. w0  b35.      ;   shifts1 :=
      hs. w0  b37.      ;   shifts2 := -12;

b34=k+1 ; offset1       ;
a134: am     -2         ; nextparam:
      rl  w0  x3+10     ;   w0 :=

b35=k+1 ; shifts1       ;
      ls  w0 -12        ;     external.next param;
      la. w0  b14.      ;

b36=k+1 ; offset2       ;
      am     -2         ;
      rl  w1  x2+h4+2   ;   w1 :=

b37=k+1 ; shifts2       ;
      ls  w1 -12        ;     entry.next param;
      la. w1  b14.      ;

      sh  w1  38        ;   if entry   .nextparam = general or undefined
      sn  w0  x1        ;   or external.nextparam = entry.nextparam      then
      jl.     a150.     ;     goto test param further else
      jl.     a22.      ;     goto kind message;

a150:                   ; test param further:
      sn  w0  x1        ;   if external.nextparam <> entry.nextparam and 
      jl.     a152.     ;
      sl  w0  39        ;      external.nextparam =  general or undefined then
      jl.     a22.      ;     goto kind message;
      
a152: sn  w1  0         ;   if entry   .nextparam =  0 then
      jl.     a23.      ;     goto prepare next external item;

\f



; fgs.jz 1988.12.16                algol/fortran, pass 9, page 17a


      el. w1  b35.      ;   shifts :=
      al  w1  x1+6      ;     shifts1 + 6;
      sh  w1  0         ;   if shifts > 0 then
      jl.     a148.     ;   begin
      el. w0  b34.      ;
      sn  w0  0         ;     if offset1 = 0 then
      jl.     a23.      ;       goto prepare next external item;
      al  w0  0         ;               
      hs. w0  b34.      ;     offset1 :=         
      hs. w0  b36.      ;     offset2 := 0;      
      al  w1 -18        ;     shifts  := -18;    
a148: hs. w1  b35.      ;     shifts1 :=         
      hs. w1  b37.      ;     shifts2 := shifts; 
      jl.     a134.     ;     goto next param;   
                        ;   end shifts > 0;      

\f



; fgs.jz 1988.12.16                algol/fortran, pass 9, page 17b


a22:  dl  w1  x3+10     ; kind message:
      sn  w0  -1        ;   if kind and spec = -1 (rs-extend)
      jl.     a23.      ;     then goto prepare next external
      rs. w1  b4.       ;   save kind word 2 (external);
      jl. w1  c8.       ;
      jl.     a67.      ;   message (<:kind:>);
      <:kind<0>:>       ;   w0  = kind word 1 (external);
a67:  jl. w1  c54.      ;   writeinteger or half.half (w0);
      rl. w0  b4.+2     ;   w0 := kind word 2 (external);
      jl. w1  c54.      ;   writeinteger or half.half (w0);

a23:  rl. w3  g22.      ; prepare next external item:
#, p-12

l./page 24/, r/86.02.18/88.12.29/
l./a84:/, d8, i/


a84:  el  w0  0         ; abs own segment:
      so  w0  1<10      ;   abs word := (if signbit pos then
      la. w0  b13.      ;     abs word extract 11 else abs word) +
      wa. w0  g8.       ;     outsegment  *
      ls  w0  1         ;     2           +
      wa. w0  b11.      ;     3<22        ;
      jl.     a35.      ;   goto store absword;

/

l./page 26/, r/86.02.18/88.12.29/
l./a38:/, d5, i/


a38:  so  w3  1<10      ; own point:
      la. w3  b13.      ;   bits (0, 11, point) :=
      wa. w3  g8.       ;    (if sign bit pos then w3 extract 11 else w3) +
      hs  w3  0         ;     outbase;
/

l./page 28/, r/83.05.17/88.12.16/
l./g50:/, l1, i/
g70=g50-2000
/, p-1
l./g51:/, l1, i/
g71=g51-2000
/, p-1
l./g52:/, l1, i/
g72=g52-2000
/, p-1

l./page 30/, r/83.12.28/88.12.16/
l./b17:/, i/
b14:     63             ; 2.111111 (mask to extract 6)
/, p-1

l./page 31/, r/86.01.18/88.12.16/
l./; stepping stone/, i/

; stepping stones to pass 9 procedures

c77:  jl.     c7.       ; stepping stone to c7, alarm
/, p-1

l./page 33/, r/86.02.18/88.12.16/
l./rs. w3 (a147.)/, l-1, d1
l./a27:/, d, i/

a27:  al  w3  1         ; print result:
      rs. w3 (a147.)    ;   sorry := true;
      rl. w0  b10.      ;   
/, p-1

l./page 36/, r/85.09.26/88.12.19/
l./c5:/, d4, i#


; procedure write char

c52:  am      14        ;   char := point; <*iso 46*>
c51:  al  w0  32        ;   char := space; <*iso 32*>
c50:  jl.     e12.      ;   writechar (char);

;procedure write signed integer
;
c53:  ds. w0  g10.+2    ;   save integer and link;
      jl.     c55.      ;   goto out space;
                                                                               
;write integer or half.half.
;

c54:  ds. w0  g10.+2    ;   save integer and link;
      bz  w3  1         ;   w3:=right byte;
      sn  w0  x3        ;   if integer = right byte
      jl.     c55.      ;   then goto writechar (space);
      rs. w3  g10.+2    ;   next integer := right byte;
      bz  w0  0         ;
      jl. w3  e14.      ;   writeinteger(left half);
      1<23+32<12+1      ;
      am      -2        ;   modify next to writechar (point);
c55:  jl. w3  c51.      ;   writechar (space);
      rl. w0  g10.+2    ;
      jl. w3  e14.      ;   writeinteger (right half);
      1<23+ 0<12+1      ;
      dl. w0  g10.+2    ;
      jl      x1        ;   return;

c5:   ds. w0  g10.+2    ; writespace:
      jl. w3  c51.      ;
      dl. w0  g10.+2    ;
      jl      x1        ;   return;

\f



; fgs.jz 1988.12.16                algol/fortran, pass 9, page 36a


#

l./m.jz/, r/87.06.04/88.12.29/
f

end
▶EOF◀