From bb6adb7d9a228bb570efda1f1398d9dbb2d8e383 Mon Sep 17 00:00:00 2001 From: "K.Ohta" Date: Fri, 13 Mar 2015 23:28:09 +0900 Subject: [PATCH] [VM][MC6809] Fix wrong MUL instruction.Re-Enter. Conflicts: source/src/vm/mc6809.cpp source/src/vm/mc6809.h --- source/src/vm/mc6809.cpp | 86 ++++--- source/src/vm/mc6809.h | 582 +++++++++++++++++++++++------------------------ 2 files changed, 349 insertions(+), 319 deletions(-) diff --git a/source/src/vm/mc6809.cpp b/source/src/vm/mc6809.cpp index b7684da63..03e7ddd1d 100644 --- a/source/src/vm/mc6809.cpp +++ b/source/src/vm/mc6809.cpp @@ -274,6 +274,7 @@ static const uint8 cycles1[] = 5, 5, 5, 7, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6 }; + void MC6809::reset() { icount = 0; @@ -314,6 +315,12 @@ void MC6809::write_signal(int id, uint32 data, uint32 mask) } else { int_state &= ~MC6809_NMI_BIT; } + } else if(id == SIG_CPU_BUSREQ) { + if(data & mask) { + int_state |= MC6809_HALT_BIT; + } else { + int_state &= ~MC6809_HALT_BIT; + } } } @@ -378,7 +385,12 @@ void MC6809::cpu_irq(void) int MC6809::run(int clock) { - if (int_state & MC6809_INSN_HALT) { // 0x80 + if ((int_state & MC6809_HALT_BIT) != 0) { // 0x80 + icount -= 2; + icount -= extra_icount; + extra_icount = 0; + return icount; + } else if((int_state & MC6809_INSN_HALT) != 0) { // 0x80 uint8 dmy = RM(PCD); icount -= 2; icount -= extra_icount; @@ -386,6 +398,7 @@ int MC6809::run(int clock) PC++; return icount; } + // run cpu if(clock == -1) { // run only one opcode @@ -473,12 +486,14 @@ void MC6809::run_one_opecode() //if (int_state & (MC6809_CWAI_IN | MC6809_SYNC_IN)) { // icount = 0; //} else { - pPPC = pPC; - uint8 ireg = ROP(PCD); - PC++; - op(ireg); - icount -= cycles1[ireg]; - //} + pPPC = pPC; + uint8 ireg = ROP(PCD); + PC++; + op(ireg); + icount -= cycles1[ireg]; + //} + icount -= extra_icount; + extra_icount = 0; } void MC6809::op(uint8 ireg) @@ -500,6 +515,7 @@ void MC6809::op(uint8 ireg) case 0x0d: tst_di(); break; case 0x0e: jmp_di(); break; case 0x0f: clr_di(); break; + case 0x10: pref10(); break; case 0x11: pref11(); break; case 0x12: nop(); break; @@ -516,6 +532,7 @@ void MC6809::op(uint8 ireg) case 0x1d: sex(); break; case 0x1e: exg(); break; case 0x1f: tfr(); break; + case 0x20: bra(); break; case 0x21: brn(); break; case 0x22: bhi(); break; @@ -532,6 +549,7 @@ void MC6809::op(uint8 ireg) case 0x2d: blt(); break; case 0x2e: bgt(); break; case 0x2f: ble(); break; + case 0x30: leax(); break; case 0x31: leay(); break; case 0x32: leas(); break; @@ -548,6 +566,7 @@ void MC6809::op(uint8 ireg) case 0x3d: mul(); break; case 0x3e: rst(); break; case 0x3f: swi(); break; + case 0x40: nega(); break; case 0x41: nega(); break; case 0x42: ngca(); break; @@ -564,6 +583,7 @@ void MC6809::op(uint8 ireg) case 0x4d: tsta(); break; case 0x4e: clca(); break; case 0x4f: clra(); break; + case 0x50: negb(); break; case 0x51: negb(); break; case 0x52: ngcb(); break; @@ -580,6 +600,7 @@ void MC6809::op(uint8 ireg) case 0x5d: tstb(); break; case 0x5e: clcb(); break; case 0x5f: clrb(); break; + case 0x60: neg_ix(); break; case 0x61: neg_ix(); break; case 0x62: ngc_ix(); break; @@ -596,6 +617,7 @@ void MC6809::op(uint8 ireg) case 0x6d: tst_ix(); break; case 0x6e: jmp_ix(); break; case 0x6f: clr_ix(); break; + case 0x70: neg_ex(); break; case 0x71: neg_ex(); break; case 0x72: ngc_ex(); break; @@ -612,6 +634,7 @@ void MC6809::op(uint8 ireg) case 0x7d: tst_ex(); break; case 0x7e: jmp_ex(); break; case 0x7f: clr_ex(); break; + case 0x80: suba_im(); break; case 0x81: cmpa_im(); break; case 0x82: sbca_im(); break; @@ -628,6 +651,7 @@ void MC6809::op(uint8 ireg) case 0x8d: bsr(); break; case 0x8e: ldx_im(); break; case 0x8f: flag16_im(); break; + case 0x90: suba_di(); break; case 0x91: cmpa_di(); break; case 0x92: sbca_di(); break; @@ -644,6 +668,7 @@ void MC6809::op(uint8 ireg) case 0x9d: jsr_di(); break; case 0x9e: ldx_di(); break; case 0x9f: stx_di(); break; + case 0xa0: suba_ix(); break; case 0xa1: cmpa_ix(); break; case 0xa2: sbca_ix(); break; @@ -660,6 +685,7 @@ void MC6809::op(uint8 ireg) case 0xad: jsr_ix(); break; case 0xae: ldx_ix(); break; case 0xaf: stx_ix(); break; + case 0xb0: suba_ex(); break; case 0xb1: cmpa_ex(); break; case 0xb2: sbca_ex(); break; @@ -676,6 +702,7 @@ void MC6809::op(uint8 ireg) case 0xbd: jsr_ex(); break; case 0xbe: ldx_ex(); break; case 0xbf: stx_ex(); break; + case 0xc0: subb_im(); break; case 0xc1: cmpb_im(); break; case 0xc2: sbcb_im(); break; @@ -692,6 +719,7 @@ void MC6809::op(uint8 ireg) case 0xcd: std_im(); break; case 0xce: ldu_im(); break; case 0xcf: flag16_im(); break; + case 0xd0: subb_di(); break; case 0xd1: cmpb_di(); break; case 0xd2: sbcb_di(); break; @@ -708,6 +736,7 @@ void MC6809::op(uint8 ireg) case 0xdd: std_di(); break; case 0xde: ldu_di(); break; case 0xdf: stu_di(); break; + case 0xe0: subb_ix(); break; case 0xe1: cmpb_ix(); break; case 0xe2: sbcb_ix(); break; @@ -724,6 +753,7 @@ void MC6809::op(uint8 ireg) case 0xed: std_ix(); break; case 0xee: ldu_ix(); break; case 0xef: stu_ix(); break; + case 0xf0: subb_ex(); break; case 0xf1: cmpb_ex(); break; case 0xf2: sbcb_ex(); break; @@ -743,6 +773,7 @@ void MC6809::op(uint8 ireg) #if defined(_MSC_VER) && (_MSC_VER >= 1200) default: __assume(0); #endif + trap(); break; } }; @@ -996,7 +1027,7 @@ void MC6809::dec_di() } /* $0B DCC direct */ -void MC6809::dcc_di() +void MC6809::dcc_di(void) { uint8 t, ss; @@ -1733,10 +1764,12 @@ void MC6809::lsra() void MC6809::rora() { uint8 r; + uint8 t; r = (CC & CC_C) << 7; CLR_NZC; CC |= (A & CC_C); - r |= A >> 1; + t = A >> 1; + r |= t; SET_NZ8(r); A = r; } @@ -1764,10 +1797,10 @@ void MC6809::asla() void MC6809::rola() { uint16 t, r; - t = A; + t = A & 0x00ff; r = (CC & CC_C) | (t << 1); CLR_NZVC; SET_FLAGS8(t, t, r); - A = (uint8)r; + A = (uint8)(r & 0xff); } /* $4A DECA inherent -***- */ @@ -1873,7 +1906,7 @@ void MC6809::rorb() r = (CC & CC_C) << 7; CLR_NZC; CC |= (B & CC_C); - r |= B >> 1; + r |= (B >> 1); SET_NZ8(r); B = r; } @@ -1974,9 +2007,7 @@ void MC6809::neg_ix() WM(EAD, r); } -/* $61 ILLEGAL, same as $60 */ - -/* $62 NGC */ +/* $62 NGC_IX */ void MC6809::ngc_ix() { if ((CC & CC_C) == 0){ @@ -2290,7 +2321,7 @@ void MC6809::sbca_im() uint16 t, r; IMMBYTE(t); r = A - t - (CC & CC_C); - CLR_NZVC; + CLR_HNZVC; SET_FLAGS8(A, t, r); A = (uint8)r; } @@ -2360,8 +2391,7 @@ void MC6809::lda_im() SET_NZ8(A); } -/* is this a legal instruction? */ -/* $87 STA immediate -**0- */ +/* $87 STA immediate -**0- in not used*/ void MC6809::sta_im() { CLR_NZV; @@ -2552,7 +2582,7 @@ void MC6809::sbca_di() uint16 t, r; DIRBYTE(t); r = A - t - (CC & CC_C); - CLR_NZVC; + CLR_HNZVC; SET_FLAGS8(A, t, r); A = (uint8)r; } @@ -2783,7 +2813,7 @@ void MC6809::sbca_ix() fetch_effective_address(); t = RM(EAD); r = A - t - (CC & CC_C); - CLR_NZVC; + CLR_HNZVC; SET_FLAGS8(A, t, r); A = (uint8)r; } @@ -2881,8 +2911,8 @@ void MC6809::adca_ix() t = RM(EAD); r = A + t + (CC & CC_C); CLR_HNZVC; - SET_FLAGS8(A, t, r); - SET_H(A, t, r); + SET_HNZVC8(A, t, r); + //SET_H(A, t, r); A = (uint8)r; } @@ -2903,8 +2933,8 @@ void MC6809::adda_ix() t = RM(EAD); r = A + t; CLR_HNZVC; - SET_FLAGS8(A, t, r); - SET_H(A, t, r); + SET_HNZVC8(A, t, r); + //SET_H(A, t, r); A = (uint8)r; } @@ -3018,7 +3048,7 @@ void MC6809::sbca_ex() uint16 t, r; EXTBYTE(t); r = A - t - (CC & CC_C); - CLR_NZVC; + CLR_HNZVC; SET_FLAGS8(A, t, r); A = (uint8)r; } @@ -3136,7 +3166,7 @@ void MC6809::adda_ex() r = A + t; CLR_HNZVC; SET_HNZVC8(A, t, r); - SET_H(A, t, r); + //SET_H(A, t, r); A = (uint8)r; } @@ -3942,7 +3972,7 @@ void MC6809::sts_ex() /* $10xx opcodes */ void MC6809::pref10() { - uint8 ireg2 = ROP(PCD); + uint8 ireg2 = ROP_ARG(PCD); PC++; switch(ireg2) { @@ -3981,7 +4011,7 @@ void MC6809::pref10() case 0xbe: ldy_ex(); icount -= 7; break; case 0xbf: sty_ex(); icount -= 7; break; case 0xce: lds_im(); icount -= 4; break; - case 0xcf: sts_im(); icount -= 4; break; + //case 0xcf: sts_im(); icount -= 4; break; case 0xde: lds_di(); icount -= 6; break; case 0xdf: sts_di(); icount -= 6; break; case 0xee: lds_ix(); icount -= 6; break; diff --git a/source/src/vm/mc6809.h b/source/src/vm/mc6809.h index f9f05619d..4e179a8a8 100644 --- a/source/src/vm/mc6809.h +++ b/source/src/vm/mc6809.h @@ -28,13 +28,12 @@ private: pair dp; /* Direct Page register (page in MSB) */ pair u, s; /* Stack pointers */ pair x, y; /* Index registers */ - uint8 cc; + volatile uint8 cc; pair ea; /* effective address */ uint8 int_state; int icount; int extra_icount; - inline uint32 RM16(uint32 Addr); inline void WM16(uint32 Addr, pair *p); void cpu_irq(void); @@ -52,295 +51,296 @@ private: inline void adca_im(); inline void adca_ix(); inline void adcb_di(); - inline void adcb_ex(); - inline void adcb_im(); - inline void adcb_ix(); - inline void adda_di(); - inline void adda_ex(); - inline void adda_im(); - inline void adda_ix(); - inline void addb_di(); - inline void addb_ex(); - inline void addb_im(); - inline void addb_ix(); - inline void addd_di(); - inline void addd_ex(); - inline void addd_im(); - inline void addd_ix(); - inline void anda_di(); - inline void anda_ex(); - inline void anda_im(); - inline void anda_ix(); - inline void andb_di(); - inline void andb_ex(); - inline void andb_im(); - inline void andb_ix(); - inline void andcc(); - inline void asla(); - inline void aslb(); - inline void aslcc_in(); - inline void asl_di(); - inline void asl_ex(); - inline void asl_ix(); - inline void asra(); - inline void asrb(); - inline void asr_di(); - inline void asr_ex(); - inline void asr_ix(); - inline void bcc(); - inline void bcs(); - inline void beq(); - inline void bge(); - inline void bgt(); - inline void bhi(); - inline void bita_di(); - inline void bita_ex(); - inline void bita_im(); - inline void bita_ix(); - inline void bitb_di(); - inline void bitb_ex(); - inline void bitb_im(); - inline void bitb_ix(); - inline void ble(); - inline void bls(); - inline void blt(); - inline void bmi(); - inline void bne(); - inline void bpl(); - inline void bra(); - inline void brn(); - inline void bsr(); - inline void bvc(); - inline void bvs(); - inline void clca(); - inline void clcb(); - inline void clra(); - inline void clrb(); - inline void clr_di(); - inline void clr_ex(); - inline void clr_ix(); - inline void cmpa_di(); - inline void cmpa_ex(); - inline void cmpa_im(); - inline void cmpa_ix(); - inline void cmpb_di(); - inline void cmpb_ex(); - inline void cmpb_im(); - inline void cmpb_ix(); - inline void cmpd_di(); - inline void cmpd_ex(); - inline void cmpd_im(); - inline void cmpd_ix(); - inline void cmps_di(); - inline void cmps_ex(); - inline void cmps_im(); - inline void cmps_ix(); - inline void cmpu_di(); - inline void cmpu_ex(); - inline void cmpu_im(); - inline void cmpu_ix(); - inline void cmpx_di(); - inline void cmpx_ex(); - inline void cmpx_im(); - inline void cmpx_ix(); - inline void cmpy_di(); - inline void cmpy_ex(); - inline void cmpy_im(); - inline void cmpy_ix(); - inline void coma(); - inline void comb(); - inline void com_di(); - inline void com_ex(); - inline void com_ix(); - inline void cwai(); - inline void daa(); - inline void dcca(); - inline void dccb(); - inline void dcc_di(); - inline void dcc_ex(); - inline void dcc_ix(); - inline void deca(); - inline void decb(); - inline void dec_di(); - inline void dec_ex(); - inline void dec_ix(); - inline void eora_di(); - inline void eora_ex(); - inline void eora_im(); - inline void eora_ix(); - inline void eorb_di(); - inline void eorb_ex(); - inline void eorb_im(); - inline void eorb_ix(); - inline void exg(); - inline void flag8_im(); - inline void flag16_im(); - inline void illegal(); - inline void inca(); - inline void incb(); - inline void inc_di(); - inline void inc_ex(); - inline void inc_ix(); - inline void jmp_di(); - inline void jmp_ex(); - inline void jmp_ix(); - inline void jsr_di(); - inline void jsr_ex(); - inline void jsr_ix(); - inline void lbcc(); - inline void lbcs(); - inline void lbeq(); - inline void lbge(); - inline void lbgt(); - inline void lbhi(); - inline void lble(); - inline void lbls(); - inline void lblt(); - inline void lbmi(); - inline void lbne(); - inline void lbpl(); - inline void lbra(); - inline void lbrn(); - inline void lbsr(); - inline void lbvc(); - inline void lbvs(); - inline void lda_di(); - inline void lda_ex(); - inline void lda_im(); - inline void lda_ix(); - inline void ldb_di(); - inline void ldb_ex(); - inline void ldb_im(); - inline void ldb_ix(); - inline void ldd_di(); - inline void ldd_ex(); - inline void ldd_im(); - inline void ldd_ix(); - inline void lds_di(); - inline void lds_ex(); - inline void lds_im(); - inline void lds_ix(); - inline void ldu_di(); - inline void ldu_ex(); - inline void ldu_im(); - inline void ldu_ix(); - inline void ldx_di(); - inline void ldx_ex(); - inline void ldx_im(); - inline void ldx_ix(); - inline void ldy_di(); - inline void ldy_ex(); - inline void ldy_im(); - inline void ldy_ix(); - inline void leas(); - inline void leau(); - inline void leax(); - inline void leay(); - inline void lsra(); - inline void lsrb(); - inline void lsr_di(); - inline void lsr_ex(); - inline void lsr_ix(); - inline void mul(); - inline void nega(); - inline void negb(); - inline void neg_di(); - inline void neg_ex(); - inline void neg_ix(); - inline void ngca(); - inline void ngcb(); - inline void ngc_di(); - inline void ngc_ex(); - inline void ngc_ix(); - inline void nop(); - inline void ora_di(); - inline void ora_ex(); - inline void ora_im(); - inline void ora_ix(); - inline void orb_di(); - inline void orb_ex(); - inline void orb_im(); - inline void orb_ix(); - inline void orcc(); - inline void pref10(); - inline void pref11(); - inline void pshs(); - inline void pshu(); - inline void puls(); - inline void pulu(); - inline void rola(); - inline void rolb(); - inline void rol_di(); - inline void rol_ex(); - inline void rol_ix(); - inline void rora(); - inline void rorb(); - inline void ror_di(); - inline void ror_ex(); - inline void ror_ix(); - inline void rst(); - inline void rti(); - inline void rts(); - inline void sbca_di(); - inline void sbca_ex(); - inline void sbca_im(); - inline void sbca_ix(); - inline void sbcb_di(); - inline void sbcb_ex(); - inline void sbcb_im(); - inline void sbcb_ix(); - inline void sex(); - inline void sta_di(); - inline void sta_ex(); - inline void sta_im(); - inline void sta_ix(); - inline void stb_di(); - inline void stb_ex(); - inline void stb_im(); - inline void stb_ix(); - inline void std_di(); - inline void std_ex(); - inline void std_im(); - inline void std_ix(); - inline void sts_di(); - inline void sts_ex(); - inline void sts_im(); - inline void sts_ix(); - inline void stu_di(); - inline void stu_ex(); - inline void stu_im(); - inline void stu_ix(); - inline void stx_di(); - inline void stx_ex(); - inline void stx_im(); - inline void stx_ix(); - inline void sty_di(); - inline void sty_ex(); - inline void sty_im(); - inline void sty_ix(); - inline void suba_di(); - inline void suba_ex(); - inline void suba_im(); - inline void suba_ix(); - inline void subb_di(); - inline void subb_ex(); - inline void subb_im(); - inline void subb_ix(); - inline void subd_di(); - inline void subd_ex(); - inline void subd_im(); - inline void subd_ix(); - inline void swi2(); - inline void swi3(); - inline void swi(); - inline void sync_09(); - inline void tfr(); - inline void trap(); - inline void tsta(); - inline void tstb(); - inline void tst_di(); - inline void tst_ex(); - inline void tst_ix(); + inline void adcb_ex(); + inline void adcb_im(); + inline void adcb_ix(); + inline void adda_di(); + inline void adda_ex(); + inline void adda_im(); + inline void adda_ix(); + inline void addb_di(); + inline void addb_ex(); + inline void addb_im(); + inline void addb_ix(); + inline void addd_di(); + inline void addd_ex(); + inline void addd_im(); + inline void addd_ix(); + inline void anda_di(); + inline void anda_ex(); + inline void anda_im(); + inline void anda_ix(); + inline void andb_di(); + inline void andb_ex(); + inline void andb_im(); + inline void andb_ix(); + inline void andcc(); + inline void asla(); + inline void aslb(); + inline void aslcc_in(); + inline void asl_di(); + inline void asl_ex(); + inline void asl_ix(); + inline void asra(); + inline void asrb(); + inline void asr_di(); + inline void asr_ex(); + inline void asr_ix(); + inline void bcc(); + inline void bcs(); + inline void beq(); + inline void bge(); + inline void bgt(); + inline void bhi(); + inline void bita_di(); + inline void bita_ex(); + inline void bita_im(); + inline void bita_ix(); + inline void bitb_di(); + inline void bitb_ex(); + inline void bitb_im(); + inline void bitb_ix(); + inline void ble(); + inline void bls(); + inline void blt(); + inline void bmi(); + inline void bne(); + inline void bpl(); + inline void bra(); + inline void brn(); + inline void bsr(); + inline void bvc(); + inline void bvs(); + inline void clca(); + inline void clcb(); + inline void clra(); + inline void clrb(); + inline void clr_di(); + inline void clr_ex(); + inline void clr_ix(); + inline void cmpa_di(); + inline void cmpa_ex(); + inline void cmpa_im(); + inline void cmpa_ix(); + inline void cmpb_di(); + inline void cmpb_ex(); + inline void cmpb_im(); + inline void cmpb_ix(); + inline void cmpd_di(); + inline void cmpd_ex(); + inline void cmpd_im(); + inline void cmpd_ix(); + inline void cmps_di(); + inline void cmps_ex(); + inline void cmps_im(); + inline void cmps_ix(); + inline void cmpu_di(); + inline void cmpu_ex(); + inline void cmpu_im(); + inline void cmpu_ix(); + inline void cmpx_di(); + inline void cmpx_ex(); + inline void cmpx_im(); + inline void cmpx_ix(); + inline void cmpy_di(); + inline void cmpy_ex(); + inline void cmpy_im(); + inline void cmpy_ix(); + inline void coma(); + inline void comb(); + inline void com_di(); + inline void com_ex(); + inline void com_ix(); + inline void cwai(); + inline void daa(); + inline void dcca(); + inline void dccb(); + inline void dcc_di(); + inline void dcc_ex(); + inline void dcc_ix(); + inline void deca(); + inline void decb(); + inline void dec_di(); + inline void dec_ex(); + inline void dec_ix(); + inline void eora_di(); + inline void eora_ex(); + inline void eora_im(); + inline void eora_ix(); + inline void eorb_di(); + inline void eorb_ex(); + inline void eorb_im(); + inline void eorb_ix(); + inline void exg(); + inline void flag8_im(); + inline void flag16_im(); + inline void illegal(); + inline void inca(); + inline void incb(); + inline void inc_di(); + inline void inc_ex(); + inline void inc_ix(); + inline void jmp_di(); + inline void jmp_ex(); + inline void jmp_ix(); + inline void jsr_di(); + inline void jsr_ex(); + inline void jsr_ix(); + inline void lbcc(); + inline void lbcs(); + inline void lbeq(); + inline void lbge(); + inline void lbgt(); + inline void lbhi(); + inline void lble(); + inline void lbls(); + inline void lblt(); + inline void lbmi(); + inline void lbne(); + inline void lbpl(); + inline void lbra(); + inline void lbrn(); + inline void lbsr(); + inline void lbvc(); + inline void lbvs(); + inline void lda_di(); + inline void lda_ex(); + inline void lda_im(); + inline void lda_ix(); + inline void ldb_di(); + inline void ldb_ex(); + inline void ldb_im(); + inline void ldb_ix(); + inline void ldd_di(); + inline void ldd_ex(); + inline void ldd_im(); + inline void ldd_ix(); + inline void lds_di(); + inline void lds_ex(); + inline void lds_im(); + inline void lds_ix(); + inline void ldu_di(); + inline void ldu_ex(); + inline void ldu_im(); + inline void ldu_ix(); + inline void ldx_di(); + inline void ldx_ex(); + inline void ldx_im(); + inline void ldx_ix(); + inline void ldy_di(); + inline void ldy_ex(); + inline void ldy_im(); + inline void ldy_ix(); + inline void leas(); + inline void leau(); + inline void leax(); + inline void leay(); + inline void lsra(); + inline void lsrb(); + inline void lsr_di(); + inline void lsr_ex(); + inline void lsr_ix(); + inline void mul(); + inline void nega(); + inline void negb(); + inline void neg_di(); + inline void neg_ex(); + inline void neg_ix(); + inline void ngca(); + inline void ngcb(); + inline void ngc_di(); + inline void ngc_ex(); + inline void ngc_ix(); + inline void nop(); + inline void ora_di(); + inline void ora_ex(); + inline void ora_im(); + inline void ora_ix(); + inline void orb_di(); + inline void orb_ex(); + inline void orb_im(); + inline void orb_ix(); + inline void orcc(); + inline void pref10(); + inline void pref11(); + inline void pshs(); + inline void pshu(); + inline void puls(); + inline void pulu(); + inline void rola(); + inline void rolb(); + inline void rol_di(); + inline void rol_ex(); + inline void rol_ix(); + inline void rora(); + inline void rorb(); + inline void ror_di(); + inline void ror_ex(); + inline void ror_ix(); + inline void rst(); + inline void rti(); + inline void rts(); + inline void sbca_di(); + inline void sbca_ex(); + inline void sbca_im(); + inline void sbca_ix(); + inline void sbcb_di(); + inline void sbcb_ex(); + inline void sbcb_im(); + inline void sbcb_ix(); + inline void sex(); + inline void sta_di(); + inline void sta_ex(); + inline void sta_im(); + inline void sta_ix(); + inline void stb_di(); + inline void stb_ex(); + inline void stb_im(); + inline void stb_ix(); + inline void std_di(); + inline void std_ex(); + inline void std_im(); + inline void std_ix(); + inline void sts_di(); + inline void sts_ex(); + inline void sts_im(); + inline void sts_ix(); + inline void stu_di(); + inline void stu_ex(); + inline void stu_im(); + inline void stu_ix(); + inline void stx_di(); + inline void stx_ex(); + inline void stx_im(); + inline void stx_ix(); + inline void sty_di(); + inline void sty_ex(); + inline void sty_im(); + inline void sty_ix(); + inline void suba_di(); + inline void suba_ex(); + inline void suba_im(); + inline void suba_ix(); + inline void subb_di(); + inline void subb_ex(); + inline void subb_im(); + inline void subb_ix(); + inline void subd_di(); + inline void subd_ex(); + inline void subd_im(); + inline void subd_ix(); + inline void swi2(); + inline void swi3(); + inline void swi(); + inline void sync_09(); + inline void tfr(); + inline void trap(); + inline void tsta(); + inline void tstb(); + inline void tst_di(); + inline void tst_ex(); + inline void tst_ix(); + public: MC6809(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {} -- 2.11.0