m6800.c: Modernized cpu core (nw)

This commit is contained in:
Wilbert Pol 2013-08-07 17:19:22 +00:00
parent 3e3308771f
commit 5115a6e963
23 changed files with 1263 additions and 1548 deletions

View File

@ -13,7 +13,7 @@ HNZVC
*/
#define OP_HANDLER(_name) INLINE void _name (m6800_state *cpustate)
#define OP_HANDLER(_name) void m6800_cpu_device::_name ()
//OP_HANDLER( illegal )
OP_HANDLER( illegal )
@ -63,7 +63,7 @@ OP_HANDLER( tap )
{
CC=A;
ONE_MORE_INSN();
CHECK_IRQ_LINES(cpustate); /* HJB 990417 */
CHECK_IRQ_LINES(); /* HJB 990417 */
}
/* $07 TPA inherent ----- */
@ -115,7 +115,7 @@ OP_HANDLER( cli )
{
CLI;
ONE_MORE_INSN();
CHECK_IRQ_LINES(cpustate); /* HJB 990417 */
CHECK_IRQ_LINES(); /* HJB 990417 */
}
/* $0f SEI */
@ -123,7 +123,7 @@ OP_HANDLER( sei )
{
SEI;
ONE_MORE_INSN();
CHECK_IRQ_LINES(cpustate); /* HJB 990417 */
CHECK_IRQ_LINES(); /* HJB 990417 */
}
/* $10 SBA inherent -**** */
@ -203,7 +203,7 @@ OP_HANDLER( daa )
OP_HANDLER( slp )
{
/* wait for next IRQ (same as waiting of wai) */
cpustate->wai_state |= M6800_SLP;
m_wai_state |= M6800_SLP;
EAT_CYCLES;
}
@ -352,13 +352,13 @@ OP_HANDLER( ins )
/* $32 PULA inherent ----- */
OP_HANDLER( pula )
{
PULLBYTE(cpustate->d.b.h);
PULLBYTE(m_d.b.h);
}
/* $33 PULB inherent ----- */
OP_HANDLER( pulb )
{
PULLBYTE(cpustate->d.b.l);
PULLBYTE(m_d.b.l);
}
/* $34 DES inherent ----- */
@ -376,13 +376,13 @@ OP_HANDLER( txs )
/* $36 PSHA inherent ----- */
OP_HANDLER( psha )
{
PUSHBYTE(cpustate->d.b.h);
PUSHBYTE(m_d.b.h);
}
/* $37 PSHB inherent ----- */
OP_HANDLER( pshb )
{
PUSHBYTE(cpustate->d.b.l);
PUSHBYTE(m_d.b.l);
}
/* $38 PULX inherent ----- */
@ -411,7 +411,7 @@ OP_HANDLER( rti )
PULLBYTE(A);
PULLWORD(pX);
PULLWORD(pPC);
CHECK_IRQ_LINES(cpustate); /* HJB 990417 */
CHECK_IRQ_LINES(); /* HJB 990417 */
}
/* $3c PSHX inherent ----- */
@ -437,14 +437,14 @@ OP_HANDLER( wai )
* WAI stacks the entire machine state on the
* hardware stack, then waits for an interrupt.
*/
cpustate->wai_state |= M6800_WAI;
m_wai_state |= M6800_WAI;
PUSHWORD(pPC);
PUSHWORD(pX);
PUSHBYTE(A);
PUSHBYTE(B);
PUSHBYTE(CC);
CHECK_IRQ_LINES(cpustate);
if (cpustate->wai_state & M6800_WAI) EAT_CYCLES;
CHECK_IRQ_LINES();
if (m_wai_state & M6800_WAI) EAT_CYCLES;
}
/* $3f SWI absolute indirect ----- */
@ -456,7 +456,7 @@ OP_HANDLER( swi )
PUSHBYTE(B);
PUSHBYTE(CC);
SEI;
PCD = RM16(cpustate, 0xfffa);
PCD = RM16(0xfffa);
}
/* $40 NEGA inherent ?**** */
@ -1086,7 +1086,7 @@ OP_HANDLER( bsr )
/* $8e LDS immediate -**0- */
OP_HANDLER( lds_im )
{
IMMWORD(cpustate->s);
IMMWORD(m_s);
CLR_NZV;
SET_NZ16(S);
}
@ -1097,7 +1097,7 @@ OP_HANDLER( sts_im )
CLR_NZV;
SET_NZ16(S);
IMM16;
WM16(cpustate, EAD,&cpustate->s);
WM16(EAD,&m_s);
}
/* $90 SUBA direct ?**** */
@ -1252,7 +1252,7 @@ OP_HANDLER( jsr_di )
/* $9e LDS direct -**0- */
OP_HANDLER( lds_di )
{
DIRWORD(cpustate->s);
DIRWORD(m_s);
CLR_NZV;
SET_NZ16(S);
}
@ -1263,7 +1263,7 @@ OP_HANDLER( sts_di )
CLR_NZV;
SET_NZ16(S);
DIRECT;
WM16(cpustate, EAD,&cpustate->s);
WM16(EAD,&m_s);
}
/* $a0 SUBA indexed ?**** */
@ -1426,7 +1426,7 @@ OP_HANDLER( jsr_ix )
/* $ae LDS indexed -**0- */
OP_HANDLER( lds_ix )
{
IDXWORD(cpustate->s);
IDXWORD(m_s);
CLR_NZV;
SET_NZ16(S);
}
@ -1437,7 +1437,7 @@ OP_HANDLER( sts_ix )
CLR_NZV;
SET_NZ16(S);
INDEXED;
WM16(cpustate, EAD,&cpustate->s);
WM16(EAD,&m_s);
}
/* $b0 SUBA extended ?**** */
@ -1602,7 +1602,7 @@ OP_HANDLER( jsr_ex )
/* $be LDS extended -**0- */
OP_HANDLER( lds_ex )
{
EXTWORD(cpustate->s);
EXTWORD(m_s);
CLR_NZV;
SET_NZ16(S);
}
@ -1613,7 +1613,7 @@ OP_HANDLER( sts_ex )
CLR_NZV;
SET_NZ16(S);
EXTENDED;
WM16(cpustate, EAD,&cpustate->s);
WM16(EAD,&m_s);
}
/* $c0 SUBB immediate ?**** */
@ -1746,7 +1746,7 @@ OP_HANDLER( addb_im )
/* $CC LDD immediate -**0- */
OP_HANDLER( ldd_im )
{
IMMWORD(cpustate->d);
IMMWORD(m_d);
CLR_NZV;
SET_NZ16(D);
}
@ -1758,13 +1758,13 @@ OP_HANDLER( std_im )
IMM16;
CLR_NZV;
SET_NZ16(D);
WM16(cpustate, EAD,&cpustate->d);
WM16(EAD,&m_d);
}
/* $ce LDX immediate -**0- */
OP_HANDLER( ldx_im )
{
IMMWORD(cpustate->x);
IMMWORD(m_x);
CLR_NZV;
SET_NZ16(X);
}
@ -1775,7 +1775,7 @@ OP_HANDLER( stx_im )
CLR_NZV;
SET_NZ16(X);
IMM16;
WM16(cpustate, EAD,&cpustate->x);
WM16(EAD,&m_x);
}
/* $d0 SUBB direct ?**** */
@ -1907,7 +1907,7 @@ OP_HANDLER( addb_di )
/* $dc LDD direct -**0- */
OP_HANDLER( ldd_di )
{
DIRWORD(cpustate->d);
DIRWORD(m_d);
CLR_NZV;
SET_NZ16(D);
}
@ -1918,13 +1918,13 @@ OP_HANDLER( std_di )
DIRECT;
CLR_NZV;
SET_NZ16(D);
WM16(cpustate, EAD,&cpustate->d);
WM16(EAD,&m_d);
}
/* $de LDX direct -**0- */
OP_HANDLER( ldx_di )
{
DIRWORD(cpustate->x);
DIRWORD(m_x);
CLR_NZV;
SET_NZ16(X);
}
@ -1935,7 +1935,7 @@ OP_HANDLER( stx_di )
CLR_NZV;
SET_NZ16(X);
DIRECT;
WM16(cpustate, EAD,&cpustate->x);
WM16(EAD,&m_x);
}
/* $e0 SUBB indexed ?**** */
@ -2067,7 +2067,7 @@ OP_HANDLER( addb_ix )
/* $ec LDD indexed -**0- */
OP_HANDLER( ldd_ix )
{
IDXWORD(cpustate->d);
IDXWORD(m_d);
CLR_NZV;
SET_NZ16(D);
}
@ -2090,13 +2090,13 @@ OP_HANDLER( std_ix )
INDEXED;
CLR_NZV;
SET_NZ16(D);
WM16(cpustate, EAD,&cpustate->d);
WM16(EAD,&m_d);
}
/* $ee LDX indexed -**0- */
OP_HANDLER( ldx_ix )
{
IDXWORD(cpustate->x);
IDXWORD(m_x);
CLR_NZV;
SET_NZ16(X);
}
@ -2107,7 +2107,7 @@ OP_HANDLER( stx_ix )
CLR_NZV;
SET_NZ16(X);
INDEXED;
WM16(cpustate, EAD,&cpustate->x);
WM16(EAD,&m_x);
}
/* $f0 SUBB extended ?**** */
@ -2239,7 +2239,7 @@ OP_HANDLER( addb_ex )
/* $fc LDD extended -**0- */
OP_HANDLER( ldd_ex )
{
EXTWORD(cpustate->d);
EXTWORD(m_d);
CLR_NZV;
SET_NZ16(D);
}
@ -2263,13 +2263,13 @@ OP_HANDLER( std_ex )
EXTENDED;
CLR_NZV;
SET_NZ16(D);
WM16(cpustate, EAD,&cpustate->d);
WM16(EAD,&m_d);
}
/* $fe LDX extended -**0- */
OP_HANDLER( ldx_ex )
{
EXTWORD(cpustate->x);
EXTWORD(m_x);
CLR_NZV;
SET_NZ16(X);
}
@ -2280,5 +2280,5 @@ OP_HANDLER( stx_ex )
CLR_NZV;
SET_NZ16(X);
EXTENDED;
WM16(cpustate, EAD,&cpustate->x);
WM16(EAD,&m_x);
}

View File

