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