DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦f4f9903de⟧ TextFile

    Length: 17664 (0x4500)
    Types: TextFile
    Names: »kkmonret4«

Derivation

└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ.  Detaljer om "HC8000" projekt.
    └─⟦0364f57e3⟧ 
        └─⟦this⟧ »kkmonret4« 

TextFile

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