summaryrefslogtreecommitdiffstatshomepage
path: root/trunk/src/emu/cpu/m6809/6809tbl.c
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/src/emu/cpu/m6809/6809tbl.c')
-rw-r--r--trunk/src/emu/cpu/m6809/6809tbl.c414
1 files changed, 414 insertions, 0 deletions
diff --git a/trunk/src/emu/cpu/m6809/6809tbl.c b/trunk/src/emu/cpu/m6809/6809tbl.c
new file mode 100644
index 00000000000..372642eb04d
--- /dev/null
+++ b/trunk/src/emu/cpu/m6809/6809tbl.c
@@ -0,0 +1,414 @@
+INLINE void abx(m68_state_t *m68_state);
+INLINE void adca_di(m68_state_t *m68_state);
+INLINE void adca_ex(m68_state_t *m68_state);
+INLINE void adca_im(m68_state_t *m68_state);
+INLINE void adca_ix(m68_state_t *m68_state);
+INLINE void adcb_di(m68_state_t *m68_state);
+INLINE void adcb_ex(m68_state_t *m68_state);
+INLINE void adcb_im(m68_state_t *m68_state);
+INLINE void adcb_ix(m68_state_t *m68_state);
+INLINE void adda_di(m68_state_t *m68_state);
+INLINE void adda_ex(m68_state_t *m68_state);
+INLINE void adda_im(m68_state_t *m68_state);
+INLINE void adda_ix(m68_state_t *m68_state);
+INLINE void addb_di(m68_state_t *m68_state);
+INLINE void addb_ex(m68_state_t *m68_state);
+INLINE void addb_im(m68_state_t *m68_state);
+INLINE void addb_ix(m68_state_t *m68_state);
+INLINE void addd_di(m68_state_t *m68_state);
+INLINE void addd_ex(m68_state_t *m68_state);
+INLINE void addd_im(m68_state_t *m68_state);
+INLINE void addd_ix(m68_state_t *m68_state);
+INLINE void anda_di(m68_state_t *m68_state);
+INLINE void anda_ex(m68_state_t *m68_state);
+INLINE void anda_im(m68_state_t *m68_state);
+INLINE void anda_ix(m68_state_t *m68_state);
+INLINE void andb_di(m68_state_t *m68_state);
+INLINE void andb_ex(m68_state_t *m68_state);
+INLINE void andb_im(m68_state_t *m68_state);
+INLINE void andb_ix(m68_state_t *m68_state);
+INLINE void andcc(m68_state_t *m68_state);
+INLINE void asla(m68_state_t *m68_state);
+INLINE void aslb(m68_state_t *m68_state);
+INLINE void asl_di(m68_state_t *m68_state);
+INLINE void asl_ex(m68_state_t *m68_state);
+INLINE void asl_ix(m68_state_t *m68_state);
+INLINE void asra(m68_state_t *m68_state);
+INLINE void asrb(m68_state_t *m68_state);
+INLINE void asr_di(m68_state_t *m68_state);
+INLINE void asr_ex(m68_state_t *m68_state);
+INLINE void asr_ix(m68_state_t *m68_state);
+INLINE void bcc(m68_state_t *m68_state);
+INLINE void bcs(m68_state_t *m68_state);
+INLINE void beq(m68_state_t *m68_state);
+INLINE void bge(m68_state_t *m68_state);
+INLINE void bgt(m68_state_t *m68_state);
+INLINE void bhi(m68_state_t *m68_state);
+INLINE void bita_di(m68_state_t *m68_state);
+INLINE void bita_ex(m68_state_t *m68_state);
+INLINE void bita_im(m68_state_t *m68_state);
+INLINE void bita_ix(m68_state_t *m68_state);
+INLINE void bitb_di(m68_state_t *m68_state);
+INLINE void bitb_ex(m68_state_t *m68_state);
+INLINE void bitb_im(m68_state_t *m68_state);
+INLINE void bitb_ix(m68_state_t *m68_state);
+INLINE void ble(m68_state_t *m68_state);
+INLINE void bls(m68_state_t *m68_state);
+INLINE void blt(m68_state_t *m68_state);
+INLINE void bmi(m68_state_t *m68_state);
+INLINE void bne(m68_state_t *m68_state);
+INLINE void bpl(m68_state_t *m68_state);
+INLINE void bra(m68_state_t *m68_state);
+INLINE void brn(m68_state_t *m68_state);
+INLINE void bsr(m68_state_t *m68_state);
+INLINE void bvc(m68_state_t *m68_state);
+INLINE void bvs(m68_state_t *m68_state);
+INLINE void clra(m68_state_t *m68_state);
+INLINE void clrb(m68_state_t *m68_state);
+INLINE void clr_di(m68_state_t *m68_state);
+INLINE void clr_ex(m68_state_t *m68_state);
+INLINE void clr_ix(m68_state_t *m68_state);
+INLINE void cmpa_di(m68_state_t *m68_state);
+INLINE void cmpa_ex(m68_state_t *m68_state);
+INLINE void cmpa_im(m68_state_t *m68_state);
+INLINE void cmpa_ix(m68_state_t *m68_state);
+INLINE void cmpb_di(m68_state_t *m68_state);
+INLINE void cmpb_ex(m68_state_t *m68_state);
+INLINE void cmpb_im(m68_state_t *m68_state);
+INLINE void cmpb_ix(m68_state_t *m68_state);
+INLINE void cmpd_di(m68_state_t *m68_state);
+INLINE void cmpd_ex(m68_state_t *m68_state);
+INLINE void cmpd_im(m68_state_t *m68_state);
+INLINE void cmpd_ix(m68_state_t *m68_state);
+INLINE void cmps_di(m68_state_t *m68_state);
+INLINE void cmps_ex(m68_state_t *m68_state);
+INLINE void cmps_im(m68_state_t *m68_state);
+INLINE void cmps_ix(m68_state_t *m68_state);
+INLINE void cmpu_di(m68_state_t *m68_state);
+INLINE void cmpu_ex(m68_state_t *m68_state);
+INLINE void cmpu_im(m68_state_t *m68_state);
+INLINE void cmpu_ix(m68_state_t *m68_state);
+INLINE void cmpx_di(m68_state_t *m68_state);
+INLINE void cmpx_ex(m68_state_t *m68_state);
+INLINE void cmpx_im(m68_state_t *m68_state);
+INLINE void cmpx_ix(m68_state_t *m68_state);
+INLINE void cmpy_di(m68_state_t *m68_state);
+INLINE void cmpy_ex(m68_state_t *m68_state);
+INLINE void cmpy_im(m68_state_t *m68_state);
+INLINE void cmpy_ix(m68_state_t *m68_state);
+INLINE void coma(m68_state_t *m68_state);
+INLINE void comb(m68_state_t *m68_state);
+INLINE void com_di(m68_state_t *m68_state);
+INLINE void com_ex(m68_state_t *m68_state);
+INLINE void com_ix(m68_state_t *m68_state);
+INLINE void cwai(m68_state_t *m68_state);
+INLINE void daa(m68_state_t *m68_state);
+INLINE void deca(m68_state_t *m68_state);
+INLINE void decb(m68_state_t *m68_state);
+INLINE void dec_di(m68_state_t *m68_state);
+INLINE void dec_ex(m68_state_t *m68_state);
+INLINE void dec_ix(m68_state_t *m68_state);
+INLINE void eora_di(m68_state_t *m68_state);
+INLINE void eora_ex(m68_state_t *m68_state);
+INLINE void eora_im(m68_state_t *m68_state);
+INLINE void eora_ix(m68_state_t *m68_state);
+INLINE void eorb_di(m68_state_t *m68_state);
+INLINE void eorb_ex(m68_state_t *m68_state);
+INLINE void eorb_im(m68_state_t *m68_state);
+INLINE void eorb_ix(m68_state_t *m68_state);
+INLINE void exg(m68_state_t *m68_state);
+INLINE void illegal(m68_state_t *m68_state);
+INLINE void inca(m68_state_t *m68_state);
+INLINE void incb(m68_state_t *m68_state);
+INLINE void inc_di(m68_state_t *m68_state);
+INLINE void inc_ex(m68_state_t *m68_state);
+INLINE void inc_ix(m68_state_t *m68_state);
+INLINE void jmp_di(m68_state_t *m68_state);
+INLINE void jmp_ex(m68_state_t *m68_state);
+INLINE void jmp_ix(m68_state_t *m68_state);
+INLINE void jsr_di(m68_state_t *m68_state);
+INLINE void jsr_ex(m68_state_t *m68_state);
+INLINE void jsr_ix(m68_state_t *m68_state);
+INLINE void lbcc(m68_state_t *m68_state);
+INLINE void lbcs(m68_state_t *m68_state);
+INLINE void lbeq(m68_state_t *m68_state);
+INLINE void lbge(m68_state_t *m68_state);
+INLINE void lbgt(m68_state_t *m68_state);
+INLINE void lbhi(m68_state_t *m68_state);
+INLINE void lble(m68_state_t *m68_state);
+INLINE void lbls(m68_state_t *m68_state);
+INLINE void lblt(m68_state_t *m68_state);
+INLINE void lbmi(m68_state_t *m68_state);
+INLINE void lbne(m68_state_t *m68_state);
+INLINE void lbpl(m68_state_t *m68_state);
+INLINE void lbra(m68_state_t *m68_state);
+INLINE void lbrn(m68_state_t *m68_state);
+INLINE void lbsr(m68_state_t *m68_state);
+INLINE void lbvc(m68_state_t *m68_state);
+INLINE void lbvs(m68_state_t *m68_state);
+INLINE void lda_di(m68_state_t *m68_state);
+INLINE void lda_ex(m68_state_t *m68_state);
+INLINE void lda_im(m68_state_t *m68_state);
+INLINE void lda_ix(m68_state_t *m68_state);
+INLINE void ldb_di(m68_state_t *m68_state);
+INLINE void ldb_ex(m68_state_t *m68_state);
+INLINE void ldb_im(m68_state_t *m68_state);
+INLINE void ldb_ix(m68_state_t *m68_state);
+INLINE void ldd_di(m68_state_t *m68_state);
+INLINE void ldd_ex(m68_state_t *m68_state);
+INLINE void ldd_im(m68_state_t *m68_state);
+INLINE void ldd_ix(m68_state_t *m68_state);
+INLINE void lds_di(m68_state_t *m68_state);
+INLINE void lds_ex(m68_state_t *m68_state);
+INLINE void lds_im(m68_state_t *m68_state);
+INLINE void lds_ix(m68_state_t *m68_state);
+INLINE void ldu_di(m68_state_t *m68_state);
+INLINE void ldu_ex(m68_state_t *m68_state);
+INLINE void ldu_im(m68_state_t *m68_state);
+INLINE void ldu_ix(m68_state_t *m68_state);
+INLINE void ldx_di(m68_state_t *m68_state);
+INLINE void ldx_ex(m68_state_t *m68_state);
+INLINE void ldx_im(m68_state_t *m68_state);
+INLINE void ldx_ix(m68_state_t *m68_state);
+INLINE void ldy_di(m68_state_t *m68_state);
+INLINE void ldy_ex(m68_state_t *m68_state);
+INLINE void ldy_im(m68_state_t *m68_state);
+INLINE void ldy_ix(m68_state_t *m68_state);
+INLINE void leas(m68_state_t *m68_state);
+INLINE void leau(m68_state_t *m68_state);
+INLINE void leax(m68_state_t *m68_state);
+INLINE void leay(m68_state_t *m68_state);
+INLINE void lsra(m68_state_t *m68_state);
+INLINE void lsrb(m68_state_t *m68_state);
+INLINE void lsr_di(m68_state_t *m68_state);
+INLINE void lsr_ex(m68_state_t *m68_state);
+INLINE void lsr_ix(m68_state_t *m68_state);
+INLINE void mul(m68_state_t *m68_state);
+INLINE void nega(m68_state_t *m68_state);
+INLINE void negb(m68_state_t *m68_state);
+INLINE void neg_di(m68_state_t *m68_state);
+INLINE void neg_ex(m68_state_t *m68_state);
+INLINE void neg_ix(m68_state_t *m68_state);
+INLINE void nop(m68_state_t *m68_state);
+INLINE void ora_di(m68_state_t *m68_state);
+INLINE void ora_ex(m68_state_t *m68_state);
+INLINE void ora_im(m68_state_t *m68_state);
+INLINE void ora_ix(m68_state_t *m68_state);
+INLINE void orb_di(m68_state_t *m68_state);
+INLINE void orb_ex(m68_state_t *m68_state);
+INLINE void orb_im(m68_state_t *m68_state);
+INLINE void orb_ix(m68_state_t *m68_state);
+INLINE void orcc(m68_state_t *m68_state);
+INLINE void pref10(m68_state_t *m68_state);
+INLINE void pref11(m68_state_t *m68_state);
+INLINE void pshs(m68_state_t *m68_state);
+INLINE void pshu(m68_state_t *m68_state);
+INLINE void puls(m68_state_t *m68_state);
+INLINE void pulu(m68_state_t *m68_state);
+INLINE void rola(m68_state_t *m68_state);
+INLINE void rolb(m68_state_t *m68_state);
+INLINE void rol_di(m68_state_t *m68_state);
+INLINE void rol_ex(m68_state_t *m68_state);
+INLINE void rol_ix(m68_state_t *m68_state);
+INLINE void rora(m68_state_t *m68_state);
+INLINE void rorb(m68_state_t *m68_state);
+INLINE void ror_di(m68_state_t *m68_state);
+INLINE void ror_ex(m68_state_t *m68_state);
+INLINE void ror_ix(m68_state_t *m68_state);
+INLINE void rti(m68_state_t *m68_state);
+INLINE void rts(m68_state_t *m68_state);
+INLINE void sbca_di(m68_state_t *m68_state);
+INLINE void sbca_ex(m68_state_t *m68_state);
+INLINE void sbca_im(m68_state_t *m68_state);
+INLINE void sbca_ix(m68_state_t *m68_state);
+INLINE void sbcb_di(m68_state_t *m68_state);
+INLINE void sbcb_ex(m68_state_t *m68_state);
+INLINE void sbcb_im(m68_state_t *m68_state);
+INLINE void sbcb_ix(m68_state_t *m68_state);
+INLINE void sex(m68_state_t *m68_state);
+INLINE void sta_di(m68_state_t *m68_state);
+INLINE void sta_ex(m68_state_t *m68_state);
+INLINE void sta_im(m68_state_t *m68_state);
+INLINE void sta_ix(m68_state_t *m68_state);
+INLINE void stb_di(m68_state_t *m68_state);
+INLINE void stb_ex(m68_state_t *m68_state);
+INLINE void stb_im(m68_state_t *m68_state);
+INLINE void stb_ix(m68_state_t *m68_state);
+INLINE void std_di(m68_state_t *m68_state);
+INLINE void std_ex(m68_state_t *m68_state);
+INLINE void std_im(m68_state_t *m68_state);
+INLINE void std_ix(m68_state_t *m68_state);
+INLINE void sts_di(m68_state_t *m68_state);
+INLINE void sts_ex(m68_state_t *m68_state);
+INLINE void sts_im(m68_state_t *m68_state);
+INLINE void sts_ix(m68_state_t *m68_state);
+INLINE void stu_di(m68_state_t *m68_state);
+INLINE void stu_ex(m68_state_t *m68_state);
+INLINE void stu_im(m68_state_t *m68_state);
+INLINE void stu_ix(m68_state_t *m68_state);
+INLINE void stx_di(m68_state_t *m68_state);
+INLINE void stx_ex(m68_state_t *m68_state);
+INLINE void stx_im(m68_state_t *m68_state);
+INLINE void stx_ix(m68_state_t *m68_state);
+INLINE void sty_di(m68_state_t *m68_state);
+INLINE void sty_ex(m68_state_t *m68_state);
+INLINE void sty_im(m68_state_t *m68_state);
+INLINE void sty_ix(m68_state_t *m68_state);
+INLINE void suba_di(m68_state_t *m68_state);
+INLINE void suba_ex(m68_state_t *m68_state);
+INLINE void suba_im(m68_state_t *m68_state);
+INLINE void suba_ix(m68_state_t *m68_state);
+INLINE void subb_di(m68_state_t *m68_state);
+INLINE void subb_ex(m68_state_t *m68_state);
+INLINE void subb_im(m68_state_t *m68_state);
+INLINE void subb_ix(m68_state_t *m68_state);
+INLINE void subd_di(m68_state_t *m68_state);
+INLINE void subd_ex(m68_state_t *m68_state);
+INLINE void subd_im(m68_state_t *m68_state);
+INLINE void subd_ix(m68_state_t *m68_state);
+INLINE void swi2(m68_state_t *m68_state);
+INLINE void swi3(m68_state_t *m68_state);
+INLINE void swi(m68_state_t *m68_state);
+INLINE void sync(m68_state_t *m68_state);
+INLINE void tfr(m68_state_t *m68_state);
+INLINE void tsta(m68_state_t *m68_state);
+INLINE void tstb(m68_state_t *m68_state);
+INLINE void tst_di(m68_state_t *m68_state);
+INLINE void tst_ex(m68_state_t *m68_state);
+INLINE void tst_ix(m68_state_t *m68_state);
+
+static const UINT8 flags8i[256]= /* increment */
+{
+CC_Z,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+CC_N|CC_V,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,
+CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,
+CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,
+CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,
+CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,
+CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,
+CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,
+CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N
+};
+static const UINT8 flags8d[256]= /* decrement */
+{
+CC_Z,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,CC_V,
+CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,
+CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,
+CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,
+CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,
+CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,
+CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,
+CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,
+CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N
+};
+
+/* FIXME: Cycles differ slighly from hd6309 emulation */
+static const UINT8 index_cycle_em[256] = { /* Index Loopup cycle counts */
+/* 0xX0, 0xX1, 0xX2, 0xX3, 0xX4, 0xX5, 0xX6, 0xX7, 0xX8, 0xX9, 0xXA, 0xXB, 0xXC, 0xXD, 0xXE, 0xXF */
+
+/* 0x0X */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+/* 0x1X */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+/* 0x2X */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+/* 0x3X */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+/* 0x4X */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+/* 0x5X */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+/* 0x6X */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+/* 0x7X */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+/* 0x8X */ 2, 3, 2, 3, 0, 1, 1, 0, 1, 4, 0, 4, 1, 5, 0, 5,
+/* 0x9X */ 5, 6, 5, 6, 3, 4, 4, 0, 4, 7, 0, 7, 4, 8, 0, 8,
+/* 0xAX */ 2, 3, 2, 3, 0, 1, 1, 0, 1, 4, 0, 4, 1, 5, 0, 5,
+/* 0xBX */ 5, 6, 5, 6, 3, 4, 4, 0, 4, 7, 0, 7, 4, 8, 0, 8,
+/* 0xCX */ 2, 3, 2, 3, 0, 1, 1, 0, 1, 4, 0, 4, 1, 5, 0, 3,
+/* 0xDX */ 5, 6, 5, 6, 3, 4, 4, 0, 4, 7, 0, 7, 4, 8, 0, 8,
+/* 0xEX */ 2, 3, 2, 3, 0, 1, 1, 0, 1, 4, 0, 4, 1, 5, 0, 5,
+/* 0xFX */ 4, 6, 5, 6, 3, 4, 4, 0, 4, 7, 0, 7, 4, 8, 0, 8
+};
+
+/* timings for 1-byte opcodes */
+static const UINT8 cycles1[] =
+{
+ /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
+ /*0*/ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 3, 6,
+ /*1*/ 0, 0, 2, 4, 2, 2, 5, 9, 2, 2, 3, 2, 3, 2, 8, 6,
+ /*2*/ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ /*3*/ 4, 4, 4, 4, 5, 5, 5, 5, 2, 5, 3, 6,20,11, 2,19,
+ /*4*/ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ /*5*/ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ /*6*/ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 3, 6,
+ /*7*/ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 4, 7,
+ /*8*/ 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 7, 3, 2,
+ /*9*/ 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 6, 7, 5, 5,
+ /*A*/ 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 6, 7, 5, 5,
+ /*B*/ 5, 5, 5, 7, 5, 5, 5, 5, 5, 5, 5, 5, 7, 8, 6, 6,
+ /*C*/ 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 3, 3,
+ /*D*/ 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5,
+ /*E*/ 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5,
+ /*F*/ 5, 5, 5, 7, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6
+};
+
+static void (*const m6809_main[0x100])(m68_state_t *) = {
+/* 0xX0, 0xX1, 0xX2, 0xX3, 0xX4, 0xX5, 0xX6, 0xX7,
+ 0xX8, 0xX9, 0xXA, 0xXB, 0xXC, 0xXD, 0xXE, 0xXF */
+
+/* 0x0X */ neg_di, neg_di, com_di, com_di, lsr_di, lsr_di, ror_di, asr_di,
+ asl_di, rol_di, dec_di, dec_di, inc_di, tst_di, jmp_di, clr_di,
+
+/* 0x1X */ pref10, pref11, nop, sync, illegal,illegal,lbra, lbsr,
+ illegal,daa, orcc, illegal,andcc, sex, exg, tfr,
+
+/* 0x2X */ bra, brn, bhi, bls, bcc, bcs, bne, beq,
+ bvc, bvs, bpl, bmi, bge, blt, bgt, ble,
+
+/* 0x3X */ leax, leay, leas, leau, pshs, puls, pshu, pulu,
+ illegal,rts, abx, rti, cwai, mul, illegal,swi,
+
+/* 0x4X */ nega, nega, coma, coma, lsra, lsra, rora, asra,
+ asla, rola, deca, deca, inca, tsta, clra, clra,
+
+/* 0x5X */ negb, negb, comb, comb, lsrb, lsrb, rorb, asrb,
+ aslb, rolb, decb, decb, incb, tstb, clrb, clrb,
+
+/* 0x6X */ neg_ix, neg_ix, com_ix, com_ix, lsr_ix, lsr_ix, ror_ix, asr_ix,
+ asl_ix, rol_ix, dec_ix, dec_ix, inc_ix, tst_ix, jmp_ix, clr_ix,
+
+/* 0x7X */ neg_ex, neg_ex, com_ex, com_ex, lsr_ex, lsr_ex, ror_ex, asr_ex,
+ asl_ex, rol_ex, dec_ex, dec_ex, inc_ex, tst_ex, jmp_ex, clr_ex,
+
+/* 0x8X */ suba_im,cmpa_im,sbca_im,subd_im,anda_im,bita_im,lda_im, sta_im,
+ eora_im,adca_im,ora_im, adda_im,cmpx_im,bsr, ldx_im, stx_im,
+
+/* 0x9X */ suba_di,cmpa_di,sbca_di,subd_di,anda_di,bita_di,lda_di, sta_di,
+ eora_di,adca_di,ora_di, adda_di,cmpx_di,jsr_di, ldx_di, stx_di,
+
+/* 0xAX */ suba_ix,cmpa_ix,sbca_ix,subd_ix,anda_ix,bita_ix,lda_ix, sta_ix,
+ eora_ix,adca_ix,ora_ix, adda_ix,cmpx_ix,jsr_ix, ldx_ix, stx_ix,
+
+/* 0xBX */ suba_ex,cmpa_ex,sbca_ex,subd_ex,anda_ex,bita_ex,lda_ex, sta_ex,
+ eora_ex,adca_ex,ora_ex, adda_ex,cmpx_ex,jsr_ex, ldx_ex, stx_ex,
+
+/* 0xCX */ 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, ldu_im, stu_im,
+
+/* 0xDX */ 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, ldu_di, stu_di,
+
+/* 0xEX */ 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, ldu_ix, stu_ix,
+
+/* 0xFX */ 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, ldu_ex, stu_ex
+};