|
|
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: »retalgp93tx «
└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code
└─⟦75ff9bef3⟧
└─⟦this⟧ »retalgp93tx «
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◀