|
|
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: 5376 (0x1500)
Types: TextFile
Names: »kkhcauto«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt.
└─⟦0364f57e3⟧
└─⟦this⟧ »kkhcauto«
; 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◀