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

⟦274203d76⟧ TextFile

    Length: 9984 (0x2700)
    Types: TextFile
    Names: »kkrhtst3t«

Derivation

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

TextFile

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