|
|
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: 13824 (0x3600)
Types: TextFile
Names: »kkmonret0«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt.
└─⟦0364f57e3⟧
└─⟦20407c65c⟧ »kkmon0filer«
└─⟦this⟧
└─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ.
└─⟦4334b4c0b⟧
└─⟦f781f2336⟧ »kkmon0filer«
└─⟦this⟧
(
message monchange release 7.0 to 7.1
clear temp mondef moncentral monprocs mondisc monfpaline monhost monfpasub,
montabinit monprocfnc1 monprocfnc2 mons1 mons2 moncatinit,
mdef mcentral mprocs mdisc mfpaline mhost mfpasub,
mtabinit mprocfnc1 mprocfnc2 ms1 ms2 mcatinit
contract entry.kkmon0filer mondef moncentral monprocs mondisc monfpaline,
monhost monfpasub montabinit monprocfnc1 monprocfnc2 mons1 mons2 moncatinit
skip 36.1
c=copy mess.no 1
mdef=set 1 disc3
mdef=edit mondef
skip 36.1
c=copy mess.no 1
mcentral=assign moncentral
skip 36.1
c=copy mess.no 1
mprocs=set 1 disc3
mprocs=edit monprocs
skip 36.1
c=copy mess.no 1
mdisc=assign mondisc
skip 36.1
c=copy mess.no 1
mfpaline=assign monfpaline
skip 36.1
c=copy mess.no 1
mhost=assign monhost
skip 36.1
c=copy mess.no 1
mfpasub=assign monfpasub
skip 36.1
c=copy mess.no 1
mtabinit=set 1 disc3
mtabinit=edit montabinit
skip 36.1
c=copy mess.no 1
mprocfnc1=set 1 disc3
mprocfnc1=edit monprocfnc1
skip 36.1
c=copy mess.no 1
mprocfnc2=set 1 disc3
mprocfnc2=edit monprocfnc2
skip 36.1
c=copy mess.no 1
ms1=set 1 disc3
ms1=edit mons1
skip 36.1
c=copy mess.no 1
ms2=set 1 disc3
ms2=edit mons2
skip 36.1
c=copy mess.no 1
mcatinit=assign moncatinit
head cpu
end)
;$
;************mondef************
l./j0=j0+(:a110/,d,
i/
j0=j0+(:a110<2+4:)*a112 ;KK top of bs-claims list
/,
f
;$
;************moncentral************
f
;$
;************monprocs************
l./b16:/,l./c29;118/,d,
i/
e59 ; 118 : lookup bs claims
/,
l./e39:/,l1,
i/
e59: ; lookup bs claims
/,
f
;$
;************mondisc************
f
;$
;************monfpaline************
f
;$
;************monhost************
f
;$
;************monfpasub************
f
;$
;************montabit************
l./a110*2+2/,d,
i/
al w1 x1+a110*4+4; bs_claims rel addr:=bs_claims rel addr +(max key+1)*4
/,l./a110*2+2/,d,
i/
al w1 x1+a110*4+4; bs_claims rel addr:=bs_claims rel addr +(max key+1)*4
/,
f
;$
;************monprocfnc1************
l./e80:/,l1,
i/
e83: ; bs-claims.cur.proc to sender area
/,
f
;$
;************monprocfnc2************
l./m25:/,l-3,l./h4:/,d,
i/
h4: 0, r.a109*2 ; pseudo main cat bs_claims
/,l./g0:/,l./a109/,l-1,d1,
i/
rs. w1 h4. ; save entries
r. a109*2 ;
/,l./g10:/,l./sow22/,
i/
ls w1 1 ; half word addr changed to integer addr
/,l./bzw0x1+2/,d,
i/
rl w0 x1+4 ; w0:=current claim(claim addr);
/,l./hsw0x1+2/,d,
i/
rs w0 x1+4 ; current claim(claim addr):=rest
/,l./m32:/,l./g8:/,l2,d,
i/
rl w0 x1 ; remainder:= claim(key).sender
/,l./hsw0/,d,
i/
rs w0 x1 ; claim(key).sender:= remainder
/,l./bz/,d,
i/
rl w0 x2 ; newclaim:= claim(key).child
/,l./hsw0/,d,
i/
rs w0 x2 ; claim(key).child:=newclaim
/,l./x1+1/,d1,
i/
al w1 x1+2 ; increase (sender claimaddr);
al w2 x2+2 ; increase (child claimaddr);
/,l./m35:/,l./bzw1x1+1/,d,
i/
rl w1 x1+2 ; w1:= slice claim (key 0)
/,l./m39:/,l./wmw0/,l1,d2,
l./alw3/,d1,
i/
al w1 x3+1 ;
/,l./rs.w0/,d,
i/
; w3=max entry claims
; w0=max slice claims
ds. w1 h3. ;
/,l./g10:/,d./x1+f60/,
i/
jl. g13. ; test more internals
g10:
rl w2 x2 ; proc:=nametable(entry)
ld w0 -100 ; clear w3-w0
sn. w2 (d2.) ; claim:= if
dl. w0 h3. ; proc= sender then maxclaim else 0
rl. w1 d4. ; w1 := curdoc
wa w2 x1+f60 ; claim addr:=proc +claimrel.curdoc
/,l./g11:/,l-1,d./alw2x2+2/,
i/
al w1 x2 ;
g11: ; init next key:
; w3 = entry claim
; w0 = slice claim
rs w0 x2+2 ; init slice claim from slice
sl w2 x1+a109*4 ; if key >=min aux key then
rs w3 x2 ; init entry claim
al w2 x2+4 ; increase(key)
sh w2 x1+a110*4 ; if key <= max cat key then
jl. g11. ; goto init next key
g12: ; test more internal
rl. w2 h4. ; load nametable entry
al w2 x2+2 ; increase(entry)
g13: rs. w2 h4. ; store next entry
/,l./g15:/,l1,d./a109*2/,
i/
al w1 x2 ;
g16: ; init maincat key:
rs w3 x2 ; init entry claim(key)
al w2 x2+4 ; increase(key)
sh w2 x1+a109*4-1; if key < min aux key then
/,l./h2:/,l1,i/
h3: 0 ; slice claim
h4: 0 ; name table entry
/,l./m50:/,l./e. /,l./;find/,
i/
; find process and move bs-claims from process to sender area
; call : m51
b. g10 w.
m51: jl. w3 e47. ; find best process
b6 ; first internal in name table
b7 ; last in name table
jl. j3. ; process non exist: result 3
am. (d4.) ;
wa w2 f60 ; w2:= bs-claim address in curr proc
al w1 x2 ;
al w0 a110*4+4; bs-claims length
jl. w3 e83. ; move
jl. w2 e60. ; w2:=addr(w1.sender);
al w1 x2+a110*4 ; w1:=last key;
g0: rl w0 x2+2 ; w0:=slice;
am. (d4.) ;
wm w0 f64 ; w0:=segments;
rs w0 x2+2 ; :=segment;
al w2 x2+4 ; w2:=next key;
sh w2 x1 ; if w2<=last key then
jl. g0. ; goto next key;
jl. j0. ; goto result ok
e.
/,l./m91:/,l./h0:/,d,
i/
h0: (:a110+1:)<1 ; number of keys * 2 (=max cat key +1 *2)
/,l./m50=m50-n50/,
r/, /, m51 = m51-n50/,
l./p57:/,l./;createauxentry/,i/
; lookup bs claims
; call:
; w1.sender : claim list address
; w2.sender : document name address
; w3.sender : name address
; return:
; w0.sender : result = 0 : bs claims looked up
; result = 2 : document not found
; result = 3 : process does not exist
; result = 6 : name format illegal
p59: ; lookup bs claims
m104 ; move docname.sender to docname.work
m84 ; size.work:=0
m36,t22 ; search chain, state = allowed for normal use
m65 ; move catbase,name to work;
m51 ; find best internal process and move bs claims
/,l./n49:/,l./p57./,
r/r7.,r7./r7.,p59./,
f
;$
;************mons1************
l./d35:/,
l./i12./,l-1,d1,
l./i6:/,l-4,d./jl.i6./,i/
al. w2 e20. ; w2:=addr(device);
jl. w1 d84. ; lookup bs claims
rs. w1 i0. ; := base of bs claims store;
al. w2 e51. ;
i6: dl w0 x1+2 ; w0:=segments; w3:=entries;
ds w0 x2+2 ; :=entries,segments;
al w2 x2+4 ;
al w1 x1+4 ; w1:=next key;
am. (i0.) ;
sh w1 a110*4 ; if key<= max key then
jl. i6. ; goto next key;
/,l./i9:/,d,
l./i2:/,i/
i0: e86 ; addr of bs claims store
/,l./d78:/,l./e.z./,l1,i/
; procedure lookup bs claims(device,process);
; comment the bs-claims for the process is looked up on the given device;
; call: return:
;w0 - result
;w1 return addr. of bs-claims
;w2 device unchanged
;w3 process -
b. i2 w.
d84: al. w3 i2. ; entry0: w3:=addr('s');
d85: rs. w1 i0. ; entry2: store(w1);
rl. w1 i1. ; w1:= addr(bs claim store);
jd 1<11+118 ; lookup bs-claims
jl. (i0.) ; return;
i0: 0 ;
i1: e86 ; addr of bs claims
i2: <:s:>,0,0,0 ; current process
e.
/,l./d77=/,l-1,i/
jl. d70. ;
d70=k-2
jl. d71. ;
d71=k-2
/,l./d79=/,l1,i/
jl. d84. ;
d84=k-2
jl. d85. ;
/,f
;$
;************mons2************
l./g76=k;max:/,l./jl.g35./,l1,i/
g35=k-2
/,l./d16=k-2/,l-1,i/
jl. g2. ;
g2=k-2
jl. d2. ;
d2=k-2
jl. d19. ;
d19=k-2
jl. d20. ;
d20=k-2
jl. d21. ;
d21=k-2
jl. d23. ;
d23=k-2
/,l./b./,i/
jl. d70. ;
d70=k-2
jl. d71. ;
d71=k-2
jl. d84. ;
d84=k-2
jl. d85. ;
d85=k-2
jl. g9. ;
g9=k-2
/,l./jl.g16./,l1,
i/
g16=k-2
/,l./d76:/,l./e20./,l1,i/
rs. w3 i13. ; :=addr(curr. process);
/,l./jl.g9./,r/+2046/ /,r/jl./jl. /,l-1,d,l-2,r/;/; if error then/,
l./a88-2/,d./rsw0x1+2/,i/
rl. w2 i4. ; w2:=addr(curr device);
rl. w3 i13. ; w3:= addr(curr process);
jl. w1 d85. ; lookup bs claims(device,process);
rl. w2 i3. ; addr(perm claim.curr process);
dl w0 x1+14 ; w0:=segments; w3:=entries;
ds w0 x2+2 ;
/,l./i11:/,l1,i/
i12: 0 ; slice length;
i13: 0 ; addr of current process;
/,l./;char/,i/
; s command lookup bs claims
; name: lookbs
; call: lookbs <process> !
; lookbs <process><sp><device><sp>...<sp><device>
; print the bs claims for the given process and device,
; in the first case it is printed for all devices
b. i10,j11
w.
g101:jl. w3 d2. ; next param
se w0 1 ; if type<>name then
jl. g2. ; goto end line;
rs. w0 i0. ; i0:=1;
rl. w3 i1. ; w3:=addr(name);
al. w2 i2. ;
dl w1 x3+2 ;
ds w1 x2+2 ;
dl w1 x3+6 ;
ds w1 x2+6 ; move name;
rl w2 92 ; print all devices:
jl. j3. ; w2:=addr(first in device list);
j1: rl. w3 i0. ;
se w3 1 ; if not first time then
jl. j4. ; goto next device else
rs. w1 i0. ; i1:=addr(bs claim store);
al. w1 i2. ; w1:=addr(process);
jl. w3 d19. ; init write;
jl. w3 d21. ; write(process name);
jl. w3 j9. ; print space;
al. w1 i4. ;
jl. w3 d21. ; write(head);
al w0 10 ;
jl. w3 d20. ; print new line;
jl. w3 d23. ; outline;
jl. w3 d42. ; save(work.buff);
jl. g2. ; return-2 else
j4: rl. w1 i1. ; w1:=addr(device);
jl. w3 d19. ; init write;
jl. w3 d21. ; write(device name);
jl. w3 j9. ; print fill;
rl. w2 i0. ; w2:=addr(bs claim store);
j2: rl w1 x2+2 ; w1:=next segment-claim;
al w0 6 ;
jl. w3 d71. ; write(segment-claim);
al w0 44 ;
jl. w3 d20. ; write(<:,:>);
al w0 4 ;
rl w1 x2 ; w1:=next entry claim;
jl. w3 d71. ; write(entry claim);
al w2 x2+4 ; w2:=addr(next claim);
am. (i0.) ;
sh w2 a110*4+2 ; if claim addr<= last claim then
jl. j2. ; goto j2;
al w0 10 ;
jl. w3 d20. ; print new line;
jl. w3 d23. ; outline;
jl. w3 d42. ; save(work.buff);
jl. g2. ; return-2 else
rl. w2 i3. ; w2:=param type or next addr in device list;
j5: al w2 x2+2 ; next device;
sl w2 101 ; if addr in device list then
jl. j6. ; goto test next device;
j3: jl. w3 d2. ; else next param;
rs. w0 i3. ; set param type;
sn w0 1 ; if type=name then
jl. j0. ; goto next device else
se w0 0 ; else if type<>empty then
jl. g2. ; goto end line else
sh w2 100 ; if param list then
jl. g35. ; goto next command else
j6: rs. w2 i3. ; :=next addr in device list
sn w2 (96) ; if w2=last in name table then
jl. g35. ; goto next command else
rl w3 x2 ; w3:=addr(next device table head);
rl w0 x3-18 ; w0:=first word in name;
sn w0 0 ; if device=idle then
jl. j5. ; goto next device
rl. w2 i1. ; w2:=addr(name store);
dl w1 x3-16 ;
ds w1 x2+2 ;
dl w1 x3-12 ;
ds w1 x2+6 ; move device name;
j0: al. w3 i2. ; w3:=addr(process);
rl. w2 i1. ; w2:=addr(device name);
jl. w1 d85. ; lookupbsclaims(device,process);
sn w0 0 ; if result=ok then
jl. j1. ; goto print else
sn w0 2 ; if result=2 then
jl. g16. ; goto write(device not exist);
sn w0 3 ; if result=3 then
jl. g9. ; goto write(process not exist);
jl. g2. ; else goto end line;
j9: al w1 x1-11 ; procedure write 12-w1 space
ac w1 x1 ;
jl. d70. ; return via d70
i0: 0 ; addr(bs claim store);
i1: e20 ; addr(name parameter);
i2: 0,r.4 ; process name;
i3: 0 ; param type or next addr in device list
i4: <: temp perm-key1 login user<0>:>; head;
e.
e86: 0,r.(:a110+1:)*2 ; bs claim store;
/,l./g81-g45/,i/
<:lookbs:> ,1<17+g101-g45
/,f
;$
************moncatinit************
f
;$
head 1
▶EOF◀