|
|
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: »base4tx «
└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code
└─⟦75ff9bef3⟧
└─⟦this⟧ »base4tx «
; fgs 1982.12.17 base page ...1...
b. c2,g3 ; block for insertproc
w.
d.
p.<:fpnames:>
l.
s. b24 ; block for base
w.
k=h55 ;
; procedure write_pair;
;
; the procedure writes the pair addressed by w1 on current output
;
; call : return :
;
; w0 : - destroyed
; w1 : addr destroyed
; w2 : - unchanged
; w3 : link destroyed
;
b. a0, b1
w.
b24: rs. w3 a0. ; save link;
dl w1 x1 ; entry write_pair:
ds. w1 b1. ; get pair;
rl. w0 b0. ; write lower;
jl. w3 h32.-2 ;
1<23+32<12+10 ;
rl. w0 b1. ; write upper;
jl. w3 h32.-2 ;
1<23+32<12+10 ;
jl. (a0.) ; return;
a0: 0 ; saved link
b0: 0 ; lower of pair:
b1: 0 ; upper of pair:
e. ; end write pair;
\f
; fgs 1985.03.14 base page ...2...
;
; the procedure writes the bases of the process on current output
;
; call: return:
;
; w0 : unused unchanged
; w1 : link -
; w2 : unused -
; w3 : - -
;
b. a4, c3
w.
b23: ds. w1 c1. ; entry write bases:
ds. w3 c3. ; save registers;
rl. w2 h16. ; w2 := current process;
al. w0 a0. ; catalog base:
jl. w3 h31.-2 ; write (<:catbase:>);
al w1 x2+70 ; addr of cat base;
jl. w3 b24. ; write pair;
al. w0 a1. ; standard base:
jl. w3 h31.-2 ; write (<:std base:>);
al w1 x2+78 ; addr of std base;
jl. w3 b24. ; write pair;
al. w0 a2. ; user base:
jl. w3 h31.-2 ; write (<:user base:>);
al. w1 h58. ; get user base;
jl. w3 b24. ; write pair;
al. w0 a3. ; max base:
jl. w3 h31.-2 ; write (<:max base:>);
al w1 x2+74 ; get max base;
jl. w3 b24. ; write pair;
al. w0 a4. ;
jl. w3 h31.-2 ; write (<:<10><10>:>);
dl. w1 c1. ; restore
dl. w3 c3. ; registers;
jl x1 ; return;
a0: <:<10>cat base : :>
a1: <:<10>std base (login ): :>
a2: <:<10>user base : :>
a3: <:<10>max base (project): :>
a4: <:<10><10>:>
c0: 0 ; saved registers;
c1: 0 ;
c2: 0 ;
c3: 0 ;
e. ; end write bases;
\f
;fgs 1985.03.14 base page ...3...
c0=k-h55 ; entry base:
b. a9, e1 ;block for base
w.
al w2 0 ;intaddr:=addr(cat base)-70
a9: ba w3 x3+1 ;if first param<>text then goto test integer
rl w1 x3 ;
se.w1(b4.) ;
jl. a0. ;
dl.w1 b22. ;text:=<:what:>;
sn w0(x3+2) ;if text <>
se w1(x3+4) ; param then
jl. a1. ;goto next text
jl.w1 b23. ;write bases;
jl. a9. ;goto first again
a2: sn w0(x3+2) ;test text: if text<>param then goto next text
se w1(x3+4) ;
jl. a1. ;
dl w1 x3+8 ;
sn w0 0 ;
se w1 0 ;
jl. a1. ;
ba w3 x3+1 ;w3:=addr of next param
sn w2 16 ;if text=<:abs:> then
al.w2 b14. ;intaddr:=addr(absint)-70
sn w2 12 ;if text=<:user:> then
al.w2 b13. ;intaddr:=addr(user base)-70
sh w2 8 ;if text=<:max:> or <:std:> then
a0: am. (h16.) ;test integer: modif w2 by proc descr addr
dl w1 x2+70 ;w01:=interval
al.w2 b16. ;index:=0
ds w1 x2 ;b16:=interval
rs w0 x2+2 ;b17:=intervalstart
jl. 4 ;
a5: ba w3 x3+1 ;next param:
rl w1 x3 ;
se.w1(b10.) ;if param<>integer then
jl. a7. ;goto test what
dl w1 x3+4 ;w0:=param
se.w1(b15.) ;if next param= .integer then
jl. a4. ;begin
al w3 x3+4 ; next param
hs w0 0 ; w0:=w0<12+param
hl w0 x3+3 ;end
a4: wa.w0 b17. ;b16(index):=intervalstart+w0
rs w0 x2 ;
rs w0 x2-2 ;
al w2 x2+2 ;index:=index+1
sh.w2 b17. ;if index<2 then goto next param
jl. a5. ;
ba w3 x3+1 ;next param
rl w1 x3 ;
\f
; rc 1981.08.31 base page ...4...
a7: se.w1(b4.) ;test what:
jl. a3. ;if not text then goto test end
dl.w1 b22. ;text:=<:what:>
sn w0(x3+2) ;if text <>
se w1(x3+4) ; param then
jl. e0. ;goto param error
al w2 0 ;param=what:=true
ba w3 x3+1 ;w3:=addr of next param
rl w1 x3 ;w1:=next param
a3: sl.w1(b10.) ;test end: if param<>end then
jl. e0. ;goto parameter error
dl.w1 b16. ;set base
al.w3 b11. ;
jd 1<11+72 ;
se w0 0 ;if base not set then
jl. e1. ;goto interval error
sn w2 0 ;if last param = <:what:> then
jl.w1 b23. ;write bases
jl. a6. ;goto return to fp
e1: am b18 ;interval error
e0: al.w0 b19. ;parameter error
jl.w3 h31.-2 ;
am 1 ;
a6: al w2 0 ;
jl.w3 h7. ;return to fp
a1: al w2 x2+4 ;next text:
sl w2 20 ;if not found then
jl. e0. ;goto param error
dl.w1 x2+b12. ;get next text
jl. a2. ;goto test text
i.
e. ; end block for base
\f
; rc 1981.08.31 base page ...5...
b10: 4<12+4 ;intparam
b15: 8<12+4 ;.intparam
b4 : 4<12+10 ;textparam
b21: <:<10>:>
b19: <:<10>***base param<10><0>:>
b18=k-b19,<:<10>***base interval<10><0>:>
;variables for base
b11: 0,-1 ;absint ;nul
b14=b11-68 ;addr (absint)-68
b13=h58-70 ;addr (user base)-70
0 ;interval ;max
b16:b0: 0 ;
b17:b3: 0 ;intervalstart ;work in use
b12=k-2
<:max:>, 0 ;b12+4
<:std:>, 0 ;b12+8
<:user<0><0>:> ;b12+12
<:abs:>, 0 ;b12+16
b22=k+2
<:what<0><0>:> ;b22
e. ;end segment base
c2=k-h55 ;length of program
\f
; rc 1981.08.31 base page ...6...
; base
g0:
g1: (:c2+511:)>9 ; segm
0, r.4
s2 ; date
0,0 ; file, block
2<12+c0 ; contents, entry
c2 ; length
m. rc base 1985.03.14
d.
p.<:insertproc:>
l.
e.
▶EOF◀