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

⟦93e42661c⟧ TextFile

    Length: 15360 (0x3c00)
    Types: TextFile
    Names: »kkmonret«

Derivation

└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ.  Detaljer om "HC8000" projekt.
    └─⟦0364f57e3⟧ 
        └─⟦this⟧ »kkmonret« 
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
    └─⟦b2ec5d50f⟧ 
        └─⟦this⟧ »kkmonret« 

TextFile

(
message monchange date

skip 36.1
c=copy mess.no 1
mdef=edit mondef

skip 36.1
c=copy mess.no 1
mcentral=edit moncentral

skip 36.1
c=copy mess.no 1
mprocs=edit monprocs

skip 36.1
c=copy mess.no 1
mdisc=edit mondisc

skip 36.1
c=copy mess.no 1
mfpaline=edit monfpaline

skip 36.1
c=copy mess.no 1
mhost=edit monhost

skip 36.1
c=copy mess.no 1
mfpasub=edit monfpasub

skip 36.1
c=copy mess.no 1
mtabinit=edit montabinit

skip 36.1
c=copy mess.no 1
mprocfnc1=edit monprocfnc1

skip 36.1
c=copy mess.no 1
mprocfnc2=edit monprocfnc2

skip 36.1
c=copy mess.no 1
ms1=edit mons1

skip 36.1
c=copy mess.no 1
ms2=edit mons2

skip 36.1
c=copy mess.no 1
mcatinit=edit moncatinit

head cpu
end)
;$
;************mondef************
l./j0=j0+(:a110/
i/
c.(:a400>18a.1:)-1     ;kk
  j0=j0+(:a110<2+4:)*a112
z.
c. -(:a400>18a.1:)     ;kk
/
l./j0/,l1,i/
z.
/

f
;$
;************moncentral************

f
;$
;************monprocs************
l./b16:/,l./c29;118/
i/
c.(:a400>18.1:)-1     ;kk
e59       ; 118 : lookup bs claims
z.
c. -(:a400>18.1:)     ;kk
/
l2,i/
z.
/
l./e39:/,l1
i/
c. (:a400>18.1:)-1     ;kk
e59:                   ;kk lookup bs claims
z.
/

f
;$
;************mondisc************

f
;$
;************monfpaline************

f
;$
;************monhost************

f
;$
;************monfpasub************

f
;$
;************montabit************
l./a110*2+2/
i/
c.(:a400>18a.1:)-1     ;kk
     al  w1  x1+a110*4+4;kk bs_claims rel addr:=bs_claims rel addr +(max key+1)*4 
z.
c. -(:a400>18a.1:)     ;kk
/
l2,i/
z.
/
l./a110*2+2/
i/
c.(:a400>18a.1:)-1     ;kk
     al  w1  x1+a110*4+4;kk bs_claims rel addr:=bs_claims rel addr +(max key+1)*4
z.
c. -(:a400>18a.1:)     ;kk
/
l2,i/
z.
/

f
;$
;************monprocfnc1************
l./e80:/,l1
i/
c.(:a400>18.1:)-1      ;kk
e83:                   ;kk bs-claims.cur.proc to sender area
z.
/

f
;$
;************monprocfnc2************
l./m25:/,l-3,l./h4:/
i/
c.(:a400>18a.1:)-1     ;kk
h4:  0, r.a109*2       ;kk pseudo main cat bs_claims
z.
c. -(:a400>18a.1:)     ;kk
/,l2,i/
z.
/
l./g0:/,l./a109/,l-1
i/
c.(:a400>18a.1:)-1     ;kk
     rs. w1    h4.     ;kk save entries
      r. a109*2        ;kk
z.
c. -(:a400>18a.1:)     ;kk
/
l3,i/
z.
/
l./g10:/,l./sow22/
i/
c.(:a400>18a.1:)-1     ;kk
     ls  w1     1      ;kk half word addr changed to integer addr 
z.
/
l./bzw0x1+2/
i/
c.(:a400>18a.1:)-1     ;kk
    rl  w0     x1+4    ;kk w0:=current claim(claim addr);
z.
c. -(:a400>18a.1:)     ;kk
/
l2,i/
z.
/
l./hsw0x1+2/
i/
c.(:a400>18a.1:)-1     ;kk
     rs  w0     x1+4   ;kk current claim(claim addr):=rest
z.
c. -(:a400>18a.1:)     ;kk
/
l2,i/
z.
/
l./m32:/,l./g8:/,l2
i/
c.(:a400>18a.1:)-1     ;kk
     rl  w0  x1        ;kk remainder:= claim(key).sender
z.
c. -(:a400>18a.1:)     ;kk
/
l2,i/
z.
/
l./hsw0/
i/
c.(:a400>18a.1:)-1     ;kk
     rs  w0  x1        ;kk claim(key).sender:= remainder
z.
c. -(:a400>18a.1:)     ;kk
/
l2,i/
z.
/
l./bz/
i/
c.(:a400>18a.1:)-1     ;kk
     rl  w0  x2        ;kk newclaim:= claim(key).child
z.
c. -(:a400>18a.1:)     ;kk
/
l2,i/
z.
/
l./hsw0/
i/
c.(:a400>18a.1:)-1     ;kk
     rs  w0  x2        ;kk claim(key).child:=newclaim
z.
c. -(:a400>18a.1:)     ;kk
/
l2,i/
z.
/
l./x1+1/
i/
c.(:a400>18a.1:)-1     ;kk
     al  w1  x1+2      ;kk increase (sender claimaddr);
     al  w2  x2+2      ;kk increase (child claimaddr);
z.
c. -(:a400>18a.1:)     ;kk
/
l3,i/
z.
/
l./m35:/,l./bzw1x1+1/
i/
c.(:a400>18a.1:)-1     ;kk
     rl  w1  x1+2      ;kk w1:= slice claim (key 0)
z.
c. -(:a400>18a.1:)     ;kk
/,l2,i/
z.
/
l./m39:/,l./wmw0/
l1,i/
c. -(:a400>18a.1:)     ;kk
/
l./bz/
i/
z.
/
l./alw3/
i/
c.(:a400>18a.1:)-1     ;kk
     al  w1  x3+1      ;kk
z.
c. -(:a400>18a.1:)     ;kk
/
l3,i/
z.
/
l./rs.w0/
i/
c.(:a400>18a.1:)-1     ;kk
;kk w3=max entry claims
;kk w0=max slice claims
     ds. w1     h3.    ;kk
z.
c. -(:a400>18a.1:)     ;kk
/
l2,i/
z.
/
l./g10:/
i/
c.(:a400>18a.1:)-1     ;kk
     jl.        g13.   ;kk test more internals
g10:
     rl  w2  x2        ;kk   proc:=nametable(entry)
     ld  w0     -100   ;kk   clear w3-w0
     sn. w2    (d2.)   ;kk   claim:= if
     dl. w0     h3.    ;kk      proc= sender then maxclaim else 0
     rl. w1     d4.    ;kk w1 := curdoc
     wa  w2  x1+f60    ;kk claim addr:=proc +claimrel.curdoc
z.
c. -(:a400>18a.1:)     ;kk
/
l./(h1.)/
i/
z.
/
l./g11:/,l-1
i/
c.(:a400>18a.1:)-1     ;kk
     al  w1  x2        ;kk
g11:  ;kk w3 = entry claim
      ;kk w0 = slice claim
     rs  w0  x2+2      ;kk init slice claim from slice
     sl  w2  x1+a109*4 ;kk if key >=min aux key then
     rs  w3  x2        ;kk init entry claim
     al  w2  x2+4      ;kk increase(key)
     sh  w2  x1+a110*4 ;kk if key <= max cat key then
     jl.        g11.   ;kk goto init next key
g12:                   ;kk test more internal
     rl. w2     h4.    ;kk load nametable entry
     al  w2  x2+2      ;kk increase(entry)
g13: rs. w2     h4.    ;kk store next entry
z.
c. -(:a400>18a.1:)     ;kk
/
l./(b7)/
i/
z.
/
l./g15:/,l1
i/
c.(:a400>18a.1:)-1     ;kk
     al  w1  x2        ;kk
g16: rs  w3  x2        ;kk init entry claim(key)
     al  w2  x2+4      ;kk increase(key)
     sh  w2  x1+a109*4-1;kk if key < min aux key then
z.
c. -(:a400>18a.1:)     ;kk
/
l./jl.g16./
i/
z.
/
l./h2:/,l1,i/
c.(:a400>18a.1:)-1     ;kk h2=entry claim
h3:  0                 ;kk slice claim
h4:  0                 ;kk name table entry
z.
/
l./m50:/,l./e.   /,l./;find/
i/
c.(:a400>18.1:)-1      ;kk
;kk find process and move bs-claims from process to sender area
; call : m51
b.   g10 w.
m51: jl. w3     e47.   ;kk find best process
            b6         ;kk first internal in name table
            b7         ;kk last in name table
     jl.        j3.    ;kk process non exist: result 3
     am.        (d4.)  ;kk
     wa  w2     f60    ;kk w2:= bs-claim address in curr proc
     al  w1  x2        ;kk
     al  w0     a110*4+4;kk bs-claims length
     jl. w3     e83.   ;kk move
     jl. w2     e60.   ;kk w2:=addr(w1.sender);
     al  w1  x2+a110*4 ;kk w1:=last key;
g0:  rl  w0  x2+2      ;kk w0:=slice;
     am.        (d4.)  ;kk
     wm  w0     f64    ;kk w0:=segments;
     rs  w0  x2+2      ;kk  :=segment;
     al  w2  x2+4      ;kk w2:=next key;
     sh  w2  x1        ;kk if w2<=last key then
     jl.        g0.    ;kk goto next key;
     jl.        j0.    ;kk goto result ok
e.
z.
/
l./m91:/,l./h0:/
i/
c. -(:a400>18a.1:)     ;kk
/
l2,i/
z.
c.(:a400>18a.1:)-1     ;kk
h0:  (:a110+1:)<1      ;kk number of keys * 2 (=max cat key +1 *2)
z.
/
l./m154:/,l./al.w2v6./
i/
c.(:a400>18a.1:)-1     ;kk
     am         -2046  ;kk
     al. w2     v6.+2046;kk
z.
c. -(:a400>18a.1:)     ;kk
/
l2,i/
z.
/
l./m50=m50-n50/
r/,            /, m51 = m51-n50/
l./p60:/,l-1,i/
c.(:a400>18.1:)-1     ;kk
;kk lookup bs claims
;kk call:
;kk w1.sender :  claim list address
;kk w2.sender :  document name address
;kk w3.sender :  name address

;kk return:
;kk w0.sender : result = 0 : bs claims looked up
;kk             result = 2 : document not found
;kk             result = 3 : process does not exist
;kk             result = 6 : name format illegal
p59:                   ;kk lookup bs claims
     m104              ;kk move docname.sender to docname.work 
     m84               ;kk size.work:=0
     m36,t22           ;kk search chain, state = allowed for normal use
     m65               ;kk move catbase,name to work;
     m51               ;kk find best internal process and move bs claims
z.

/
l./n49:/,l./p57./
r/r7.,r7./r7.,p59./

f
;$
;************mons1************
l./d35:/
l./i12./,l-1,i/
c. -(:a400>18a.1:)     ;kk
/,l3,i/
z.
/
l./i6:/,l-4,i/
c.(:a400>18a.1:)-1       ;kk
     al. w2     e20.     ;kk w2:=addr(device);
     jl. w1     d79.     ;kk lookup bs claims
     rs. w1     i0.      ;kk := base of bs claims store;
     al. w2     e51.     ;kk
i6:  dl  w0  x1+2        ;kk w0:=segments; w3:=entries;
     ds  w0  x2+2        ;kk :=entries,segments;
     al  w2  x2+4        ;
     al  w1  x1+4        ;kk w1:=next key;
     am.        (i0.)    ;kk
     sh  w1     a110*4   ;kk if key<= max key then
     jl.        i6.      ;kk goto next key;
z.
c.    -(:a400>18a.1:)    ;kk
/,l./a110*2/,l2,i/
z.
/
l./i12:/,l-1,i/
c. -(:a400>18a.1:)     ;kk
/,l2,i/
z.
/
l./i2:/,i/
c.(:a400>18a.1:)-1       ;kk
i0:  e86                 ;kk addr of bs claims store
z.
/
l./d78:/,l./e.z./,l1,i/
c.(:a400>18a.1:)-1        ;kk
; 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.
d79: al. w3     i2.       ;kk entry0: w3:=addr('s');
d80: rs. w1    i0.        ;kk entry2: store(w1);
     rl. w1     i1.       ;kk w1:= addr(bs claim store);
     jd         1<11+118  ;kk lookup bs-claims
     jl.        (i0.)     ;kk return;
i0:  0                    ;kk
i1:  e86                  ;kk addr of bs claims
i2:  <:s:>,0,0,0          ;kk current process
e.
z.
/
f
;$
;************mons2************
l./g76:;max:/,l./jl.g2./,l1,i/
g2=k-2
/
l2,i/
g35=k-2
/
l./d16=k-2/,l-1,i/
c.(:a400>18a.1:)-1       ;kk
     jl.        d2.      ;kk
d2=k-2
     jl.        d19.     ;kk
d19=k-2
     jl.        d20.     ;kk
d20=k-2
     jl.        d21.     ;kk
d21=k-2 
     jl.        d23.     ;kk
d23=k-2
z.
/,l./b./,i/
c.(:a400>18a.1:)-1       ;kk
     jl.        d70.     ;kk
d70=k-2
     jl.        d71.     ;kk
d71=k-2
     jl.        d79.     ;kk
d79=k-2     
     jl.        d80.     ;kk
d80=k-2
     jl.        g9.      ;kk
g9=k-2
z.
/
l./jl.g16./,l1
i/
g16=k-2
/
l./d76:/,l./e20./,l1,i/
c.(:a400>18a.1:)-1       ;kk
     rs. w3     i13.     ;kk :=addr(curr. process);
z.
/
l./jl.g9./,r/+2046/ /,r/jl./jl.    /,l-1,d,l-2,r/;/; if error then/
l./a88-2/,i/
c.(:a400>18a.1:)-1       ;kk
     rl. w2     i4.      ;kk w2:=addr(curr device);
     rl. w3     i13.     ;kk w3:= addr(curr process);
     jl. w1     d80.     ;kk lookup bs claims(device,process);
     rl. w2     i3.      ;kk addr(perm claim.curr process);
     dl  w0  x1+14       ;kk w0:=segments; w3:=entries;
     ds  w0  x2+2        ;kk
z.
c.   -(:a400>18a.1:)     ;kk
/,l./j2:/,i/
z.
/,l./i11:/,l1,i/
c.(:a400>18a.1:)-1       ;kk
i12: 0                   ;kk slice length;
i13: 0                   ;kk addr of current process;
z.
/
l./;char/,i/
c.(:a400>18a.1:)-1       ;kk
; 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.
g47: jl. w3     d2.      ;kk next param
     se  w0     1        ;kk if type<>name then
     jl.        g2.      ;kk goto end line;
     rs. w0     i0.      ;kk  i0:=1;
     rl. w3     i1.      ;kk w3:=addr(name);
     al. w2     i2.      ;kk
     dl  w1  x3+2        ;kk
     ds  w1  x2+2        ;kk
     dl  w1  x3+6        ;kk
     ds  w1  x2+6        ;kk move name;
     rl  w2     92       ;kk print all devices:
     jl.        j3.      ;kk w2:=addr(first in device list);
j1:  rl. w3     i0.      ;kk
     se  w3     1        ;kk if not first time then
     jl.        j4.      ;kk  goto next device else
     rs. w1     i0.      ;kk i1:=addr(bs claim store);
     al. w1     i2.      ;kk w1:=addr(process);
     jl. w3     d19.     ;kk init write;
     jl. w3     d21.     ;kk write(process name);
     jl. w3     j9.      ;kk print space;
     al. w1     i4.      ;kk
     jl. w3     d21.     ;kk write(head);
     al  w0     10       ;kk
     jl. w3     d20.     ;kk print new line;
     jl. w3     d23.     ;kk outline;
     jl. w3     d42.     ;kk save(work.buff);
     jl.        g2.      ;kk return-2 else
j4:  rl. w1     i1.      ;kk w1:=addr(device);
     jl. w3     d19.     ;kk init write;
     jl. w3     d21.     ;kk write(device name);
     jl. w3     j9.      ;kk print fill;
     rl. w2     i0.      ;kk w2:=addr(bs claim store);
j2:  rl  w1  x2          ;kk w1:=next entry-claim;
     al  w0     4        ;kk
     jl. w3     d71.     ;kk write(entry-claim);
     al  w0     44       ;kk
     jl. w3     d20.     ;kk write(<:,:>);
     al  w0   6          ;kk
     rl  w1  x2+2        ;kk w1:=next segments claim;
     jl. w3     d71.     ;kk write(segments claim);
     al  w2  x2+4        ;kk w2:=addr(next claim);
     am.        (i0.)    ;kk  
     sh  w2     a110*4+2 ;kk if claim addr<= last claim then
     jl.        j2.      ;kk goto j2;
     al  w0     10       ;kk
     jl. w3     d20.     ;kk print new line;
     jl. w3     d23.     ;kk outline;
     jl. w3     d42.     ;kk save(work.buff);
     jl.        g2.      ;kk return-2 else
     rl. w2     i3.      ;kk w2:=param type or next addr in device list;
j5:  al  w2  x2+2        ;kk next device;
     sl  w2     101      ;kk if addr in device list then
     jl.        j6.      ;kk goto test next device;
j3:  jl. w3     d2.      ;kk else next param;
     rs. w0     i3.      ;kk set param type;
     sn  w0     1        ;kk if type=name then
     jl.        j0.      ;kk goto next device else
     se  w0     0        ;kk else if type<>empty then
     jl.        g2.      ;kk goto end line else
     sh  w2     100      ;kk if param list then
     jl.        g35.     ;kk goto next command else
j6:  rs. w2     i3.      ;kk :=next addr in device list
     sn  w2     (96)     ;kk if w2=last in name table then
     jl.        g35.     ;kk goto next command else
     rl  w3  x2          ;kk w3:=addr(next device table head);
     rl  w0  x3-18       ;kk w0:=first word in name;
     sn  w0     0        ;kk if device=idle then
     jl.        j5.      ;kk goto next device
     rl. w2     i1.      ;kk w2:=addr(name store);
     dl  w1  x3-16       ;kk
     ds  w1  x2+2        ;kk
     dl  w1  x3-12       ;kk
     ds  w1  x2+6        ;kk move device name;
j0:  al. w3     i2.      ;kk w3:=addr(process);
     rl. w2     i1.      ;kk w2:=addr(device name);
     jl. w1     d80.     ;kk lookupbsclaims(device,process);
     sn  w0     0        ;kk if result=ok then
     jl.        j1.      ;kk goto print else
     sn  w0     2        ;kk if result=2 then
     jl.        g16.     ;kk goto write(device not exist);
     sn  w0     3        ;kk if result=3 then
     jl.        g9.      ;kk goto write(process not exist);
     jl.        g2.      ;kk else goto end line;
j9:  al  w1  x1-11       ;kk procedure write 12-w1 space
     ac  w1  x1          ;kk
     jl.        d70.     ;kk return via d70
i0:  0                   ;kk addr(bs claim store);
i1:  e20                 ;kk addr(name parameter);
i2:  0,r.4               ;kk process name;
i3:  0                   ;kk param type or next addr in device list
i4:  <: temp          perm-key1     login         user<0>:>;kk head;
e.
e86: 0,r.(:a110+1:)*2    ;kk bs claim store;
z.
/
l./g81-g45/,i/
c.(:a400>18a.1:)-1
<:lookbs:>  ,1<17+g47-g45
z.
/
f
;$
************moncatinit************

f
;$
scope user mdef mcentral mprocs mdisc mfpaline mhost mfpasub,
mtabinit mprocfnc1 mprocfnc2 ms1 ms2 mcatinit
head 1
▶EOF◀