|
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: 15360 (0x3c00) Types: TextFile Names: »tcgauto0«
└─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ. └─⟦4334b4c0b⟧ └─⟦this⟧ »tcgauto0«
s. a50,b121,c35,d120,f120,i25,h20,p5 w. ; ; +++ c names used by timer and clock. ; +++ b names used for inter nal syetm tabs and dump ; addrs. ; +++ d names used for process description constants. ; 0,r.256 k= 8 ; 10 ; start addrs jl. b120. ; goto start. ; reg. dump addrs + 0 = w0 ; 2 = w1 ; 4 = w2 ; 6 = w3 ; 8 = status ; 10 = ic ; 12 = cause ; 14 = addrs. ; ; process definition reg.s. ; reg. dump adress + efective addrs of 'ri' instr. ; + 0 = cpa ( common protected area ). ; + 2 = base ; + 4 = lowlim ; + 6 = uplim ; + 8 = intlim. b30: 0,r.5 ; 1. static definition ; process definition addrs. b10: 0,r.8 ; 1. reg dump addrs b31: 0,r.5 ; 2. process definition reg. addrs. b11: 0,r.8 ; 2. reg dump addrs b32: 0,r.5 ; 3. proces definition regisster addrs. b12: 0,r.8 ; 3. reg dump addrs b33: ; 4. process definition reg. addrs. 0 ; cpa should be set to b90 0 ; base = 0 0 ; low lim schold be set to b100 0 ; upper lim schold be set to b101. 256 ; interupt limit. b13: 0,r.8 ; 4. reg dump addrs. ; + 10 schould be set to b100. b34: jl. i17.,r.5 ; error static definition. b14: jl. i17.,r.8 ; error reister dump address. ; sys information reg. inf, points to 2. ; half word of status/intlim initialisatiosation in ; sys tab entry. ; the sys tab entry consist of 6 consequtive words ; with the following contents: ; inf - 5 = monitor call service addrs ; inf - 3 = interupt service addrs ; inf - 1 = status/intlim initialisation. ; inf + 1 = reg. dump addrs. ; inf + 3 = exeption service addrs ; inf + 5 = escape service addrs i3 ; sys tab error i3 ; sys tab error 0 ; sys tab error b14 ; dummy dump address. i3 ; sys tab error i3 ; sys tab error b20: 0,r.6 ; 1. sys tab entry b21: 0,r.6 ; 2. sys tab entry ; system table error entry. i3 ; sys tab error. i3 ; sys tab error 0 ; sys tab error ststau interupt init. b14 ; sys tab error reg dump address. i3 ; exeption service address. i3 ; sys tab error escape service address. b22: 0,r.6 ; 3. sys tab entry, monitor table. b23: ; 4. sys tab entry. 0 ; monitor call service addrs 0 ; interupt service addrs. 0 ; status interupt limit addrs 0 ; reg dump addrs. 0 ; exeption service addrs 0 ; escape service addrs. ; status reg. constant. h. d10: 0,256 ; status 0, interupt limit 0 d13: 6,6 ; monitor process interupt limit. d14: 256,256 ; user process interupt limit w. d11: 1<23+6 ; monitor mode , interupt limit 6 d12: 1<23 ; monitor mode. d5: 5 ; relative inf init from sys tab start. b66: 0 ; addrs of current sys tab. b68: 0 ; addrs of next sys tab. -1 ; last in systam tab. b40: ; monitor call addrs. jl. x2+f120. ; switch to function. f120: jl. i10. ; monitor 0 goto init. jl. i2. ; swop process. jl. i13. ; wrong entry. jl. i14. ; entry 1 < 11 + 3 b41: ; interupt tab intry. jl. i2. ; interpupt entry addrs. swop process. b42: ; exeption address. jl. i16. b43: ; escape address. jl. i17. b120: ; start al w0 0 gp w0 64 ; init of user proc in b100. al. w1 b33. ; addrs of process definition reg.s al. w0 b90. ; addrs of cpa. rs w0 x1 ; save cpa in user pt&roc def. reg. al. w0 b100. ; get addrs of low lim. rs w0 x1+4 ; save lower limit. al. w0 b101. ; get upper limit. rs w0 x1+6 ; save upper limit. rl. w0 d14. ; interupt limit rs w0 x1+8 ; save interupt limit ; init of 2. user process. al. w1 b31. ; addrs of 2. user process ; process definition reg.s. al. w0 b90. ; addrs of cpa. rs w0 x1 ; save cpa. al. w0 b110. ; get lower limit. rs w0 x1+4 ; save lower limit. al. w0 b111. ; get upper limit. rs w0 x1+6 ; save upper limit. rl. w0 d14. ; get inter limit. rs w0 x1+8 ; save interupt limit. ; init of first user proc reg. (ic). al. w2 b13. ; get reg. addrs. al. w0 b100. ; get user proc start addrs. rs w0 x2+10 ; save start addrs ( ic.) ; set user proc in monitor mode. rl. w0 d12. ; get status reg contents for monitor mode. rs w0 x2+8 ; save monitor mode in user proc st ; status register. ; init of 2. user proc reg. (ic). al. w2 b11. ; get reg addrs al. w0 b110. ; get user proc start addrs. rs w0 x2+10 ; save start addrs. ; set user proc in monitor mode. rl. w0 d12. ; get status register contents ; for monitor mode. rs w0 x2+8 ; save monitor mode in user proc. ; init of first user proc sys tab. al. w2 b23. ; get addrs of sys tab to user program. rl. w0 d11. ; get status/ interupt limit init. al. w1 b13. ; get addrs of reg dump addrs jl. w3 b50. ; call init of sys tab. rl. w0 d11. ; get status and inter limit . al. w2 b21. ; addrs of 2. suer proc sys tab. al. w1 b11. ; reg. dump addrs of 2. user proc. jl. w3 b50. ; call init of sys tab. jl. b80. ; goto continue. b50: ; subroutine init of sys tab. ; w2 = addrs of sys tab. ; w1 = addrs of reg dumb addrs of user proc. ; w0 = status interupt limit initialisation. ; w3 = return addrs. rs w0 x2+4 ; save status and interupt limit. al. w0 b40. ; get addrs of monitor call. rs w0 x2 ; save monitor call addrs in syetm tab. al. w0 b41. ; get addrs of interupt servece. rs w0 x2+2 ; save interupt service addrs in sys tab. rs w1 x2+6 ; save reg dump addrs of user process in ; sys tab. al w0 0 ; get std exeption address. rs w0 x2+8 ; save exeption al w0 0 ; get std escape address. rs w0 x2+10 ; save escape. jl x3 ; return from subroutine. b51: ; subroutine init of process definition ; registers for a monitor process. ; call: w2 = address of 1. process definition register. ; w3 = return address. ; ; return w0 = destroyed. al w0 0 ; w0 := 0. rs w0 x2 ; cpa := 0. rs w0 x2+2 ; base := 0. al w0 8 ; w0 := 8. rs w0 x2+4 ; lowerlimit := 8. rl. w0 b52. ; get max upper limit. rs w0 x2+6 ; upperlimit := max. rl. w0 b53. ; get interupt limit 6,6 rs w0 x2+8 ; save interupt limit jl x3 ; return from subroutine. b52: 8000000 ; upper limit b53: 6<12+6 ; disable level + enable level. b80: ; continue. ; init of first monitor tab. rl. w0 d12. ; status and interupt limit init for monitor ; process. status := monitor mode interupt limit :=0. al. w1 b10. ; reg dump addres. rl. w3 d12. ; get monitor mode init. rs w3 x1+8 ; save monitor mode. al. w2 b20. ; sys tab addrs. jl. w3 b50. ; call init of sys tab. ; init of 2. monitor tab. rl. w0 d12. ; status := monitor mode interupt limit := 0. al. w1 b12. ; reg dum addrs. rl. w3 d12. ; get monitor mode. rs w3 x1+8 ; init reg dump status. al. w2 b22. ; sys tab addrs. jl. w3 b50. ; call init of sys tab. al. w2 b30. ; w0 := address of process definition ; register for monitor proc 1. jl. w3 b51. ; call subroutine init of monitor ; process definition registers. al. w2 b32. ; w0 := address of process definition ; registers for monitor proc 2. jl. w3 b51. ; call subroutine init of monitor ; process definition registers. b121:al. w2 b20.+5 ; get addrs of 1 monitor sys tab. al. w3 b22.+5 ; get addrs of 2. monitor sys tab. rs. w3 b68.-2 rs. w2 b68. ; save addrs of next and current. gp w2 26 ; init of information reg. ; no init of timer in rh8000 ;jl. w2 i0. ; call subroutine init of timer jd 1<11+2 ; start ; constants for timer initialisation. ; cr = control reg. in timer (1 ,2 ,3 ) ; interupt disabled from timer by 0<6 c10: 1<7+1<6+000<3+0<2+0<1+0 ; cr 1 operate all timers c11: 1<7+0<6<000<3+0<2+0<1+1 ; cr 1 preset all timers. c20: 1<7+0<6+000<3+0<2+0<1+0 ; cr 2 select cr 3. c21: 1<7+0<6+000<3+0<2+0<1+1 ; cr 2 select cr 1. c30: 1<7+0<6+000<3+0<2+1<1+0 ; cr 3 no prescale. c31: 1<7+0<6+000<3+0<2+1<1+1 ; cr 3 prescale. ; device addrs for clock. c0: 1<23+0<3+2.100 ;addrs for write cr 1 or 3. ; read nothing. c1: 1<23+1<3+2.100 ; addrs write cr 2. ; addrs read status reg.. c2: 1<23+2<3+2.100 ; addrs write most sgnf. byte ; buffer reg.. ; addrs read timer no 1 counter. c3: 1<23+3<3+2.100 ; addrs write timer no 1 latches. ; addrs read least sgnf. bytes ; buffer reg.. c4: 1<23+4<3+2.100 ; addrs write most sgnf. byte buffer reg.. ; ; addrs read timer no 2 counter. c5: 1<23+5<3+2.100 ; addrs write timer 2 latches. ; read least sgnf. byte buffer reg.. c6: 1<23+6<3+2.100 ; addrs write most sgnf. byte buffer reg.. ; addrs read timer 3 counter. c7: 1<23+7<3+2.100 ; addrs write write timer no 3 latches. ; addrs read least sgnf. byte buffer reg.. c12: 5 ; most sgnf. byte to rtimer 0. c14: 127 ; leats sgnf. byte to timer 1. c22: 5 ; most sgnf. byte to timewr 2. c24: 127 ; least sgnf. byte to timer 2. c32: 0 ; most sgnf. byte to timer 3. c34: 49 ; least sgnf. byte to timer 3. i0: ; init of timer. rs. w2 c29. ; save return address. rl. w1 c21. ; select control reg 1 as addrs 0. do. w1 (c1.) ; write dev no 1. rl. w1 c11. ; preset all timers. do. w1 (c0.) ; write char dev. 0. rl. w1 c20. ; select cr 3 ass addrs 0. do. w1 (c1.) ; write char dev. 1. rl. w1 c30. ; set cr 3 no prescale. do. w1 (c0.) ; swrite char dev. 0. rl. w1 c21. ; select cr as1 as addrs 0. do. w1 (c1.) ; write char dev. 1. rl. w1 c32. ; load most sgnf. counter value to timer bufffer. ; jl. (c29.) do. w1 (c6.) ; write char dev. no 6. rl. w1 c34. ; load least signif. byte to counter 3. do. w1 (c7.) ; write char dev. no. 7. rl. w1 c22. ; load most sgnf. byte to counter 2. do. w1 (c4.) ; write char dev. 4. rl. w1 c24. ; load least sgnf. byte to counter 3. do. w1 (c5.) ; write char dev. no. 5. rl. w1 c12. ; load most sgnf. byte to counter 1. do. w1 (c2.) ; write char dev. no. 2. rl. w1 c14. ; load least sgnf. byte to counter 1. do. w1 (c3.) ; write char dev. no. 3. rl. w1 c10. ; send cr 1 operate all timers do. w1 (c0.) ; write char dev. no. 0. di. w1 (c1.) ; data in char dev. 1. jl. (c29.) ; return from subroutine. c29: 0 ; return address. ; interupt and monitor call service. i15: ; jl. i2. ; goto swop process. i2: ; monitor call service. ; from call 2. dl. w3 b68. ; get addrs of current and next. rs. w2 b68. ; next := current. rs. w3 b66. ; current := next. gp w3 26 ; inf reg := symbol tab of next. ri -10 ; call return from intprt effective addrs ; = relative from reg. dump addrs. 0 ; h8 - 2 : chain addrs. h. ; half word. h8: 0, 0 ; zero , reciever iccn dev no. w. ; full word 1 ; no of word to be send 0 ; addrs in iccn slave or message word. 0 ; addrs in iccn master. h0: 1<23 +0<3 + 2.011 ;reset hmess stack h1: 1<23 +0<3 + 2.001 ;next from hmess stack h3 : 1<23 ;monitor mode h6: 1<23 +0<3 + 2.000 ;hresponse errror b90: 0 ; cpa b100: al w2 0 rl. w1 b105. ; counter := b105. b102: dl. w0 b103. ; get double operand. wm w3 0 ; multiply w3. ds. w3 b104. ; save multiply. ba. w2 1 ; increase w2. ; gp w1 64 ; ls w1 -1 ; special move se w1 0 ; if w1 = 0 thee jl. b102. rl. w1 b105. ; w1 := (b105). ; jd 1<11+2 ; passivate jl. b102. ; go back. 3 b103: 0 ; b104: 0 ; b105: 2.11<22 b101: 0 h9: 1<23 + h8<3 + 2.001 ; effective addrs to data out ; for performing send message. b110: ; 2. user process. ; am 0,r.8 ; 8 word for dump address. al w2 0 ; reset w2. al w3 -1 ; counter := -1. al w3 x3-2000 ;gp w3 64 b112: dl. w1 b113. ; get double operand. wa w1 0 ; w1 := w1 + w0. ds. w2 b114. ; save double operand. bs. w2 1 ; decrease w2. al w3 x3+1 ; gp w3 64 ; sz w3 55 ; -1 ; escape ; jd 1<11+2 ; passivate. jl. b112. ; goto b112. 0 b114: 0 b113: 8388606 ; b111: -1 ; end of 2. user program. jl. 0 jl. 0 jl. 0 i10: jl. 0 i13: jl. 0 i14: jl. 0 i16: jl. 0 i17: jl. 0 i3: ; error entry form monitor tab. jl. 0 ; død 0,r.(:1024-k:)>1 e. ▶EOF◀