|
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: 17664 (0x4500) Types: TextFile Names: »kkmonret4«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt. └─⟦0364f57e3⟧ └─⟦this⟧ »kkmonret4«
( message monchange release 7.0 to 7.14 clear temp mondef moncentral monprocs, montabinit monprocfnc1 monprocfnc2 monmaster , mdef mcentral mprocs, mtabinit mprocfnc1 mprocfnc2 mmaster contract entry.kkmon4filer mondef moncentral monprocs, montabinit monprocfnc1 monprocfnc2 monmaster skip 36.1 c=copy mess.no 1 mdef=assign mondef skip 36.1 c=copy mess.no 1 mcentral=set 1 disc3 mcentral=edit moncentral skip 36.1 c=copy mess.no 1 mprocs=set 1 disc3 mprocs=edit monprocs skip 36.1 c=copy mess.no 1 mtabinit=set 1 disc3 mtabinit=edit montabinit skip 36.1 c=copy mess.no 1 mprocfnc1=set 1 disc3 mprocfnc1=edit monprocfnc1 skip 36.1 c=copy mess.no 1 mprocfnc2=set 1 disc3 mprocfnc2=edit monprocfnc2 skip 36.1 c=copy mess.no 1 mmaster=set 1 disc3 mmaster=edit monmaster head cpu end) $def ;******************** f $central ;******************** l./c6:/,l-4,d./ria179/,d./e./,i/ b. w. c6: al w3 1 jl -1 ; hard stop ; ; power up ; c25: c. a430 jl. w3 d37. ; init cpu1 z. al w3 b49 ; power up element gp w3 b91 ; ri a179; goto start proc e. ; /, l./d7:ggw2b94/,d-1,i/ b. i15 w. i14: 1<23+4<3+2.100 ; timer 2 most significant i15: 1<23+5<3+2.100 ; timer 2 least significant i13: 0 d7: di. w0 (i14.) ; read most significant ls w0 8 ; di. w2 (i15.) ; read least significant wa w2 0 ; w2:=most<8+least ws. w2 i9. ; -cw:= - 1<16 + most<8 +least ac w2 x2 ; /, l./d35:/,g 2/.(2)/ x3/,f $procs ;******************** l./e50 /,r/e50/c99/, l./e58:/,l1,i/ c.-1 /,l./i55:/,l./e./,l1,i/ z. /,l./c21:/,l./b8/,i/ ws w2 b0 ; w2:=interrupt level rl w3 x2+1164 al w3 x3+1 rs w3 x2+1164 am x2-16 ; else save interrupt level rs w2 x1+a302+2 ; in save area.proc /,l./end of service for cpu(i)/, l./segment3/,l./b127/,l1,i/ g2=g3 /,l./e3:/,l./g2;8:/,r/g2/h8/, l./h72;72:/,i/ c.-1 /,l./h3=g6/,i/ z. g2 ; 72: g2 ; 74: g2 ; 76: g2 ; 78: g2 ; 80: g2 ; 82: g2 ; 84: g2 ; 86: g2 ; 88: g2 ; 90: h8 ; 92: acia line /,l./r3;8:/r,/r3 /i29/,r/8:/8: terminal or console/, l./i9:/,i/ i29 ; 92: acia line /,l./78clockdriver/,l./remoterprocess/,i/ h8: ; driver ; w0 : undef ; w1 = sender ; w2 = buf ; w3 = proc p.<:ttydriv:> c.-1 /,f $tabinit ;***************** i/ z. /,l./f0:/,l./h22/,i/ c.-1 /,l./h24/,i/ z. /, l./b54/,r/b54/8;***microprogram error/, l./b.i10/,d./j6:/,i/ b. i0 w. h1: 0,r.a180>1 ; reg dump h0: c. -1 rl. w1 i0. ; al w1 x1+1 ; rs. w1 i0. ; gp w1 64 ; write test register i0:0 z. jl. 0 ; dummy loop /, l./b54/,r/b54/8;***microprogram error should be 7/, l./dummyexternal/,i/ c.-1 /,l./h23:/,l2,i/ z. /,l./segment5:/,l./;get n/,d./gpw1/,i/ al w1 1024; ls w1 6 ; core size is initiality set to 32 K words /,l./b67/,l1,d4, l./,b89/,r/b89/ 0/,l./a66/,r/a66/ 0/,l./b86/,r/b86/ 0/,f $procfnc1 ;******************** l./b60:/,l./d8:/,l-1,i/ w. c.-1 /,l./d12:/,l-2,i/ z. /,l./;pro/,i/ c. -1 /,l./e15:/,l./;pr/,i/ z. /,l./e24:/,l./g3:/,l./e.;/,l1,i/ c.-1 /,l./g4:/,l./;the/,i/ z. /,l./h1:/,l2,i/ c.-1 /,l./e42:/,l./h0:/,l2,i/ z. /,l./e44:/,l./e.;/,l1,i/ c.-1 /,l./e48:/,l./h0:/,i/ z. b. g20,h10 w. /,l./g20:/,l./e.;/,l1,i/ c.-1 /,l./e51:/,l./jlx2/,l1,i/ z. /,l./n50:/,l./j0:/,l./e1./,i/ c. -1 /,l./e7./,l1,i/ z. /,f $procfnc2 ;**************** l./;btj1977/,i/ w. c.-1 /,l./m6:/,l2,i/ z. /,l./jl.n0./,l1,i/ c.-1 /,l./m11:/,l./;testname/,i/ z. /,l./e24=k-2/,l1,i/ c. -1 /,l./;testnew/,i/ z. /,l./e45./,i/ c. -1 /,l./b45/,l1,i/ z. /,l./g8:/,l1,i/ c. -1 /,l./n2./,i/ z. /,l./;test/,i/ c. -1 /,l./;subp/,i/ z. /,l./e48./,i/ c. -1 /,l./n6./,l1,i/ z. /,l./d17:/,l./e./,l1,i/ c.-1 /,l./d16:/,i/ z. /,l./d15:/,l1,i/ c.-1 /,l./m32:/,l./g8:/,l./;if not bs-dev/,i/ z. /,l./n5=/,l1,i/ c.-1 /,l./d21:/,i/ z. d20: d2 /,l./d34:/,l1,i/ c.-1 /,l./m64:/,l./;set/,i/ z. /,l./;doc/,i/ c.-1 /,l./m100:/,l./jl.e24./,l1,i/ z. m101: jl. e24. m40:,m43:,m66:,m70:,m125: c.-1 /,l./m128/,l./;test/,i/ z. /,l./m155:/,l./e25./,l-1,i/ c. -1 /,l3,i/ z. /,l./g7./,i/ c. -1 /,l2,i/ z. /,l./e25./,l-1,i/ c. -1 /,l3,i/ z. g15: /,l./sz w2 2.01/,i/ c. -1 /,l3,i/ z. /,l./a46/,i/ c. -1 /,l./g9./,i/ z. /,l./g7:/,l-1,i/ c.-1 /,l./i3:<:host:/,l2,i/ z. /,l./m00=m00/,i/ c.-1 /,l./m155=m155/,i/ z. m8=m8-n50,m13=m13-n50,m15=m15-n50,m16=m16-n50,m17=m17-n50 m34=m34-n50,m40=m40-n50,m43=m43-n50,m65=m65-n50 m66=m66-n50,m70=m70-n50,m101=m101-n50,m125=m125-n50,m149=m149-n50 m150=m150-n50,m151=m151-n50,m152=m152-n50,m153=m153-n50,m154=m154-n50 /,l./m260=/,i/ c.-1 /,l./j0=/,i/ z. /,l./r7:/,l1,i/ h. c.-1 /,l./p46:/,l./;create per/,i/ z. /,l./p35:/,l./;set/,i/ c.-1 /,l./p39:/,l./m32;/,l1,i/ z. /,l./p42:/,l./;pr/,i/ c.-1 /,l./p44:/,l./n49:/,l./w./,i/ z. n49: h. r7. ,r7. ,r7. ,r7. ,r7. ,r7. ,r7. ,p27.,p28.,p29. p30.,p31.,p32.,r7. ,p34.,p35.,r7. ,r7. ,r7. ,r7. p40.,r7. ,r7. ,r7. ,r7. ,r7. ,r7. ,r7. ,r7. ,r7. r7. ,r7. ,r7. ,r7. ,r7. ,r7. ,r7. ,r7. ,r7. ,r7. r7. ,r7. /,l./j5=/,l./;recordcatb/,i/ c. -1 /,l./interruptadd/,i/ z. /,l./e28:/,l-1,i/ c.-1 /,l./g11:/,l./;def/,i/ z. /,f $master ;******************** l./i10:/,l1,i/ /,l./<:ver:>/,l./a24,1<7/,r/1/0/,l./<:er:>/,l./a24,1<7/,r/1/0/, l./a24,1<7/,r/1/0/, l./; segment 10/,l./i10,j10/,l./i3:/,l-1,i/ ;; init of timer ;;++++++++++++++++++++++++++++++++++++ ;; entry i0. ;; return address in w2. ;; destroyed w1. b. c40 w. ; ; 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: 0 ; most sgnf. byte to rtimer 0. c14:255 ; leats sgnf. byte to timer 1. c22: 255 ; most sgnf. byte to timewr 2. c24: 255 ; least sgnf. byte to timer 2. c32: 0 ; most sgnf. byte to timer 3. c34: 49 ; least sgnf. byte to timer 3. i9: ; 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. 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. e. ; end block init of timer. n13: 2.10000000 ;C mask for disanble transmit enable receive. n15: 2.00000011 ;C acia master reset command. ;; global entry inititlize acia controller. o1: ;; schould be global entry address. b. m10 w. ; begin rs. w3 m1. ; save return address. rl w3 x1+a50 ; load acia control address. rl. w0 n15. ; load acia reset command. do w0 x3 ; write acia reset command to acia controller. rl w0 x1+a78+24 ; load acia transmission mode. do w0 x3 ; write acia transmission mode to acia controller ; using acia control address. di w0 x3+8 ; read acia data using acia data address. di w0 x3 ; read acia status usin acia control address. rl w0 x1+a78+24 ; load acia transmission mode command. lo. w0 n13. ; mask receive enable transmit disable into ; transmision mode mask do w0 x3 ; write receive enable/transmit disable to ; acia control register. jl. ( m1. ; return from acia init. m1: 0 ; return address of init acia. e. ;; end init of acia drivers. ;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;; init of hc8000 interupt controler. ;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;; init of amd9519 interupt controler. ;; writen by: carsten gyrn, sept. 1982. ;; entry address: g18. ;; call: ;; w0 = not used. ;; w1 = address of value of level 0 in interupt ;; controler. ;; (evry level is initialized to ;; C(x1 + 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. g18:b.c8, b0 w. 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. 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. rl 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. ;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;; read interupt controler status. ;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;; entry address: g16 ;; call: w0 = not used. ;; w1 = not used. ;; w2 = device address. ;; w3 = return address. ;; return: w0 = complete status word. ;; w1 = not used. ;; w2 = complete device address. ;; w3 = return address. ;; ;; function: reads the status word from the amd9519 ;; interupt controler. ;; ;; not: the status words contents is the following: ;; bit 0 1 2 = binary vector indicating the number of ;; highest priority unmasked bit set in the ;; interupt request register. valid only ;; when bit 7 in the status register = 0. ;; bit 3 = set interupt controler armed. ;; not set interupt controler disarmed. ;; bit 4 = set interupt mode is polled. ;; not interupt mode is interupt. ;; bit 5 = set priority mode is rotating. ;; not set priority mode is fixed. ;; bit 6 = set input enabled. ;; not set input disabled. ;; bit 7 = set not unmasked interupt in irr ;; not set at least one interupt in irr. ;; g16: ;; entry b. f0 w. ls w2 3 ; shift device control address 3 left ; so it fits into charakter device base word. lo. w2 f0. ; mask device base word into device control address. g17: ;; entry if device control address already is complete. di w0 x2+8 ; read status register from interupt controler. jl x3 ; return from subroutine. f0: 1<23+0<3+2.100 ; charakter device base. e. ;; end of read interupt controler status. ;; ++++++++++++++++++++++++++++++++++++++ /,l./i3:/,l2,i/ jl. w2 i9. ; goto init time /,f ▶EOF◀