@ -1,386 +1,140 @@
INLINE void aba(m6800_state *cpustate);
INLINE void abx(m6800_state *cpustate);
INLINE void adca_di(m6800_state *cpustate);
INLINE void adca_ex(m6800_state *cpustate);
INLINE void adca_im(m6800_state *cpustate);
INLINE void adca_ix(m6800_state *cpustate);
INLINE void adcb_di(m6800_state *cpustate);
INLINE void adcb_ex(m6800_state *cpustate);
INLINE void adcb_im(m6800_state *cpustate);
INLINE void adcb_ix(m6800_state *cpustate);
INLINE void adcx_im(m6800_state *cpustate);
INLINE void adda_di(m6800_state *cpustate);
INLINE void adda_ex(m6800_state *cpustate);
INLINE void adda_im(m6800_state *cpustate);
INLINE void adda_ix(m6800_state *cpustate);
INLINE void addb_di(m6800_state *cpustate);
INLINE void addb_ex(m6800_state *cpustate);
INLINE void addb_im(m6800_state *cpustate);
INLINE void addb_ix(m6800_state *cpustate);
INLINE void addd_di(m6800_state *cpustate);
INLINE void addd_ex(m6800_state *cpustate);
INLINE void addx_ex(m6800_state *cpustate);
INLINE void addd_im(m6800_state *cpustate);
INLINE void addd_ix(m6800_state *cpustate);
INLINE void aim_di(m6800_state *cpustate);
INLINE void aim_ix(m6800_state *cpustate);
INLINE void anda_di(m6800_state *cpustate);
INLINE void anda_ex(m6800_state *cpustate);
INLINE void anda_im(m6800_state *cpustate);
INLINE void anda_ix(m6800_state *cpustate);
INLINE void andb_di(m6800_state *cpustate);
INLINE void andb_ex(m6800_state *cpustate);
INLINE void andb_im(m6800_state *cpustate);
INLINE void andb_ix(m6800_state *cpustate);
INLINE void asl_ex(m6800_state *cpustate);
INLINE void asl_ix(m6800_state *cpustate);
INLINE void asla(m6800_state *cpustate);
INLINE void aslb(m6800_state *cpustate);
INLINE void asld(m6800_state *cpustate);
INLINE void asr_ex(m6800_state *cpustate);
INLINE void asr_ix(m6800_state *cpustate);
INLINE void asra(m6800_state *cpustate);
INLINE void asrb(m6800_state *cpustate);
INLINE void bcc(m6800_state *cpustate);
INLINE void bcs(m6800_state *cpustate);
INLINE void beq(m6800_state *cpustate);
INLINE void bge(m6800_state *cpustate);
INLINE void bgt(m6800_state *cpustate);
INLINE void bhi(m6800_state *cpustate);
INLINE void bita_di(m6800_state *cpustate);
INLINE void bita_ex(m6800_state *cpustate);
INLINE void bita_im(m6800_state *cpustate);
INLINE void bita_ix(m6800_state *cpustate);
INLINE void bitb_di(m6800_state *cpustate);
INLINE void bitb_ex(m6800_state *cpustate);
INLINE void bitb_im(m6800_state *cpustate);
INLINE void bitb_ix(m6800_state *cpustate);
INLINE void ble(m6800_state *cpustate);
INLINE void bls(m6800_state *cpustate);
INLINE void blt(m6800_state *cpustate);
INLINE void bmi(m6800_state *cpustate);
INLINE void bne(m6800_state *cpustate);
INLINE void bpl(m6800_state *cpustate);
INLINE void bra(m6800_state *cpustate);
INLINE void brn(m6800_state *cpustate);
INLINE void bsr(m6800_state *cpustate);
INLINE void bvc(m6800_state *cpustate);
INLINE void bvs(m6800_state *cpustate);
INLINE void cba(m6800_state *cpustate);
INLINE void clc(m6800_state *cpustate);
INLINE void cli(m6800_state *cpustate);
INLINE void clr_ex(m6800_state *cpustate);
INLINE void clr_ix(m6800_state *cpustate);
INLINE void clra(m6800_state *cpustate);
INLINE void clrb(m6800_state *cpustate);
INLINE void clv(m6800_state *cpustate);
INLINE void cmpa_di(m6800_state *cpustate);
INLINE void cmpa_ex(m6800_state *cpustate);
INLINE void cmpa_im(m6800_state *cpustate);
INLINE void cmpa_ix(m6800_state *cpustate);
INLINE void cmpb_di(m6800_state *cpustate);
INLINE void cmpb_ex(m6800_state *cpustate);
INLINE void cmpb_im(m6800_state *cpustate);
INLINE void cmpb_ix(m6800_state *cpustate);
INLINE void cmpx_di(m6800_state *cpustate);
INLINE void cmpx_ex(m6800_state *cpustate);
INLINE void cmpx_im(m6800_state *cpustate);
INLINE void cmpx_ix(m6800_state *cpustate);
INLINE void com_ex(m6800_state *cpustate);
INLINE void com_ix(m6800_state *cpustate);
INLINE void coma(m6800_state *cpustate);
INLINE void comb(m6800_state *cpustate);
INLINE void daa(m6800_state *cpustate);
INLINE void dec_ex(m6800_state *cpustate);
INLINE void dec_ix(m6800_state *cpustate);
INLINE void deca(m6800_state *cpustate);
INLINE void decb(m6800_state *cpustate);
INLINE void des(m6800_state *cpustate);
INLINE void dex(m6800_state *cpustate);
INLINE void eim_di(m6800_state *cpustate);
INLINE void eim_ix(m6800_state *cpustate);
INLINE void eora_di(m6800_state *cpustate);
INLINE void eora_ex(m6800_state *cpustate);
INLINE void eora_im(m6800_state *cpustate);
INLINE void eora_ix(m6800_state *cpustate);
INLINE void eorb_di(m6800_state *cpustate);
INLINE void eorb_ex(m6800_state *cpustate);
INLINE void eorb_im(m6800_state *cpustate);
INLINE void eorb_ix(m6800_state *cpustate);
INLINE void illegal(m6800_state *cpustate);
INLINE void inc_ex(m6800_state *cpustate);
INLINE void inc_ix(m6800_state *cpustate);
INLINE void inca(m6800_state *cpustate);
INLINE void incb(m6800_state *cpustate);
INLINE void ins(m6800_state *cpustate);
INLINE void inx(m6800_state *cpustate);
INLINE void jmp_ex(m6800_state *cpustate);
INLINE void jmp_ix(m6800_state *cpustate);
INLINE void jsr_di(m6800_state *cpustate);
INLINE void jsr_ex(m6800_state *cpustate);
INLINE void jsr_ix(m6800_state *cpustate);
INLINE void lda_di(m6800_state *cpustate);
INLINE void lda_ex(m6800_state *cpustate);
INLINE void lda_im(m6800_state *cpustate);
INLINE void lda_ix(m6800_state *cpustate);
INLINE void ldb_di(m6800_state *cpustate);
INLINE void ldb_ex(m6800_state *cpustate);
INLINE void ldb_im(m6800_state *cpustate);
INLINE void ldb_ix(m6800_state *cpustate);
INLINE void ldd_di(m6800_state *cpustate);
INLINE void ldd_ex(m6800_state *cpustate);
INLINE void ldd_im(m6800_state *cpustate);
INLINE void ldd_ix(m6800_state *cpustate);
INLINE void lds_di(m6800_state *cpustate);
INLINE void lds_ex(m6800_state *cpustate);
INLINE void lds_im(m6800_state *cpustate);
INLINE void lds_ix(m6800_state *cpustate);
INLINE void ldx_di(m6800_state *cpustate);
INLINE void ldx_ex(m6800_state *cpustate);
INLINE void ldx_im(m6800_state *cpustate);
INLINE void ldx_ix(m6800_state *cpustate);
INLINE void lsr_ex(m6800_state *cpustate);
INLINE void lsr_ix(m6800_state *cpustate);
INLINE void lsra(m6800_state *cpustate);
INLINE void lsrb(m6800_state *cpustate);
INLINE void lsrd(m6800_state *cpustate);
INLINE void mul(m6800_state *cpustate);
INLINE void neg_ex(m6800_state *cpustate);
INLINE void neg_ix(m6800_state *cpustate);
INLINE void nega(m6800_state *cpustate);
INLINE void negb(m6800_state *cpustate);
INLINE void nop(m6800_state *cpustate);
INLINE void oim_di(m6800_state *cpustate);
INLINE void oim_ix(m6800_state *cpustate);
INLINE void ora_di(m6800_state *cpustate);
INLINE void ora_ex(m6800_state *cpustate);
INLINE void ora_im(m6800_state *cpustate);
INLINE void ora_ix(m6800_state *cpustate);
INLINE void orb_di(m6800_state *cpustate);
INLINE void orb_ex(m6800_state *cpustate);
INLINE void orb_im(m6800_state *cpustate);
INLINE void orb_ix(m6800_state *cpustate);
INLINE void psha(m6800_state *cpustate);
INLINE void pshb(m6800_state *cpustate);
INLINE void pshx(m6800_state *cpustate);
INLINE void pula(m6800_state *cpustate);
INLINE void pulb(m6800_state *cpustate);
INLINE void pulx(m6800_state *cpustate);
INLINE void rol_ex(m6800_state *cpustate);
INLINE void rol_ix(m6800_state *cpustate);
INLINE void rola(m6800_state *cpustate);
INLINE void rolb(m6800_state *cpustate);
INLINE void ror_ex(m6800_state *cpustate);
INLINE void ror_ix(m6800_state *cpustate);
INLINE void rora(m6800_state *cpustate);
INLINE void rorb(m6800_state *cpustate);
INLINE void rti(m6800_state *cpustate);
INLINE void rts(m6800_state *cpustate);
INLINE void sba(m6800_state *cpustate);
INLINE void sbca_di(m6800_state *cpustate);
INLINE void sbca_ex(m6800_state *cpustate);
INLINE void sbca_im(m6800_state *cpustate);
INLINE void sbca_ix(m6800_state *cpustate);
INLINE void sbcb_di(m6800_state *cpustate);
INLINE void sbcb_ex(m6800_state *cpustate);
INLINE void sbcb_im(m6800_state *cpustate);
INLINE void sbcb_ix(m6800_state *cpustate);
INLINE void sec(m6800_state *cpustate);
INLINE void sei(m6800_state *cpustate);
INLINE void sev(m6800_state *cpustate);
INLINE void slp(m6800_state *cpustate);
INLINE void sta_di(m6800_state *cpustate);
INLINE void sta_ex(m6800_state *cpustate);
INLINE void sta_im(m6800_state *cpustate);
INLINE void sta_ix(m6800_state *cpustate);
INLINE void stb_di(m6800_state *cpustate);
INLINE void stb_ex(m6800_state *cpustate);
INLINE void stb_im(m6800_state *cpustate);
INLINE void stb_ix(m6800_state *cpustate);
INLINE void std_di(m6800_state *cpustate);
INLINE void std_ex(m6800_state *cpustate);
INLINE void std_im(m6800_state *cpustate);
INLINE void std_ix(m6800_state *cpustate);
INLINE void sts_di(m6800_state *cpustate);
INLINE void sts_ex(m6800_state *cpustate);
INLINE void sts_im(m6800_state *cpustate);
INLINE void sts_ix(m6800_state *cpustate);
INLINE void stx_di(m6800_state *cpustate);
INLINE void stx_ex(m6800_state *cpustate);
INLINE void stx_im(m6800_state *cpustate);
INLINE void stx_ix(m6800_state *cpustate);
INLINE void suba_di(m6800_state *cpustate);
INLINE void suba_ex(m6800_state *cpustate);
INLINE void suba_im(m6800_state *cpustate);
INLINE void suba_ix(m6800_state *cpustate);
INLINE void subb_di(m6800_state *cpustate);
INLINE void subb_ex(m6800_state *cpustate);
INLINE void subb_im(m6800_state *cpustate);
INLINE void subb_ix(m6800_state *cpustate);
INLINE void subd_di(m6800_state *cpustate);
INLINE void subd_ex(m6800_state *cpustate);
INLINE void subd_im(m6800_state *cpustate);
INLINE void subd_ix(m6800_state *cpustate);
INLINE void swi(m6800_state *cpustate);
INLINE void tab(m6800_state *cpustate);
INLINE void tap(m6800_state *cpustate);
INLINE void tba(m6800_state *cpustate);
INLINE void tim_di(m6800_state *cpustate);
INLINE void tim_ix(m6800_state *cpustate);
INLINE void tpa(m6800_state *cpustate);
INLINE void tst_ex(m6800_state *cpustate);
INLINE void tst_ix(m6800_state *cpustate);
INLINE void tsta(m6800_state *cpustate);
INLINE void tstb(m6800_state *cpustate);
INLINE void tsx(m6800_state *cpustate);
INLINE void txs(m6800_state *cpustate);
INLINE void undoc1(m6800_state *cpustate);
INLINE void undoc2(m6800_state *cpustate);
INLINE void wai(m6800_state *cpustate);
INLINE void xgdx(m6800_state *cpustate);
INLINE void cpx_di(m6800_state *cpustate);
INLINE void cpx_ex(m6800_state *cpustate);
INLINE void cpx_im(m6800_state *cpustate);
INLINE void cpx_ix(m6800_state *cpustate);
INLINE void trap(m6800_state *cpustate);
static void (*const m6800_insn[0x100])(m6800_state *cpustate) = {
illegal,nop, illegal,illegal,illegal,illegal,tap, tpa,
inx, dex, clv, sev, clc, sec, cli, sei,
sba, cba, illegal,illegal,illegal,illegal,tab, tba,
illegal,daa, illegal,aba, illegal,illegal,illegal,illegal,
bra, brn, bhi, bls, bcc, bcs, bne, beq,
bvc, bvs, bpl, bmi, bge, blt, bgt, ble,
tsx, ins, pula, pulb, des, txs, psha, pshb,
illegal,rts, illegal,rti, illegal,illegal,wai, swi,
nega, illegal,illegal,coma, lsra, illegal,rora, asra,
asla, rola, deca, illegal,inca, tsta, illegal,clra,
negb, illegal,illegal,comb, lsrb, illegal,rorb, asrb,
aslb, rolb, decb, illegal,incb, tstb, illegal,clrb,
neg_ix, illegal,illegal,com_ix, lsr_ix, illegal,ror_ix, asr_ix,
asl_ix, rol_ix, dec_ix, illegal,inc_ix, tst_ix, jmp_ix, clr_ix,
neg_ex, illegal,illegal,com_ex, lsr_ex, illegal,ror_ex, asr_ex,
asl_ex, rol_ex, dec_ex, illegal,inc_ex, tst_ex, jmp_ex, clr_ex,
suba_im,cmpa_im,sbca_im,illegal,anda_im,bita_im,lda_im, sta_im,
eora_im,adca_im,ora_im, adda_im,cmpx_im,bsr, lds_im, sts_im,
suba_di,cmpa_di,sbca_di,illegal,anda_di,bita_di,lda_di, sta_di,
eora_di,adca_di,ora_di, adda_di,cmpx_di,jsr_di, lds_di, sts_di,
suba_ix,cmpa_ix,sbca_ix,illegal,anda_ix,bita_ix,lda_ix, sta_ix,
eora_ix,adca_ix,ora_ix, adda_ix,cmpx_ix,jsr_ix, lds_ix, sts_ix,
suba_ex,cmpa_ex,sbca_ex,illegal,anda_ex,bita_ex,lda_ex, sta_ex,
eora_ex,adca_ex,ora_ex, adda_ex,cmpx_ex,jsr_ex, lds_ex, sts_ex,
subb_im,cmpb_im,sbcb_im,illegal,andb_im,bitb_im,ldb_im, stb_im,
eorb_im,adcb_im,orb_im, addb_im,illegal,illegal,ldx_im, stx_im,
subb_di,cmpb_di,sbcb_di,illegal,andb_di,bitb_di,ldb_di, stb_di,
eorb_di,adcb_di,orb_di, addb_di,illegal,illegal,ldx_di, stx_di,
subb_ix,cmpb_ix,sbcb_ix,illegal,andb_ix,bitb_ix,ldb_ix, stb_ix,
eorb_ix,adcb_ix,orb_ix, addb_ix,illegal,illegal,ldx_ix, stx_ix,
subb_ex,cmpb_ex,sbcb_ex,illegal,andb_ex,bitb_ex,ldb_ex, stb_ex,
eorb_ex,adcb_ex,orb_ex, addb_ex,illegal,illegal,ldx_ex, stx_ex
const m6800_cpu_device::op_func m6800_cpu_device::m6800_insn[0x100] = {
&m6800_cpu_device::illegal,&m6800_cpu_device::nop, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::tap, &m6800_cpu_device::tpa,
&m6800_cpu_device::inx, &m6800_cpu_device::dex, &m6800_cpu_device::clv, &m6800_cpu_device::sev, &m6800_cpu_device::clc, &m6800_cpu_device::sec, &m6800_cpu_device::cli, &m6800_cpu_device::sei,
&m6800_cpu_device::sba, &m6800_cpu_device::cba, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::tab, &m6800_cpu_device::tba,
&m6800_cpu_device::illegal,&m6800_cpu_device::daa, &m6800_cpu_device::illegal,&m6800_cpu_device::aba, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::illegal,
&m6800_cpu_device::bra, &m6800_cpu_device::brn, &m6800_cpu_device::bhi, &m6800_cpu_device::bls, &m6800_cpu_device::bcc, &m6800_cpu_device::bcs, &m6800_cpu_device::bne, &m6800_cpu_device::beq,
&m6800_cpu_device::bvc, &m6800_cpu_device::bvs, &m6800_cpu_device::bpl, &m6800_cpu_device::bmi, &m6800_cpu_device::bge, &m6800_cpu_device::blt, &m6800_cpu_device::bgt, &m6800_cpu_device::ble,
&m6800_cpu_device::tsx, &m6800_cpu_device::ins, &m6800_cpu_device::pula, &m6800_cpu_device::pulb, &m6800_cpu_device::des, &m6800_cpu_device::txs, &m6800_cpu_device::psha, &m6800_cpu_device::pshb,
&m6800_cpu_device::illegal,&m6800_cpu_device::rts, &m6800_cpu_device::illegal,&m6800_cpu_device::rti, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::wai, &m6800_cpu_device::swi,
&m6800_cpu_device::nega, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::coma, &m6800_cpu_device::lsra, &m6800_cpu_device::illegal,&m6800_cpu_device::rora, &m6800_cpu_device::asra,
&m6800_cpu_device::asla, &m6800_cpu_device::rola, &m6800_cpu_device::deca, &m6800_cpu_device::illegal,&m6800_cpu_device::inca, &m6800_cpu_device::tsta, &m6800_cpu_device::illegal,&m6800_cpu_device::clra,
&m6800_cpu_device::negb, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::comb, &m6800_cpu_device::lsrb, &m6800_cpu_device::illegal,&m6800_cpu_device::rorb, &m6800_cpu_device::asrb,
&m6800_cpu_device::aslb, &m6800_cpu_device::rolb, &m6800_cpu_device::decb, &m6800_cpu_device::illegal,&m6800_cpu_device::incb, &m6800_cpu_device::tstb, &m6800_cpu_device::illegal,&m6800_cpu_device::clrb,
&m6800_cpu_device::neg_ix, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::com_ix, &m6800_cpu_device::lsr_ix, &m6800_cpu_device::illegal,&m6800_cpu_device::ror_ix, &m6800_cpu_device::asr_ix,
&m6800_cpu_device::asl_ix, &m6800_cpu_device::rol_ix, &m6800_cpu_device::dec_ix, &m6800_cpu_device::illegal,&m6800_cpu_device::inc_ix, &m6800_cpu_device::tst_ix, &m6800_cpu_device::jmp_ix, &m6800_cpu_device::clr_ix,
&m6800_cpu_device::neg_ex, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::com_ex, &m6800_cpu_device::lsr_ex, &m6800_cpu_device::illegal,&m6800_cpu_device::ror_ex, &m6800_cpu_device::asr_ex,
&m6800_cpu_device::asl_ex, &m6800_cpu_device::rol_ex, &m6800_cpu_device::dec_ex, &m6800_cpu_device::illegal,&m6800_cpu_device::inc_ex, &m6800_cpu_device::tst_ex, &m6800_cpu_device::jmp_ex, &m6800_cpu_device::clr_ex,
&m6800_cpu_device::suba_im,&m6800_cpu_device::cmpa_im,&m6800_cpu_device::sbca_im,&m6800_cpu_device::illegal,&m6800_cpu_device::anda_im,&m6800_cpu_device::bita_im,&m6800_cpu_device::lda_im, &m6800_cpu_device::sta_im,
&m6800_cpu_device::eora_im,&m6800_cpu_device::adca_im,&m6800_cpu_device::ora_im, &m6800_cpu_device::adda_im,&m6800_cpu_device::cmpx_im,&m6800_cpu_device::bsr, &m6800_cpu_device::lds_im, &m6800_cpu_device::sts_im,
&m6800_cpu_device::suba_di,&m6800_cpu_device::cmpa_di,&m6800_cpu_device::sbca_di,&m6800_cpu_device::illegal,&m6800_cpu_device::anda_di,&m6800_cpu_device::bita_di,&m6800_cpu_device::lda_di, &m6800_cpu_device::sta_di,
&m6800_cpu_device::eora_di,&m6800_cpu_device::adca_di,&m6800_cpu_device::ora_di, &m6800_cpu_device::adda_di,&m6800_cpu_device::cmpx_di,&m6800_cpu_device::jsr_di, &m6800_cpu_device::lds_di, &m6800_cpu_device::sts_di,
&m6800_cpu_device::suba_ix,&m6800_cpu_device::cmpa_ix,&m6800_cpu_device::sbca_ix,&m6800_cpu_device::illegal,&m6800_cpu_device::anda_ix,&m6800_cpu_device::bita_ix,&m6800_cpu_device::lda_ix, &m6800_cpu_device::sta_ix,
&m6800_cpu_device::eora_ix,&m6800_cpu_device::adca_ix,&m6800_cpu_device::ora_ix, &m6800_cpu_device::adda_ix,&m6800_cpu_device::cmpx_ix,&m6800_cpu_device::jsr_ix, &m6800_cpu_device::lds_ix, &m6800_cpu_device::sts_ix,
&m6800_cpu_device::suba_ex,&m6800_cpu_device::cmpa_ex,&m6800_cpu_device::sbca_ex,&m6800_cpu_device::illegal,&m6800_cpu_device::anda_ex,&m6800_cpu_device::bita_ex,&m6800_cpu_device::lda_ex, &m6800_cpu_device::sta_ex,
&m6800_cpu_device::eora_ex,&m6800_cpu_device::adca_ex,&m6800_cpu_device::ora_ex, &m6800_cpu_device::adda_ex,&m6800_cpu_device::cmpx_ex,&m6800_cpu_device::jsr_ex, &m6800_cpu_device::lds_ex, &m6800_cpu_device::sts_ex,
&m6800_cpu_device::subb_im,&m6800_cpu_device::cmpb_im,&m6800_cpu_device::sbcb_im,&m6800_cpu_device::illegal,&m6800_cpu_device::andb_im,&m6800_cpu_device::bitb_im,&m6800_cpu_device::ldb_im, &m6800_cpu_device::stb_im,
&m6800_cpu_device::eorb_im,&m6800_cpu_device::adcb_im,&m6800_cpu_device::orb_im, &m6800_cpu_device::addb_im,&m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::ldx_im, &m6800_cpu_device::stx_im,
&m6800_cpu_device::subb_di,&m6800_cpu_device::cmpb_di,&m6800_cpu_device::sbcb_di,&m6800_cpu_device::illegal,&m6800_cpu_device::andb_di,&m6800_cpu_device::bitb_di,&m6800_cpu_device::ldb_di, &m6800_cpu_device::stb_di,
&m6800_cpu_device::eorb_di,&m6800_cpu_device::adcb_di,&m6800_cpu_device::orb_di, &m6800_cpu_device::addb_di,&m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::ldx_di, &m6800_cpu_device::stx_di,
&m6800_cpu_device::subb_ix,&m6800_cpu_device::cmpb_ix,&m6800_cpu_device::sbcb_ix,&m6800_cpu_device::illegal,&m6800_cpu_device::andb_ix,&m6800_cpu_device::bitb_ix,&m6800_cpu_device::ldb_ix, &m6800_cpu_device::stb_ix,
&m6800_cpu_device::eorb_ix,&m6800_cpu_device::adcb_ix,&m6800_cpu_device::orb_ix, &m6800_cpu_device::addb_ix,&m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::ldx_ix, &m6800_cpu_device::stx_ix,
&m6800_cpu_device::subb_ex,&m6800_cpu_device::cmpb_ex,&m6800_cpu_device::sbcb_ex,&m6800_cpu_device::illegal,&m6800_cpu_device::andb_ex,&m6800_cpu_device::bitb_ex,&m6800_cpu_device::ldb_ex, &m6800_cpu_device::stb_ex,
&m6800_cpu_device::eorb_ex,&m6800_cpu_device::adcb_ex,&m6800_cpu_device::orb_ex, &m6800_cpu_device::addb_ex,&m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::ldx_ex, &m6800_cpu_device::stx_ex
};
static void (*const m6803_insn[0x100])(m6800_state *cpustate) = {
illegal,nop, illegal,illegal,lsrd, asld, tap, tpa,
inx, dex, clv, sev, clc, sec, cli, sei,
sba, cba, illegal,illegal,illegal,illegal,tab, tba,
illegal,daa, illegal,aba, illegal,illegal,illegal,illegal,
bra, brn, bhi, bls, bcc, bcs, bne, beq,
bvc, bvs, bpl, bmi, bge, blt, bgt, ble,
tsx, ins, pula, pulb, des, txs, psha, pshb,
pulx, rts, abx, rti, pshx, mul, wai, swi,
nega, illegal,illegal,coma, lsra, illegal,rora, asra,
asla, rola, deca, illegal,inca, tsta, illegal,clra,
negb, illegal,illegal,comb, lsrb, illegal,rorb, asrb,
aslb, rolb, decb, illegal,incb, tstb, illegal,clrb,
neg_ix, illegal,illegal,com_ix, lsr_ix, illegal,ror_ix, asr_ix,
asl_ix, rol_ix, dec_ix, illegal,inc_ix, tst_ix, jmp_ix, clr_ix,
neg_ex, illegal,illegal,com_ex, lsr_ex, illegal,ror_ex, asr_ex,
asl_ex, rol_ex, dec_ex, illegal,inc_ex, tst_ex, jmp_ex, clr_ex,
suba_im,cmpa_im,sbca_im,subd_im,anda_im,bita_im,lda_im, sta_im,
eora_im,adca_im,ora_im, adda_im,cpx_im ,bsr, lds_im, sts_im,
suba_di,cmpa_di,sbca_di,subd_di,anda_di,bita_di,lda_di, sta_di,
eora_di,adca_di,ora_di, adda_di,cpx_di ,jsr_di, lds_di, sts_di,
suba_ix,cmpa_ix,sbca_ix,subd_ix,anda_ix,bita_ix,lda_ix, sta_ix,
eora_ix,adca_ix,ora_ix, adda_ix,cpx_ix ,jsr_ix, lds_ix, sts_ix,
suba_ex,cmpa_ex,sbca_ex,subd_ex,anda_ex,bita_ex,lda_ex, sta_ex,
eora_ex,adca_ex,ora_ex, adda_ex,cpx_ex ,jsr_ex, lds_ex, sts_ex,
subb_im,cmpb_im,sbcb_im,addd_im,andb_im,bitb_im,ldb_im, stb_im,
eorb_im,adcb_im,orb_im, addb_im,ldd_im, std_im, ldx_im, stx_im,
subb_di,cmpb_di,sbcb_di,addd_di,andb_di,bitb_di,ldb_di, stb_di,
eorb_di,adcb_di,orb_di, addb_di,ldd_di, std_di, ldx_di, stx_di,
subb_ix,cmpb_ix,sbcb_ix,addd_ix,andb_ix,bitb_ix,ldb_ix, stb_ix,
eorb_ix,adcb_ix,orb_ix, addb_ix,ldd_ix, std_ix, ldx_ix, stx_ix,
subb_ex,cmpb_ex,sbcb_ex,addd_ex,andb_ex,bitb_ex,ldb_ex, stb_ex,
eorb_ex,adcb_ex,orb_ex, addb_ex,ldd_ex, std_ex, ldx_ex, stx_ex
const m6800_cpu_device::op_func m6800_cpu_device::m6803_insn[0x100] = {
&m6800_cpu_device::illegal,&m6800_cpu_device::nop, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::lsrd, &m6800_cpu_device::asld, &m6800_cpu_device::tap, &m6800_cpu_device::tpa,
&m6800_cpu_device::inx, &m6800_cpu_device::dex, &m6800_cpu_device::clv, &m6800_cpu_device::sev, &m6800_cpu_device::clc, &m6800_cpu_device::sec, &m6800_cpu_device::cli, &m6800_cpu_device::sei,
&m6800_cpu_device::sba, &m6800_cpu_device::cba, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::tab, &m6800_cpu_device::tba,
&m6800_cpu_device::illegal,&m6800_cpu_device::daa, &m6800_cpu_device::illegal,&m6800_cpu_device::aba, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::illegal,
&m6800_cpu_device::bra, &m6800_cpu_device::brn, &m6800_cpu_device::bhi, &m6800_cpu_device::bls, &m6800_cpu_device::bcc, &m6800_cpu_device::bcs, &m6800_cpu_device::bne, &m6800_cpu_device::beq,
&m6800_cpu_device::bvc, &m6800_cpu_device::bvs, &m6800_cpu_device::bpl, &m6800_cpu_device::bmi, &m6800_cpu_device::bge, &m6800_cpu_device::blt, &m6800_cpu_device::bgt, &m6800_cpu_device::ble,
&m6800_cpu_device::tsx, &m6800_cpu_device::ins, &m6800_cpu_device::pula, &m6800_cpu_device::pulb, &m6800_cpu_device::des, &m6800_cpu_device::txs, &m6800_cpu_device::psha, &m6800_cpu_device::pshb,
&m6800_cpu_device::pulx, &m6800_cpu_device::rts, &m6800_cpu_device::abx, &m6800_cpu_device::rti, &m6800_cpu_device::pshx, &m6800_cpu_device::mul, &m6800_cpu_device::wai, &m6800_cpu_device::swi,
&m6800_cpu_device::nega, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::coma, &m6800_cpu_device::lsra, &m6800_cpu_device::illegal,&m6800_cpu_device::rora, &m6800_cpu_device::asra,
&m6800_cpu_device::asla, &m6800_cpu_device::rola, &m6800_cpu_device::deca, &m6800_cpu_device::illegal,&m6800_cpu_device::inca, &m6800_cpu_device::tsta, &m6800_cpu_device::illegal,&m6800_cpu_device::clra,
&m6800_cpu_device::negb, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::comb, &m6800_cpu_device::lsrb, &m6800_cpu_device::illegal,&m6800_cpu_device::rorb, &m6800_cpu_device::asrb,
&m6800_cpu_device::aslb, &m6800_cpu_device::rolb, &m6800_cpu_device::decb, &m6800_cpu_device::illegal,&m6800_cpu_device::incb, &m6800_cpu_device::tstb, &m6800_cpu_device::illegal,&m6800_cpu_device::clrb,
&m6800_cpu_device::neg_ix, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::com_ix, &m6800_cpu_device::lsr_ix, &m6800_cpu_device::illegal,&m6800_cpu_device::ror_ix, &m6800_cpu_device::asr_ix,
&m6800_cpu_device::asl_ix, &m6800_cpu_device::rol_ix, &m6800_cpu_device::dec_ix, &m6800_cpu_device::illegal,&m6800_cpu_device::inc_ix, &m6800_cpu_device::tst_ix, &m6800_cpu_device::jmp_ix, &m6800_cpu_device::clr_ix,
&m6800_cpu_device::neg_ex, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::com_ex, &m6800_cpu_device::lsr_ex, &m6800_cpu_device::illegal,&m6800_cpu_device::ror_ex, &m6800_cpu_device::asr_ex,
&m6800_cpu_device::asl_ex, &m6800_cpu_device::rol_ex, &m6800_cpu_device::dec_ex, &m6800_cpu_device::illegal,&m6800_cpu_device::inc_ex, &m6800_cpu_device::tst_ex, &m6800_cpu_device::jmp_ex, &m6800_cpu_device::clr_ex,
&m6800_cpu_device::suba_im,&m6800_cpu_device::cmpa_im,&m6800_cpu_device::sbca_im,&m6800_cpu_device::subd_im,&m6800_cpu_device::anda_im,&m6800_cpu_device::bita_im,&m6800_cpu_device::lda_im, &m6800_cpu_device::sta_im,
&m6800_cpu_device::eora_im,&m6800_cpu_device::adca_im,&m6800_cpu_device::ora_im, &m6800_cpu_device::adda_im,&m6800_cpu_device::cpx_im ,&m6800_cpu_device::bsr, &m6800_cpu_device::lds_im, &m6800_cpu_device::sts_im,
&m6800_cpu_device::suba_di,&m6800_cpu_device::cmpa_di,&m6800_cpu_device::sbca_di,&m6800_cpu_device::subd_di,&m6800_cpu_device::anda_di,&m6800_cpu_device::bita_di,&m6800_cpu_device::lda_di, &m6800_cpu_device::sta_di,
&m6800_cpu_device::eora_di,&m6800_cpu_device::adca_di,&m6800_cpu_device::ora_di, &m6800_cpu_device::adda_di,&m6800_cpu_device::cpx_di ,&m6800_cpu_device::jsr_di, &m6800_cpu_device::lds_di, &m6800_cpu_device::sts_di,
&m6800_cpu_device::suba_ix,&m6800_cpu_device::cmpa_ix,&m6800_cpu_device::sbca_ix,&m6800_cpu_device::subd_ix,&m6800_cpu_device::anda_ix,&m6800_cpu_device::bita_ix,&m6800_cpu_device::lda_ix, &m6800_cpu_device::sta_ix,
&m6800_cpu_device::eora_ix,&m6800_cpu_device::adca_ix,&m6800_cpu_device::ora_ix, &m6800_cpu_device::adda_ix,&m6800_cpu_device::cpx_ix ,&m6800_cpu_device::jsr_ix, &m6800_cpu_device::lds_ix, &m6800_cpu_device::sts_ix,
&m6800_cpu_device::suba_ex,&m6800_cpu_device::cmpa_ex,&m6800_cpu_device::sbca_ex,&m6800_cpu_device::subd_ex,&m6800_cpu_device::anda_ex,&m6800_cpu_device::bita_ex,&m6800_cpu_device::lda_ex, &m6800_cpu_device::sta_ex,
&m6800_cpu_device::eora_ex,&m6800_cpu_device::adca_ex,&m6800_cpu_device::ora_ex, &m6800_cpu_device::adda_ex,&m6800_cpu_device::cpx_ex ,&m6800_cpu_device::jsr_ex, &m6800_cpu_device::lds_ex, &m6800_cpu_device::sts_ex,
&m6800_cpu_device::subb_im,&m6800_cpu_device::cmpb_im,&m6800_cpu_device::sbcb_im,&m6800_cpu_device::addd_im,&m6800_cpu_device::andb_im,&m6800_cpu_device::bitb_im,&m6800_cpu_device::ldb_im, &m6800_cpu_device::stb_im,
&m6800_cpu_device::eorb_im,&m6800_cpu_device::adcb_im,&m6800_cpu_device::orb_im, &m6800_cpu_device::addb_im,&m6800_cpu_device::ldd_im, &m6800_cpu_device::std_im, &m6800_cpu_device::ldx_im, &m6800_cpu_device::stx_im,
&m6800_cpu_device::subb_di,&m6800_cpu_device::cmpb_di,&m6800_cpu_device::sbcb_di,&m6800_cpu_device::addd_di,&m6800_cpu_device::andb_di,&m6800_cpu_device::bitb_di,&m6800_cpu_device::ldb_di, &m6800_cpu_device::stb_di,
&m6800_cpu_device::eorb_di,&m6800_cpu_device::adcb_di,&m6800_cpu_device::orb_di, &m6800_cpu_device::addb_di,&m6800_cpu_device::ldd_di, &m6800_cpu_device::std_di, &m6800_cpu_device::ldx_di, &m6800_cpu_device::stx_di,
&m6800_cpu_device::subb_ix,&m6800_cpu_device::cmpb_ix,&m6800_cpu_device::sbcb_ix,&m6800_cpu_device::addd_ix,&m6800_cpu_device::andb_ix,&m6800_cpu_device::bitb_ix,&m6800_cpu_device::ldb_ix, &m6800_cpu_device::stb_ix,
&m6800_cpu_device::eorb_ix,&m6800_cpu_device::adcb_ix,&m6800_cpu_device::orb_ix, &m6800_cpu_device::addb_ix,&m6800_cpu_device::ldd_ix, &m6800_cpu_device::std_ix, &m6800_cpu_device::ldx_ix, &m6800_cpu_device::stx_ix,
&m6800_cpu_device::subb_ex,&m6800_cpu_device::cmpb_ex,&m6800_cpu_device::sbcb_ex,&m6800_cpu_device::addd_ex,&m6800_cpu_device::andb_ex,&m6800_cpu_device::bitb_ex,&m6800_cpu_device::ldb_ex, &m6800_cpu_device::stb_ex,
&m6800_cpu_device::eorb_ex,&m6800_cpu_device::adcb_ex,&m6800_cpu_device::orb_ex, &m6800_cpu_device::addb_ex,&m6800_cpu_device::ldd_ex, &m6800_cpu_device::std_ex, &m6800_cpu_device::ldx_ex, &m6800_cpu_device::stx_ex
};
static void (*const hd63701_insn[0x100])(m6800_state *cpustate) = {
trap, nop, trap, trap, lsrd, asld, tap, tpa,
inx, dex, clv, sev, clc, sec, cli, sei,
sba, cba, undoc1, undoc2, trap, trap, tab, tba,
xgdx, daa, slp, aba, trap, trap, trap, trap,
bra, brn, bhi, bls, bcc, bcs, bne, beq,
bvc, bvs, bpl, bmi, bge, blt, bgt, ble,
tsx, ins, pula, pulb, des, txs, psha, pshb,
pulx, rts, abx, rti, pshx, mul, wai, swi,
nega, trap, trap, coma, lsra, trap, rora, asra,
asla, rola, deca, trap, inca, tsta, trap, clra,
negb, trap, trap, comb, lsrb, trap, rorb, asrb,
aslb, rolb, decb, trap, incb, tstb, trap, clrb,
neg_ix, aim_ix, oim_ix, com_ix, lsr_ix, eim_ix, ror_ix, asr_ix,
asl_ix, rol_ix, dec_ix, tim_ix, inc_ix, tst_ix, jmp_ix, clr_ix,
neg_ex, aim_di, oim_di, com_ex, lsr_ex, eim_di, ror_ex, asr_ex,
asl_ex, rol_ex, dec_ex, tim_di, inc_ex, tst_ex, jmp_ex, clr_ex,
suba_im,cmpa_im,sbca_im,subd_im,anda_im,bita_im,lda_im, sta_im,
eora_im,adca_im,ora_im, adda_im,cpx_im ,bsr, lds_im, sts_im,
suba_di,cmpa_di,sbca_di,subd_di,anda_di,bita_di,lda_di, sta_di,
eora_di,adca_di,ora_di, adda_di,cpx_di ,jsr_di, lds_di, sts_di,
suba_ix,cmpa_ix,sbca_ix,subd_ix,anda_ix,bita_ix,lda_ix, sta_ix,
eora_ix,adca_ix,ora_ix, adda_ix,cpx_ix ,jsr_ix, lds_ix, sts_ix,
suba_ex,cmpa_ex,sbca_ex,subd_ex,anda_ex,bita_ex,lda_ex, sta_ex,
eora_ex,adca_ex,ora_ex, adda_ex,cpx_ex ,jsr_ex, lds_ex, sts_ex,
subb_im,cmpb_im,sbcb_im,addd_im,andb_im,bitb_im,ldb_im, stb_im,
eorb_im,adcb_im,orb_im, addb_im,ldd_im, std_im, ldx_im, stx_im,
subb_di,cmpb_di,sbcb_di,addd_di,andb_di,bitb_di,ldb_di, stb_di,
eorb_di,adcb_di,orb_di, addb_di,ldd_di, std_di, ldx_di, stx_di,
subb_ix,cmpb_ix,sbcb_ix,addd_ix,andb_ix,bitb_ix,ldb_ix, stb_ix,
eorb_ix,adcb_ix,orb_ix, addb_ix,ldd_ix, std_ix, ldx_ix, stx_ix,
subb_ex,cmpb_ex,sbcb_ex,addd_ex,andb_ex,bitb_ex,ldb_ex, stb_ex,
eorb_ex,adcb_ex,orb_ex, addb_ex,ldd_ex, std_ex, ldx_ex, stx_ex
const m6800_cpu_device::op_func m6800_cpu_device::hd63701_insn[0x100] = {
&m6800_cpu_device::trap, &m6800_cpu_device::nop, &m6800_cpu_device::trap, &m6800_cpu_device::trap, &m6800_cpu_device::lsrd, &m6800_cpu_device::asld, &m6800_cpu_device::tap, &m6800_cpu_device::tpa,
&m6800_cpu_device::inx, &m6800_cpu_device::dex, &m6800_cpu_device::clv, &m6800_cpu_device::sev, &m6800_cpu_device::clc, &m6800_cpu_device::sec, &m6800_cpu_device::cli, &m6800_cpu_device::sei,
&m6800_cpu_device::sba, &m6800_cpu_device::cba, &m6800_cpu_device::undoc1, &m6800_cpu_device::undoc2, &m6800_cpu_device::trap, &m6800_cpu_device::trap, &m6800_cpu_device::tab, &m6800_cpu_device::tba,
&m6800_cpu_device::xgdx, &m6800_cpu_device::daa, &m6800_cpu_device::slp, &m6800_cpu_device::aba, &m6800_cpu_device::trap, &m6800_cpu_device::trap, &m6800_cpu_device::trap, &m6800_cpu_device::trap,
&m6800_cpu_device::bra, &m6800_cpu_device::brn, &m6800_cpu_device::bhi, &m6800_cpu_device::bls, &m6800_cpu_device::bcc, &m6800_cpu_device::bcs, &m6800_cpu_device::bne, &m6800_cpu_device::beq,
&m6800_cpu_device::bvc, &m6800_cpu_device::bvs, &m6800_cpu_device::bpl, &m6800_cpu_device::bmi, &m6800_cpu_device::bge, &m6800_cpu_device::blt, &m6800_cpu_device::bgt, &m6800_cpu_device::ble,
&m6800_cpu_device::tsx, &m6800_cpu_device::ins, &m6800_cpu_device::pula, &m6800_cpu_device::pulb, &m6800_cpu_device::des, &m6800_cpu_device::txs, &m6800_cpu_device::psha, &m6800_cpu_device::pshb,
&m6800_cpu_device::pulx, &m6800_cpu_device::rts, &m6800_cpu_device::abx, &m6800_cpu_device::rti, &m6800_cpu_device::pshx, &m6800_cpu_device::mul, &m6800_cpu_device::wai, &m6800_cpu_device::swi,
&m6800_cpu_device::nega, &m6800_cpu_device::trap, &m6800_cpu_device::trap, &m6800_cpu_device::coma, &m6800_cpu_device::lsra, &m6800_cpu_device::trap, &m6800_cpu_device::rora, &m6800_cpu_device::asra,
&m6800_cpu_device::asla, &m6800_cpu_device::rola, &m6800_cpu_device::deca, &m6800_cpu_device::trap, &m6800_cpu_device::inca, &m6800_cpu_device::tsta, &m6800_cpu_device::trap, &m6800_cpu_device::clra,
&m6800_cpu_device::negb, &m6800_cpu_device::trap, &m6800_cpu_device::trap, &m6800_cpu_device::comb, &m6800_cpu_device::lsrb, &m6800_cpu_device::trap, &m6800_cpu_device::rorb, &m6800_cpu_device::asrb,
&m6800_cpu_device::aslb, &m6800_cpu_device::rolb, &m6800_cpu_device::decb, &m6800_cpu_device::trap, &m6800_cpu_device::incb, &m6800_cpu_device::tstb, &m6800_cpu_device::trap, &m6800_cpu_device::clrb,
&m6800_cpu_device::neg_ix, &m6800_cpu_device::aim_ix, &m6800_cpu_device::oim_ix, &m6800_cpu_device::com_ix, &m6800_cpu_device::lsr_ix, &m6800_cpu_device::eim_ix, &m6800_cpu_device::ror_ix, &m6800_cpu_device::asr_ix,
&m6800_cpu_device::asl_ix, &m6800_cpu_device::rol_ix, &m6800_cpu_device::dec_ix, &m6800_cpu_device::tim_ix, &m6800_cpu_device::inc_ix, &m6800_cpu_device::tst_ix, &m6800_cpu_device::jmp_ix, &m6800_cpu_device::clr_ix,
&m6800_cpu_device::neg_ex, &m6800_cpu_device::aim_di, &m6800_cpu_device::oim_di, &m6800_cpu_device::com_ex, &m6800_cpu_device::lsr_ex, &m6800_cpu_device::eim_di, &m6800_cpu_device::ror_ex, &m6800_cpu_device::asr_ex,
&m6800_cpu_device::asl_ex, &m6800_cpu_device::rol_ex, &m6800_cpu_device::dec_ex, &m6800_cpu_device::tim_di, &m6800_cpu_device::inc_ex, &m6800_cpu_device::tst_ex, &m6800_cpu_device::jmp_ex, &m6800_cpu_device::clr_ex,
&m6800_cpu_device::suba_im,&m6800_cpu_device::cmpa_im,&m6800_cpu_device::sbca_im,&m6800_cpu_device::subd_im,&m6800_cpu_device::anda_im,&m6800_cpu_device::bita_im,&m6800_cpu_device::lda_im, &m6800_cpu_device::sta_im,
&m6800_cpu_device::eora_im,&m6800_cpu_device::adca_im,&m6800_cpu_device::ora_im, &m6800_cpu_device::adda_im,&m6800_cpu_device::cpx_im ,&m6800_cpu_device::bsr, &m6800_cpu_device::lds_im, &m6800_cpu_device::sts_im,
&m6800_cpu_device::suba_di,&m6800_cpu_device::cmpa_di,&m6800_cpu_device::sbca_di,&m6800_cpu_device::subd_di,&m6800_cpu_device::anda_di,&m6800_cpu_device::bita_di,&m6800_cpu_device::lda_di, &m6800_cpu_device::sta_di,
&m6800_cpu_device::eora_di,&m6800_cpu_device::adca_di,&m6800_cpu_device::ora_di, &m6800_cpu_device::adda_di,&m6800_cpu_device::cpx_di ,&m6800_cpu_device::jsr_di, &m6800_cpu_device::lds_di, &m6800_cpu_device::sts_di,
&m6800_cpu_device::suba_ix,&m6800_cpu_device::cmpa_ix,&m6800_cpu_device::sbca_ix,&m6800_cpu_device::subd_ix,&m6800_cpu_device::anda_ix,&m6800_cpu_device::bita_ix,&m6800_cpu_device::lda_ix, &m6800_cpu_device::sta_ix,
&m6800_cpu_device::eora_ix,&m6800_cpu_device::adca_ix,&m6800_cpu_device::ora_ix, &m6800_cpu_device::adda_ix,&m6800_cpu_device::cpx_ix ,&m6800_cpu_device::jsr_ix, &m6800_cpu_device::lds_ix, &m6800_cpu_device::sts_ix,
&m6800_cpu_device::suba_ex,&m6800_cpu_device::cmpa_ex,&m6800_cpu_device::sbca_ex,&m6800_cpu_device::subd_ex,&m6800_cpu_device::anda_ex,&m6800_cpu_device::bita_ex,&m6800_cpu_device::lda_ex, &m6800_cpu_device::sta_ex,
&m6800_cpu_device::eora_ex,&m6800_cpu_device::adca_ex,&m6800_cpu_device::ora_ex, &m6800_cpu_device::adda_ex,&m6800_cpu_device::cpx_ex ,&m6800_cpu_device::jsr_ex, &m6800_cpu_device::lds_ex, &m6800_cpu_device::sts_ex,
&m6800_cpu_device::subb_im,&m6800_cpu_device::cmpb_im,&m6800_cpu_device::sbcb_im,&m6800_cpu_device::addd_im,&m6800_cpu_device::andb_im,&m6800_cpu_device::bitb_im,&m6800_cpu_device::ldb_im, &m6800_cpu_device::stb_im,
&m6800_cpu_device::eorb_im,&m6800_cpu_device::adcb_im,&m6800_cpu_device::orb_im, &m6800_cpu_device::addb_im,&m6800_cpu_device::ldd_im, &m6800_cpu_device::std_im, &m6800_cpu_device::ldx_im, &m6800_cpu_device::stx_im,
&m6800_cpu_device::subb_di,&m6800_cpu_device::cmpb_di,&m6800_cpu_device::sbcb_di,&m6800_cpu_device::addd_di,&m6800_cpu_device::andb_di,&m6800_cpu_device::bitb_di,&m6800_cpu_device::ldb_di, &m6800_cpu_device::stb_di,
&m6800_cpu_device::eorb_di,&m6800_cpu_device::adcb_di,&m6800_cpu_device::orb_di, &m6800_cpu_device::addb_di,&m6800_cpu_device::ldd_di, &m6800_cpu_device::std_di, &m6800_cpu_device::ldx_di, &m6800_cpu_device::stx_di,
&m6800_cpu_device::subb_ix,&m6800_cpu_device::cmpb_ix,&m6800_cpu_device::sbcb_ix,&m6800_cpu_device::addd_ix,&m6800_cpu_device::andb_ix,&m6800_cpu_device::bitb_ix,&m6800_cpu_device::ldb_ix, &m6800_cpu_device::stb_ix,
&m6800_cpu_device::eorb_ix,&m6800_cpu_device::adcb_ix,&m6800_cpu_device::orb_ix, &m6800_cpu_device::addb_ix,&m6800_cpu_device::ldd_ix, &m6800_cpu_device::std_ix, &m6800_cpu_device::ldx_ix, &m6800_cpu_device::stx_ix,
&m6800_cpu_device::subb_ex,&m6800_cpu_device::cmpb_ex,&m6800_cpu_device::sbcb_ex,&m6800_cpu_device::addd_ex,&m6800_cpu_device::andb_ex,&m6800_cpu_device::bitb_ex,&m6800_cpu_device::ldb_ex, &m6800_cpu_device::stb_ex,
&m6800_cpu_device::eorb_ex,&m6800_cpu_device::adcb_ex,&m6800_cpu_device::orb_ex, &m6800_cpu_device::addb_ex,&m6800_cpu_device::ldd_ex, &m6800_cpu_device::std_ex, &m6800_cpu_device::ldx_ex, &m6800_cpu_device::stx_ex
};
static void (*const nsc8105_insn[0x100])(m6800_state *cpustate) = {
illegal,illegal,nop, illegal,illegal,tap, illegal,tpa,
inx, clv, dex, sev, clc, cli, sec, sei,
sba, illegal,cba, illegal,illegal,tab, illegal,tba,
illegal,illegal,daa, aba, illegal,illegal,illegal,illegal,
bra, bhi, brn, bls, bcc, bne, bcs, beq,
bvc, bpl, bvs, bmi, bge, bgt, blt, ble,
tsx, pula, ins, pulb, des, psha, txs, pshb,
illegal,illegal,rts, rti, illegal,wai, illegal,swi,
suba_im,sbca_im,cmpa_im,illegal,anda_im,lda_im, bita_im,sta_im,
eora_im,ora_im, adca_im,adda_im,cmpx_im,lds_im, bsr, sts_im,
suba_di,sbca_di,cmpa_di,illegal,anda_di,lda_di, bita_di,sta_di,
eora_di,ora_di, adca_di,adda_di,cmpx_di,lds_di, jsr_di, sts_di,
suba_ix,sbca_ix,cmpa_ix,illegal,anda_ix,lda_ix, bita_ix,sta_ix,
eora_ix,ora_ix, adca_ix,adda_ix,cmpx_ix,lds_ix, jsr_ix, sts_ix,
suba_ex,sbca_ex,cmpa_ex,illegal,anda_ex,lda_ex, bita_ex,sta_ex,
eora_ex,ora_ex, adca_ex,adda_ex,cmpx_ex,lds_ex, jsr_ex, sts_ex,
nega, illegal,illegal,coma, lsra, rora, illegal,asra,
asla, deca, rola, illegal,inca, illegal,tsta, clra,
negb, illegal,illegal,comb, lsrb, rorb, illegal,asrb,
aslb, decb, rolb, illegal,incb, illegal,tstb, clrb,
neg_ix, illegal,illegal,com_ix, lsr_ix, ror_ix, illegal,asr_ix,
asl_ix, dec_ix, rol_ix, illegal,inc_ix, jmp_ix, tst_ix, clr_ix,
neg_ex, illegal,illegal,com_ex, lsr_ex, ror_ex, illegal,asr_ex,
asl_ex, dec_ex, rol_ex, illegal,inc_ex, jmp_ex, tst_ex, clr_ex,
subb_im,sbcb_im,cmpb_im,illegal,andb_im,ldb_im, bitb_im,stb_im,
eorb_im,orb_im, adcb_im,addb_im,illegal,ldx_im, illegal,stx_im,
subb_di,sbcb_di,cmpb_di,illegal,andb_di,ldb_di, bitb_di,stb_di,
eorb_di,orb_di, adcb_di,addb_di,illegal,ldx_di, illegal,stx_di,
subb_ix,sbcb_ix,cmpb_ix,illegal,andb_ix,ldb_ix, bitb_ix,stb_ix,
eorb_ix,orb_ix, adcb_ix,addb_ix,adcx_im,ldx_ix, illegal,stx_ix,
subb_ex,sbcb_ex,cmpb_ex,illegal,andb_ex,ldb_ex, bitb_ex,stb_ex,
eorb_ex,orb_ex, adcb_ex,addb_ex,addx_ex,ldx_ex, illegal,stx_ex
const m6800_cpu_device::op_func m6800_cpu_device::nsc8105_insn[0x100] = {
&m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::nop, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::tap, &m6800_cpu_device::illegal,&m6800_cpu_device::tpa,
&m6800_cpu_device::inx, &m6800_cpu_device::clv, &m6800_cpu_device::dex, &m6800_cpu_device::sev, &m6800_cpu_device::clc, &m6800_cpu_device::cli, &m6800_cpu_device::sec, &m6800_cpu_device::sei,
&m6800_cpu_device::sba, &m6800_cpu_device::illegal,&m6800_cpu_device::cba, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::tab, &m6800_cpu_device::illegal,&m6800_cpu_device::tba,
&m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::daa, &m6800_cpu_device::aba, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::illegal,
&m6800_cpu_device::bra, &m6800_cpu_device::bhi, &m6800_cpu_device::brn, &m6800_cpu_device::bls, &m6800_cpu_device::bcc, &m6800_cpu_device::bne, &m6800_cpu_device::bcs, &m6800_cpu_device::beq,
&m6800_cpu_device::bvc, &m6800_cpu_device::bpl, &m6800_cpu_device::bvs, &m6800_cpu_device::bmi, &m6800_cpu_device::bge, &m6800_cpu_device::bgt, &m6800_cpu_device::blt, &m6800_cpu_device::ble,
&m6800_cpu_device::tsx, &m6800_cpu_device::pula, &m6800_cpu_device::ins, &m6800_cpu_device::pulb, &m6800_cpu_device::des, &m6800_cpu_device::psha, &m6800_cpu_device::txs, &m6800_cpu_device::pshb,
&m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::rts, &m6800_cpu_device::rti, &m6800_cpu_device::illegal,&m6800_cpu_device::wai, &m6800_cpu_device::illegal,&m6800_cpu_device::swi,
&m6800_cpu_device::suba_im,&m6800_cpu_device::sbca_im,&m6800_cpu_device::cmpa_im,&m6800_cpu_device::illegal,&m6800_cpu_device::anda_im,&m6800_cpu_device::lda_im, &m6800_cpu_device::bita_im,&m6800_cpu_device::sta_im,
&m6800_cpu_device::eora_im,&m6800_cpu_device::ora_im, &m6800_cpu_device::adca_im,&m6800_cpu_device::adda_im,&m6800_cpu_device::cmpx_im,&m6800_cpu_device::lds_im, &m6800_cpu_device::bsr, &m6800_cpu_device::sts_im,
&m6800_cpu_device::suba_di,&m6800_cpu_device::sbca_di,&m6800_cpu_device::cmpa_di,&m6800_cpu_device::illegal,&m6800_cpu_device::anda_di,&m6800_cpu_device::lda_di, &m6800_cpu_device::bita_di,&m6800_cpu_device::sta_di,
&m6800_cpu_device::eora_di,&m6800_cpu_device::ora_di, &m6800_cpu_device::adca_di,&m6800_cpu_device::adda_di,&m6800_cpu_device::cmpx_di,&m6800_cpu_device::lds_di, &m6800_cpu_device::jsr_di, &m6800_cpu_device::sts_di,
&m6800_cpu_device::suba_ix,&m6800_cpu_device::sbca_ix,&m6800_cpu_device::cmpa_ix,&m6800_cpu_device::illegal,&m6800_cpu_device::anda_ix,&m6800_cpu_device::lda_ix, &m6800_cpu_device::bita_ix,&m6800_cpu_device::sta_ix,
&m6800_cpu_device::eora_ix,&m6800_cpu_device::ora_ix, &m6800_cpu_device::adca_ix,&m6800_cpu_device::adda_ix,&m6800_cpu_device::cmpx_ix,&m6800_cpu_device::lds_ix, &m6800_cpu_device::jsr_ix, &m6800_cpu_device::sts_ix,
&m6800_cpu_device::suba_ex,&m6800_cpu_device::sbca_ex,&m6800_cpu_device::cmpa_ex,&m6800_cpu_device::illegal,&m6800_cpu_device::anda_ex,&m6800_cpu_device::lda_ex, &m6800_cpu_device::bita_ex,&m6800_cpu_device::sta_ex,
&m6800_cpu_device::eora_ex,&m6800_cpu_device::ora_ex, &m6800_cpu_device::adca_ex,&m6800_cpu_device::adda_ex,&m6800_cpu_device::cmpx_ex,&m6800_cpu_device::lds_ex, &m6800_cpu_device::jsr_ex, &m6800_cpu_device::sts_ex,
&m6800_cpu_device::nega, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::coma, &m6800_cpu_device::lsra, &m6800_cpu_device::rora, &m6800_cpu_device::illegal,&m6800_cpu_device::asra,
&m6800_cpu_device::asla, &m6800_cpu_device::deca, &m6800_cpu_device::rola, &m6800_cpu_device::illegal,&m6800_cpu_device::inca, &m6800_cpu_device::illegal,&m6800_cpu_device::tsta, &m6800_cpu_device::clra,
&m6800_cpu_device::negb, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::comb, &m6800_cpu_device::lsrb, &m6800_cpu_device::rorb, &m6800_cpu_device::illegal,&m6800_cpu_device::asrb,
&m6800_cpu_device::aslb, &m6800_cpu_device::decb, &m6800_cpu_device::rolb, &m6800_cpu_device::illegal,&m6800_cpu_device::incb, &m6800_cpu_device::illegal,&m6800_cpu_device::tstb, &m6800_cpu_device::clrb,
&m6800_cpu_device::neg_ix, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::com_ix, &m6800_cpu_device::lsr_ix, &m6800_cpu_device::ror_ix, &m6800_cpu_device::illegal,&m6800_cpu_device::asr_ix,
&m6800_cpu_device::asl_ix, &m6800_cpu_device::dec_ix, &m6800_cpu_device::rol_ix, &m6800_cpu_device::illegal,&m6800_cpu_device::inc_ix, &m6800_cpu_device::jmp_ix, &m6800_cpu_device::tst_ix, &m6800_cpu_device::clr_ix,
&m6800_cpu_device::neg_ex, &m6800_cpu_device::illegal,&m6800_cpu_device::illegal,&m6800_cpu_device::com_ex, &m6800_cpu_device::lsr_ex, &m6800_cpu_device::ror_ex, &m6800_cpu_device::illegal,&m6800_cpu_device::asr_ex,
&m6800_cpu_device::asl_ex, &m6800_cpu_device::dec_ex, &m6800_cpu_device::rol_ex, &m6800_cpu_device::illegal,&m6800_cpu_device::inc_ex, &m6800_cpu_device::jmp_ex, &m6800_cpu_device::tst_ex, &m6800_cpu_device::clr_ex,
&m6800_cpu_device::subb_im,&m6800_cpu_device::sbcb_im,&m6800_cpu_device::cmpb_im,&m6800_cpu_device::illegal,&m6800_cpu_device::andb_im,&m6800_cpu_device::ldb_im, &m6800_cpu_device::bitb_im,&m6800_cpu_device::stb_im,
&m6800_cpu_device::eorb_im,&m6800_cpu_device::orb_im, &m6800_cpu_device::adcb_im,&m6800_cpu_device::addb_im,&m6800_cpu_device::illegal,&m6800_cpu_device::ldx_im, &m6800_cpu_device::illegal,&m6800_cpu_device::stx_im,
&m6800_cpu_device::subb_di,&m6800_cpu_device::sbcb_di,&m6800_cpu_device::cmpb_di,&m6800_cpu_device::illegal,&m6800_cpu_device::andb_di,&m6800_cpu_device::ldb_di, &m6800_cpu_device::bitb_di,&m6800_cpu_device::stb_di,
&m6800_cpu_device::eorb_di,&m6800_cpu_device::orb_di, &m6800_cpu_device::adcb_di,&m6800_cpu_device::addb_di,&m6800_cpu_device::illegal,&m6800_cpu_device::ldx_di, &m6800_cpu_device::illegal,&m6800_cpu_device::stx_di,
&m6800_cpu_device::subb_ix,&m6800_cpu_device::sbcb_ix,&m6800_cpu_device::cmpb_ix,&m6800_cpu_device::illegal,&m6800_cpu_device::andb_ix,&m6800_cpu_device::ldb_ix, &m6800_cpu_device::bitb_ix,&m6800_cpu_device::stb_ix,
&m6800_cpu_device::eorb_ix,&m6800_cpu_device::orb_ix, &m6800_cpu_device::adcb_ix,&m6800_cpu_device::addb_ix,&m6800_cpu_device::adcx_im,&m6800_cpu_device::ldx_ix, &m6800_cpu_device::illegal,&m6800_cpu_device::stx_ix,
&m6800_cpu_device::subb_ex,&m6800_cpu_device::sbcb_ex,&m6800_cpu_device::cmpb_ex,&m6800_cpu_device::illegal,&m6800_cpu_device::andb_ex,&m6800_cpu_device::ldb_ex, &m6800_cpu_device::bitb_ex,&m6800_cpu_device::stb_ex,
&m6800_cpu_device::eorb_ex,&m6800_cpu_device::orb_ex, &m6800_cpu_device::adcb_ex,&m6800_cpu_device::addb_ex,&m6800_cpu_device::addx_ex,&m6800_cpu_device::ldx_ex, &m6800_cpu_device::illegal,&m6800_cpu_device::stx_ex
};

File diff suppressed because it is too large Load Diff

View File

@ -6,13 +6,6 @@
#define __M6800_H__
struct m6801_interface
{
devcb_write_line out_sc2_func;
};
#define M6801_INTERFACE(name) const m6801_interface (name) =
enum
{
M6800_PC=1, M6800_S, M6800_A, M6800_B, M6800_X, M6800_CC,
@ -50,29 +43,491 @@ enum
M6801_PORT4
};
DECLARE_LEGACY_CPU_DEVICE(M6800, m6800);
DECLARE_LEGACY_CPU_DEVICE(M6801, m6801);
DECLARE_LEGACY_CPU_DEVICE(M6802, m6802);
DECLARE_LEGACY_CPU_DEVICE(M6803, m6803);
DECLARE_LEGACY_CPU_DEVICE(M6808, m6808);
DECLARE_LEGACY_CPU_DEVICE(HD6301, hd6301);
DECLARE_LEGACY_CPU_DEVICE(HD63701, hd63701);
DECLARE_LEGACY_CPU_DEVICE(NSC8105, nsc8105);
DECLARE_LEGACY_CPU_DEVICE(HD6303R, hd6303r);
DECLARE_LEGACY_CPU_DEVICE(HD6303Y, hd6303y);
#define MCFG_M6801_SC2(_devcb) \
m6800_cpu_device::set_out_sc2_func(*device, DEVCB2_##_devcb);
DECLARE_READ8_HANDLER( m6801_io_r );
DECLARE_WRITE8_HANDLER( m6801_io_w );
class m6800_cpu_device : public cpu_device
{
public:
typedef void (m6800_cpu_device::*op_func)();
CPU_DISASSEMBLE( m6800 );
CPU_DISASSEMBLE( m6801 );
CPU_DISASSEMBLE( m6802 );
CPU_DISASSEMBLE( m6803 );
CPU_DISASSEMBLE( m6808 );
CPU_DISASSEMBLE( hd6301 );
CPU_DISASSEMBLE( hd63701 );
CPU_DISASSEMBLE( nsc8105 );
// construction/destruction
m6800_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
m6800_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source, bool has_io, int clock_divider, const m6800_cpu_device::op_func *insn, const UINT8 *cycles, address_map_constructor internal = NULL);
// static configuration helpers
template<class _Object> static devcb2_base &set_out_sc2_func(device_t &device, _Object object) { return downcast<m6800_cpu_device &>(device).m_out_sc2_func.set_callback(object); }
DECLARE_READ8_MEMBER( m6801_io_r );
DECLARE_WRITE8_MEMBER( m6801_io_w );
protected:
// device-level overrides
virtual void device_start();
virtual void device_reset();
// device_execute_interface overrides
virtual UINT32 execute_min_cycles() const { return 1; }
virtual UINT32 execute_max_cycles() const { return 12; }
virtual UINT32 execute_input_lines() const { return 2; }
virtual UINT32 execute_default_irq_vector() const { return 0; }
virtual void execute_run();
virtual void execute_set_input(int inputnum, int state);
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO && m_has_io) ? &m_io_config : NULL ); }
// device_state_interface overrides
void state_string_export(const device_state_entry &entry, astring &string);
// device_disasm_interface overrides
virtual UINT32 disasm_min_opcode_bytes() const { return 1; }
virtual UINT32 disasm_max_opcode_bytes() const { return 4; }
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options);
address_space_config m_program_config;
address_space_config m_io_config;
bool m_has_io;
devcb2_write_line m_out_sc2_func;
PAIR m_ppc; /* Previous program counter */
PAIR m_pc; /* Program counter */
PAIR m_s; /* Stack pointer */
PAIR m_x; /* Index register */
PAIR m_d; /* Accumulators */
UINT8 m_cc; /* Condition codes */
UINT8 m_wai_state; /* WAI opcode state ,(or sleep opcode state) */
UINT8 m_nmi_state; /* NMI line state */
UINT8 m_nmi_pending; /* NMI pending */
UINT8 m_irq_state[3]; /* IRQ line state [IRQ1,TIN,SC1] */
UINT8 m_ic_eddge; /* InputCapture eddge , b.0=fall,b.1=raise */
int m_sc1_state;
/* Memory spaces */
address_space *m_program;
direct_read_data *m_direct;
address_space *m_io;
const op_func *m_insn;
const UINT8 *m_cycles; /* clock cycle of instruction table */
/* internal registers */
UINT8 m_port1_ddr;
UINT8 m_port2_ddr;
UINT8 m_port3_ddr;
UINT8 m_port4_ddr;
UINT8 m_port1_data;
UINT8 m_port2_data;
UINT8 m_port3_data;
UINT8 m_port4_data;
UINT8 m_p3csr; // Port 3 Control/Status Register
UINT8 m_tcsr; /* Timer Control and Status Register */
UINT8 m_pending_tcsr; /* pending IRQ flag for clear IRQflag process */
UINT8 m_irq2; /* IRQ2 flags */
UINT8 m_ram_ctrl;
PAIR m_counter; /* free running counter */
PAIR m_output_compare; /* output compare */
UINT16 m_input_capture; /* input capture */
int m_p3csr_is3_flag_read;
int m_port3_latched;
int m_clock_divider;
UINT8 m_trcsr, m_rmcr, m_rdr, m_tdr, m_rsr, m_tsr;
int m_rxbits, m_txbits, m_txstate, m_trcsr_read_tdre, m_trcsr_read_orfe, m_trcsr_read_rdrf, m_tx;
int m_port2_written;
int m_icount;
int m_latch09;
PAIR m_timer_over;
emu_timer *m_sci_timer;
PAIR m_ea; /* effective address */
static const UINT8 flags8i[256];
static const UINT8 flags8d[256];
static const UINT8 cycles_6800[256];
static const UINT8 cycles_6803[256];
static const UINT8 cycles_63701[256];
static const UINT8 cycles_nsc8105[256];
static const op_func m6800_insn[256];
static const op_func m6803_insn[256];
static const op_func hd63701_insn[256];
static const op_func nsc8105_insn[256];
UINT32 RM16(UINT32 Addr );
void WM16(UINT32 Addr, PAIR *p );
void enter_interrupt(const char *message,UINT16 irq_vector);
void m6800_check_irq2();
void CHECK_IRQ_LINES();
void check_timer_event();
void increment_counter(int amount);
void set_rmcr(UINT8 data);
void write_port2();
int m6800_rx();
void serial_transmit();
void serial_receive();
TIMER_CALLBACK_MEMBER( sci_tick );
void set_os3(int state);
void aba();
void abx();
void adca_di();
void adca_ex();
void adca_im();
void adca_ix();
void adcb_di();
void adcb_ex();
void adcb_im();
void adcb_ix();
void adcx_im();
void adda_di();
void adda_ex();
void adda_im();
void adda_ix();
void addb_di();
void addb_ex();
void addb_im();
void addb_ix();
void addd_di();
void addd_ex();
void addx_ex();
void addd_im();
void addd_ix();
void aim_di();
void aim_ix();
void anda_di();
void anda_ex();
void anda_im();
void anda_ix();
void andb_di();
void andb_ex();
void andb_im();
void andb_ix();
void asl_ex();
void asl_ix();
void asla();
void aslb();
void asld();
void asr_ex();
void asr_ix();
void asra();
void asrb();
void bcc();
void bcs();
void beq();
void bge();
void bgt();
void bhi();
void bita_di();
void bita_ex();
void bita_im();
void bita_ix();
void bitb_di();
void bitb_ex();
void bitb_im();
void bitb_ix();
void ble();
void bls();
void blt();
void bmi();
void bne();
void bpl();
void bra();
void brn();
void bsr();
void bvc();
void bvs();
void cba();
void clc();
void cli();
void clr_ex();
void clr_ix();
void clra();
void clrb();
void clv();
void cmpa_di();
void cmpa_ex();
void cmpa_im();
void cmpa_ix();
void cmpb_di();
void cmpb_ex();
void cmpb_im();
void cmpb_ix();
void cmpx_di();
void cmpx_ex();
void cmpx_im();
void cmpx_ix();
void com_ex();
void com_ix();
void coma();
void comb();
void daa();
void dec_ex();
void dec_ix();
void deca();
void decb();
void des();
void dex();
void eim_di();
void eim_ix();
void eora_di();
void eora_ex();
void eora_im();
void eora_ix();
void eorb_di();
void eorb_ex();
void eorb_im();
void eorb_ix();
void illegal();
void inc_ex();
void inc_ix();
void inca();
void incb();
void ins();
void inx();
void jmp_ex();
void jmp_ix();
void jsr_di();
void jsr_ex();
void jsr_ix();
void lda_di();
void lda_ex();
void lda_im();
void lda_ix();
void ldb_di();
void ldb_ex();
void ldb_im();
void ldb_ix();
void ldd_di();
void ldd_ex();
void ldd_im();
void ldd_ix();
void lds_di();
void lds_ex();
void lds_im();
void lds_ix();
void ldx_di();
void ldx_ex();
void ldx_im();
void ldx_ix();
void lsr_ex();
void lsr_ix();
void lsra();
void lsrb();
void lsrd();
void mul();
void neg_ex();
void neg_ix();
void nega();
void negb();
void nop();
void oim_di();
void oim_ix();
void ora_di();
void ora_ex();
void ora_im();
void ora_ix();
void orb_di();
void orb_ex();
void orb_im();
void orb_ix();
void psha();
void pshb();
void pshx();
void pula();
void pulb();
void pulx();
void rol_ex();
void rol_ix();
void rola();
void rolb();
void ror_ex();
void ror_ix();
void rora();
void rorb();
void rti();
void rts();
void sba();
void sbca_di();
void sbca_ex();
void sbca_im();
void sbca_ix();
void sbcb_di();
void sbcb_ex();
void sbcb_im();
void sbcb_ix();
void sec();
void sei();
void sev();
void slp();
void sta_di();
void sta_ex();
void sta_im();
void sta_ix();
void stb_di();
void stb_ex();
void stb_im();
void stb_ix();
void std_di();
void std_ex();
void std_im();
void std_ix();
void sts_di();
void sts_ex();
void sts_im();
void sts_ix();
void stx_di();
void stx_ex();
void stx_im();
void stx_ix();
void suba_di();
void suba_ex();
void suba_im();
void suba_ix();
void subb_di();
void subb_ex();
void subb_im();
void subb_ix();
void subd_di();
void subd_ex();
void subd_im();
void subd_ix();
void swi();
void tab();
void tap();
void tba();
void tim_di();
void tim_ix();
void tpa();
void tst_ex();
void tst_ix();
void tsta();
void tstb();
void tsx();
void txs();
void undoc1();
void undoc2();
void wai();
void xgdx();
void cpx_di();
void cpx_ex();
void cpx_im();
void cpx_ix();
void trap();
};
class m6801_cpu_device : public m6800_cpu_device
{
public:
m6801_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
m6801_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source, const m6800_cpu_device::op_func *insn, const UINT8 *cycles, address_map_constructor internal = NULL);
protected:
virtual UINT64 execute_clocks_to_cycles(UINT64 clocks) const { return (clocks + 4 - 1) / 4; }
virtual UINT64 execute_cycles_to_clocks(UINT64 cycles) const { return (cycles * 4); }
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options);
};
class m6802_cpu_device : public m6800_cpu_device
{
public:
m6802_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
m6802_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source, const m6800_cpu_device::op_func *insn, const UINT8 *cycles);
protected:
virtual UINT64 execute_clocks_to_cycles(UINT64 clocks) const { return (clocks + 4 - 1) / 4; }
virtual UINT64 execute_cycles_to_clocks(UINT64 cycles) const { return (cycles * 4); }
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options);
};
class m6803_cpu_device : public m6801_cpu_device
{
public:
m6803_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
protected:
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options);
};
class m6808_cpu_device : public m6802_cpu_device
{
public:
m6808_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
protected:
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options);
};
class hd6301_cpu_device : public m6801_cpu_device
{
public:
hd6301_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
hd6301_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
protected:
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options);
};
class hd63701_cpu_device : public m6801_cpu_device
{
public:
hd63701_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
protected:
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options);
};
class nsc8105_cpu_device : public m6802_cpu_device
{
public:
nsc8105_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
protected:
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options);
};
// DP-40 package: HD6303RP, HD63A03RP, HD63B03RP,
// FP-54 package: HD6303RF, HD63A03RF, HD63B03RF,
// CG-40 package: HD6303RCG, HD63A03RCG, HD63B03RCG,
// Not fully emulated yet
class hd6303r_cpu_device : public hd6301_cpu_device
{
public:
hd6303r_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
};
// DP-64S package: HD6303YP, HD63A03YP, HD63B03YP, HD63C03YP
// FP-64 package: HD6303YF, HD63A03YF, HD63B03YF, HD63C03YF
// FP-64A package: HD6303YH, HD63A03YH, HD63B03YH, HD63C03YH
// CP-68 package: HD6303YCP, HD63A03YCP, HD63B03YCP, HD63C03YCP
// Not fully emulated yet
class hd6303y_cpu_device : public hd6301_cpu_device
{
public:
hd6303y_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
};
extern const device_type M6800;
extern const device_type M6801;
extern const device_type M6802;
extern const device_type M6803;
extern const device_type M6808;
extern const device_type HD6301;
extern const device_type HD63701;
extern const device_type NSC8105;
extern const device_type HD6303R;
extern const device_type HD6303Y;
#endif /* __M6800_H__ */

