|
|
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: »t2901dir«
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
└─⟦b2ec5d50f⟧
└─⟦this⟧ »t2901dir«
; hc2901
*test: off
; --------------------------------------------------
; 810730/1130:
; stwrch and fiwrch defined as clocking registers.
; substitutes recvst and recvcl from iccn bus
; logic.
; NEXT.
; ----------------------------------------------------
; mask
*mask: regsrc,21,(36:39) ; full register source mask.
*mask: cndslc,(6:10) ; condition select mask.
*mask: aludst,23,24,25 ; alu destination select mir (23:25).
*mask: alufnc,26,27,28 ; alu function select mir (26:28).
*mask: alusrc,29,30,31 ; alu source select mir (29:31).
; clear ready bit hc2903 mir(15).
; jump addrs codes
; use full sekvens mask.
; type = 12.
; bit(1:4) in instr. format is the sekvens kontrol,
; bit(5) in instr. format is condition enable.
*name: cjsb,12,1,0 ; conditional jump to subroutine
*name: jsb,12,1,1 ; jump to subroutine
*name: cjmp,12,3,0 ; conditional jump addrs.
*name: jmp,12,3,1 ; jump addrs unconditional.
*name: cjsrp,12,4,0 ; conditional jump to subroutine conditional addrs.
; from sekvenser reg. or direct.
*name: cjmrd,12,7,0 ; jump to addrs. conditional
; from secvenser register or direct.
*name: rpct,12,9,0 ; repeat direct and derease counter until
; counter = 0.
*name: cjmpp,12,11,0 ; conditional: if pass then
; pop stack and jump to direct addrs.
; else continue.
*name: twb,12,15,0 ; tree way branch
; jump sekvens codes.
*name: jmpz,14,0,0 ; jump to addrs. zero,
; clear stack.
*name: jmap,14,2,0 ; jump to addrs. given by map prom
*name: push,14,4,1 ; push addrs of next mic. instr to
; micro secvens stack and continue.
*name: cjvt,14,6,0 ; jump to addrs. given by vektor prom
*name: rep,14,8,0 ; if counter <> 0 then goto first in stack
; else pop stack and continue.
*name: crtn,14,10,0 ; conditional: if pass then
; jump to first in stack and pop stack
; else continue.
*name: rtn,14,10,3 ; return: jump to first in stack
; and pop stack.
*name: loop,14,13,0 ; conditional loop:
; if pass then pop sctak and continue
; else jump to first in stack.
*name: pop,14,13,3 ; pop stack and continue.
*name: sync,14,14,0 ; dummy syncronotation instruction.
*name: cont,14,14,0 ; continue to next micro instr.
; type 15 load counter types.
*name: ldct,15,12,0 ; load counter whit addrs. field and continue.
*name: clcpu,15,4,0 ; pusch mic. program counter to stack and
; if pass then load counter whit addrs. field
; else hold counter.
*name: lcpu,15,4,1 ; load counter with address field and
; push address of next mic. instr. to stack.
; alu function codes.
*name: add,11,0,1 ; add: a+b , internal reg. carry = 0.
*name: add1,11,0,2 ; add1: a+b+1 , internal reg. carry = 1.
*name: sub,11,1,2 ; sub: b-a , int. reg. carry = 1.
*name: sub1,11,1,1 ; sub1: b-1a-1 , int. reg. carry = 0
*name: negadd,11,2,2 ; nadd: -b+a , int. reg. carry = 1
*name: negad1,11,2,1 ; nadd1: -b+a-1 , int. reg. carry = 0
*name: and,11,4,1 ; and: a and b , int. reg. carry = don't care.
*name: or,11,3,1 ; or: a or b, int. reg. crrry = don't care.
*name: xor,11,6,1 ; xor: a xor b, int. reg. carry = don't care
*name: nxor,11,7,1 ; nxor: not(a xor b), int. reg. carry = don't care.
*name: andinv,11,5,1 ; andinv: not(a) and b, int. reg. carry =
; don't care.
*name: andn,11,5,1 ; andn: not(a) and b, int. reg. carry = don't care.
; inc and dec instr whit one internal op.
*name: inc,11,0,7 ; increase a register.
*name: dec,11,1,6 ; decease.
; move and move zero instr.
*name: move,11,3,3
*name: mzero,11,4,5 ;
*name: moinc,11,0,4 ; move and increment.
*name: modec,11,1,3 ; move adn decrement.
*name: moinv,11,7,3 ; move invert
; the nonaddressable q-register.
*name: q,30,-1 ; the negative value to
; destingues from the others .
; internal register definitions.
; ------------------------------
*name: status,30,7 ; rc2901 status bit register
; same as int reg, mus corrospon with
; hc2903 buffer register.
*name: wrk0,30,2 ; working register 0.
*name: intreg,30,7 ; interupt register, part of status register.
; must correspond whit hc2903 buffer
; register.
*name: intlev,30,0 ; current interupt level number.
*name: intlim,30,4 ; interupt limit register.
*name: ic,30,5 ; instruction counter (absolute address)
*name: pir,30,8 ; prefetched instruction register.
*name: wrk1,30,6 ; working register 1.
*name: wrk2,30,1 ; working register 2.
; channel register.
*name: dichwc,30,9 ; data in channel word counter.
*name: dichad,30,10 ; data in channel block address.
*name: dochwc,30,11 ; data out channel word counter.
*name: dochad,30,12 ; data out channel block address.
*name: c66,30,13 ; in rh8000 this reg.
; contain the constant 66.
*name: lmem,30,13 ; local dma memory address.
*name: lwco,30,14 ; local dma word counter.
*name: ictsad,30,15 ; ic test address.
; internal names or internal registers.
*name: r0,30,0 ; internal register.
*name: r1,30,1 ; internal register.
*name: r2,30,2 ; internal register.
*name: r3,30,3 ; internal register.
*name: r4,30,4 ; internal register.
*name: r5,30,5 ; internal register.
*name: r6,30,6 ; internal register.
*name: r7,30,7 ; internal register.
*name: r8,30,8 ; internal register.
*name: r9,30,9 ; internal register.
*name: r10,30,10 ; internal register.
*name: r11,30,11 ; internal register.
*name: r12,30,12 ; internal register.
*name: r13,30,13 ; internal register.
*name: r14,30,14 ; internal register.
*name: r15,30,15 ; internal register.
; external registers.
*name: tstreg,30,16 ; dest: write hc2903
; source: read hc2903
*name: r16,30,16 ; external reg 16.
*name: medata,30,17 ; dest: write hc memory data
; source: read hc memory data.
*name: r17,30,17 ; external reg 17.
*name: meaddr,30,18 ; dest: write hc memory addrs.
; => start read cyc.
; source: in hc8000 not meaningfull
*name: rc80cn,30,18 ; source: in rh8000 last 4 bit from
; address in data out instruction
; from rc8000.
*name: r18,30,18 ; external reg18.
*name: dmada,30,19 ; dest: write dma data.
; source: read dma data
*name: r19,30,19 ; external reg 19.
*name: dmaadr,30,20 ; dest in hc2901: write dma addrs.
*name: clrf80,30,20 ; dest in rh2901: clear flag from rc8000.
; channel bus data register.
*name: chdata,30,21 ; dest: write channel bus
; read channel bus .
*name: hc2903,30,23 ; dest: write hc2903 buffer register.
; source: read hc2903 buffer register.
*name: extreg,30,22 ; external reg. no. 6.
; must correspond with register no
; wrk1.
; realy not a register but only
; used for clocking of external
; devices in connection with
; opening of external devices.
; dest: read and write external char device.
; source: not meaning full.
*name: intprm,30,22 ; address the init prom in hc8000.
; works as extreg but without opening
; of external devices.
; channel control registers.
; implemented as specials but is actually
; unused source in alufunction.
*name: clchii,16,25,1,regsrc ; clear channel input interupt.
; same as clear master request.
*name: clchoi,16,29,1,regsrc ; clear channel output interupt.
; same as clear sender control.
*name: strech,16,26,1,regsrc ; start read channel.
*name: firech,16,27,1,regsrc ; finis read channel.
*name: stwrch,16,30,1,regsrc ; start write channel.
*name: fiwrch,16,31,1,regsrc ; finis write channel.
; hc2901 status register ( condition code bits)
; type is condition type = 40
; format is: <name>/40/<value>/<not used>,<mask name>
;
*name: ovrun,40,16,0,cndslc ; overrun on alu function.
*name: neg,40,17,0,cndslc ; negative alu output.
*name: zero,40,18,0,cndslc ; zero alu output.
*name: carry,40,19,0,cndslc ; carry on alu function.
*name: vect,40,20,0,cndslc ; vector interupt
*name: rememo,40,21,0,cndslc ; memory ready
*name: npmem,40,22,0,cndslc ; parity error (memory)
*name: re2903,40,23,0,cndslc ; hc2903 ready
*name: re8000,40,11,0,cndslc ; wait for ready from bit 11 only in rh8000
*name: reldma,40,11,0,cndslc ; wait for ready from bit 11, local dma
; only in initial version.
*name: chioin,40,13,0,cndslc ; timerdivice interupt.
*name: chiosy,40,14,0,cndslc ; character divice clock syncronation signal.
*name: tstrdy,40,15,0,cndslc ; wait manual test
*name: wainle,40,12,0,cndslc ; wait interupt level
; form external interupr device to
; be ready on charakter data bus.
*name: icmabu,40,12,0,cndslc ; wait until master on bus.
;
;
;
;
; specials
;
;
;
;
;
; type 4 gives the actuel no of the bit.
*name: noint,16,0,4,13 ; clear interupt enable bit
; mir(13) := 0 ( normaly 1).
*name: not,16,1,2,5 ; change polarity of condition
*name: setcar,16,1,2,13 ; set carry bit in micro instr.
*name: clcar,16,0,2,13 ; clear carry bit in micro instr.
; specials in alu. destinaliton field
*name: onlyq,16,0,1,aludst ; store output from alu. only in q_reg.
*name: noload,16,1,1,aludst ; do not store result from alu. in
; intern reg.
*name: soout,16,2,1,aludst ; send reg. contents pointed by a_addrs
; to extern bus, store result from
; alu. in intern reg. pointed by b_addrs.
*name: stddes,16,3,1,aludst ; std. destinaltion control.
; store result from alu in
; intern registe pointed out by
; b_addrs field.
*name: sraq,16,4,1,aludst ; shift alu_result rigth 1 bit and
; shift contents of q_reg rigth 1 bit.
; store alu_result after shift in
; register stack pointed out by b_addrs
; field.
*name: sr,16,5,1,aludst ; shift alu_reult rigth 1 bit.
; store alu_result after shift in reg.
; register stack pointed out by b_addrs
; field.
*name: slaq,16,6,1,aludst ; shift alu_result left 1 bit and
; and store shifted result in reg.
; in internal register stack pointed
; out by b_addrs field, shift also
; contents of q_reg left 1 bit.
*name: sl,16,7,1,aludst ; shift alu_result left 1 bit,
; and store shifted result in reg.
*name: cl2903,16,1,4,15 ; clear bit indicating that
; the reg to the hc 2903 is ready
; mir(15) := 1.
*name: clexde,16,1,4,18 ; clock external dev. clock bit,
; also callsed valid memory address in
; the motorola pia system, mir(18) = 1.
*name: trnbus,16,1,4,19 ; turn bus direction for 1 third of
; the bus so bus(0.7) is input
; and bus(8.23) is output of control and
; device number, used by reading of charakter
; type devices, ( set mir(19)).
*name: opdira,16,5,1,alusrc ; open for direct and a ram source.
*name: opdirz,16,7,1,alusrc ; open for direct and zero source.
*name: opinde,16,3,1,alusrc ; open for zero and internal source.
; the internal source is the same as destination.
*name: opramf,16,3,1,aludst ; open for internal registers.
*name: oprama,16,2,1,aludst ; open for internal reg. and
; move a bus to out port.
*name: readch,16,1,4,16 ; select read from external char device ,
; mir(16) = 1, schould be set together with
; bit(1) in the bus word.
*name: writch,16,0,4,16 ; select write from external char device,
; mir(16) = 1, normaly allways cleared.
*name: sltiml,16,1,4,17 ; select timer divice or other divice no less
; from deivce no 0 to device no 7,
; mir(17) = 1.
*name: init03,16,1,4,17 ; set mir(17) , cause hc2903 to
; start initialize, schould be send
; at least 3 times following
; each other. only functioning
; in rh8000.
*name: intr03,16,1,4,0 ; set mir(0), which interupt the
; hc2903
; open for interupt group 0,
; dev on 2901 board.
*name: opexde,16,1,2,11 ; open fore xtern destination registers.
; set or clear selected bit or bits
; selected from the argument.
*name: set,16,-1,3,1 ; set one bit
*name: clear,16,0,3,1 ; clear one bit
*name: setall,16,-1,3,2 ; set all bit from arg1 to arg2
*name: clall,16,0,3,2 ; clear all bit from arg1 to arg2
; in internal register stack pointed
; out by b_addrs field.
*save: m2901
*end:
▶EOF◀