|
|
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: 15360 (0x3c00)
Types: TextFile
Names: »t2903dir«
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
└─⟦b2ec5d50f⟧
└─⟦this⟧ »t2903dir«
; directives and names to 2903.
; masks
*mask: aludes,(11:15) ; alu function from alu bit 8 to both
; bit 5 , mir(11) to 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,5,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 ; pusch micro program instr. counter to
; stack and continue.
*name: cjvec,14,6,0 ;if pass then go to address given
; by vector prom otherwise next micro
; instr.
*name: cjv1,14,6,0 ; jump to addrs. given by vektor1 prom
*name: cjv2,14,6,2 ; jmp to addrs. given by vector 2 prom.
*name: jvec,14,6,1 ; jump vector.
*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: 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 ; push micro program counter to stack
; if pass then load counter whit addrs. field
; else hold counter.
*name: lcpu,15,4,1 ; push micro program counter to stack
; load counter with address field.
; type 16 is load counter from internal alu reg.
*name: ldctre,16,12,5,0 ; load counter from register addressed.
*name: pushre,16,4,5,1 ; pusch mic. program instr. counter to
; stack and load counter with contents of
; the internal register pointed out by
; the argument.
*name: cpshre,16,4,5,0 ; pusch mic. program instr. counter
; into the stack and
; if(condition pass then load counter
; with internal alu register pointed
; out by the instr address field) else
; hold counter
; type 16. load micro sekvenser counter with contents of
; internal bus.
*name: ldctbu,16,12,6,0 ; load counter from bus
*name: pushbu,16,4,6,1 ;
*name: cpshbu,16,4,6,0 ;
; normal alu function codes
; code zero is not used
*name: sub,11,1,2 ; f = s minus r minus 1 plus carry = 1
*name: sub1,11,1,1 ; f = s minus r minus 1 plus carry (=0)
*name: subr,11,2,2 ; f = r minus s minus 1 plus carry (= 1).
*name: subr1,11,2,1 ; f = r minus s minus 1 plus carry (= 0).
*name: add,11,3,1 ; f = r plus s plus carry (= 0)
*name: add1,11,3,2 ; f = r plus s plus carry (= 1)
*name: moves,11,4,1 ; f = s plus carry (= 0)
*name: inc,11,4,2 ; f = s plus (carry = 1)
*name: invs,11,5,1 ; f = not(s) plus (carry = 0)
*name: invs1,11,5,2 ; f = not(s) plus (carry = 1)
*name: mover,11,6,1 ; f = r plus (carry = 0)
*name: incr,11,6,2 ; f = r plus (carry = 1)
*name: invr,11,7,1 ; f = not(r) plus (carry = 0)
*name: invr1,11,7,2 ; f = not(r) plus (carry = 1)
*name: mzero,11,8,1 ; f = low
*name: andinv,11,9,1 ; f = not(r) and s
*name: exnor,11,10,1 ; f = r exclusive nor s
*name: exor,11,11,1 ; f = r exclusive or s
*name: and,11,12,1 ; f = r and s
*name: nor,11,13,1 ; f = r nor s
*name: nand,11,14,1 ; f = r nand s
*name: or,11,15,1 ; f = r or s
; special functions
*name: unsmul,11,0,3 ; unsigned multiply
*name: mult2c,11,4,3 ; 2'complement multiply . bitpattern =/01010/
*name: sgnmgn,11,11,5 ; bitpattern = /01011/
; from 2's complement to sign magnitude.
*name: mult2l,11,12,5 ; 2'complement multiply, last cycle, bitpattern = /01100/
*name: slnorm,11,16,4 ; bitpattern = /10000/
; single length normalize.
*name: dlnorm,11,20,3 ; bitpattern = /10100/
; double length normalize.
*name: div1st,11,20,3 ; bitpattern = /10100/
; first divide operation. same as dlnorm.
*name: div2c,11,24,5 ; bitpattern = /11000/
; 2' complement divide.
*name: div2cr,11,28,5 ; bitpattern = /11100/
; 2' complement divide corectio and remainder.
*name: incone,11,8,3 ; increment by 1
*name: inctwo,11,8,4 ; increment by 2
; the nonaddressable q-register.
*name: q,30,-1 ; the negative value to
; destingues from the others .
; use of the indexd w and w_pre registers
*name: windex,30,-2 ;
*name: wreg,30,-2 ;
*name: wpre,30,-3 ;
; internal registers
; the working register is interchanged
; cause of a hard_ware bug.
;; note: it is important that the 4 working registers
;; have the fixed adresses in the register ram, otherwise
;; will the wreg and wpre register selection
;; logic not function.
*name: w3,30,0 ; the 3 reg.
*name: x3,30,0 ; schould be removed.
*name: w2,30,1 ; then w2 reg.
*name: x2,30,1 ; the w2 used as index reg.
*name: w1,30,2 ; the w2 reg.
*name: x1,30,2 ; the w2 used as index register
*name: w0,30,3 ; the w3 reg.
*name: status,30,4 ; the status register.
*name: ex,30,4 ; the exeption register.
*name: ic,30,5 ; the instruction counter.
*name: cause,30,6 ; the cause register.
*name: addrs,30,7 ; storage address buffer.
*name: wrk1,30,10 ; working locaition 1 for micro program
*name: r8,30,8
*name: wrk2,30,11 ; working locaition 2 for micro program.
*name: base,30,9 ; the base register
*name: cpa,30,8 ; the common protected area register
*name: inf,30,12 ; information register.
*name: uplim,30,13 ; the upper limit register.
*name: lowlim,30,14 ; the lower limit register.
*name: wrk0,30,15 ; micro program wroking register no 0.
; external registers.
*name: hc2901,30,16 ; dest: write hc2901
; source: read hc2901
;
;
; set conditions select
; type is 40
; format is <name>/40/<value>/<mask_kind>/<mask or std. mask no.>
;
*name: lseq,40,1,2,5 ; less or equal
*name: great,40,0,2,5 ; greather than '>'
*name: less,40,3,2,5 ; less then '<'
*name: greq,40,2,2,5 ; greather than or equal '>='
*name: equal,40,5,2,5 ; equal '='
*name: nequal,40,4,2,5 ; not equal '<>'
; normal cond bits
*name: zero,40,5,2,5 ; zero
*name: nzero,40,4,2,5 ; not zero
*name: over,40,7,2,5 ; overflow
*name: nover,40,6,2,5 ; not overflow
*name: cxorz,40,9,2,5 ; carry xor (+) zero
*name: candz,40,8,2,5 ; carry and (*) zero
*name: carry,40,11,2,5 ; carry
*name: ncarry,40,10,2,5 ; not carry
*name: ncxorz,40,13,2,5 ; not carry xor (+) zero
*name: candnz,40,12,2,5 ; carry and not z
*name: neg,40,15,2,5 ; negative
*name: notneg,40,14,2,5 ; not negative
; for hc2901 ready
*name: re2901,40,15,2,5 ; hc2901 ready
;
;
;
;
; specials
;
;
;
;
;
; set condition kind
*name: csmy,16,1,2,33 ; set condition to my bits
*name: cms,16,2,2,33 ; set condition to m bits
*name: cs2901,16,3,2,33 ; set condition to hc2901
; sign extend bits8 to 6 high
; bit 5 for the slices ther schould
; be extende thrugh = 0
; bit 5 for slices wwhit no extend = 1.
*name: signex,16,29,1,aludes ; bitpatern /11101/ = 29
; generel alu dest control bit 8 to both bits 5
; in alu function.
*name: noload,16,24,1,aludes ; bitpattern = /11000/ = 24
*name: rgtaol,16,3,1,aludes ; bitpattern = /00011/ = 3
; shift rigth alu output logaritm, hold q
; - -- - - -
*name: srgt,16,3,1,aludes ; shift rigth.
*name: lftaol,16,19,1,aludes ; bitpattern = /100ll/ = 19
; shift left alu output logaritm, hold q.
; - -- - - -
*name: slft,16,19,1,aludes ; shift left.
*name: lftqil,16,27,1,aludes ; bitpattern = /11011/ = 27
; sift left q-reg input logarithm, hold ram
; - -- - - -
*name: rgtqil,16,11,1,aludes ; bitpattern = /01011/ = 11
; shift rigth q-reg output logarithm, hold ram
; - -- - - -
*name: rgtaql,16,7,1,aludes ; bitpattern = /00111/ = 7
; shift rigth alu output q_reg input logical.
; - -- - - -
*name: lftaql,16,23,1,aludes ; bitpattern = /10111/ = 23
; shift left alu output q_reg input logical.
; - -- - - -
*name: rgtaoa,16,0,1,aludes ; bitpattern = /00000/ = 0
; shift rigth alu output aritmetric, hold q.
; - -- - - -
*name: lftaoa,16,16,1,aludes ; bitpattern = /10000/ = 16
; shift left alu output aritmetric, hold q.
; - -- - - -
*name: onlyq,16,12,1,aludes ; bitpattern = /01100/ = 12
; only load q reg, hold other internal registers
; hold and write my and m .
*name: holdmy,16,1,2,3 ; hold writing the my regs.
*name: openm,16,7,2,38 ; open for wring in m.
*name: setint,16,0,2,40 ; select the interupt bit.
; set half word moves
*name: hmlr,16,1,2,36 ; move left half word to right
*name: hmrl,16,0,2,36 ; move right half word to left
*name: nothm,16,3,2,36 ; no half word move
; set shift control in 2904
; both the alu and q reg is shifted either
; seperate or in conection
*name: shinz,16,0,2,37 ; shift seperat whit zero input
*name: shin1,16,1,2,37 ; shift seperate whit one input
*name: dshinz,16,6,2,37 ; shift double whit zero input
*name: dshin1,16,3,2,37 ; shift double whit 1 input
*name: dshln,16,15,2,37 ; shift alu output and q whit link
; or resetting bit 27.
; clock the hc2901 register by setting bit 26
*name: clwr01,16,1,2,23 ; set the write hc2901 bit.
*name: clre01,16,1,2,22 ; set the read hc2901 bit.
*name: nclk01,16,0,2,23 ; inhippit the clocking of the
; hc2901, allthough it migth is
; referenced through the
; destination field.
; 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: m2903
*end:
▶EOF◀