View File

@ -295,7 +295,7 @@ protected:
private:
// devices
required_device<m6802_device> m_cpu;
required_device<m6802_cpu_device> m_cpu;
required_device<pia6821_device> m_pia0;
required_device<pia6821_device> m_pia1;
optional_device<tms5200_device> m_tms5200;

View File

@ -177,7 +177,7 @@ READ8_MEMBER(baraduke_state::soundkludge_r)
}
static ADDRESS_MAP_START( mcu_map, AS_PROGRAM, 8, baraduke_state )
AM_RANGE(0x0000, 0x001f) AM_READWRITE_LEGACY(m6801_io_r,m6801_io_w)/* internal registers */
AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE("mcu", hd63701_cpu_device, m6801_io_r,m6801_io_w)/* internal registers */
AM_RANGE(0x0080, 0x00ff) AM_RAM /* built in RAM */
AM_RANGE(0x1105, 0x1105) AM_READ(soundkludge_r) /* cures speech */
AM_RANGE(0x1000, 0x13ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) /* PSG device, shared RAM */

View File

@ -477,7 +477,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( mcu_map, AS_PROGRAM, 8, namcos1_state )
AM_RANGE(0x0000, 0x001f) AM_READWRITE_LEGACY(m6801_io_r, m6801_io_w)
AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE("mcu", hd63701_cpu_device, m6801_io_r, m6801_io_w)
AM_RANGE(0x0080, 0x00ff) AM_RAM /* built in RAM */
AM_RANGE(0x1000, 0x1003) AM_READ(dsw_r)
AM_RANGE(0x1400, 0x1400) AM_READ_PORT("CONTROL0")

