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

⟦a67a9de58⟧ TextFile

    Length: 5376 (0x1500)
    Types: TextFile
    Names: »kkhcauto«

Derivation

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

TextFile

                    ; kkå
    (hcauto=slang list.no xref.no
    )
s.  a50,b20,i25,c10 w.
    ;;
    ; loader for HC8000
    ;
    ;
    ;;
    ; 0
    ; 2
    ; 4
    ; 6
    0,r.256         ; room for one segment
    k=8             ;
    a0              ; 8: start addr
a0: al  w3     a20  ; system table addr
    gp  w3     c10  ; to inf reg
    ri         c6   ; start
a6: ri         c6   ;
    ;;
    ;
    ;  wait for start signal
    ;
a1: jl.        0    ; and wait
    ;;
    ;
    ;  send autoload message
    ;
a12:di  w1     (c1) ;
    al  w3     a3   ; return addr
    al  w2     18   ;
    rs  w2     a15  ; set expected interrupt number
    am         1    ; autoloadmessage
a9: al  w2     -1   ; ready message
    do  w2     (c8) ; send autoload request
    jl.        0    ; wait interrupt
    ;;
    ;
    ;
a2:                 ; interrupt addr
    se  w2     (a15); if cur interrupt level<>expected int. level then
    jl         a1   ; goto wait for new start
    al  w1     a40  ;
    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     a10  ;
    rs  w1  x3+2    ;
    al  w3     a7   ;
    al  w2     16   ;
    rs  w2     a15  ; set expected interrupt number
    di  w1     (c1) ; send input start signal
    jl.        0    ; wait for external interrupt
                    ;
a7: rl  w1     a11  ;
    sh  w1     0    ; if no more to copy then
    jl         a5   ; goto start monitor
    al  w1  x1-1    ; decrease number of shares
    rs  w1     a11  ;
a4: al  w3     a8   ;
    al  w2     18   ;
    rs  w2     a15  ; set expected interrupt number
    jl         a9   ;
a8: al  w1     i21  ; w2:=addr(levellocation(21))
    rl  w0  x1+2    ; count
    wa  w0     i21  ; new input addr
    rs  w0  x1+2    ;
    al  w3     a7   ;
    al  w2     16   ;
    rs  w2     a15  ; set expected interrupt number

    jd.        2    ; set interrupt level 6
    di  w2     (c4) ; start input
    rs  w2     i21  ; save number of halfwords
    je.        0    ; wait for external interrupt
                    ;
                    ;

a5: al  w3     a50  ;
    jl      x3+6    ; goto monitor
                    ;
                    ;

                    ;
a15:18              ; expected interrupt number at next interrupt
a10:0               ; autoload buffer
a11:0,r.2           ; number of shares,dummy
                    ;
    c2=  20<3       ;
c1: 1<23+c2+2.001   ; interrupt addr for RH8000
    c3= c2+1<3      ; 21<3
c4: 1<23 + c3 + 2.001;
    c5=c2>3 + 4     ; interrupt limit
    c6= 16          ;
c8: 1<23+0<3+2.001  ; message
    c10= 8.15<1     ;
                    ;
                    ;
                    ;
    0,r.(:c2 + a0 + 2 - k:)>1;
i20:0,i20,  0, 26   ;
i21:0,a50,  0, 27   ;
i22:0,  0,  0, 28   ;
i23:0,  0,  0, 29   ;
    ;;
    ;1 system table: monitor mode
    b0              ; -5  monitor call service addr
    b6              ; -3  interrupt service addr
    1<23+ 0         ; -1  status  interrupt limit
    a20=k-13        ;
    a30             ; +1  register dump addr
    b1              ; +3  exception service addr
    b2              ; +5  escape service addr
    ;;
    ;1 system table: user mode
    b3              ; -5  monitor call service addr
    a2              ; -3  interrupt       -      -
    1<23 + 6        ; -1  status < 12 + interrupt limit
    a40             ; +1  register dump addr
    b4              ; +3  exception service addr
    b5              ; +5  escape service addr
    ;;
    ;1  monitor register dump start
a30:0               ;  w0
    0               ;  w1
    0               ;  w2
    0               ;  w3
    1<23 + 0        ;  status
    a6              ;  ic
    0               ;  cause
    0               ;  sb

    0               ;  cpa
    0               ;  base
    8               ;  lower write limit
    4096            ;  upper write limit
    0<12 + 0        ;  interrupt limits
    ;;
    ; 1 user register dump start
a40:0               ;  w0
    0               ;  w1
    0               ;  w2
    a12             ;  w3
    1<23 +  0       ; status
    a1              ;  ic
    0               ;  cause
    0               ;  sb

    0               ;  cpa
    0               ;  base
    8               ;  lower write limit
    4096            ;  upper write limit
    6<12 +  c5      ; interrupt limits
    ;;
    ;
    ;
    ;
    ;
    ; error

b0: am         1    ;
b1: am         1    ;
b2: am         1    ;
b3: am         1    ;
b4: am         1    ;
b5: am         1    ;

b6: al  w3     0    ;
    rl  w2     b10  ;
    al  w2  x2+1    ; errorcount:=errorcount+1;
    ds  w3     b11  ;
    jl         a1   ; goto wait
                    ;
                    ;
b10:0               ; error number
b11:0               ; error count
                    ;
a50:                ; start input addr for monitor
    0,r.(:1024-k:)>1;
e.                  ;

▶EOF◀