|
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: 19200 (0x4b00) Types: TextFile Names: »kkmonret4s«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt. └─⟦0364f57e3⟧ └─⟦80d78256e⟧ »kkmon4filer« └─⟦this⟧
( message monchange release 7.0 to 7.14 clear temp mondef moncentral monprocs, montabinit monprocfnc1 monprocfnc2 mons1 mons2, mdef mcentral mprocs, mtabinit mprocfnc1 mprocfnc2 ms1 ms2 contract entry.kkmon4filer mondef moncentral monprocs, montabinit monprocfnc1 monprocfnc2 mons1 mons2 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 ms1=set 1 disc3 ms1=edit mons1 skip 36.1 c=copy mess.no 1 ms2=set 1 disc3 ms2=edit mons2 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: jl. w3 d37. ; init cpu1 al w3 b49 ; power up element gp w3 b91 ; ri a179; goto start proc e. ; /,l./d35:/,g 2/.(2)/ x3/,f $procs ;******************** l./e50 /,r/e50/c99/, l./e58:/,l1,i/ m. -------------------- c.-1 /,l./i55:/,l./e./,l1,i/ z.,m. ++++++++++++++++++++ /,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/ m. -------------------- c.-1 /,l./h3=g6/,i/ z.,m. ++++++++++++++++++++ /,l./78clockdriver/,l./remoterprocess/,i/ h8: ; driver ; w0 : undef ; w1 = sender ; w2 = buf ; w3 = proc p.<:ttydriv:> m. -------------------- c.-1 /,f $tabinit ;***************** i/ z.,m. ++++++++++++++++++++ /,l./f0:/,l./h22/,i/ m. ------------------ c.-1 /,l./h24/,i/ z.,m. ++++++++++++++++++++ /,l./b.i10/,d./j6:/,i/ b. w. h1: 0,r.a180>1 ; reg dump h0: jl. 0 ; dummy loop /,l./dummyexternal/,i/ m. -------------------- c.-1 /,l./h23:/,l2,i/ z.,m. ++++++++++++++++++++ /,l./segment5:/,l./;get n/,d./gpw1/,i/ al w1 1024; ls w1 6 ; core size is initiality set to 32 K words /,l./,b89/,r/b89/ 0/,l./a66/,r/a66/ 0/,l./b86/,r/b86/ 0/,f $procfnc1 ;******************** l./b60:/,l./d8:/,l-1,i/ m. -------------------- w. c.-1 /,l./d12:/,l-2,i/ z.,m. ++++++++++++++++++++ /,l./;pro/,i/ m. -------------------- c. -1 /,l./e15:/,l./;pr/,i/ z.,m. ++++++++++++++++++++ /,l./e24:/,l./g3:/,l./e.;/,l1,i/ m. -------------------- c.-1 /,l./g4:/,l./;the/,i/ z.,m. ++++++++++++++++++++ /,l./h1:/,l2,i/ m. -------------------- c.-1 /,l./e42:/,l./h0:/,l2,i/ z.,m. ++++++++++++++++++++ /,l./e44:/,l./e.;/,l1,i/ m. -------------------- c.-1 /,l./e48:/,l./h0:/,i/ z.,m. ++++++++++++++++++++ b. g20,h10 w. /,l./g20:/,l./e.;/,l1,i/ m. -------------------- c.-1 /,l./e51:/,l./jlx2/,l1,i/ z.,m. ++++++++++++++++++++ /,l./n50:/,l./j0:/,l./e1./,i/ m. -------------------- c. -1 /,l./e7./,l1,i/ z.,m. ++++++++++++++++++++ /,f $procfnc2 ;**************** l./;btj1977/,i/ w. m. -------------------- c.-1 /,l./m6:/,l2,i/ z.,m. ++++++++++++++++++++ /,l./jl.n0./,l1,i/ m. -------------------- c.-1 /,l./m11:/,l./;testname/,i/ z.,m. ++++++++++++++++++++ /,l./e24=k-2/,l1,i/ m. -------------------- c. -1 /,l./;testnew/,i/ z.,m. ++++++++++++++++++++ /,l./e45./,i/ m. -------------------- c. -1 /,l./b45/,l1,i/ z.,m. ++++++++++++++++++++ /,l./g8:/,l1,i/ m. -------------------- c. -1 /,l./n2./,i/ z.,m. ++++++++++++++++++++ /,l./;test/,i/ m. -------------------- c. -1 /,l./;subp/,i/ z.,m. ++++++++++++++++++++ /,l./e48./,i/ m. -------------------- c. -1 /,l./n6./,l1,i/ z.,m. ++++++++++++++++++++ /,l./d17:/,l./e./,l1,i/ m. -------------------- c.-1 /,l./d16:/,i/ z.,m. ++++++++++++++++++++ /,l./d15:/,l1,i/ m. -------------------- c.-1 /,l./m32:/,l./g8:/,l./;if not bs-dev/,i/ z.,m. ++++++++++++++++++++ /,l./n5=/,l1,i/ m. -------------------- c.-1 /,l./d21:/,i/ z.,m. ++++++++++++++++++++ d20: d2 /,l./d34:/,l1,i/ m. -------------------- c.-1 /,l./m64:/,l./;set/,i/ z.,m. ++++++++++++++++++++ /,l./;doc/,i/ m. -------------------- c.-1 /,l./m100:/,l./jl.e24./,l1,i/ z.,m. ++++++++++++++++++++ m101: jl. e24. m40:,m43:,m66:,m70:,m125: m. -------------------- c.-1 /,l./m128/,l./;test/,i/ z.,m. ++++++++++++++++++++ /,l./m155:/,l./e25./,i/ m. -------------------- c. -1 /,l2,i/ z.,m. ++++++++++++++++++++ /,l./e25./,i/ m. -------------------- c. -1 /,l2,i/ z.,m. ++++++++++++++++++++ /,l./m00=m00/,i/ m. -------------------- c.-1 /,l./m155=m155/,i/ z.,m. ++++++++++++++++++++ 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/ m. -------------------- c.-1 /,l./j0=/,i/ z., m. ++++++++++++++++++++ /,l./r7:/,l1,i/ h. m. -------------------- c.-1 /,l./p46:/,l./;create per/,i/ z.,m. ++++++++++++++++++++ /,l./p35:/,l./;set/,i/ m. -------------------- c.-1 /,l./p39:/,l./m32;/,l1,i/ z.,m. ++++++++++++++++++++ /,l./p42:/,l./;pr/,i/ m. -------------------- c.-1 /,l./p44:/,l./n49:/,l./w./,i/ z.,m. ++++++++++++++++++++ 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/ m. -------------------- c. -1 /,l./interruptadd/,i/ z.,m. ++++++++++++++++++++ /,l./e28:/,l-1,i/ m. -------------------- c.-1 /,l./g11:/,l./;def/,i/ z.,m. ++++++++++++++++++++ /,f $s1 ;******************** l./d90,c100/,r/c100/c110/, f $s2 ;******************** l./first free addr/,l./jlw3b36/,l-2,i/ ; process description for rhdriver al w1 x1 +a4 ; proc := next internal; jl. w2 i18. ; init description; a48 , a107 ; interval low a49 , a108-1 ; - high a11 , <:rhd:> ; name = rhdriver a12+2 , <:riv:> ; a11+4 , <:er:> ; a11+6 , ; a17 , c101 ; first address a18 , c102 ; top address a301 , 0 ; priority a26 , a89 ; interrupt mask a27 , 0 ; user exception address a170 , 0 ; user escape address a171 , c102 ; initial cpa a172 , 0 ; - base a173 , 8 ; - lower write limit a174 , c102 ; - upper - - a175 , 6<12+b54 ; - interrupt levels a32 , 0 ; status = not monitor mode a33 , c101 ; ic = central waiting point a34 , 0 ; parent = undef a181 , c102 ; current cpa a182 , 0 ; - base a183 , 8 ; - lower write limit a184 , c102 ; - upper - - a185 , 6<12+b54 ; - interrupt levels a42 , a107 ; catalog base low a43 , a108-1 ; - - high a44-2 , a107 ; max interval low a44 , a108-1 ; - - high a45-2 , a107 ; std interval low a45 , a108-1 ; - - high a302 , 0 ; save area address a10 , 0 ;(end of words) ; kind = 0 a12 , 0 ; stopcount a13 , a95 ; state = running a19 , i3 ; buf claim a20 , i4 ; area claim a21 , i5-1 ; internal claim a24 , 1<7 ; (protection register) a25 , 0 ; (protection key) a22 , 8.7777 ; function mask a10 , 0 ;(end of bytes) ; (kind = 0) ; process description for initial operating system, hcmaster al w1 x1 +a4 ; proc := second internal; jl. w2 i18. ; init description; a48 , a107 ; interval low a49 , a108 ; - high a11 , <:hcm:> ; name = <:hcmaster:> a11+2 , <:ast:> ; a11+4 , <:er:> ; a11+6 , 0 ; a17 , c105 ; first address ;*** a18 , core size ; top address a301 , 0 ; priority a26 , a89 ; interrupt mask a27 , 0 ; user exception address a170 , 0 ; user escape address ;*** a171 , core size ; initial cpa a172 , 0 ; - base a173 , 8 ; - lower write limit ;*** a174 , core size ; - upper - - a175 , 6<12+b54 ; - interrupt levels a32 , 0 ; status = not monitor mode a33 , c105 ; ic = start init a34 , 0 ; parent = undef ;*** a181 , core size ; current cpa a182 , 0 ; - base a183 , 8 ; - lower write limit ;*** a184 , core size ; - upper - - a185 , 6<12+b54 ; - interrupt levels a42 , a107 ; catalog base low a43 , a108-1 ; - - high a44-2 , a107 ; max interval low a44 , a108-1 ; - - high a45-2 , a107 ; std interval low a45 , a108-1 ; - - high a302 , 0 ; save area address a10 , 0;(end of words) ; kind = 0 a12 , 0 ; stopcount a13 , a95 ; state = running a19 , i6 ; buf claim a20 , i7 ; area claim a21 , i8-1 ; internal claim a24 , 1<7 ; (protection register, for compatibility reasons) a25 , 0 ; (protection key, for compatibility reasons) a22 , 8.7777 ; function mask a10 , 0;(end of bytes) ; (kind = 0) rs w0 x1+a18 ; top address(s) := rs w0 x1+a171 ; initial cpa(s) := rs w0 x1+a174 ; initial upper write limit(s) := rs w0 x1+a181 ; current cpa(s) := rs w0 x1+a184 ; current upper write limit(s) := core size; al w2 x1+a16 ; rl w1 b2 ; jl w3 b36 ; link(timer q,internal.hcmaster) al w2 x2 -a4 ; w2:=addr(internal.driver proc.timer q) jl w3 b36 ; link(timer q, internal.driver proc); /,l./e.;endofop/,i/ c101=k ; p.<:rhdr:> c102=k c105=k ; p.<hcmt:> c106=k /,l1,i/ \f ; segment 10 ; rc 05.08.70 bjørn ø-thomsen ; ; this segment moves segment 2 - 9 in this way: ; ; segment 2 is moved to cell 8 and on, after which ; control is transferred to the last moved word with the ; following parameters: ; w2 = top load address (= new address of last moved ; word + 2) ; w3 = link ; ; after initializing itself, the program segment returns ; to this segment with: ; w2 = load address of next segment ; ; the next segment will then be moved to cell(w2) and on, ; after which it is entered as described above. ; ; when initialize catalog (segment 9) is entered, the values ; of the two switches (writetext, medium) may be found in ; the words x3-4 and x3-2. ; ; segment 10 is entered from segment 1 in its last word ; entry conditions: ; w0,w1 = init catalog switches ; w2 = start address of segment 2 s. i10, j10 w. j3. ; length of segment 10 j0: 0 ; init cat switch: writetext j1: 0 ; init cat switch: medium ; return point from initializing of some segment i0: rl. w1 j2. ; get load address; i1: wa w1 x1+0 ; calculate top address: rx. w1 j2. ; change(old load address, top address); al w1 x1+2 ; skip segment length; ; now w1, w2 = old, new load address ; move segment: sh w2 x1 ; if new addr > old addr then jl. i2. ; begin ds. w2 j5. ; save (old, new); ws w2 2 ; diff := new - old; sh w2 i5 ; (at least size of move loop); al w2 i5 ; al. w1 j2. ; from := last of segment; ; move to higher: i4: rl w0 x1 ; move word(from) am x2 ; to word(from + diff); rs w0 x1 ; al w1 x1-2 ; sn. w1 j0. ; if exactly all moveloop moved then jl. x2+i4. ; goto the moved moveloop... sl. w1 (j4.) ; if not all moved then jl. i4. ; goto move to higher; rl. w1 j4. ; old := old + diff; wa w1 4 ; wa. w2 j2. ; top address := top address + diff; rs. w2 j2. ; rl. w2 j5. ; restore(new); ; end; i2: rl w0 x1+0 ; move word from old rs w0 x2+0 ; to new address; al w1 x1+2 ; update old addr; al w2 x2+2 ; update new addr; se. w1 (j2.) ; if old addr <> top addr jl. i2. ; then goto move segment; ; now the segment has been moved ; jump to the last moved word al. w3 i0. ; insert return; jl x2-2 ; goto word(top addr - 2); ;;+++++++++++++++++++++++++++++++++++++ ;; init of timer ;;++++++++++++++++++++++++++++++++++++ ;; entry i9. ;; 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+0<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: 10 ; most sgnf. byte to rtimer 0. c14: 127 ; leats sgnf. byte to timer 1. c22: 10 ; 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. 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. ; comment: jump to last loaded word with ; w2 = top load address ; w3 = link ; word(x3-4) = init cat switch, writetext ; word(x3-2) = init cat switch, medium ; initialize segment 10 i3: ds. w1 j1. ; save init cat switches rs. w2 j2. ; c.-1 ; get monitor mode and clear all interrupts gg w3 b91 ; w3 := inf; rl. w0 j6. ; w0 := monitor mode; al. w1 i6. ; w1 := new entry; al. w2 j7. ; w2 := regdump; rs w2 x3+a326 ; user regdump := regdump; rs w0 x3-a325+a328+6; monitor status := monitor mode; rs w1 x3-a325+a328+2; monitor call entry := new entry; jd 1<11+0 ; call monitor; i.e. enter below, in monitor mode; i6: al w0 1 ; after monitor mode got: gp w0 b91 ; inf := 1; i.e. prevent any response; al w1 1<3 ; device := 1; i7: am. (j8.) ; next device: do x1+2 ; reset device (device); al w1 x1+1<3 ; increase (device); sh w1 255<3 ; if device <= 255 then jl. i7. ; goto next device; z. jl. w2 i9. ; al w2 8 ; new load address := 8; jd. i0. ; goto get load address; j6: 1 < 23 ; monitor mode; j7: 0, r. a180>1 ; regdump j8: 1 < 23 ; device address bit j4: 0 ; saved old j5: 0 ; saved new i5 = k - j0 ; aproximate size of moveloop j2: 0 ; top address jl. i3. ; goto initialize segment 10 j3: ; top address of segment 10: e. ; end segment 10 i. ; last segment s.w. 0 ; last segment empty e. ; end of last segment m. end of monitor e. ; end of global block e. /,f ▶EOF◀