View File

@ -387,7 +387,7 @@ CPU2_MEMORY( wndrmomo, 0x2000, 0x4000, 0x6000, UNUSED, UNUSED, 0xc000, 0xc800 )
#define MCU_MEMORY(NAME,ADDR_LOWROM,ADDR_INPUT,ADDR_UNK1,ADDR_UNK2) \
static ADDRESS_MAP_START( NAME##_mcu_map, AS_PROGRAM, 8, namcos86_state ) \
AM_RANGE(0x0000, 0x001f) AM_READWRITE_LEGACY(m6801_io_r,m6801_io_w) \
AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE("mcu", hd63701_cpu_device, m6801_io_r,m6801_io_w) \
AM_RANGE(0x0080, 0x00ff) AM_RAM \
AM_RANGE(0x1000, 0x13ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) /* PSG device, shared RAM */ \
AM_RANGE(0x1400, 0x1fff) AM_RAM \

View File

@ -251,7 +251,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, pacland_state )
ADDRESS_MAP_END
static ADDRESS_MAP_START( mcu_map, AS_PROGRAM, 8, pacland_state )
AM_RANGE(0x0000, 0x001f) AM_READWRITE_LEGACY(m6801_io_r, m6801_io_w)
AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE("mcu", hd63701_cpu_device, m6801_io_r, m6801_io_w)
AM_RANGE(0x0080, 0x00ff) AM_RAM
AM_RANGE(0x1000, 0x13ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) /* PSG device, shared RAM */
AM_RANGE(0x2000, 0x3fff) AM_WRITE(watchdog_reset_w) /* watchdog? */

