|
|
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◀