|
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: 25344 (0x6300) Types: TextFile Names: »kkmonret2«
└─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ. └─⟦4334b4c0b⟧ └─⟦this⟧ »kkmonret2«
( message monchange release 7.0 to 7.12 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.kkmon2filer 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=set 1 disc3 mcentral=edit 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=set 1 disc3 mhost=edit monhost skip 36.1 c=copy mess.no 1 mfpasub=set 1 disc3 mfpasub=edit 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=set 1 disc3 mcatinit=edit moncatinit head cpu end) $def ;******************** l./a111=3/,r/3/2/, l./; format of area process/, l 1,d./format of pseudo process/,d./a50=/,i! a401=(:a3+23:)/24 ; number of words in user bittable a403=a401*2 ; number of bytes in bit table b.j0, j0=0 a349= j0 ; <start of process> a250= j0 , j0=j0+2 ; <driver proc descr address> a402= j0 , j0=j0+a403 ; <user bit table> a48 = j0 , j0=j0+2 ; <lower limit> a49 = j0 , j0=j0+2 ; <upper limit> a10 = 0 ; <kind> a11 = 2 ; <name> a50 = 10, a51 = 11 ; <process descr addr of bs device> a52 = 12 ; <reserved> a53 = 14 ;******** <users> a60 = 16 ; <first slice> a61 = 18 ; <number of segments> a62 = 20 ; <document name> a411= 28 ; number of times written a412= 30 ; number of times read a349=a349-j0, a250=a250-j0 , a402=a402-j0, a48=a48-j0, a49=a49-j0 e. a2 = a412+2-a349 ; size of area process ; format of pseudo process a48 = -4 ; <lower limit> a49 = -2 ; <upper limit> a10 = 0 ; <kind> a11 = 2 ; <name> a50 = 10 ; <main process> !, l./; format of device description/, l./a250=j0/,l1,i/ a410=j0, j0=j0+a403 ; <user bit table> /, l./a250=a250-j0/,r/a250=a250-j0/a250=a250-j0, a410=a410-j0/, l./; format of peripheral/,l 1,i/ ; a402 start of user table /, f $central ;******************** l./d123:/,d./jlx3/,i/ d123: ba w2 x1+a14 ; w2:=addr of rel. halfword; bz w0 x2+a402 ; w0:=userbits.curr.intproc; sz w0 (x1+a14) ; if userbit.curr.intproc is on then bs w0 x1+a14+1 ; remove userbit.curr.intproc; hs w0 x2+a402 ; return userbits; bs w2 x1+a14 ; reset w2 to addr(extproc) d124:rl w0 x2+a52 ; w0:=reserver.proc; sn w0 (x1+a14) ; if intproc is reserver then al w0 0 ; remove intproc as reserver rs w0 x2+a52 ; clear reserver; jl x3 ; return; /,l./d125:/,d./jlx3/,i/ d125: rl w0 x1+a14 ; w0:=idbit.intproc; rs w0 x2+a52 ; extproc.reserver:=idbit.intproc; d126: ba w2 x1+a14 ; bz w0 x2+a402 ; w0:=userbits.curr.intproc; lo w0 x1+a14 ; set curr.intproc as user of extproc; hs w0 x2+a402 ; bs w2 x1+a14 ; reset w2; jl x3 ; return /,l./d102:/,d./jlx3 /,i/ d102: ; ba w2 x1+a14 ; bz w0 x2+a402 ; w0:=userbits.curr.intproc; bs w2 x1+a14 ; reset w2; sz w0 (x1+a14) ; if curr.intproc is user then jl x3+2 ; return to link+2: i.e. user jl x3 ; return to link: not user /,l./g17:/,l./procedurecheckuser/, l./b.i24/,d./jlx3+0/,i/ b. i5 w. g14: ; check user; sn w1 (b1) ; if curr.intproc=sender then jl x3 ; return (sender=driverproc) ds w3 i3 ; save w2 w3; rl w2 b19 ; w2:= extproc; jl w3 d113 ; check reserver; jl g6 ; return 0 other reservers goto result 2 else jl i0 ; return 2 intproc is reserver goto nornal return else ; return 4 no reservers jl w3 d102 ; check user jl g6 ; if not user then result 2 else i0: rl w2 i2 ; jl (i3) ; normal return; i2: 0 ; save w2; i3: 0 ; save w3; /,l./g15:/,d./jlx3+0/,i/ w. g15: ; check reserver; sn w1 (b1) ; if curr.intproc= sender then jl x3 ; return (sender=driverproc); am (b19) ; rl w0 a52 ; w0:=reserver.extproc; sn w0 (x1+a14) ; if intproc is reserver then jl x3 ; normal return else jl g6 ; result 2; /,f $procs ;******************** l./c99;28/,r/c99/e14/, l./proceduregetclock/,i/ ; procedure privileged operation b. i5 w. i0: 1<23 ; monitor mode e14: ; rl w1 b1 ; w1:= current rl w0 x1+a24 ; w0:=mode se w0 0 ; if mode<>0 then jl r28 ; return (monitor mode not set) rl w0 x1+a32 ; lo. w0 i0. ; status:=status add monitor mode rs w0 x1+a32 ; al w0 0 ; result=0 jl r28 ; return (monitor mode set) e. /,f $disc ;******************** $fpaline ;******************** $host ;******************** l./h90:/, l./j4:/, ;l./rsw0g20/, i/ ;c.-p103 ; rs w0 x2+8 ; status:=0 ; ds w0 x2+12 ; bytes, chars trf:= 0,0; ;z. ;c.p103-1 ;/, ;l./jlg7/, i/ ;z. ;/, l./q1:/, l./m0:/, ;l./c.p103-1/, d, l./z./, d3, l./q4:/, l./m0:/, l./c.-p103/, ;d./c.p103-1/, l./z./, d, l./j6:/, l./rl w0 x1+a53/,d 2,i/ al w3 0 ; j7: am x1+a402 ; rl w0 x3 ; am x2+a402 ; rs w0 x3 ; al w3 x3+2 ; users(proc):=proc func; sh w3 a403-2 ; jl. j7. ; rl w0 g49 ; rs w0 x2+a402 ; /, ;l./c.-p103/,d./c.p103-1/, ;l./z./,d, l./m6:/, l./rl w3 x3+a14/,d 3,i/ rl. w1 r31. ; ba w1 x3+a14 ; bz w0 x1+a402 ; lo w0 x3+a14 ; users(proc):=id-bit(sender(mess)); hs w0 x1+a402 ; rl w1 b19 ; jl. j1. ; z. /, l./m7:/, l./x3+a14/,d./j8:/,i/ j7: bz w1 x3+a14 ; get half word no am x1 ; bz w0 x2+a402 ; lo w0 x3+a14 ; am x1 ; hs w0 x2+a402 ; users(sub):=proc+all ancestors(proc) rl w3 x3+a34 ; se w3 0 ; jl. j7. ; rl w1 b19 ; z. /, l./n24:/, l-2,r/i2/i2,j2/, l./ds w0 x2+a53/,d,i/ rs w0 x2+a52 ; reserver:=0 j0: am x3 ; rs w0 x2+a402 ; users:=0 al w3 x3+2 ; sh w3 a403-2 ; jl. j0. ; /, f $fpasub ;**************** l./q14:/, l./i2:/,d 6, i/ i2: rl. w3 (j1.) ; rl w1 x1+a50 ; rec:=receiver(att-message); al w1 x1+p202 ; subhost:=subhost(main(proc)); bz w2 x3+a14 ; am x2 ; bz w0 x1+a402 ; mask:=user bits(bit displacement(rec),subhost); la w0 x3+a14+1 ; mask:=mask and id-bit(rec); rl w1 b19 ; bz w0 1 ; sn w0 0 ; if mask<>0 (i.e. receiver user of subhost) then jl. i5. ; am x2 ; bz w3 x1+a402 ; lo w3 0 ; am x2 ; hs w3 x1+a402 ; include receiver as user(proc); rl w0 x1+a402 ; exclude proc func as user; la w0 g65 ; rs w0 x1+a402 ; i5: ; z. /, f $tabinit ;******************** l./; external processes/, l./h4:/,l-1,r/0/0,r.a401,0/, l./h22:/,l-1,r/0/0,r.a401,0/, l./h23:/,l-1,r/0/0,r.a401,0/, l./h24:/,l-1,r/0/0,r.a401,0/, l./f18:/,l-1,r/0/0,r.a401,0/, l./;segment5:/, l./b92/,r/gg/gp/,r/w1:=/systemreg :=/,i/ al w1 x3+2046 ; w1:=address higther than top of loaded monitor sh. w1 (g19.) ; start addr < 200000 then rl. w1 g19. ; start addr:=200000 al w0 0 ; g20: do w0 x1 ; clear core sx 2.111 ; if exception then jl. g21. ; goto set core size al w1 x1+2 ; count: jl. g20. ; goto clear g21: /,l./g4:/, l./g5:/,l-2,d./jl.g5./,i/ rl w3 x2 ; proc:=name table(entry); ; internal process: al w0 0 ; halfword:=0; bz. w1 g9. ; id-bit:=2.1000 0000 0000 g5: rs w3 x2 ; name table(entry):=proc; hs w0 x3+a14 ; id-bit(proc):=id-bit; hs w1 x3+a14+1 ; halfword(proc):=halfword; ls w1 -1 ; id-bit:=id-bit shift (-1); se w1 0 ; if id-bit.halfword<>0 then jl. g14. ; goto g14 ba. w0 1 ; else halfword:=next halfword; bz. w1 g9. ; id-bit:=2.1000 0000 0000 ; set queue: g14: al w3 x3+a15 ; next(event q(proc) ):= rs w3 x3 ; last(event q(proc) ):= rs w3 x3+2 ; event q(proc); al w3 x3+a4-a15 ; proc:=next proc; al w2 x2+2 ; se w2 (b7) ; if if entry<> name table end then jl. g5. ; goto internal process; /,l./g13:/,l1,i/ g19: 200000 ; lower limit for clear core store /,f $procfnc1 ;******************** l./e17:/, l./ds. w3 d14./,d,i/ b. i1 w. rs. w3 d14. ; al w0 0 ; i0: rs. w0 x2+d13. ; childrensbits:=0 al w2 x2+2 ; sh w2 a403-2 ; jl. i0. ; e. /, l./e18:/,l-2,r/g0/g3/,l./e19:/, l./dl./,d./jl.(d12.)/,i/ al w0 0 ; al w1 a403 ; g3: al w1 x1-2 ; lo. w0 x1+d13. ; w0:=id bits se w1 0 ; jl. g3. ; rl w3 b6 ; w3:=addr(first proc in nametable); g0: rl w2 x3 ; for w3 through nametable do rl. w1 d14. ; w1:=proc addr; se w1 (x2+a34) ; if parent.nametable(w3)= jl. g1. ; procaddr then bz w1 x2+a14 ; include identbit.nametable(w3) bz. w0 x1+d13. ; nametable(w3)); lo w0 x2+a14 ; hs. w0 x1+d13. ; g1: al w3 x3+2 ; se w3 (b7) ; jl. g0. ; jl. (d12.) ; return; /, l./procedure nextproc(result:procaddr,newstate);/, l./b.g0/,r/0/5/, l./z.rl. w1 d13./, r/z./z. /,l./rl.w1/,d./jd.(d12.)/,i/ rs. w3 d12. ; save(link) ; rl w3 b6 ; w3:=first internal in nametable ; al w1 0 ; g2: bz. w0 x1+d13. ; for all children bits do se w0 0 ; if childrenbits(w1)=0 then jl. g1. ; goto L; al w1 x1+1 ; se w1 a403 ; jl. g2. ; rl. w3 d12. ; jd x3+2 ; return 2; g1: hs w1 0 ; w0:=relative addr<12 ; g0: rl w2 x3 ; w2:=nametable(w3) ; al w3 x3+2 ; w3:=next in nametable ; so w0 (x2+a14) ; if userbit.curr.intproc is not on then jl. g0. ; goto g0 else bz w3 0 ; w3:=relative addr lx w0 x2+a14 ; remove userbits.curr.intproc hs. w0 x3+d13. ; rs. w2 d14. ; proc addr:=w2; al w3 x2 ; al w2 f50 ; new state:=wait stop by ancestor; jd. (d12.) ; /, l./e25:/,d./jex2+0;en/,i/ e25: ; remove area process; ds. w2 h1. ; save(link); jl. w2 e53. ; test user and reserver(intproc,extproc); rs. w2 h2. ; h2:=result; so w2 2.1 ; if intproc is not user then je. (h1.) ; enable return else jl. w2 e52. ; exclude intproc as user; rl. w0 h2. ; w0:=result of test user and reserver; al w2 0 ; sz w0 2.10 ; if intproc is reserver then rs w2 x3+a52 ; remove intproc as reserver; al w2 1 ; ba w2 x1+a20 ; areaclaim.intproc:= hs w2 x1+a20 ; areaclaim.intproc+1; sz w0 2.100 ; if other users then je. (h1.) ; enable return al w0 0 ; /,l./jex2+0/,r/jex2+0 /je. (h1.)/, l./g1:/,r/:/: /,d,l./e50:/,l./e32./,l1,i/ ; procedure include user(intproc,extproc); ; reg call return ; w0 undef ; w1 intproc unchanged ; w2 link - ; w3 extproc - ; the process intproc is included as user of the external process extproc e51: ; ba w3 x1+a14 ; bz w0 x3+a402 ; w0:=userbits.intproc; lo w0 x1+a14 ; include intproc; hs w0 x3+a402 ; bs w3 x1+a14 ; reset w3 jl x2 ; return ; procedure exclude user(intproc,extproc); ; reg call return ; w0 undef ; w1 intproc unchanged ; w2 link - ; w3 extproc - ; the procedure will exclude the process addresed by intproc as user ; of the external process addressed by extproc e52: ba w3 x1+a14 ; bz w0 x3+a402 ; w0:=users.intproc; sz w0 (x1+a14) ; if intproc is user then lx w0 x1+a14 ; exclude intproc as user; hs w0 x3+a402 ; bs w3 x1+a14 ; reset w3 jl x2 ; ; procedure test users and reserver(intproc,extproc); ; reg call return ; w0 undef ; w1 intproc unchanged ; w2 link result ; w3 extproc unchanged ; the procedure set result = 2.0001 if intproc is user ; = 2.0011 if intproc is reserver (and user) ; = 2.0101 if intproc and other ip are users ; = 2.0100 if there only are other users ; = 2.1100 if another ip is reserver (and user) ; of extproc else result is set to zero b. f5,g5 w. e53: ds. w3 g1. ; save(link,w3); rl w0 x3+a52 ; w0:=reserver.extproc; al w2 2.10 ; sn w0 (x1+a14) ; if intproc is reserver then jl. f3. ; goto test other users; al w2 0 ; se w0 0 ; if there is another reserver then al w2 2.1000 ; set other-reserver bit; ba w3 x1+a14 ; w3:=addr(bitpattern.intproc); bz w0 x3+a402 ; w0:=bitpattern.intproc; sz w0 (x1+a14) ; if userbit.intproc is on then f3: al w2 x2+1 ; result:=result add 1; al w3 0 ; f0: am. (g1.) ; bz w0 x3+a402 ; w0:=next pattern.userbittable; sn w0 0 ; if no users then jl. f1. ; goto f1; hs w3 0 ; sn w0 (x1+a14) ; if only intproc is user then jl. f1. ; goto f1 else al w2 x2+2.0100 ; result:=result add 2.0100; jl. f2. ; goto f2 else f1: al w3 x3+1 ; w3:=next rel-addr se w3 a403 ; if not end bittable then jl. f0. ; goto f0; f2: rl. w3 g1. ; jl. (g0.) ; return; g0: 0 g1: 0 e. /, f $procfnc2 ;**************** l./m1:/,l./j6./,l1,i/ j6=k-2 /, l./m9:/,l./rl w0 x3+a53/,d 1,i/ ba w3 x1+a14 ; bz w3 x3+a402 ; w3:=userbits.intproc; bz w1 x1+a14+1 ; w1:=idbit.intproc; so w3 x1 ; if idbit.intproc is not on then /,l./nouser=a53/,r/a53/2.0100/,r/a52/2.1000/,l./m11:/, l./jl.w3n10./,d./snw00/,i/ rl w3 x2 ; w3:=addr(area process description); rl. w1 d2. ; w1:=intproc; jl. w2 e53. ; test user and reserver; jl. w3 n10. ; w0:=2.100 test other users ; 2.1100 test other reservers; so w2 (0) ; if no other users-reservers then /, l./m14:/,l./;test/,i/ jl. e1., e1 = k-2 /, l./m22:/, l./h4:/,l 1,i/ ; common variables: d16: 0, r.8 ; answer area c. 4 * (:a110+1:)+d16.-1; and 0, r. 2*(:a110+1:)+d16.>1; claim change array (set bs claims) z. ; d4: 0 ; curdoc: address of current document (chaintable) d5: d9 ; maincat pseudochain ; description of current entry d29: 0 ; -2 curr entry segment number d3: 0 ; curr entry address in catalog ; record work: ; (format as a catalog entry) d1: 0,r.f0>1 ; work d30: 0, r.4 ; stat area.work ; format of chainhead format of catalog entry v1 = d1 + f1 ; lower base of catalog lower base of entry v2 = d1 + f2 ; upper base of catalog upper base of entry v3 = d1 + f3 ; chainkink*8 + permkey namekey*8 + permkey v4 = d1 + f4 ; first slice of auxcat first slice v5 = d1 + f5 ; name of auxcat entry name v6 = d1 + f6 ; start of tail v7 = d1 + f7 ; size of auxcat size of entry v11= d1 + f11 ; document name name v12= d1 + f12 ; name table addr of write access counter, ; auxcat area process read acces counter v13= d1 + f5 + 2 ; v14= d1 + f5 + 6 ; v15= d1 + f5 + 7 ; v26= d1 + f66 + f0 ; last slice in chaintable v27= d1 + f67 + f0 ; first slice in ; chaintable-chain v30= d1 + f11 + 2 ; v31= d1 + f11 + 6 ; v32= d1 + f12 + 2 ; d2: 0 ; sender: process description address of sender d11: 0 ; cur proc name table address d13: 0,r.a401 ; children bits d14: 0 ; d13+2 ; address of a process description d15: 0 ; d13+4 ; end chain ; stepping stones jl. e5., e5 = k-2 jl. e7., e7 = k-2 jl. e8., e8 = k-2 jl. e9., e9 = k-2 jl. e10., e10=k-2 jl. e12., e12= k-2 jl. e50., e50= k-2 /, l./m24:/, l./d3:/,d-2,d./d5:/,l1,d./e10./, i/ jl. e17., e17= k-2 jl. e31., e31= k-2 jl. e32., e32= k-2 jl. e33., e33= k-2 /,l./m34:/,l./n1./,l1,i/ n1=k-2 /,l./n5./,l1,i/ n5=k-2 /,l./d2:/,d./d15:/, l./jl.j5./,l1,i/ j5=k-2 /, l./stepping stones/,l1,d1, l./e20-/,r/6/4/, l 1,i/ am e24-e26 , e24=k-2 /,l./e31/,r/31/43/,l1,d2,l./e60/,i/ jl. e52., e52=k-2 jl. e53., e53=k-2 /, l./m40:/,l./am(b1)/,d./rsw0x3+a53/,i/ rl w1 b1 ; w1:=addr(procfunc process description); rl w0 x1+a14 ; w0:=idbit.procfunc; rs w0 x3+a52 ; discprocess.reserver:=idbit.procfunc; jl. w2 e51. ; include procfunc as user of discprocess; /,l./m41:/,l./rlw2x2/,d./x2+a72/,i/ rl w3 x2 ; w3:=addr(discprocess); rl w1 b1 ; w1:=addr(procfunc process description); jl. w2 e52. ; exclude procfunc as user of discprocess; ld w1 -100 ; rs w0 x3+a11 ; name(0):=0; (this will prevent further user of the discprocess) rs w0 x3+a52 ; exclude procfunc as reserver; ds w1 x3+a72 ; chaintable.discproc:=slicelength.discproc:=0; /,l./m46:/,l./g5:/,l./rl.w2h1./,d./rsw1x3+a53/,i/ rl. w1 h1. ; w1:=intproc; rl. w3 (d11.) ; w3:=extproc; jl. w2 e53. ; test users and reserver; sz w2 2.1 ; if intproc already user then jl. n0. ; goto next instruction else al w0 -1 ; ba w0 x1+a20 ; sn w0 -1 ; if areaclaim.sender=0 then jl. j1. ; goto result 1 else j1=k-2 hs w0 x1+a20 ; else decrease areaclaim.sender; jl. w2 e51. ; include intproc as user of areaproc; /,l./m50:/,l-1,r/g10/g10,h5/, l./ldw2-100/,d./jl.n0./,i/ al w2 0 ; rs w2 x3+a52 ; clear reserver.extproc; rs w2 x3+a11 ; name(0). rs w2 x3+a50 ; docaddr. ; scan all internal processes and maybe increase their area-claim rl w2 b6 ; w2:=first intproc in nametable; g1: rl w1 x2 ; w1:=next intproc in nametable; rs. w2 h0. ; jl. w2 e53. ; test users and reserver; rs. w2 h1. ; :=user and reserver mask; jl. w2 e52. ; exclude intproc as user; rl. w2 h1. ; w2:=user and reserver mask; al w0 1 ; ba w0 x1+a20 ; sz w2 2.1 ; if intproc is user then hs w0 x1+a20 ; increase areaclaim.intproc; so w2 2.0100 ; if no other users then jl. n0. ; next instruction else rl. w2 h0. al w2 x2+2 ; next in name table; jl. g1. ; (no check of upper limit in nametable, ; because of the test on other users) h0: 0 h1: 0 /,l./delete aux entry/,i/ d21: d16 d22: d16+2 d24: d14 d33: d15 d34: d1+f6 ;stepping stones: jl. e31. , e31=k-2 jl. e90. , e90=k-2 jl. e92. , e92=k-2 /, l./m59:/, l./stepping stones/,d./n5./, l./m89:/,l./j6./,l1,i/ j6=k-2 /,l./m115:/,l-1,d./jl.g2./,i/ b. g10,h5 w. m115: ; check any area process; rl w2 b5 ; w2:=first addr in nametable; jl. g0. ; g1: g2: rl. w2 h0. ; al w2 x2+2 ; w2:=next in nametable g0: sn w2 (b6) ; if upper limit in namtable is exceeded jl. n0. ; then goto next instruction; rs. w2 h0. ; rl w3 x2 ; w3:=addr(next extproc); rl w1 b1 ; w1:=addr(procfunc process description); jl. w2 e53. ; test users and reserver; sn w2 0 ; if no users then jl. g2. ; goto next extproc; rs. w2 h1. ; store result of test users and reserver; al w1 x3 ; NB w1<->w3 g1<->g2 /,l./rlw3b1/,d 2,i/ rl. w0 h1. ; w0:=result of test users and reserver; so w0 2.0100 ; if not any other users then /,l./g3:/,l./j5./,l1,i/ h0: 0 ; addr in name table; h1: 0 ; result af test users and reserver; /,l./m149:/,l./rlw2x2+0/,d./sow0(x2+a52)/,i/ rl w3 x2 ; w3:=addr(extproc); jl. w2 e53. ; test users and reserver; so w2 2.0001 ; if calling process is not user then jl. j2. ; result 2; j2=k-2 sz w2 2.1000 ; if other reserver then /,l./m152:/,l./d13.+4/,r/d13.+4/(d33.)/, l./m153:/, l./d16./,r/d16.+2/(d22.)/, l./d16./,r/d16.+2/(d22.)/, l./d16./,r/d16./(d21.)/, l./d16./,r/d16.+2/(d22.)/, l./d16./,r/d16./(d21.)/, l./m154:/, l./d14./,r/d14. /(d24.)/, l./d2./,r/ d2. /(d20.)/, l./m155:/, l./d2./,r/d2./(d20.)/, l./rl w0 x1+a14/,d./je.j5./,i/ jl. w2 e53. ; test users and reserver; so w2 2.1 ; if sender is not user then je. j2. ; enable goto result 2; sz w2 2.1000 ; if other reserver then je. j5. ; enable goto result 5 j5=k-2 /,l./g0:/,l./j3./,l1,i/ j3=k-2 /,l./d2./,r/ d2. /(d20.)/, l./d2./,r/ d2. /(d20.)/, l./d15./,r/d15./(d33.)/, l./d14./,r/d14./(d24.)/, l./d14./,r/d14./(d24.)/, l./g15:/,l./rl w2 x1+a14/,d./jl.w2g7./,i/ jl. w2 e52. ; exclude intproc as user; jl. w2 e53. ; test users and reserver; al w0 0 ; sz w2 2.10 ; if inproc is reserver then rs w0 x3+a52 ; exclude inproc as reserver; sz w2 2.0100 ; if no other users then jl. w2 g7. ; release extprocess; /,l./d13./,d,i/ rl. w0 (d24.) ; sn w2 (0) ; /, l./d13./,d,i/ sn w3 (0) ; /, l./d14./,r/d14. /(d24.)/, l./d14./,r/d14. /(d24.)/, l./g7:/,l./i4./,r/i4. /d21./,l./i4:/,d, l./m158:/,l./p22:/,l./m11,a52/,r/a52 /2.1000/, l./p23:/,l./m11,a53/,r/a53 /2.0100/, l./p24:/,l./m11,a53/,r/a53 /2.0100/, l./p25:/,l./m11,a52/,r/a52 /2.1000/, l./p45:/,l./m11,a52/,r/a52 /2.1000/, l./p37:/,l./m11,a53/,r/a53 /2.0100/, f $s1 l./d23=k-2/,l1,i/ jl. d24. d24=k-2 /,f $s2 ;******************** l./b130=d79/,l./h10.+c11/, l./h8./,r/.;/.+2046;/,i/ am -2046 /,f $catinit ;******************** l./f19:/,l./jl(10)/, l./j9:0,r.4/,r/:0,r.4/: <:sstart:>,0,0 /, l./***note/,l1,i/ c. -1 /,l./j9.+6/,l1,i/ z. /, f ▶EOF◀