View File

@ -115,7 +115,7 @@ static ADDRESS_MAP_START( skykid_map, AS_PROGRAM, 8, skykid_state )
ADDRESS_MAP_END
static ADDRESS_MAP_START( mcu_map, AS_PROGRAM, 8, skykid_state )
AM_RANGE(0x0000, 0x001f) AM_READWRITE_LEGACY(m6801_io_r, m6801_io_w)
AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE("mcu", hd63701_cpu_device, m6801_io_r, m6801_io_w)
AM_RANGE(0x0080, 0x00ff) AM_RAM
AM_RANGE(0x1000, 0x13ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) /* PSG device, shared RAM */
AM_RANGE(0x2000, 0x3fff) AM_WRITE(watchdog_reset_w) /* watchdog? */

View File

@ -206,7 +206,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( mcu_map, AS_PROGRAM, 8, tceptor_state )
AM_RANGE(0x0000, 0x001f) AM_READWRITE_LEGACY(m6801_io_r, m6801_io_w)
AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE("mcu", hd63701_cpu_device, m6801_io_r, m6801_io_w)
AM_RANGE(0x0080, 0x00ff) AM_RAM
AM_RANGE(0x1000, 0x13ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w)
AM_RANGE(0x1400, 0x154d) AM_RAM

View File

@ -931,7 +931,7 @@ ADDRESS_MAP_END
//-------------------------------------------------
static ADDRESS_MAP_START( m6801_mem, AS_PROGRAM, 8, adam_state )
AM_RANGE(0x0000, 0x001f) AM_READWRITE_LEGACY(m6801_io_r, m6801_io_w)
AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE(M6801_TAG, m6801_cpu_device, m6801_io_r, m6801_io_w)
AM_RANGE(0x0080, 0x00ff) AM_RAM
AM_RANGE(0xf800, 0xffff) AM_ROM AM_REGION(M6801_TAG, 0)
ADDRESS_MAP_END
@ -1011,11 +1011,6 @@ WRITE_LINE_MEMBER( adam_state::os3_w )
}
}
static M6801_INTERFACE( m6801_intf )
{
DEVCB_DRIVER_LINE_MEMBER(adam_state, os3_w)
};
//-------------------------------------------------
// ADAM_EXPANSION_SLOT_INTERFACE( slot1_intf )
@ -1116,7 +1111,7 @@ static MACHINE_CONFIG_START( adam, adam_state )
MCFG_CPU_ADD(M6801_TAG, M6801, XTAL_4MHz)
MCFG_CPU_PROGRAM_MAP(m6801_mem)
MCFG_CPU_IO_MAP(m6801_io)
MCFG_CPU_CONFIG(m6801_intf)
MCFG_M6801_SC2(WRITELINE(adam_state, os3_w))
MCFG_QUANTUM_PERFECT_CPU(M6801_TAG)
// video hardware

