|
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: 9984 (0x2700) Types: TextFile Names: »kkrhtst3t«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt. └─⟦0364f57e3⟧ └─⟦this⟧ »kkrhtst3t«
(kkrhtst3=slang list.no xref.no; ) ; s. a500,b100,c100,d100 w. p. <:fpnames:> k=h55 a88=34,a107=8.4000 0001 , a108=8.3777 7776 b. i20 w. 0,0 jd 1<11+28 al w0 2 ; jd 1<11+30; set cpu1 user bit al w2 0 al w2 72 rl w0 x2 rl w1 x2+2 ds. w1 b4. rl w0 x2+4 rl w1 x2+6 ds. w1 b6. rl w1 x2+8 rs. w1 b7. al. w2 i2. dl. w1 i1. jl. w3 d11. jl. 2 rl w0 x3 jl. w3 h32.-2 1<23+32<12+8 al. w0 i3. ; jl. w3 h31.-2 ; al w0 2.1 jd 1<11+30 al w2 0 jl. h7. i0: a107 i1: a108-1 i2: <:hcdriver:>,0,0,0,0,0 i3: <: rhtest<10>:> ; e. a200= -14 ; first of internal process description a194= -14 ; process descr addr(other comp) if mirror proc exist 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- 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 a305= j0, j0 = j0+2 ; first process extension a306= j0, j0 = j0+2 ; second process extension a46 = j0 ; bs claims start ; 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 a94 = 2.11111000 ; waiting for external interrupt ; bit patterns used to test or change the above states: 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 b. i20 w. ; the following procedures searches the name table for a given entry and delivers its entry in ; the name table. if name is undefined, the entry is name table end. ; procedure search name(name, entry); ; call: w2=name, w3=link ; exit: w0, w1, w2=unchanged, w3=entry ; return address: link : name not found, w3=(b7) ; link+2: name found d11: ds. w1 i1. ; save(w0, w1); i14: al w3 x3+1 ; link := link + 1; i.e. destinguish between normal and error return; ; procedure search name(name, entry, base); ; call: w0, w1=base, w2=name, w3=link ; exit: w0, w1=undef, w2=unchanged, w3=entry ; return address: link : name not found, w3=(b7) ; link : name found, w3 <> (b7) d71: ds. w3 i3. ; save (name, return); i4: al w1 x1-1;used ; bs. w0 i4.+1 ; ds. w1 i6. ; base:=base+(1, -1); dl. w1 d73. ; ds. w1 i8. ; min base:=extreme; rl. w1 b7. ; rs. w1 i9. ; found:=name table end; dl w1 x2+6 ; ds. w1 i13. ; move name to last name in name table; dl w1 x2+2 ; sn w0 0 ; if name(0)<>0 then jl. i18. ; ds. w1 i11. ; rl. w3 b3. ; for entry:=name table start jl. i17. ; i15: dl. w1 i11. ; i16: al w3 x3+2 ; step 2 until name table end do sn. w3 (b7.) jl. i18. i17: rl w2 x3 ; sn w1 (x2+a11+2) ; begin se w0 (x2+a11+0) ; proc:=name table(entry); jl. i16. ; dl. w1 i13. ; sn w0 (x2+a11+4) ; se w1 (x2+a11+6) ; if name.proc=name and jl. i15. ; dl w1 x2+a49 ; sl. w0 (i7.) ; lower.proc>=lower.min and sl. w0 (i5.) ; lower.proc<=lower.base and jl. i15. ; sh. w1 (i8.) ; upper.proc<=upper.min and sh. w1 (i6.) ; upper.proc>=upper base then jl. i15. ; begin ds. w1 i8. ; min:=interval.proc; rs. w3 i9. ; found:=entry; jl. i15. ; end; i18: ; end; dl. w0 i0. ; restore(w0, w1, w2); dl. w2 i2. ; w3:=found; sn. w3 (b7.) ; if w3=name table end then jl. (i3.) ; return to link am. (i3.) ; else jl +1 ; return to link+1; i9: 0 ;i0-2: found (i.e. current best entry, or (b7)) i0: 0 ;i1-2: saved w0 i1: 0 ;i2-2: saved w1 i2: 0 ;i3-2: saved w2 i3: 0 ; saved return i5: 0 ;i6-2: lower base+1 for search i6: 0 ; upper base-1 for search i7: 0 ;i8-2: lower minimum i8: 0 ; upper minimum ; the last entry in name table must point here: c98 = 872 i10: 0 ; name to search for i11: 0 ; i12: 0 ; i13: 0 ; a107 ; max base lower d72: a108 ; max base upper a107-1 ; extreme lower d73: a108+1 ; extreme upper e. e. e. ▶EOF◀