|
|
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: 6144 (0x1800)
Types: TextFile
Names: »cltx «
└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code
└─⟦75ff9bef3⟧
└─⟦this⟧ »cltx «
\f
; fgs 1985.03.07 fileprocessor connect output, page ...7...
; segment 1
; procedure get claims (key, filedescriptor);
;
; call: return:
;
; w0 key claim
; w1 link link
; w2 - unchanged
; w3 - unchanged
;
; filedescriptor.docname entry.docname or docname of disc
; 0 for drum, with claims
; 1 for disc
;
; The procedure finds the disc with the largest claims for the
; given key and returns the claims in w0 and the docname of the
; disc in filedescriptor.docname.
; If docname given in filedescriptor.docname is 0, the search
; starts among the drums, if it is 1 it starts among the discs.
; If, however, the docname given is a document name for a disc
; included in the bs system, the procedure returns the claims
; for the given key for that disc.
;
a8: ds. w3 h10.+4 ; get claims: (fp exception routine dump area used)
rs. w1 h10.+0 ; save (w2, w3); save return;
zl w2 64 ;
sl w2 9 ; if monitor release > 8 then
am 1 ; key := key * 4 else
ls w0 1 ; key := key * 2 ;
hs. w0 b2. ;
rl w0 92 ; w0 := first drum;
rl w1 96 ; last device :=
al w1 x1-2 ; top discs - 2;
rs. w0 b1. ; first device := first drum;
rl. w2 h54.+2 ; w2 := first word of docname;
sh w2 1 ; if docname (1) <> (0, 1) then
jl. a12. ; begin <*docname specified*>
al. w3 h54.+2 ;
jd 1<11 + 4 ; w0 := proc descr addr (docname);
sn w0 0 ; if process exists then
jl. a12. ; begin
am (0) ; w0 :=
rl w0 24 ; chaintable addr (docname);
a25: rl w2 x1 ; loop: w2 := device.chaintable address;
sn w2 (0) ; if device.chaintable address <>
jl. a39. ; doc .chaintable address then
; begin
al w1 x1-2 ; device := device -2;
jl. a25. ; goto loop;
; end;
a39: rs. w1 b1. ; first device := last device := device found;
; end process exists;
; end docname specified;
a12: al w0 0 ;
rs. w0 h10.+8 ; max slices := 0;
a9: rl w2 x1 ; next device:
rl. w3 h16. ; w2 := device.chaintable address;
wa w3 x2-36 ; w3 := device.key zero claims;
rs. w3 h10.+12 ; save device.key zero claims;
al w0 2047 ; min slices :=
rs. w0 h10.+10 ; +infinity;
b2 = k + 1 ; key * (if mon rel < 9 then 2 else 4);
al w3 x3+0 ; w3 := device.slice claims.key
\f
; fgs 1983.07.28 fileprocessor connect output, page ...7a...
; segment 1
a10: zl w0 64 ; next key:
sl w0 9 ; if monitor release <= 8 then
jl. a36. ; begin <*halfwords*>
zl w0 x3+1 ; sliceclaim := halfword;
sh. w0 (h10.+10) ; if slice claim <= min slices then
rs. w0 h10.+10 ; min slices := slice claim;
al w3 x3-2 ; decrease sliceclaim key address by two;
jl. a37. ; end else
a36: rl w0 x3+2 ; begin <*words*>
sh. w0 (h10.+10) ; slize claim := word;
rs. w0 h10.+10 ; if slice claim <= min slices then
al w3 x3-4 ; min slices := slice claim;
a37: sl. w3 (h10.+12) ; decrease sliceclaim key address by four;
jl. a10. ; end;
; if claim key addr >= claim key 0 address then
; goto next key;
rl. w0 h10.+10 ;
sl. w0 (h10.+8) ; if min slices >= max slices then
jl. a11. ;
jl. a38. ; begin
a11: rs. w0 h10.+8 ; max slices := min slices;
rl w0 x2-8 ; slice length := slice length (device);
rs. w0 h10.+6 ; end;
a38: al w1 x1-2 ; device := device - 2;
sl. w1 (b1.) ; if device <> first device then
jl. a9. ; goto next device;
rl. w0 h10.+8 ; w0 := max slices;
dl. w3 h10.+4 ; restore (w2, w3);
jl. (h10.) ; return;
\f
; fgs 1983.07.28 fileprocessor connect output, page ...7b...
; segment 1
; procedure convert to slices (w3, slicelength);
;
; call : return :
;
; w0 : - unchanged
; w1 : - destroyed
; w2 : link destroyed
; w3 : value (value - sign)//slicelength + sign
; h10.+6 : slicelength slicelength
;
a4: rs. w2 h10.+0 ; entry: save return;
sh w3 0 ; i :=
am +2 ; sign (value);
al w1 -1 ;
sn w3 0 ;
al w1 0 ;
wa w3 2 ; extend sign (w3);
el w2 6 ; value := ((value + i)//
el w2 4 ; slicelength - i) *
wd. w3 h10.+6 ; slicelength ;
ws w3 2 ;
jl. (h10.) ; return;
\f
; fgs 1982.12.03 file processor connect output, page ...7c...
; segment 1
▶EOF◀