View File

@ -1183,7 +1183,7 @@ WRITE16_MEMBER( stbook_state::lcd_control_w )
//-------------------------------------------------
static ADDRESS_MAP_START( ikbd_map, AS_PROGRAM, 8, st_state )
AM_RANGE(0x0000, 0x001f) AM_READWRITE_LEGACY(m6801_io_r, m6801_io_w)
AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE(HD6301V1_TAG, hd6301_cpu_device, m6801_io_r, m6801_io_w)
AM_RANGE(0x0080, 0x00ff) AM_RAM
AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION(HD6301V1_TAG, 0)
ADDRESS_MAP_END

View File

@ -537,7 +537,7 @@ WRITE8_MEMBER( hx20_state::slave_p4_w )
//-------------------------------------------------
static ADDRESS_MAP_START( hx20_mem, AS_PROGRAM, 8, hx20_state )
AM_RANGE(0x0000, 0x001f) AM_READWRITE_LEGACY(m6801_io_r, m6801_io_w)
AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE(HD6301V1_MAIN_TAG, hd63701_cpu_device, m6801_io_r, m6801_io_w)
AM_RANGE(0x0020, 0x0020) AM_WRITE(ksc_w)
AM_RANGE(0x0022, 0x0022) AM_READ(krtn07_r)
AM_RANGE(0x0026, 0x0026) AM_WRITE(lcd_cs_w)
@ -568,7 +568,7 @@ ADDRESS_MAP_END
//-------------------------------------------------
static ADDRESS_MAP_START( hx20_sub_mem, AS_PROGRAM, 8, hx20_state )
AM_RANGE(0x0000, 0x001f) AM_READWRITE_LEGACY(m6801_io_r, m6801_io_w)
AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE(HD6301V1_SLAVE_TAG, hd63701_cpu_device, m6801_io_r, m6801_io_w)
AM_RANGE(0x0080, 0x00ff) AM_RAM
AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION(HD6301V1_SLAVE_TAG, 0)
ADDRESS_MAP_END

