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

⟦c2e16c39d⟧ TextFile

    Length: 3072 (0xc00)
    Types: TextFile
    Names: »kkhcload«

Derivation

└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
    └─⟦b2ec5d50f⟧ 
        └─⟦this⟧ »kkhcload« 

TextFile

; loader for HC8000
;
;
s. a50,i25,c10 w.
;
; 0
; 2
; 4
; 6
0,r.256
k=8
     a0                ; 8: start addr
a0:  al  w3  a20       ; system table addr
     gp  w3  c10       ; to inf reg
     ri      c6        ; start
a1:  rl  w3  c0        ;
     do  w3  (c1)      ; send autoload request
     al  w3  a3        ; start addr after interrupt
     jl.     0         ; wait for interrupt
a2:                    ; interrupt addr
     al  w1  a30       ;
     rl  w0  x1+6      ; load saved w3 as new ic
     rs  w0  x1+10     ; 
     ri      c6        ; start
a3:  al  w3  i20       ; level 20 location
     al  w1  a0        ;
     rs  w1  x3+2      ;
     di  w1  (c1)      ; send input start signal
     al  w3  a4        ; new ic after interrupt
     jl.     0         ; wait for external interrupt
;
a4:  rl  w1  a0+2      ;
     sh  w1  0         ; if no more to copy then
     jl      a5        ; goto start monitor
     al  w1  x1-1      ; decrease number of shares
     rs  w1  a0+2      ;
     al  w2  i21       ; w2:=addr(levellocation(21))
     rl  w0  x2+2      ; count
     wa  w0  x2+0      ; new input addr
     rs  w0  x2+2      ;
     di  w2  (c4)      ; start input
     al  w3  a4        ;
     jl.     0         ; wait for external interrupt
;
a5:  al  w3  a50       ;
     jl      x3+6      ; goto monitor
;
;
c0:  1<23              ; 1<23 + autoload message
c2=  20<3
c1:  1<23+c2+2.001     ; interrupt addr for RH8000
c3= c2+1<3
c4: 1<23 + c3 + 2.001  ;
c5 =c2>3+4              ; interrupt limit
c6=16
c10= 8.15<1
;
;

;1 system table: monitor mode
     0                 ; -5  monitor call service addr
     a2                ; -3  interrupt service addr
     1<23+c5           ; -1  status  interrupt limit
a20=k-13
     a30               ; +1  register dump addr
     0                 ; +3  exception service addr
     0                 ; +5  escape service addr

;1 system table: user mode
      0                ; -5  monitor call service addr
      0                ; -3  interrupt       -      -
     1<23 + c5         ; -1  status < 12 + interrupt limit
     0                 ; +1  register dump addr
     0                 ; +3  exception service addr
     0                 ; +5  escape service addr

;1  monitor register dump addr
a30: 0                 ;  w0
     0                 ;  w1
     0                 ;  w2
     0                 ;  w3
     1<23 + c5         ;  status       interrupt limit
     a1                ;  ic           start cpu1 process
     0                 ;  cause
     0                 ;  sb

     0                 ;  cpa
     0                 ;  base
     8                 ;  lower write limit
     8.3777 7777       ;  upper write limit
     0<12 + c5         ;  interrupt limits
;
0,r.(:c2 + a0 - k:)>1
i20:   2,i20,  0, 26
i21:   0,a50,  0, 27
i22:   0,  0,  0, 28
i23:   0,  0,  0, 29
a50:                   ; start input addr for monitor
0,r.(:1024-k:)>1
e.
▶EOF◀