|
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: 8448 (0x2100) Types: TextFile Names: »cgmoninit«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt. └─⟦0364f57e3⟧ └─⟦this⟧ »cgmoninit«
;; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;; init of acia and acia interupt controlers. ;; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ b. m10,n10,o10 w. n0: 0 ; return address. n1: 0 ; save name table address. n2: ;; copy table of name from options. t. 0 n3: ;; copy table of names of amd9519 intrupt controlers ;; from options. t. 0 ; end of table. n4 = 2.00000011 ; acia reset command. n5: 2.101000000 ; receive enable transmit disable mask. rs. w3 n0. ; save return address. al. w3 n2. ; get address of first name oc acia controler. m1: ;; repeat until last name in list rl w0 x3 ; load first word in name. sn w0 0 ; if finis then jl. m2. ; goto init of interupt controlers. jd 1<11+4 ; call find process decription. ;; init of acia controlers. rl w1 0 ; load acia process description address. rl w2 x1+a50 ; load acia device control address. al w0 n4 ; load acia reset command. do w0 x2 ; write reset command to acia controler ; using acia control address. rl w0 x1+a78+24 ; load acia transmission mode. do w0 x2 ; write acia transmission mode to acia ; controler using acia control addres. di w0 x2+8 ; read acia data using acia data address. di w0 x2 ; read acia status using acia data address. rl w0 x1+a78+24 ; load acia transmission mode command. lo. w0 n5. ; mask receive enable transmit disable into ; transmission mode mask. do w0 x2 ; write interupt/mode mask to acia controler ; using acia control address. al w3 x3+8 ; get address of next name jl. m1. ; goto control of next. ;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;; init of hc8000 interupt controler. ;; ++++++++++++++++++++++++++++++ ;; call of interupt controler. ;; ++++++++++++++++++++++++++++++ m2: ;; al. w3 n3. ; load address of first name of amd9519 ; interupt cotroler. m3: ;; repeat until last name in list rl w0 x3 ; load first word in name. sn w0 0 ; if last process then jl. ( n0. ; return from init of acia and amd9519. jd 1<11+4 ; else call process decription. rl w1 0 ; load process decription address. rs. w3 n1. ; save name address. rl w2 x1+a50 ; get complete device address of amd9519 ; interupt controler. rl w1 x1+a70 ; get no in interupt controler list. ls w1 3 ; first interupt no is interupt controler ; no*8+0. jl. w3 m5. ; call init of interupt controler. rl. w3 n1. ; load name address. al w3 x3+8 ; next name in table. jl. m3. ;; end call of init of interupt controler. ;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;; init of amd9519 interupt controler. ;; writen by: carsten gyrn, sept. 1982. ;; entry address: g18. ;; entry address and other modification ;; for monitor use november 1982. ;; entry address: m5. ;; call: ;; w0 = not used. ;; w1 = value of level 0 in interupt ;; controler. ;; (evry level is initialized to ;; C(w1) + 2*level no). ;; w2 = device address of control port of ;; interupt controler. ;; w3 = return address. ;; destroyed = w0 w1 w2 w3. ;; the amd9519 interupt controler is initialised ;; to auto clear for all interupt and to ;; fixed priority. ;; see: advancded micro devices 9519 universal ;; interupt controler documentation for ;; detailed and complete description, ;; and for other possibilities. ;; ;; ;; note: acknovlege of interupt is made by ;; the privilegd instruction: gg wX 94. ;; ;; for all amd9519 interupt controler: ;; device address = data address ;; device address + 1 = control address. ;; ;; function: initialize the interupt amd9519 interupt controler ;; no masked interupt, autoclear for all, ;; fixed priority ( = lower interupt before higher) ;; no polling. ;; and arm ( enable ) interupt controler. b. c8, b0 w. c. -1 ;; skiped in monitor use. g18: ;; normal entry ls w2 3 ; shift data address 3 left. lo. w2 c1. ; mask device base into data address. g19: ;; entry when device data address already is complete. z. m5: ;; entry when in monitor use rs. w3 c0. ; save return address. al w3 x2+8 ; calculate device control address. ds. w3 c3. ; save device control and data address. al w0 0 ; set master reset control byte. do w0 x3 ; send master reset to device. al w3 0 ; level counter := 0; rl. w2 c4. ; load control byte preselecting response ; memory for writing. b0: al w0 x2 ; get preselect mask do. w0 ( c3. ; send preselect response memory for writing, ; to interupt controler. al w0 x1 ; get logical interupt level. do. w0 ( c2. ; send logical level to interupt controler. al w1 x1+2 ; next logical interupt level. al w2 x2+1 ; next physical interupt level in this ; interupt controler, (last 3 bit of control ; byte for preselecting response memory for ; writing). al w3 x3+1 ; next level counter. se w3 8 ; if not last level then jl. b0. ; goto repeat. rl. w0 c5. ; get control byte for preselect ; autoclear mask register in interupt controler ; for writing. do. w0 ( c3. ; send control byte to interupt controler rl. w0 c6. ; get auto clear mask, ( clear all interupts). do. w0 ( c2. ; send auto clear mask to interupt controler. rl. w0 c7. ; get clear interupt and request bit mask. do. w0 ( c3. ; send clear interupt and request bit mask to ; interupt controler. rl. w0 c8. ; get mask for arm interupt controler and ; preselect interupt request register for reading. do. w0 ( c3. ; send arm comand and preselect for reading ; to interupt controler. jl. ( c0. ; return. c0: 0 ; saved return address. c1: 1<23+0<3+2.100 ; charakter device no.: 0 ; (base for all charakter devices). c2: 0 ; device address for data to intrupt controler. c3: 0 ; device address for control of interupt ; controler. c4: 2.11100000 ; control byte for preselect response ; memory for writing. c5: 2.11000000 ; control byte for preselect auto clear ; register for writing. c6: 2.11111111 ; data byte to auto clear register, ; 255 = auto clear on all interupts. c7: 2.00010000 ; control byte for clear interupt mask ; ( all interupt active) c8: 2.10101001 ; control byte for preselecting interupt ; request register for reading and arm ; ( arm = special word for enable) interupt ; controler. ;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ e. ;; end of code to standard initialiation of interupt controler. ;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ e. ;; end init of acia controllers and acia interupt controlers. ▶EOF◀