View File

@ -47,7 +47,7 @@ public:
m_printer(*this, "printer")
{ }
required_device<cpu_device> m_maincpu;
required_device<m6803_cpu_device> m_maincpu;
optional_device<mc6847_base_device> m_mc6847;
optional_device<ef9345_device> m_ef9345;
required_device<dac_device> m_dac;
@ -260,7 +260,7 @@ DRIVER_INIT_MEMBER(mc10_state,mc10)
//for alice32 force port4 DDR to 0xff at startup
if (!strcmp(machine().system().name, "alice32") || !strcmp(machine().system().name, "alice90"))
m6801_io_w(prg, 0x05, 0xff);
m_maincpu->m6801_io_w(prg, 0x05, 0xff);
}

View File

@ -100,7 +100,7 @@ WRITE8_MEMBER( psion_state::hd63701_int_reg_w )
break;
}
m6801_io_w(space, offset, data);
m_maincpu->m6801_io_w(space, offset, data);
}
READ8_MEMBER( psion_state::hd63701_int_reg_r )
@ -111,7 +111,7 @@ READ8_MEMBER( psion_state::hd63701_int_reg_r )
/* datapack i/o data bus */
return (m_pack1->data_r() | m_pack2->data_r()) & (~m_port2_ddr);
case 0x14:
return (m6801_io_r(space, offset)&0x7f) | (m_stby_pwr<<7);
return (m_maincpu->m6801_io_r(space, offset)&0x7f) | (m_stby_pwr<<7);
case 0x15:
/*
x--- ---- ON key active high
@ -124,9 +124,9 @@ READ8_MEMBER( psion_state::hd63701_int_reg_r )
/* datapack control lines */
return (m_pack1->control_r() | (m_pack2->control_r() & 0x8f)) | ((m_pack2->control_r() & 0x10)<<1);
case 0x08:
m6801_io_w(space, offset, m_tcsr_value);
m_maincpu->m6801_io_w(space, offset, m_tcsr_value);
default:
return m6801_io_r(space, offset);
return m_maincpu->m6801_io_r(space, offset);
}
}

