|
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: 31488 (0x7b00) Types: TextFile Names: »kkmonsimt«
└─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ. └─⟦4334b4c0b⟧ └─⟦this⟧ »kkmonsimt«
(kkmonsim=slang list.no xref.no ) \f s.a450,b136 ,d100,e100 w. p.<:fpnames:> k=h55 ; predefinition of option variables: a1=0 ; a3=0 ; a5=0 ; a6=22 a9=0 ; number of subdevices a80=-1-1<11 ; all drivers included excl. rc8601 a82=-1 ; ... with statistics on a84=-1 ; ... and test on a85=256 ; max time slice in 0.1 ms a89=8.4777 7777; standard interrupt mask a91=0 ; a92=1<10+1<21 ; a93=1<23 ; a109=2 ; a110=3 ; a111=2 ; a112=0 a113=0 ; number of drums a114=0 ; a115=0 a116=0 ; a118=0 a128=0 ; a128=0 : std monitor gen. ; >0 : option gen. ; a128 o. 1<1 : read special s size options in segment 6 ; a128 o. 1<2 : rc 6000 monitor a123=0 ; net-identification(jobhost) a124=0 ; home-region(jobhost) ; a125= ; job host identification a130=00 00 00 ; date, time of options a131=00 00 00 ; (yy mm dd, hh mm ss) a198=1<23+0<3 ; device addr of cpu a199=2 ; device number of mainconsole a180=16 b53=0 b54=22 b60=100000 b61=100500 ; a2 = size of area process description ; a4 = size of internal process description ; a8 = size of pseudoprocesses a112 = a113 + a115 a8=0 a118 = a112-2, a119 = a118 ; a88 = size of catalog entry ; a89 = standard interrupt mask ; a85 = max time slice in 0.1 msec ; a107 = min lower limit in bases ; a108 = max upper limit in bases a88=34, a107=8.4000 0001, a108=8.3777 7776 ; driver options. ; the inclusion of drivers is controlled by the parameters a80, a82 and a84. ; a80 determines whether a driver shall be included, and a82 and a84 whether ; it shall be included with statistics and/or testoutput. ; ; a80 = driver inclusion ; a82 = statistics ; a84 = testoutput ; ; the function of the bits in the parameters are - ; 1<0 : clock ; 1<1 : disc (dsc 801) ; 1<2 : mainproc ; 1<3 : receiver (fpa 801) ; 1<4 : transmitter (fpa 801) ; 1<5 : hostproc ; 1<6 : subprocs ; 1<7 ; host, subhost ; 1<11 : rc8601 ; 1<12 ; subdriver terminal ; 1<13 ; - magtape ; 1<14 ; - disc ; 1<15 ; - flexible disc ; testoptions: ; testoptions are used during debugging of the system. ; they are defined by bits in the identifier a92 as follows: ; testcase i a92=a92 o. 1<i 0<=i<=17 ; teststatus a92=a92 o. 1<18 ; testcall a92=a92 o. 1<19 ; testoutput a92=a92 o. 1<20 ; print w, type w ; procfunc interrupt a92=a92 o. 1<21 ; procfunc testbuffer a92=a92 o. 1<22 ; testoptions in s are defined by bits in the identifier a93 ; as explained in s. a200= -14 ; first of internal process description a194= -14 ; process descr addr(other comp) if type>2 a192= -12 ; process type 0 useal internal process ; 2 master process (this computer) ; 3 master mirror process ; 5 mirror process a190= -10 ; process description addr of master process a188= -8,a189= -7 ; computer number<12 + internal claim (other computer) a186= -6, a187= -5 ; cpu running mask,allowed cpu mask a48 = -4 ; lower limit(interval) a49 = -2 ; upper limit(interval) a10 = 0 ; kind a11 = 2 ; name a12 = 10, a13 = 11 ; stop count, state a14 = 12 ; identification bit a15 = 14 ; next event ; last event a16 = 18 ; next process ; last process a17 = 22 ; first address (logical) a18 = 24 ; top address (logical) a19 = 26, a20 = 27 ; buffer claim, area claim a21 = 28, a22 = 29 ; internal claim, function mask a301= 30 ; priority a24 = 32, a25 = 33 ; mode (= protection register, protection key) a26 = 34 ; interrupt mask a27 = 36 ; user exception address (interrupt address) (logical) a170= 38 ; user escape address (logical) a171= 40 ; initial cpa a172= 42 ; - base a173= 44 ; - lower write limit (physical) a174= 46 ; - top - - (physical) a175= 48 ; - interrupt levels a34 = 50 ; parent description address a35 = 52 ; quantum a36 = 54 ; run time a38 = 58 ; start run a39 = 62 ; start wait a40 = 66 ; wait address a42 = 68, a43 = 70 ; catalog base a44 = 74 ; max interval a45 = 78 ; standard interval a28 = 80 ; save w0, = first of regdump a29 = 82 ; - w1 a30 = 84 ; - w2 a31 = 86 ; - w3 a32 = 88 ; - status a33 = 90 ; - ic (logical) a176= 92 ; - cause a177= 94 ; - sb a176= 96 ; top of regdump a181= 96 ; current cpa = first of fixed parameters a182= 98 ; - base a183= 100 ; - lower write limit (physical) a184= 102 ; - top - - (physical) a185= 104 ; - interrupt levels a179= a181-a28 ; (displacement between fixed params and first of regdump) ; a180: ; see c29 a302= 106 ; save area address ; save area for g20-g24, b18, b19 a303= 124 ; top of save area a46 = 124 ; bs claims start ; chain0: key0: slices , entries ; key1: - , - ; key2: - , - ; key3: - , - ; (........................) ; chain1: key0: - , - ; (........................) ; bs claims top ; calculate size of process- a4=a46+(:a110<1+2:)*a112-a200 a4 = a4 ; size of internal process a35 = 52 ; <quantum> a36 = 54 ; <run time> a38 = 58 ; <start run> a39 = 62 ; <start wait> a40 = 66 ; <wait address> a42 = 68, a43 = 70 ; <catalog base> a44 = 74 ; <max interval> a45 = 78 ; <standard interval> b. j0 w. j0 = 80 a28 = j0, j0 = j0+2 ; save w0, = first of regdump a29 = j0, j0 = j0+2 ; - w1 a30 = j0, j0 = j0+2 ; - w2 a31 = j0, j0 = j0+2 ; - w3 a32 = j0, j0 = j0+2 ; - status a33 = j0, j0 = j0+2 ; - ic a176= j0, j0 = j0+2 ; - cause a177= j0, j0 = j0+2 ; - sb a178= j0 ; top of regdump a181= j0, j0 = j0+2 ; current cpa = first of fixed parameters a182= j0, j0 = j0+2 ; - base a183= j0, j0 = j0+2 ; - lower write limit a184= j0, j0 = j0+2 ; - top - - a185= j0, j0 = j0+2 ; - interrupt levels a179= a181-a28 ; (displacement between fixed params and first of regdump) ; a180: see c29 a302= j0, j0 = j0+2 ; save area address j0 = j0+14; save area for g20-g24, b18, b19 a303= j0 ; top of save area a46 = j0 ; bs claims start j0=j0+(:a110<2+4:)*a112 ;KK top of bs-claims list ; a200 = first of internal process ; j0 = top - - - a4 = j0-a200 ; size of internal process e. a23 = 27 ; use area processes as pseudoprocesses ; format of save area: ; 8 words, used by deliver-result-procedures a304 = 16 ; address of wait first event ; internal process states: ; actual bitpatterns are relevant to process functions only a95 = 2.01001000 ; running a96 = 2.00001000 ; running after error a97 = 2.10110000 ; waiting for stop by parent a98 = 2.10100000 ; waiting for stop by ancestor a99 = 2.10111000 ; waiting for start by parent a100= 2.10101000 ; waiting for start by ancestor a101= 2.11001100 ; waiting for process function a102= 2.10001101 ; waiting for message a103= 2.10001110 ; waiting for answer a104= 2.10001111 ; waiting for event ; bit patterns used to test or change the above states: a105 = 2.00100000; waiting for stop or start a106 = 2.00001000; waiting for start 0,0 rs. w1 b25. ; save fp base jl. d50. ; goto start b65: 0-0-0 ; 8: base of controller description table b66: 0 ; 10: power up entry b67: 0-0-0 ; first controller table entry b68: 0-0-0 ; top controller table entry b69: b69 ; queue head: software timeout b69 ; (for devices) b70: 0 , 0 ; time when last inspected b72: 0-0-0 ; b53 ; start of interrupt table b73: 0-0-0 ; b54 ; max external interrupt number b0: 0-0-0 ; b53 - b16 ; (relative start of interrupt table b74: a198 ; device address of this cpu b75: 0 ; after powerfail (0==false, else true) b18: 0 ; current buffer address b19: 0 ; current receiver b20: 0 ; address of simple wait event procedure b21: 0-0-0 ; owner of std-driver-locations b101:0 ; return from subprocs b102:0-0-0 ; a66 ; start of table(subproc-drivers) b103:0 ; address of entry for send message for linkdriver areas b76: 0 ; start of secondary interrupt chain b1: 0 ; 66: current process b2: b2 ; time slice queue head: next process b2 ; last process b3: 0-0-0 ; 72: name table start b4: 0-0-0 ; 74: first device in name table b5: 0-0-0 ; 76: first area in name table b6: 0-0-0 ; 78: first internal in name table b7: 0-0-0 ; 80: name table end b8: b8 ; mess buf pool queue head: next buf b8 ; last buf 0-0-0 ; 86: first byte of mess buf pool area 0-0-0 ; 88: last byte of mess buf pool area a6 ; 90: size of message buffer b22: 0-0-0 ; 92: first drum chain in name table b23: 0-0-0 ; 94: first disc chain in name table b24: 0-0-0 ; 96: chain end in name table b25: 0 ; 98: main cat chain table 0-0-0 ;(100) not used ??? b10: a85 ; maximum time slice b11: 0 ;104: time slice (of current process) 0 ;106: zero (earlier: micro seconds) b13: 0 , 0 ;108:110: time (unit of 0.1 milli seconds) b14: 0 ; last sensed clock value 0 ; (not used) b12: 0-0-0 ;116: number of storage bytes a111<12 + a109 ;118: min global key, min aux cat key ????? b15: 0 , 0 ; clockchange, after set clock: ; newtime - oldtime b26 = b5 ; use area processes as pseudo processes b55: 0 ; interrupt addr for cpu1 b57: 0 ; cur proc(cpu0) (when b1 is cur proc(cpu1)) b58: 0 ; relative addr of curr proc at cpu1 b56: 0 ; current process (cpu(i)) i=1,...,last cpu b105: 0 ; master process description addr b106: 0 ; proc descr addr(systrm) b107: 0 ; - - - (sysrec) b108: 0 ; - - - (sysdma) b109: 0 ; computer number (this computer) ; definition of general registers in rc8000 b90 = 8.14 * 2 ; ilevc : interrupt level limit copy b91 = 8.15 * 2 ; inf : current interrupt stack element address b92 = 8.17 * 2 ; size : top available core address b93 = 8.20 * 2 ; montop : 1 < 11 - top monitor procedure number b94 = 8.62 * 2 ; clock b95 = 8.57 * 2 ; ir : used to clear selected bits in interrupt reg b97 = 8.60 * 2 ; dswr : data swithes b98 = 8.61 * 2 ; regsel : register swithes b99 = 8.60 * 2 ; display ; ; definition of interrupt stack. ; parameters are relative to base of stack element (i.e. 1,3,5,..) b.j0 j0=-1 , j0=j0+2 ; base of stack element a326=j0 , j0=j0+2 ; regdump a327=j0 , j0=j0+2 ; exception routine a328=j0 , j0=j0+2 ; escape routine a329=j0 , j0=j0+2 ; monitor call entry a330=j0 , j0=j0+2 ; external interrupt entry a331=j0 , j0=j0+2 ; interrupt limits, disabled/enabled a325=j0-a326 ; size of interrupt stack element e. ; elementary link-procedures: ; procedure remove(elem); ; comment: removes a given element from its queue and leaves the element linked to itself. ; call: w2=elem, w3=link ; exit: w0, w1, w2=unchanged, w3=next(elem) ; return address: link b. i1 w. d5: rs. w3 i0. ; save return; rl w3 x2 ; w3 := next(elem); rx w2 x2+2 ; w2 := prev(elem); prev(elem) := elem; rs w3 x2 ; next(w2) := next(elem); rx w2 x3+2 ; w2 := elem; prev(next(elem)) := old prev(elem); rs w2 x2 ; next(elem) := elem; jl. (i0.) ; return; ; procedure link(head, elem); ; comment: links the element to the end of the queue ; call: w1=head, w2=elem, w3=link ; exit: w0, w1, w2=unchanged, w3=old last(head); d6: rs. w3 i0. ; save return; rl w3 x1+2 ; old last:=last(head); rs w2 x1+2 ; last(head):=elem; rs w2 x3+0 ; next(old last):=elem; rs w1 x2+0 ; next(elem):=head; rs w3 x2+2 ; last(elem):=old last; jl. (i0.) ; return; i0: 0 ; saved return: remove, link e. ; procedure update time(slice); ; comment: senses the timer and updates current time slice and time; ; ; call: w3=link ; exit: w0=undef, w1=unchanged, w2=slice, w3=unchanged ; return address: link b. i9 w. d7: gg w2 b94 ; al w0 x2 ; new value:=sense(timer); ws. w2 b14. ; increase:=new value-clock; rs. w0 b14. ; clock:=new value; sh w2 -1 ; if increase<0 then wa. w2 i9. ; increase:=increase+size of clock; ; comment: timer overflowed...; al w0 x2 ; wa. w2 b11. ; slice:=slice+increase; rs. w2 b11. ; wa. w0 b13.+2 ; rs. w0 b13.+2 ; time low:=time low+increase; sx 2.01 ; jl. i8. ; if carry then jl x3 ; i8: al w0 1 ; time high:=time high+1; wa. w0 b13. ; rs. w0 b13. ; jl x3 ; return; i9: 1<16 ; increase when timer overflows; ; procedure remove internal(internal, proc state); ; comment: removes the internal process from the timer queue and sets its state ; after this a new current process is selected. ; call: w0=proc state, w1=cur, w3=link ; exit: w0, w1=undef, w2=cur+a16, w3=undef ; return address: link d9: rs. w3 i0. ; save(return); hs w0 x1+a13 ; state(cur):=proc state; jl. w3 d7. ; update time(slice); rs w2 x1+a35 ; quantum(cur):=slice; dl. w3 b13.+2 ; ds w3 x1+a39+2 ; start wait(cur):=time; al w2 x1+a16 ; rl. w3 i0. ; jl. d5. ; remove(cur+a16); ; return; i0: 0 ; saved return ; procedure link internal(proc); ; comment: links the internal process to the timer queue. the timer queue is kept as a ; sorted list, according to the priority. (the smaller the priority is, the better ; is the priority). ; if the time quantum is less than the maximum time slice, the process will be ; linked up in front of other processes with the same priority. otherwise in the ; rear (the time quamtum of the process is transferred to runtime(proc), except ; the amount which is already used of the next quantum). ; call: w1=proc, w3=link ; exit: w0, w1, w2, w3=undef d10: bz w0 x1+a13 ; if state(proc) = running then sn w0 a95 ; jl x3 ; return; rs. w3 i0. ; save(return); al w0 a95 ; hs w0 x1+a13 ; state(proc):=running; al w2 x1+a16 ; rl w3 x1+a301 ; priority:=priority(proc); rl w1 x1+a35 ; sl. w1 (b10.) ; if quantum(proc)>=max slice then jl. i3. ; goto insert in rear; al w3 x3-1 ; (code facility); al. w1 b2. ; worse:=timer q head; i1: rl w1 x1 ; next: worse:=next(worse); sl w3 (x1-a16+a301) ; if priority(worse)<priority then jl. i1. ; goto next; i2: ; insert process: jl. w3 d6. ; link(worse, proc+a16); se. w3 b2. ; if proc is not linked as the front jl. (i0.) ; internal then return; rl. w1 b1. ; jl. w3 d7. ; update time(slice); rs w2 x1+a35 ; quantum(cur):=slice; (may actually be >= max slice); sh. w2 (b10.) ; if old quantum <= max slice then jl. (i0.) ; return; ; the following will take care of the round-robin time scheduling; rl. w2 (b2.) ; proclink := second proc in timer queue; jl. w3 d5. ; remove(proclink); rl w3 x2-a16+a301; priority:=priority(proc); (as above) rl w1 x2-a16+a35 ; quantum:=quantum(proc); (as above) ; the process has been in front of the queue for more than the max time slice. ; the run time should be updated with all the quantum, but this would give the process a ; complete time slice next time. instead the used quantum is split in two parts: ; the amount by which it exceeds a multiplum of the max slice, and the rest. these parts ; are the increase in runtime and the new quantum. ; finally the process is inserted in the rear of the timer queue, according to priority. i3: al w0 a85-1 ; w0 := mask for extracting new quantum; la w0 2 ; quantum(proc) := quantum(proc) extract slice; rs w0 x2-a16+a35; ws w1 0 ; al w0 0 ; aa w1 x2-a16+a36+2; add the remaining part of quantum to ds w1 x2-a16+a36+2; runtime(proc); ; at this point there is at least one process in the timer queue, ; i.e. either the dummy process or a 'better' process ; the following is intended for skipping quickly the dummy process: rl. w1 b2.+2 ; worse := rear of timer queue; (normally dummy process); sl w3 (x1-a16+a301); if priority >= priority(worse) then jl. i5. ; goto found; (only in case of inserting dummy process) al w3 x3+1 ; (code facility) i4: rl w1 x1+2 ; next: worse:=last(worse); sn. w1 b2. ; if worse<>timer q head and jl. i5. ; sh w3 (x1-a16+a301) ; priority(worse)>priority then jl. i4. ; goto next; ; notice: the loop went one step to far . . .; i5: rl w1 x1 ; now w1 has been repaired; jl. i2. ; goto insert proc; e. ; dummy internal process: d50:; start eksekvering b. i10 w. al. w1 e12. ; al. w2 b2. ; ds. w2 e3. ; init dummy1 al. w1 b2. ; al. w2 e2. ; ds. w2 e13. ; init dummy2 al. w1 e2. ; al. w2 e12. ; ds. w2 b2.+2 ; init b2, b2+2 jl. w3 d57. ; rl. w1 b2. ; al. w2 e42. ; jl. w3 d6. ; link sss jl. w3 d57. ; rl. w1 b2. ; al. w2 e22. ; link ddd jl. w3 d6. ; jl. w3 d57. ; i5: jl. w3 h25.-2 ; input char sh w2 31 ; jl. i5. ; al w2 x2-97 ; sh w2 3 ; if char<>a,b,c,d then sh w2 -1 ; jl. i10. ; stop al. w1 e22. ; s-proc sz w2 2.10 ; al. w1 e42. ; d-proc sz w2 2.01 ; jl. i6. ; insert jl. w3 d53. ; remove jl. w3 d57. ; jl. i5. ; next char i6: jl. w3 d54. ; insert jl. w3 d57. ; jl. i5. ; next char i10: jl. w3 d59. al w2 0 ; jl. h7. ; stop e. d59: b. i10 w. rs. w3 i3. ; rl. w1 i8. ; segment rl. w2 e99. ; sh w1 -1 ; ac w1 x2 ; wa w1 4 ; then add segment rs. w1 i8. ; al. w1 b65.-4 ; ls w2 9 ; al w2 x2-2 ; wa w2 2 ; ds. w2 i7. ; first and last addr al. w3 i9. ; jd 1<11+52; jd 1<11+8 ; al. w1 i5. ; jd 1<11+16; output al. w1 i10. ; jd 1<11+18; jl. (i3.) ; return i3: 0 i5: 5<12 ; i6: 0 i7: 0 i8: -3,0,r.5 i9: <:kklp5:>,0,0,0,0,0; i10: 0,r.8 e. d53:; test and remove b. i5 w. sn w1 (x1) ; jl x3 ; return ds. w1 i1. ; ds. w3 i3. ; al w1 x1-a16 ; proc addr al w0 a103 ; state=wait for answer jl. w3 d9. ; remove rl. w1 b2. ; al w1 x1-a16 ; rs. w1 b1. ; insert curr al w0 a95 ; rs w0 x1+a13 ; running dl. w1 i1. ; dl. w3 i3. ; jl x3 ; i0:0,i1:0,i2:0,i3:0 e. d54:; test and insert b. i5 w. sn. w1 (b2.) ; jl x3 ; return ds. w1 i1. ; ds. w3 i3. ; al w1 x1-a16 ; proc addr rs. w1 b1. ; jl. w3 d10. ; insert dl. w1 i1. ; dl. w3 i3. ; jl x3 ; i0:0,i1:0,i2:0,i3:0 e. d55: ; print state priority time quantum b. i5 w. ds. w1 i1. ; ds. w3 i3. ; wa. w2 b25. ; rl w2 x2 ; sn. w2 b2. ; jl. i4. ; al w2 x2-a16 ; bz w0 x2+a13 ; jl. w3 h32.-2 ; 1<23+32<12+8 ; rl w0 x2+a301 ; jl. w3 h32.-2 ; 1<23+32<12+8 ; rl w0 x2+a35 ; jl. w3 h32.-2 ; 1<23+32<12+8 ; i4: al w2 10 ; jl. w3 h26.-2 ; dl. w1 i1. ; dl. w3 i3. ; jl x3 i0:0,i1:0,i2:0,i3:0 e. d56: ; print addr b. i3 w. ds. w1 i1. ; ds. w3 i3. ; al w0 x1 ; ws. w0 b25. ; jl. w3 h32.-2 ; 1<23+32<12+6 ; al w2 58 ; jl. w3 h26.-2 ; dl. w1 i1. ; dl. w3 i3. ; jl x3 i0:0,i1:0,i2:0,i3:0 e. d57:; print proc chain b. i5 w. ds. w1 i1. ; ds. w3 i3. ; al. w0 i4. ; jl. w3 h31.-2 ; al. w1 b2. ; i5: jl. w3 d56. ; dl w2 x1+2 ; ws. w1 b25. ; - fpbase ws. w2 b25. ; - fpbase jl. w3 d58. ; wa. w1 b25. ; jl. w3 d55. ; print state,prio,time-q se. w1 b2. ; jl. i5. ; rl. w1 b1. ; ws. w1 b25. ; al w0 x1+a16 ; jl. w3 h32.-2 ; 1<23+32<12+6 al w2 10 ; jl. w3 h34.-2 ; dl. w1 i1. ; dl. w3 i3. ; jl x3 ; i0: 0 i1: 0 i2: 0 i3: 0 i4:<:<10><10>proc-addr next prev state priori time-q<10>:> e. d58:b.i3 w. ds. w1 i1. ds. w3 i3. al w0 x1 jl. w3 h32.-2 1<23+32<12+8 al w0 x2 jl. w3 h32.-2 1<23+32<12+8 dl. w1 i1. dl. w3 i3. jl x3 i0:0 i1:0 i2:0 i3:0 e. e0: 0,r.(:a186-a200:)>1 ; first of dummy1 2.000 000 000 001 ; cpu mask: only cpu(0) allowed 0 ; a48 lower base 0 ; a48 upper base e1: 0 ; a10 kind 0,0,0,0 ; a11 name 0 ; stop count,state 0 ; a14 id-bit 0,0 ; a15 next event,last event e2: 0 ; a16 next process e3: 0 ; last process 0 ; a17 first address 0 ; a18 top address 0 ; a19,a20 buffer, area claims 0 ; a21,a22 internal claim, function mask 1<23 - 3 ; a301 priority = almost greatest integer r.(:a27-a301:)>1 0 ; interrupt address r.(:a170-a27:)>1 0 ; escape address 0 ; all params r.(:a28-a171:)>1 ; the following sequence will be executed in the registers, ; until a technical panel is mounted, and data-switches all zero: gg w3 b97 ; test for panel: se w3 0 ; if data-switches <> 0 then jl 0 ; goto test for panel; jl. 0 ; (i.e. when panel and dswr=0: an exception will occur here) r.(:a32-a31:)>1 1<23 ; status r.(:a33-a32:)>1 0 ; ic r.(:a181-a33:)>1 8 ; cpa 0 ; base 8 ; lower write limit 2047<12 ; upper write limit b54 ;+0<12 ; interrupt levels r.(:a302-a185:)>1 0 ; save area address r.(:a303-a302:)>1 ; (fill up for save area, used during upstart) e9: ; top of dummy process ; dummy2 internal process: e10: 0,r.(:a186-a200:)>1 ; first of dummy2 2.000 000 000 010 ; cpu mask: only cpu(1) allowed 0 ; a48 lower base 0 ; a48 upper base e11: 0 ; a10 kind 0,0,0,0 ; a11 name 0 ; stop count,state 0 ; a14 id-bit 0,0 ; a15 next event,last event e12: 0 ; a16 next process e13: 0 ; last process 0 ; a17 first address 0 ; a18 top address 0 ; a19,a20 buffer, area claims 0 ; a21,a22 internal claim, function mask 1<23 - 2 ; a301 priority = almost greatest integer r.(:a27-a301:)>1 0 ; interrupt address r.(:a170-a27:)>1 0 ; escape address 0 ; all params r.(:a28-a171:)>1 ; the following sequence will be executed in the registers, ; until a technical panel is mounted, and data-switches all zero: gg w3 b97 ; test for panel: se w3 0 ; if data-switches <> 0 then jl 0 ; goto test for panel; jl. 0 ; (i.e. when panel and dswr=0: an exception will occur here) r.(:a32-a31:)>1 1<23 ; status r.(:a33-a32:)>1 0 ; ic r.(:a181-a33:)>1 8 ; cpa 0 ; base 8 ; lower write limit 2047<12 ; upper write limit b54 ;+0<12 ; interrupt levels r.(:a302-a185:)>1 0 ; save area address r.(:a303-a302:)>1 ; (fill up for save area, used during upstart) e19: ; top of dummy process e20: 0,r.(:a186-a200:)>1 ; first of s-proc 2.000 000 000 001 ; cpu mask: only cpu(0) allowed 0 ; a48 lower base 0 ; a48 upper base e21: 0 ; a10 kind <:sss:>,0,0,0 ; a11 name a95 ; stop count,state 0 ; a14 id-bit 0,0 ; a15 next event,last event e22: 0 ; a16 next process e23: 0 ; last process 0 ; a17 first address 0 ; a18 top address 0 ; a19,a20 buffer, area claims 0 ; a21,a22 internal claim, function mask 0 ; a301 priority = almost greatest integer r.(:a27-a301:)>1 0 ; interrupt address r.(:a170-a27:)>1 0 ; escape address 0 ; all params r.(:a28-a171:)>1 ; the following sequence will be executed in the registers, ; until a technical panel is mounted, and data-switches all zero: gg w3 b97 ; test for panel: se w3 0 ; if data-switches <> 0 then jl 0 ; goto test for panel; jl. 0 ; (i.e. when panel and dswr=0: an exception will occur here) r.(:a32-a31:)>1 1<23 ; status r.(:a33-a32:)>1 0 ; ic r.(:a181-a33:)>1 8 ; cpa 0 ; base 8 ; lower write limit 2047<12 ; upper write limit b54 ;+0<12 ; interrupt levels r.(:a302-a185:)>1 0 ; save area address r.(:a303-a302:)>1 ; (fill up for save area, used during upstart) e29: ; top of s-proc process e40: 0,r.(:a186-a200:)>1 ; first of driverproc 2.000 000 000 001 ; cpu mask: only cpu(1) allowed 0 ; a48 lower base 0 ; a48 upper base e41: 0 ; a10 kind <:ddd:>,0,0,0 ; a11 name a95 ; stop count,state 0 ; a14 id-bit 0,0 ; a15 next event,last event e42: 0 ; a16 next process e43: 0 ; last process 0 ; a17 first address 0 ; a18 top address 0 ; a19,a20 buffer, area claims 0 ; a21,a22 internal claim, function mask -1 ; a301 priority = almost greatest integer r.(:a27-a301:)>1 0 ; interrupt address r.(:a170-a27:)>1 0 ; escape address 0 ; all params r.(:a28-a171:)>1 ; the following sequence will be executed in the registers, ; until a technical panel is mounted, and data-switches all zero: gg w3 b97 ; test for panel: se w3 0 ; if data-switches <> 0 then jl 0 ; goto test for panel; jl. 0 ; (i.e. when panel and dswr=0: an exception will occur here) r.(:a32-a31:)>1 1<23 ; status r.(:a33-a32:)>1 0 ; ic r.(:a181-a33:)>1 8 ; cpa 0 ; base 8 ; lower write limit 2047<12 ; upper write limit b54 ;+0<12 ; interrupt levels r.(:a302-a185:)>1 0 ; save area address r.(:a303-a302:)>1 ; (fill up for save area, used during upstart) e49: ; top of dummy process e99:(:(:e99-b65+4:)>9+1:) e. e. ▶EOF◀