View File

@ -30,7 +30,7 @@ public:
m_sys_register(*this, "sys_register"),
m_ram(*this, "ram"){ }
required_device<cpu_device> m_maincpu;
required_device<hd63701_cpu_device> m_maincpu;
required_device<hd44780_device> m_lcdc;
required_device<beep_device> m_beep;
required_device<datapack_device> m_pack1;

View File

@ -51,7 +51,7 @@ const rom_entry *adam_digital_data_pack_device::device_rom_region() const
//-------------------------------------------------
static ADDRESS_MAP_START( adam_ddp_mem, AS_PROGRAM, 8, adam_digital_data_pack_device )
AM_RANGE(0x0000, 0x001f) AM_READWRITE_LEGACY(m6801_io_r, m6801_io_w)
AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE(M6801_TAG, m6801_cpu_device, m6801_io_r, m6801_io_w)
AM_RANGE(0x0080, 0x00ff) AM_RAM
AM_RANGE(0x0400, 0x07ff) AM_RAM
AM_RANGE(0xf800, 0xffff) AM_ROM AM_REGION(M6801_TAG, 0)

View File

@ -68,7 +68,7 @@ const rom_entry *adam_fdc_device::device_rom_region() const
//-------------------------------------------------
static ADDRESS_MAP_START( adam_fdc_mem, AS_PROGRAM, 8, adam_fdc_device )
AM_RANGE(0x0000, 0x001f) AM_READWRITE_LEGACY(m6801_io_r, m6801_io_w)
AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE(M6801_TAG, m6801_cpu_device, m6801_io_r, m6801_io_w)
AM_RANGE(0x0080, 0x00ff) AM_RAM
AM_RANGE(0x0400, 0x07ff) AM_RAM AM_WRITEONLY AM_SHARE("ram")
AM_RANGE(0x0800, 0x0800) AM_MIRROR(0xff) AM_DEVREAD(WD2793_TAG, wd2793_t, status_r)

View File

@ -51,7 +51,7 @@ const rom_entry *adam_keyboard_device::device_rom_region() const
//-------------------------------------------------
static ADDRESS_MAP_START( adam_kb_mem, AS_PROGRAM, 8, adam_keyboard_device )
AM_RANGE(0x0000, 0x001f) AM_READWRITE_LEGACY(m6801_io_r, m6801_io_w)
AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE(M6801_TAG, m6801_cpu_device, m6801_io_r, m6801_io_w)
AM_RANGE(0x0080, 0x00ff) AM_RAM
AM_RANGE(0xf800, 0xffff) AM_ROM AM_REGION(M6801_TAG, 0)
ADDRESS_MAP_END

View File

@ -51,7 +51,7 @@ const rom_entry *adam_printer_device::device_rom_region() const
//-------------------------------------------------
static ADDRESS_MAP_START( adam_prn_mem, AS_PROGRAM, 8, adam_printer_device )
AM_RANGE(0x0000, 0x001f) AM_READWRITE_LEGACY(m6801_io_r, m6801_io_w)
AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE(M6801_TAG, m6801_cpu_device, m6801_io_r, m6801_io_w)
AM_RANGE(0x0080, 0x00ff) AM_RAM
AM_RANGE(0xf800, 0xffff) AM_ROM AM_REGION(M6801_TAG, 0)
ADDRESS_MAP_END

View File

@ -51,7 +51,7 @@ const rom_entry *adam_spi_device::device_rom_region() const
//-------------------------------------------------
static ADDRESS_MAP_START( adam_spi_mem, AS_PROGRAM, 8, adam_spi_device )
AM_RANGE(0x0000, 0x001f) AM_READWRITE_LEGACY(m6801_io_r, m6801_io_w)
AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE(M6801_TAG, m6801_cpu_device, m6801_io_r, m6801_io_w)
AM_RANGE(0x0080, 0x00ff) AM_RAM
AM_RANGE(0xf800, 0xffff) AM_ROM AM_REGION(M6801_TAG, 0)
ADDRESS_MAP_END

View File

@ -26,7 +26,7 @@ const device_type EPSON_PF10 = &device_creator<epson_pf10_device>;
//-------------------------------------------------
static ADDRESS_MAP_START( cpu_mem, AS_PROGRAM, 8, epson_pf10_device )
AM_RANGE(0x0000, 0x001f) AM_READWRITE_LEGACY(m6801_io_r, m6801_io_w)
AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE("maincpu", hd6303y_cpu_device, m6801_io_r, m6801_io_w)
AM_RANGE(0x0040, 0x00ff) AM_RAM /* 192 bytes internal ram */
AM_RANGE(0x0800, 0x0fff) AM_RAM /* external 2k ram */
AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("maincpu", 0)