OSDN Git Service

[VM][MC6809] Faster interpret instructions.
authorK.Ohta <whatisthis.sowhat@gmail.com>
Fri, 13 Mar 2015 19:25:21 +0000 (04:25 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Fri, 13 Mar 2015 19:25:21 +0000 (04:25 +0900)
source/src/vm/mc6809.cpp
source/src/vm/mc6809.h

index e92ee1e..3297b37 100644 (file)
@@ -439,289 +439,520 @@ check_nmi:
 
 void MC6809::op(uint8 ireg)
 {
-       switch(ireg) {
-       case 0x00: neg_di(); break;
-       case 0x01: neg_di(); break;
-       case 0x02: ngc_di(); break;
-       case 0x03: com_di(); break;
-       case 0x04: lsr_di(); break;
-       case 0x05: lsr_di(); break;
-       case 0x06: ror_di(); break;
-       case 0x07: asr_di(); break;
-       case 0x08: asl_di(); break;
-       case 0x09: rol_di(); break;
-       case 0x0a: dec_di(); break;
-       case 0x0b: dcc_di(); break;
-       case 0x0c: inc_di(); break;
-       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;
-       case 0x13: this->sync(); break;
-       case 0x14: trap(); break;
-       case 0x15: trap(); break;
-       case 0x16: lbra(); break;
-       case 0x17: lbsr(); break;
-       case 0x18: aslcc_in(); break;
-       case 0x19: daa(); break;
-       case 0x1a: orcc(); break;
-       case 0x1b: nop(); break;
-       case 0x1c: andcc(); break;
-       case 0x1d: sex(); break;
-       case 0x1e: exg(); break;
-       case 0x1f: tfr(); break;
-         
-       case 0x20: bra(); break;
-       case 0x21: brn(); break;
-       case 0x22: bhi(); break;
-       case 0x23: bls(); break;
-       case 0x24: bcc(); break;
-       case 0x25: bcs(); break;
-       case 0x26: bne(); break;
-       case 0x27: beq(); break;
-       case 0x28: bvc(); break;
-       case 0x29: bvs(); break;
-       case 0x2a: bpl(); break;
-       case 0x2b: bmi(); break;
-       case 0x2c: bge(); break;
-       case 0x2d: blt(); break;
-       case 0x2e: bgt(); break;
-       case 0x2f: ble(); break;
-         
-       case 0x30: leax(); break;
-       case 0x31: leay(); break;
-       case 0x32: leas(); break;
-       case 0x33: leau(); break;
-       case 0x34: pshs(); break;
-       case 0x35: puls(); break;
-       case 0x36: pshu(); break;
-       case 0x37: pulu(); break;
-       case 0x38: andcc(); break;
-       case 0x39: rts(); break;
-       case 0x3a: abx(); break;
-       case 0x3b: rti(); break;
-       case 0x3c: cwai(); break;
-       case 0x3d: mul(); break;
-       case 0x3e: rst(); break;
-       case 0x3f: swi(); break;
-         
-       case 0x40: nega(); break;
-       case 0x41: nega(); break;
-       case 0x42: ngca(); break;
-       case 0x43: coma(); break;
-       case 0x44: lsra(); break;
-       case 0x45: lsra(); break;
-       case 0x46: rora(); break;
-       case 0x47: asra(); break;
-       case 0x48: asla(); break;
-       case 0x49: rola(); break;
-       case 0x4a: deca(); break;
-       case 0x4b: dcca(); break;
-       case 0x4c: inca(); break;
-       case 0x4d: tsta(); break;
-       case 0x4e: clca(); break;
-       case 0x4f: clra(); break;
-         
-       case 0x50: negb(); break;
-       case 0x51: negb(); break;
-       case 0x52: ngcb(); break;
-       case 0x53: comb(); break;
-       case 0x54: lsrb(); break;
-       case 0x55: lsrb(); break;
-       case 0x56: rorb(); break;
-       case 0x57: asrb(); break;
-       case 0x58: aslb(); break;
-       case 0x59: rolb(); break;
-       case 0x5a: decb(); break;
-       case 0x5b: dccb(); break;
-       case 0x5c: incb(); break;
-       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;
-       case 0x63: com_ix(); break;
-       case 0x64: lsr_ix(); break;
-       case 0x65: lsr_ix(); break;
-       case 0x66: ror_ix(); break;
-       case 0x67: asr_ix(); break;
-       case 0x68: asl_ix(); break;
-       case 0x69: rol_ix(); break;
-       case 0x6a: dec_ix(); break;
-       case 0x6b: dcc_ix(); break;
-       case 0x6c: inc_ix(); break;
-       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;
-       case 0x73: com_ex(); break;
-       case 0x74: lsr_ex(); break;
-       case 0x75: lsr_ex(); break;
-       case 0x76: ror_ex(); break;
-       case 0x77: asr_ex(); break;
-       case 0x78: asl_ex(); break;
-       case 0x79: rol_ex(); break;
-       case 0x7a: dec_ex(); break;
-       case 0x7b: dcc_ex(); break;
-       case 0x7c: inc_ex(); break;
-       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;
-       case 0x83: subd_im(); break;
-       case 0x84: anda_im(); break;
-       case 0x85: bita_im(); break;
-       case 0x86: lda_im(); break;
-       case 0x87: flag8_im(); break;
-       case 0x88: eora_im(); break;
-       case 0x89: adca_im(); break;
-       case 0x8a: ora_im(); break;
-       case 0x8b: adda_im(); break;
-       case 0x8c: cmpx_im(); break;
-       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;
-       case 0x93: subd_di(); break;
-       case 0x94: anda_di(); break;
-       case 0x95: bita_di(); break;
-       case 0x96: lda_di(); break;
-       case 0x97: sta_di(); break;
-       case 0x98: eora_di(); break;
-       case 0x99: adca_di(); break;
-       case 0x9a: ora_di(); break;
-       case 0x9b: adda_di(); break;
-       case 0x9c: cmpx_di(); break;
-       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;
-       case 0xa3: subd_ix(); break;
-       case 0xa4: anda_ix(); break;
-       case 0xa5: bita_ix(); break;
-       case 0xa6: lda_ix(); break;
-       case 0xa7: sta_ix(); break;
-       case 0xa8: eora_ix(); break;
-       case 0xa9: adca_ix(); break;
-       case 0xaa: ora_ix(); break;
-       case 0xab: adda_ix(); break;
-       case 0xac: cmpx_ix(); break;
-       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;
-       case 0xb3: subd_ex(); break;
-       case 0xb4: anda_ex(); break;
-       case 0xb5: bita_ex(); break;
-       case 0xb6: lda_ex(); break;
-       case 0xb7: sta_ex(); break;
-       case 0xb8: eora_ex(); break;
-       case 0xb9: adca_ex(); break;
-       case 0xba: ora_ex(); break;
-       case 0xbb: adda_ex(); break;
-       case 0xbc: cmpx_ex(); break;
-       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;
-       case 0xc3: addd_im(); break;
-       case 0xc4: andb_im(); break;
-       case 0xc5: bitb_im(); break;
-       case 0xc6: ldb_im(); break;
-       case 0xc7: flag8_im(); break;
-       case 0xc8: eorb_im(); break;
-       case 0xc9: adcb_im(); break;
-       case 0xca: orb_im(); break;
-       case 0xcb: addb_im(); break;
-       case 0xcc: ldd_im(); break;
-       case 0xcd: trap(); break; 
-/*     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;
-       case 0xd3: addd_di(); break;
-       case 0xd4: andb_di(); break;
-       case 0xd5: bitb_di(); break;
-       case 0xd6: ldb_di(); break;
-       case 0xd7: stb_di(); break;
-       case 0xd8: eorb_di(); break;
-       case 0xd9: adcb_di(); break;
-       case 0xda: orb_di(); break;
-       case 0xdb: addb_di(); break;
-       case 0xdc: ldd_di(); break;
-       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;
-       case 0xe3: addd_ix(); break;
-       case 0xe4: andb_ix(); break;
-       case 0xe5: bitb_ix(); break;
-       case 0xe6: ldb_ix(); break;
-       case 0xe7: stb_ix(); break;
-       case 0xe8: eorb_ix(); break;
-       case 0xe9: adcb_ix(); break;
-       case 0xea: orb_ix(); break;
-       case 0xeb: addb_ix(); break;
-       case 0xec: ldd_ix(); break;
-       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;
-       case 0xf3: addd_ex(); break;
-       case 0xf4: andb_ex(); break;
-       case 0xf5: bitb_ex(); break;
-       case 0xf6: ldb_ex(); break;
-       case 0xf7: stb_ex(); break;
-       case 0xf8: eorb_ex(); break;
-       case 0xf9: adcb_ex(); break;
-       case 0xfa: orb_ex(); break;
-       case 0xfb: addb_ex(); break;
-       case 0xfc: ldd_ex(); break;
-       case 0xfd: std_ex(); break;
-       case 0xfe: ldu_ex(); break;
-       case 0xff: stu_ex(); break;
+       uint8 ireg_lo = ireg & 0x0f;
+       uint8 ireg_hi = (ireg & 0xf0) >> 4;
+       switch(ireg_hi) {
+               case 0x00:
+                       switch(ireg) {
+                       case 0x00: neg_di(); break;
+                       case 0x01: neg_di(); break;
+                       case 0x02: ngc_di(); break;
+                       case 0x03: com_di(); break;
+                       case 0x04: lsr_di(); break;
+                       case 0x05: lsr_di(); break;
+                       case 0x06: ror_di(); break;
+                       case 0x07: asr_di(); break;
+                       case 0x08: asl_di(); break;
+                       case 0x09: rol_di(); break;
+                       case 0x0a: dec_di(); break;
+                       case 0x0b: dcc_di(); break;
+                       case 0x0c: inc_di(); break;
+                       case 0x0d: tst_di(); break;
+                       case 0x0e: jmp_di(); break;
+                       case 0x0f: clr_di(); break;
+                       }
+                       break;
+               case 0x01:
+                       switch(ireg) {
+                       case 0x10: pref10(); break;
+                       case 0x11: pref11(); break;
+                       case 0x12: nop(); break;
+                       case 0x13: this->sync(); break;
+                       case 0x14: trap(); break;
+                       case 0x15: trap(); break;
+                       case 0x16: lbra(); break;
+                       case 0x17: lbsr(); break;
+                       case 0x18: aslcc_in(); break;
+                       case 0x19: daa(); break;
+                       case 0x1a: orcc(); break;
+                       case 0x1b: nop(); break;
+                       case 0x1c: andcc(); break;
+                       case 0x1d: sex(); break;
+                       case 0x1e: exg(); break;
+                       case 0x1f: tfr(); break;
+                       }
+                       break;
+               case 0x02:
+                       switch(ireg){
+                       case 0x20: bra(); break;
+                       case 0x21: brn(); break;
+                       case 0x22: bhi(); break;
+                       case 0x23: bls(); break;
+                       case 0x24: bcc(); break;
+                       case 0x25: bcs(); break;
+                       case 0x26: bne(); break;
+                       case 0x27: beq(); break;
+                       case 0x28: bvc(); break;
+                       case 0x29: bvs(); break;
+                       case 0x2a: bpl(); break;
+                       case 0x2b: bmi(); break;
+                       case 0x2c: bge(); break;
+                       case 0x2d: blt(); break;
+                       case 0x2e: bgt(); break;
+                       case 0x2f: ble(); break;
+                       }
+                       break;
+               case 0x03:
+                       switch(ireg){
+                       case 0x30: leax(); break;
+                       case 0x31: leay(); break;
+                       case 0x32: leas(); break;
+                       case 0x33: leau(); break;
+                       case 0x34: pshs(); break;
+                       case 0x35: puls(); break;
+                       case 0x36: pshu(); break;
+                       case 0x37: pulu(); break;
+                       case 0x38: andcc(); break;
+                       case 0x39: rts(); break;
+                       case 0x3a: abx(); break;
+                       case 0x3b: rti(); break;
+                       case 0x3c: cwai(); break;
+                       case 0x3d: mul(); break;
+                       case 0x3e: rst(); break;
+                       case 0x3f: swi(); break;
+                       }
+                       break;
+               case 0x04:
+                       switch(ireg){
+                       case 0x40: nega(); break;
+                       case 0x41: nega(); break;
+                       case 0x42: ngca(); break;
+                       case 0x43: coma(); break;
+                       case 0x44: lsra(); break;
+                       case 0x45: lsra(); break;
+                       case 0x46: rora(); break;
+                       case 0x47: asra(); break;
+                       case 0x48: asla(); break;
+                       case 0x49: rola(); break;
+                       case 0x4a: deca(); break;
+                       case 0x4b: dcca(); break;
+                       case 0x4c: inca(); break;
+                       case 0x4d: tsta(); break;
+                       case 0x4e: clca(); break;
+                       case 0x4f: clra(); break;
+                       }
+                       break;
+               case 0x05:
+                       switch(ireg){
+                       case 0x50: negb(); break;
+                       case 0x51: negb(); break;
+                       case 0x52: ngcb(); break;
+                       case 0x53: comb(); break;
+                       case 0x54: lsrb(); break;
+                       case 0x55: lsrb(); break;
+                       case 0x56: rorb(); break;
+                       case 0x57: asrb(); break;
+                       case 0x58: aslb(); break;
+                       case 0x59: rolb(); break;
+                       case 0x5a: decb(); break;
+                       case 0x5b: dccb(); break;
+                       case 0x5c: incb(); break;
+                       case 0x5d: tstb(); break;
+                       case 0x5e: clcb(); break;
+                       case 0x5f: clrb(); break;
+                       }
+                       break;
+               case 0x06:
+                       switch(ireg){
+                       case 0x60: neg_ix(); break;
+                       case 0x61: neg_ix(); break;
+                       case 0x62: ngc_ix(); break;
+                       case 0x63: com_ix(); break;
+                       case 0x64: lsr_ix(); break;
+                       case 0x65: lsr_ix(); break;
+                       case 0x66: ror_ix(); break;
+                       case 0x67: asr_ix(); break;
+                       case 0x68: asl_ix(); break;
+                       case 0x69: rol_ix(); break;
+                       case 0x6a: dec_ix(); break;
+                       case 0x6b: dcc_ix(); break;
+                       case 0x6c: inc_ix(); break;
+                       case 0x6d: tst_ix(); break;
+                       case 0x6e: jmp_ix(); break;
+                       case 0x6f: clr_ix(); break;
+                       }
+                       break;
+               case 0x07:
+                       switch(ireg){
+                       case 0x70: neg_ex(); break;
+                       case 0x71: neg_ex(); break;
+                       case 0x72: ngc_ex(); break;
+                       case 0x73: com_ex(); break;
+                       case 0x74: lsr_ex(); break;
+                       case 0x75: lsr_ex(); break;
+                       case 0x76: ror_ex(); break;
+                       case 0x77: asr_ex(); break;
+                       case 0x78: asl_ex(); break;
+                       case 0x79: rol_ex(); break;
+                       case 0x7a: dec_ex(); break;
+                       case 0x7b: dcc_ex(); break;
+                       case 0x7c: inc_ex(); break;
+                       case 0x7d: tst_ex(); break;
+                       case 0x7e: jmp_ex(); break;
+                       case 0x7f: clr_ex(); break;
+                       }
+                       break;
+               case 0x08:
+                       switch(ireg){
+                       case 0x80: suba_im(); break;
+                       case 0x81: cmpa_im(); break;
+                       case 0x82: sbca_im(); break;
+                       case 0x83: subd_im(); break;
+                       case 0x84: anda_im(); break;
+                       case 0x85: bita_im(); break;
+                       case 0x86: lda_im(); break;
+                       case 0x87: flag8_im(); break;
+                       case 0x88: eora_im(); break;
+                       case 0x89: adca_im(); break;
+                       case 0x8a: ora_im(); break;
+                       case 0x8b: adda_im(); break;
+                       case 0x8c: cmpx_im(); break;
+                       case 0x8d: bsr(); break;
+                       case 0x8e: ldx_im(); break;
+                       case 0x8f: flag16_im(); break;
+                       }
+                       break;
+               case 0x09:
+                       switch(ireg){
+                       case 0x90: suba_di(); break;
+                       case 0x91: cmpa_di(); break;
+                       case 0x92: sbca_di(); break;
+                       case 0x93: subd_di(); break;
+                       case 0x94: anda_di(); break;
+                       case 0x95: bita_di(); break;
+                       case 0x96: lda_di(); break;
+                       case 0x97: sta_di(); break;
+                       case 0x98: eora_di(); break;
+                       case 0x99: adca_di(); break;
+                       case 0x9a: ora_di(); break;
+                       case 0x9b: adda_di(); break;
+                       case 0x9c: cmpx_di(); break;
+                       case 0x9d: jsr_di(); break;
+                       case 0x9e: ldx_di(); break;
+                       case 0x9f: stx_di(); break;
+                       }
+                       break;
+               case 0x0a:
+                       switch(ireg){
+                       case 0xa0: suba_ix(); break;
+                       case 0xa1: cmpa_ix(); break;
+                       case 0xa2: sbca_ix(); break;
+                       case 0xa3: subd_ix(); break;
+                       case 0xa4: anda_ix(); break;
+                       case 0xa5: bita_ix(); break;
+                       case 0xa6: lda_ix(); break;
+                       case 0xa7: sta_ix(); break;
+                       case 0xa8: eora_ix(); break;
+                       case 0xa9: adca_ix(); break;
+                       case 0xaa: ora_ix(); break;
+                       case 0xab: adda_ix(); break;
+                       case 0xac: cmpx_ix(); break;
+                       case 0xad: jsr_ix(); break;
+                       case 0xae: ldx_ix(); break;
+                       case 0xaf: stx_ix(); break;
+                       }
+                       break;
+               case 0x0b:
+                       switch(ireg){
+                       case 0xb0: suba_ex(); break;
+                       case 0xb1: cmpa_ex(); break;
+                       case 0xb2: sbca_ex(); break;
+                       case 0xb3: subd_ex(); break;
+                       case 0xb4: anda_ex(); break;
+                       case 0xb5: bita_ex(); break;
+                       case 0xb6: lda_ex(); break;
+                       case 0xb7: sta_ex(); break;
+                       case 0xb8: eora_ex(); break;
+                       case 0xb9: adca_ex(); break;
+                       case 0xba: ora_ex(); break;
+                       case 0xbb: adda_ex(); break;
+                       case 0xbc: cmpx_ex(); break;
+                       case 0xbd: jsr_ex(); break;
+                       case 0xbe: ldx_ex(); break;
+                       case 0xbf: stx_ex(); break;
+                       }
+                       break;
+               case 0x0c:
+                       switch(ireg){
+                       case 0xc0: subb_im(); break;
+                       case 0xc1: cmpb_im(); break;
+                       case 0xc2: sbcb_im(); break;
+                       case 0xc3: addd_im(); break;
+                       case 0xc4: andb_im(); break;
+                       case 0xc5: bitb_im(); break;
+                       case 0xc6: ldb_im(); break;
+                       case 0xc7: flag8_im(); break;
+                       case 0xc8: eorb_im(); break;
+                       case 0xc9: adcb_im(); break;
+                       case 0xca: orb_im(); break;
+                       case 0xcb: addb_im(); break;
+                       case 0xcc: ldd_im(); break;
+                       case 0xcd: trap(); break; 
+                         /*    case 0xcd: std_im(); break; */
+                       case 0xce: ldu_im(); break;
+                       case 0xcf: flag16_im(); break;
+                       }
+                       break;
+               case 0x0d:
+                       switch(ireg){
+                       case 0xd0: subb_di(); break;
+                       case 0xd1: cmpb_di(); break;
+                       case 0xd2: sbcb_di(); break;
+                       case 0xd3: addd_di(); break;
+                       case 0xd4: andb_di(); break;
+                       case 0xd5: bitb_di(); break;
+                       case 0xd6: ldb_di(); break;
+                       case 0xd7: stb_di(); break;
+                       case 0xd8: eorb_di(); break;
+                       case 0xd9: adcb_di(); break;
+                       case 0xda: orb_di(); break;
+                       case 0xdb: addb_di(); break;
+                       case 0xdc: ldd_di(); break;
+                       case 0xdd: std_di(); break;
+                       case 0xde: ldu_di(); break;
+                       case 0xdf: stu_di(); break;
+                       }
+                       break;
+               case 0x0e:
+                       switch(ireg){
+                       case 0xe0: subb_ix(); break;
+                       case 0xe1: cmpb_ix(); break;
+                       case 0xe2: sbcb_ix(); break;
+                       case 0xe3: addd_ix(); break;
+                       case 0xe4: andb_ix(); break;
+                       case 0xe5: bitb_ix(); break;
+                       case 0xe6: ldb_ix(); break;
+                       case 0xe7: stb_ix(); break;
+                       case 0xe8: eorb_ix(); break;
+                       case 0xe9: adcb_ix(); break;
+                       case 0xea: orb_ix(); break;
+                       case 0xeb: addb_ix(); break;
+                       case 0xec: ldd_ix(); break;
+                       case 0xed: std_ix(); break;
+                       case 0xee: ldu_ix(); break;
+                       case 0xef: stu_ix(); break;
+                       }
+                       break;
+               case 0x0f:
+                       switch(ireg){
+                       case 0xf0: subb_ex(); break;
+                       case 0xf1: cmpb_ex(); break;
+                       case 0xf2: sbcb_ex(); break;
+                       case 0xf3: addd_ex(); break;
+                       case 0xf4: andb_ex(); break;
+                       case 0xf5: bitb_ex(); break;
+                       case 0xf6: ldb_ex(); break;
+                       case 0xf7: stb_ex(); break;
+                       case 0xf8: eorb_ex(); break;
+                       case 0xf9: adcb_ex(); break;
+                       case 0xfa: orb_ex(); break;
+                       case 0xfb: addb_ex(); break;
+                       case 0xfc: ldd_ex(); break;
+                       case 0xfd: std_ex(); break;
+                       case 0xfe: ldu_ex(); break;
+                       case 0xff: stu_ex(); break;
+                       }
+                       break;
        default: //__assume(0);
-              trap(); break;
+               trap(); break;
        }
 };
 
 inline void MC6809::fetch_effective_address()
 {
        uint8 postbyte = ROP_ARG(PCD);
-       PC++;
+       uint8 postbyte_hi = (postbyte & 0xf0) >> 4;
+       uint8 postbyte_lo = postbyte & 0x0f;
+       uint16 reg_post;
        
+       PC++;
+#if 1
+       if(postbyte_hi < 8) { // $00-$7F
+               switch(postbyte_hi) {
+                       case 0:
+                       case 1:
+                               reg_post = X;
+                               break;
+                       case 2:
+                       case 3:
+                               reg_post = Y;
+                               break;
+                       case 4:
+                       case 5:
+                               reg_post = U;
+                               break;
+                       case 6:
+                       case 7:
+                               reg_post = S;
+                               break;
+               }
+               uint16 offset;
+               if((postbyte_hi & 0x01) == 0) { // +
+                       offset = (uint16)postbyte_lo;
+                       EA = reg_post + offset;
+                       icount -= index_cycle_em[postbyte];
+                       return;
+               } else { // -
+                       EA = reg_post - 16 + (uint16)postbyte_lo;
+                       icount -= index_cycle_em[postbyte];
+                       return;
+               }
+               return;
+       } else { // $80-$FF
+         
+               switch(postbyte)  {
+               case 0x80: EA = X; X++; break;
+               case 0x81: EA = X; X += 2; break;
+               case 0x82: X--; EA = X; break;
+               case 0x83: X -= 2; EA = X; break;
+               case 0x84: EA = X; break;
+               case 0x85: EA = X + SIGNED(B); break;
+               case 0x86: EA = X + SIGNED(A); break;
+               case 0x87: EA = X + SIGNED(A); break; /* ILLEGAL*/
+               case 0x88: IMMBYTE(EA); EA = X + SIGNED(EA); break;
+               case 0x89: IMMWORD(EAP); EA += X; break;
+               case 0x8a: EA = PC; EA++; EA |= 0x00ff; break; /* IIError*/
+               case 0x8b: EA = X + D; break;
+               case 0x8c: IMMBYTE(EA); EA = PC + SIGNED(EA); break;
+               case 0x8d: IMMWORD(EAP); EA += PC; break;
+               case 0x8e: EA = 0xffff; break; /* ILLEGAL*/
+               case 0x8f: IMMWORD(EAP); break;
+                 
+               case 0x90: EA = X; X++; EAD = RM16(EAD); break; /* Indirect ,R+ not in my specs */
+               case 0x91: EA = X; X += 2; EAD = RM16(EAD); break;
+               case 0x92: X--; EA = X; EAD = RM16(EAD); break;
+               case 0x93: X -= 2; EA = X; EAD = RM16(EAD); break;
+               case 0x94: EA = X; EAD = RM16(EAD); break;
+               case 0x95: EA = X + SIGNED(B); EAD = RM16(EAD); break;
+               case 0x96: EA = X + SIGNED(A); EAD = RM16(EAD); break;
+               case 0x97: EA = X + SIGNED(A); EAD = RM16(EAD); break; /* ILLEGAL*/
+               case 0x98: IMMBYTE(EA); EA = X + SIGNED(EA); EAD = RM16(EAD); break;
+               case 0x99: IMMWORD(EAP); EA += X; EAD = RM16(EAD); break;
+               case 0x9a: EA = PC; EA++; EA |= 0x00ff; EAD = RM16(EAD); break; /* ILLEGAL*/
+               case 0x9b: EA = X + D; EAD = RM16(EAD); break;
+               case 0x9c: IMMBYTE(EA); EA = PC + SIGNED(EA); EAD = RM16(EAD); break;
+               case 0x9d: IMMWORD(EAP); EA += PC; EAD = RM16(EAD); break;
+               case 0x9e: EA = 0xffff; EAD = RM16(EAD); break; /* ILLEGAL*/
+               case 0x9f: IMMWORD(EAP); EAD = RM16(EAD); break;
+                 
+               case 0xa0: EA = Y; Y++; break;
+               case 0xa1: EA = Y; Y += 2; break;
+               case 0xa2: Y--; EA = Y; break;
+               case 0xa3: Y -= 2; EA = Y; break;
+               case 0xa4: EA = Y; break;
+               case 0xa5: EA = Y + SIGNED(B); break;
+               case 0xa6: EA = Y + SIGNED(A); break;
+               case 0xa7: EA = Y + SIGNED(A); break; /* ILLEGAL*/
+               case 0xa8: IMMBYTE(EA); EA = Y + SIGNED(EA); break;
+               case 0xa9: IMMWORD(EAP); EA += Y; break;
+               case 0xaa: EA = PC; EA++; EA |= 0x00ff; break; /* ILLEGAL*/
+               case 0xab: EA = Y + D; break;
+               case 0xac: IMMBYTE(EA); EA = PC + SIGNED(EA); break;
+               case 0xad: IMMWORD(EAP); EA += PC; break;
+               case 0xae: EA = 0xffff; break; /* ILLEGAL*/
+               case 0xaf: IMMWORD(EAP); break;
+                 
+               case 0xb0: EA = Y; Y++; EAD = RM16(EAD); break;
+               case 0xb1: EA = Y; Y += 2; EAD = RM16(EAD); break;
+               case 0xb2: Y--; EA = Y; EAD = RM16(EAD); break;
+               case 0xb3: Y -= 2; EA = Y; EAD = RM16(EAD); break;
+               case 0xb4: EA = Y; EAD = RM16(EAD); break;
+               case 0xb5: EA = Y + SIGNED(B); EAD = RM16(EAD); break;
+               case 0xb6: EA = Y + SIGNED(A); EAD = RM16(EAD); break;
+               case 0xb7: EA = Y + SIGNED(A); EAD = RM16(EAD); break; /* ILLEGAL*/
+               case 0xb8: IMMBYTE(EA); EA = Y + SIGNED(EA); EAD = RM16(EAD); break;
+               case 0xb9: IMMWORD(EAP); EA += Y; EAD = RM16(EAD); break;
+               case 0xba: EA = PC; EA++; EA |= 0x00ff; EAD = RM16(EAD); break; /* ILLEGAL*/
+               case 0xbb: EA = Y + D; EAD = RM16(EAD); break;
+               case 0xbc: IMMBYTE(EA); EA = PC + SIGNED(EA); EAD = RM16(EAD); break;
+               case 0xbd: IMMWORD(EAP); EA += PC; EAD = RM16(EAD); break;
+               case 0xbe: EA = 0xffff; EAD = RM16(EAD); break; /* ILLEGAL*/
+               case 0xbf: IMMWORD(EAP); EAD = RM16(EAD); break;
+                 
+               case 0xc0: EA = U; U++; break;
+               case 0xc1: EA = U; U += 2; break;
+               case 0xc2: U--; EA = U; break;
+               case 0xc3: U -= 2; EA = U; break;
+               case 0xc4: EA = U; break;
+               case 0xc5: EA = U + SIGNED(B); break;
+               case 0xc6: EA = U + SIGNED(A); break;
+               case 0xc7: EA = U + SIGNED(A); break; /*ILLEGAL*/
+               case 0xc8: IMMBYTE(EA); EA = U + SIGNED(EA); break;
+               case 0xc9: IMMWORD(EAP); EA += U; break;
+               case 0xca: EA = PC; EA++; EA |= 0x00ff; break; /*ILLEGAL*/
+               case 0xcb: EA = U + D; break;
+               case 0xcc: IMMBYTE(EA); EA = PC + SIGNED(EA); break;
+               case 0xcd: IMMWORD(EAP); EA += PC; break;
+               case 0xce: EA = 0xffff; break; /*ILLEGAL*/
+               case 0xcf: IMMWORD(EAP); break;
+                 
+               case 0xd0: EA = U; U++; EAD = RM16(EAD); break;
+               case 0xd1: EA = U; U += 2; EAD = RM16(EAD); break;
+               case 0xd2: U--; EA = U; EAD = RM16(EAD); break;
+               case 0xd3: U -= 2; EA = U; EAD = RM16(EAD); break;
+               case 0xd4: EA = U; EAD = RM16(EAD); break;
+               case 0xd5: EA = U + SIGNED(B); EAD = RM16(EAD); break;
+               case 0xd6: EA = U + SIGNED(A); EAD = RM16(EAD); break;
+               case 0xd7: EA = U + SIGNED(A); EAD = RM16(EAD); break; /*ILLEGAL*/
+               case 0xd8: IMMBYTE(EA); EA = U + SIGNED(EA); EAD = RM16(EAD); break;
+               case 0xd9: IMMWORD(EAP); EA += U; EAD = RM16(EAD); break;
+               case 0xda: EA = PC; EA++; EA |= 0x00ff; EAD=RM16(EAD); break; /*ILLEGAL*/
+               case 0xdb: EA = U + D; EAD = RM16(EAD); break;
+               case 0xdc: IMMBYTE(EA); EA = PC + SIGNED(EA); EAD = RM16(EAD); break;
+               case 0xdd: IMMWORD(EAP); EA += PC; EAD = RM16(EAD); break;
+               case 0xde: EA = 0xffff; EAD = RM16(EAD); break; /*ILLEGAL*/
+               case 0xdf: IMMWORD(EAP); EAD = RM16(EAD); break;
+                 
+               case 0xe0: EA = S; S++; break;
+               case 0xe1: EA = S; S += 2; break;
+               case 0xe2: S--; EA = S; break;
+               case 0xe3: S -= 2; EA = S; break;
+               case 0xe4: EA = S; break;
+               case 0xe5: EA = S + SIGNED(B); break;
+               case 0xe6: EA = S + SIGNED(A); break;
+               case 0xe7: EA = S + SIGNED(A); break; /*ILLEGAL*/
+               case 0xe8: IMMBYTE(EA); EA = S + SIGNED(EA); break;
+               case 0xe9: IMMWORD(EAP); EA += S; break;
+               case 0xea: EA = PC; EA++; EA |= 0x00ff; break; /*ILLEGAL*/
+               case 0xeb: EA = S + D; break;
+               case 0xec: IMMBYTE(EA); EA = PC + SIGNED(EA); break;
+               case 0xed: IMMWORD(EAP); EA += PC; break;
+               case 0xee: EA = 0xffff; break; /*ILLEGAL*/
+               case 0xef: IMMWORD(EAP); break;
+                 
+               case 0xf0: EA = S; S++; EAD = RM16(EAD); break;
+               case 0xf1: EA = S; S += 2; EAD = RM16(EAD); break;
+               case 0xf2: S--; EA = S; EAD = RM16(EAD); break;
+               case 0xf3: S -= 2; EA = S; EAD = RM16(EAD); break;
+               case 0xf4: EA = S; EAD = RM16(EAD); break;
+               case 0xf5: EA = S + SIGNED(B); EAD = RM16(EAD); break;
+               case 0xf6: EA = S + SIGNED(A); EAD = RM16(EAD); break;
+               case 0xf7: EA = S + SIGNED(A); EAD = RM16(EAD); break; /*ILLEGAL*/
+               case 0xf8: IMMBYTE(EA); EA = S + SIGNED(EA); EAD = RM16(EAD); break;
+               case 0xf9: IMMWORD(EAP); EA += S; EAD = RM16(EAD); break;
+               case 0xfa: EA = PC; EA++; EA |= 0x00ff; EAD = RM16(EAD); break; /*ILLEGAL*/
+               case 0xfb: EA = S + D; EAD = RM16(EAD); break;
+               case 0xfc: IMMBYTE(EA); EA = PC + SIGNED(EA); EAD = RM16(EAD); break;
+               case 0xfd: IMMWORD(EAP); EA += PC; EAD = RM16(EAD); break;
+               case 0xfe: EA = 0xffff; EAD = RM16(EAD); break; /*ILLEGAL*/
+               case 0xff: IMMWORD(EAP); EAD = RM16(EAD); break;
+               default: //__assume(0);
+                       EA = X; break;
+               }
+               icount -= index_cycle_em[postbyte];
+               return;
+       }
+#else    
        switch(postbyte) {
        case 0x00: EA = X; break;
        case 0x01: EA = X + 1; break;
@@ -983,15 +1214,16 @@ inline void MC6809::fetch_effective_address()
                 EA = X; break;
        }
        icount -= index_cycle_em[postbyte];
+#endif
 }
 
-void MC6809::illegal()
+inline void MC6809::illegal()
 {
        //logerror("MC6809: illegal opcode at %04x\n", PC);
 }
 
 /* $00 NEG direct ?**** */
-void MC6809::neg_di()
+inline void MC6809::neg_di()
 {
        uint16 r, t;
        DIRBYTE(t);
@@ -1006,7 +1238,7 @@ void MC6809::neg_di()
 /* $02 ILLEGAL, same as $03 */
 
 /* $03 COM direct -**01 */
-void MC6809::com_di()
+inline void MC6809::com_di()
 {
        uint8 t;
        DIRBYTE(t);
@@ -1017,7 +1249,7 @@ void MC6809::com_di()
        WM(EAD, t);
 }
 /* $02 NGC Direct (Undefined) */
-void MC6809::ngc_di(void)
+inline void MC6809::ngc_di(void)
 {
        if ((CC & CC_C) == 0) {
                neg_di();
@@ -1027,7 +1259,7 @@ void MC6809::ngc_di(void)
 }
 
 /* $04 LSR direct -0*-* */
-void MC6809::lsr_di()
+inline void MC6809::lsr_di()
 {
        uint8 t;
        DIRBYTE(t);
@@ -1041,7 +1273,7 @@ void MC6809::lsr_di()
 /* $05 ILLEGAL, same as $04 */
 
 /* $06 ROR direct -**-* */
-void MC6809::ror_di()
+inline void MC6809::ror_di()
 {
        uint8 t, r;
        DIRBYTE(t);
@@ -1054,7 +1286,7 @@ void MC6809::ror_di()
 }
 
 /* $07 ASR direct ?**-* */
-void MC6809::asr_di()
+inline void MC6809::asr_di()
 {
        uint8 t;
        DIRBYTE(t);
@@ -1066,7 +1298,7 @@ void MC6809::asr_di()
 }
 
 /* $08 ASL direct ?**** */
-void MC6809::asl_di()
+inline void MC6809::asl_di()
 {
        uint16 t, r;
        DIRBYTE(t);
@@ -1077,7 +1309,7 @@ void MC6809::asl_di()
 }
 
 /* $09 ROL direct -**** */
-void MC6809::rol_di()
+inline void MC6809::rol_di()
 {
        uint16 t, r;
        DIRBYTE(t);
@@ -1088,7 +1320,7 @@ void MC6809::rol_di()
 }
 
 /* $0A DEC direct -***- */
-void MC6809::dec_di()
+inline void MC6809::dec_di()
 {
        uint8 t;
        DIRBYTE(t);
@@ -1099,7 +1331,7 @@ void MC6809::dec_di()
 }
 
 /* $0B DCC direct */
-void MC6809::dcc_di(void)
+inline void MC6809::dcc_di(void)
 {
        BYTE t, s;
        DIRBYTE(t);
@@ -1116,7 +1348,7 @@ void MC6809::dcc_di(void)
 
 
 /* $OC INC direct -***- */
-void MC6809::inc_di()
+inline void MC6809::inc_di()
 {
        uint8 t;
        DIRBYTE(t);
@@ -1127,7 +1359,7 @@ void MC6809::inc_di()
 }
 
 /* $OD TST direct -**0- */
-void MC6809::tst_di()
+inline void MC6809::tst_di()
 {
        uint8 t;
        DIRBYTE(t);
@@ -1136,14 +1368,14 @@ void MC6809::tst_di()
 }
 
 /* $0E JMP direct ----- */
-void MC6809::jmp_di()
+inline void MC6809::jmp_di()
 {
        DIRECT;
        PCD = EAD;
 }
 
 /* $0F CLR direct -0100 */
-void MC6809::clr_di()
+inline void MC6809::clr_di()
 {
        DIRECT;
        (void)RM(EAD);
@@ -1157,13 +1389,13 @@ void MC6809::clr_di()
 /* $11 FLAG */
 
 /* $12 NOP inherent ----- */
-void MC6809::nop()
+inline void MC6809::nop()
 {
        ;
 }
 
 /* $13 SYNC inherent ----- */
-void MC6809::sync()
+inline void MC6809::sync()
 {
        /* SYNC stops processing instructions until an interrupt request happens. */
        /* This doesn't require the corresponding interrupt to be enabled: if it  */
@@ -1193,7 +1425,7 @@ void MC6809::sync()
 }
 
 /* $14 trap(HALT) */
-void MC6809::trap()
+inline void MC6809::trap()
 {
        int_state |= MC6809_HALT;       // HALTフラグ
        // Debug: トラップ要因
@@ -1204,14 +1436,14 @@ void MC6809::trap()
 /* $15 trap */
 
 /* $16 LBRA relative ----- */
-void MC6809::lbra()
+inline void MC6809::lbra()
 {
        IMMWORD(EAP);
        PC += EA;
 }
 
 /* $17 LBSR relative ----- */
-void MC6809::lbsr()
+inline void MC6809::lbsr()
 {
        IMMWORD(EAP);
        PUSHWORD(pPC);
@@ -1220,7 +1452,7 @@ void MC6809::lbsr()
 
 /* $18 ASLCC */
 
-void MC6809::aslcc_in()
+inline void MC6809::aslcc_in()
 {
        BYTE cc = CC;
        if ((cc & CC_Z) != 0x00)        //20100824 Fix
@@ -1233,7 +1465,7 @@ void MC6809::aslcc_in()
 }
 
 /* $19 DAA inherent (A) -**0* */
-void MC6809::daa()
+inline void MC6809::daa()
 {
        uint8 msn, lsn;
        uint16 t, cf = 0;
@@ -1248,7 +1480,7 @@ void MC6809::daa()
 }
 
 /* $1A ORCC immediate ##### */
-void MC6809::orcc()
+inline void MC6809::orcc()
 {
        uint8 t;
        IMMBYTE(t);
@@ -1258,7 +1490,7 @@ void MC6809::orcc()
 /* $1B ILLEGAL */
 
 /* $1C ANDCC immediate ##### */
-void MC6809::andcc()
+inline void MC6809::andcc()
 {
        uint8 t;
        IMMBYTE(t);
@@ -1266,7 +1498,7 @@ void MC6809::andcc()
 }
 
 /* $1D SEX inherent -**-- */
-void MC6809::sex()
+inline void MC6809::sex()
 {
        uint16 t;
        t = SIGNED(B);
@@ -1277,7 +1509,7 @@ void MC6809::sex()
 }
 
 /* $1E EXG inherent ----- */
-void MC6809::exg()
+inline void MC6809::exg()
 {
        uint16 t1, t2;
        uint8 tb;
@@ -1338,7 +1570,7 @@ void MC6809::exg()
 }      
 
 /* $1F TFR inherent ----- */
-void MC6809::tfr()
+inline void MC6809::tfr()
 {
        uint8 tb;
        uint16 t;
@@ -1373,7 +1605,7 @@ void MC6809::tfr()
 }
 
 /* $20 BRA relative ----- */
-void MC6809::bra()
+inline void MC6809::bra()
 {
        uint8 t;
        IMMBYTE(t);
@@ -1381,188 +1613,188 @@ void MC6809::bra()
 }
 
 /* $21 BRN relative ----- */
-void MC6809::brn()
+inline void MC6809::brn()
 {
        uint8 t;
        IMMBYTE(t);
 }
 
 /* $1021 LBRN relative ----- */
-void MC6809::lbrn()
+inline void MC6809::lbrn()
 {
        IMMWORD(EAP);
 }
 
 /* $22 BHI relative ----- */
-void MC6809::bhi()
+inline void MC6809::bhi()
 {
        BRANCH(!(CC & (CC_Z | CC_C)));
 }
 
 /* $1022 LBHI relative ----- */
-void MC6809::lbhi()
+inline void MC6809::lbhi()
 {
        LBRANCH(!(CC & (CC_Z | CC_C)));
 }
 
 /* $23 BLS relative ----- */
-void MC6809::bls()
+inline void MC6809::bls()
 {
        BRANCH((CC & (CC_Z | CC_C)));
 }
 
 /* $1023 LBLS relative ----- */
-void MC6809::lbls()
+inline void MC6809::lbls()
 {
        LBRANCH((CC & (CC_Z | CC_C)));
 }
 
 /* $24 BCC relative ----- */
-void MC6809::bcc()
+inline void MC6809::bcc()
 {
        BRANCH(!(CC & CC_C));
 }
 
 /* $1024 LBCC relative ----- */
-void MC6809::lbcc()
+inline void MC6809::lbcc()
 {
        LBRANCH(!(CC & CC_C));
 }
 
 /* $25 BCS relative ----- */
-void MC6809::bcs()
+inline void MC6809::bcs()
 {
        BRANCH((CC & CC_C));
 }
 
 /* $1025 LBCS relative ----- */
-void MC6809::lbcs()
+inline void MC6809::lbcs()
 {
        LBRANCH((CC & CC_C));
 }
 
 /* $26 BNE relative ----- */
-void MC6809::bne()
+inline void MC6809::bne()
 {
        BRANCH(!(CC & CC_Z));
 }
 
 /* $1026 LBNE relative ----- */
-void MC6809::lbne()
+inline void MC6809::lbne()
 {
        LBRANCH(!(CC & CC_Z));
 }
 
 /* $27 BEQ relative ----- */
-void MC6809::beq()
+inline void MC6809::beq()
 {
        BRANCH((CC & CC_Z));
 }
 
 /* $1027 LBEQ relative ----- */
-void MC6809::lbeq()
+inline void MC6809::lbeq()
 {
        LBRANCH((CC & CC_Z));
 }
 
 /* $28 BVC relative ----- */
-void MC6809::bvc()
+inline void MC6809::bvc()
 {
        BRANCH(!(CC & CC_V));
 }
 
 /* $1028 LBVC relative ----- */
-void MC6809::lbvc()
+inline void MC6809::lbvc()
 {
        LBRANCH(!(CC & CC_V));
 }
 
 /* $29 BVS relative ----- */
-void MC6809::bvs()
+inline void MC6809::bvs()
 {
        BRANCH((CC & CC_V));
 }
 
 /* $1029 LBVS relative ----- */
-void MC6809::lbvs()
+inline void MC6809::lbvs()
 {
        LBRANCH((CC & CC_V));
 }
 
 /* $2A BPL relative ----- */
-void MC6809::bpl()
+inline void MC6809::bpl()
 {
        BRANCH(!(CC & CC_N));
 }
 
 /* $102A LBPL relative ----- */
-void MC6809::lbpl()
+inline void MC6809::lbpl()
 {
        LBRANCH(!(CC & CC_N));
 }
 
 /* $2B BMI relative ----- */
-void MC6809::bmi()
+inline void MC6809::bmi()
 {
        BRANCH((CC & CC_N));
 }
 
 /* $102B LBMI relative ----- */
-void MC6809::lbmi()
+inline void MC6809::lbmi()
 {
        LBRANCH((CC & CC_N));
 }
 
 /* $2C BGE relative ----- */
-void MC6809::bge()
+inline void MC6809::bge()
 {
        BRANCH(!NXORV);
 }
 
 /* $102C LBGE relative ----- */
-void MC6809::lbge()
+inline void MC6809::lbge()
 {
        LBRANCH(!NXORV);
 }
 
 /* $2D BLT relative ----- */
-void MC6809::blt()
+inline void MC6809::blt()
 {
        BRANCH(NXORV);
 }
 
 /* $102D LBLT relative ----- */
-void MC6809::lblt()
+inline void MC6809::lblt()
 {
        LBRANCH(NXORV);
 }
 
 /* $2E BGT relative ----- */
-void MC6809::bgt()
+inline void MC6809::bgt()
 {
        BRANCH(!(NXORV || (CC & CC_Z)));
 }
 
 /* $102E LBGT relative ----- */
-void MC6809::lbgt()
+inline void MC6809::lbgt()
 {
        LBRANCH(!(NXORV || (CC & CC_Z)));
 }
 
 /* $2F BLE relative ----- */
-void MC6809::ble()
+inline void MC6809::ble()
 {
        BRANCH((NXORV || (CC & CC_Z)));
 }
 
 /* $102F LBLE relative ----- */
-void MC6809::lble()
+inline void MC6809::lble()
 {
        LBRANCH((NXORV || (CC & CC_Z)));
 }
 
 /* $30 LEAX indexed --*-- */
-void MC6809::leax()
+inline void MC6809::leax()
 {
        fetch_effective_address();
        X = EA;
@@ -1571,7 +1803,7 @@ void MC6809::leax()
 }
 
 /* $31 LEAY indexed --*-- */
-void MC6809::leay()
+inline void MC6809::leay()
 {
        fetch_effective_address();
        Y = EA;
@@ -1580,7 +1812,7 @@ void MC6809::leay()
 }
 
 /* $32 LEAS indexed ----- */
-void MC6809::leas()
+inline void MC6809::leas()
 {
        fetch_effective_address();
        S = EA;
@@ -1588,14 +1820,14 @@ void MC6809::leas()
 }
 
 /* $33 LEAU indexed ----- */
-void MC6809::leau()
+inline void MC6809::leau()
 {
        fetch_effective_address();
        U = EA;
 }
 
 /* $34 PSHS inherent ----- */
-void MC6809::pshs()
+inline void MC6809::pshs()
 {
        uint8 t;
        IMMBYTE(t);
@@ -1610,7 +1842,7 @@ void MC6809::pshs()
 }
 
 /* 35 PULS inherent ----- */
-void MC6809::puls()
+inline void MC6809::puls()
 {
        uint8 t;
        IMMBYTE(t);
@@ -1625,7 +1857,7 @@ void MC6809::puls()
 }
 
 /* $36 PSHU inherent ----- */
-void MC6809::pshu()
+inline void MC6809::pshu()
 {
        uint8 t;
        IMMBYTE(t);
@@ -1640,7 +1872,7 @@ void MC6809::pshu()
 }
 
 /* 37 PULU inherent ----- */
-void MC6809::pulu()
+inline void MC6809::pulu()
 {
        uint8 t;
        IMMBYTE(t);
@@ -1657,19 +1889,19 @@ void MC6809::pulu()
 /* $38 ILLEGAL */
 
 /* $39 RTS inherent ----- */
-void MC6809::rts()
+inline void MC6809::rts()
 {
        PULLWORD(PCD);
 }
 
 /* $3A ABX inherent ----- */
-void MC6809::abx()
+inline void MC6809::abx()
 {
        X += B;
 }
 
 /* $3B RTI inherent ##### */
-void MC6809::rti()
+inline void MC6809::rti()
 {
        uint8 t;
        PULLBYTE(CC);
@@ -1687,7 +1919,7 @@ void MC6809::rti()
 }
 
 /* $3C CWAI inherent ----1 */
-void MC6809::cwai()
+inline void MC6809::cwai()
 {
        uint8 t;
        if ((int_state & MC6809_CWAI_IN) != 0) {        // FIX 20130417
@@ -1717,7 +1949,7 @@ void MC6809::cwai()
 }
 
 /* $3D MUL inherent --*-@ */
-void MC6809::mul()
+inline void MC6809::mul()
 {
        uint16 t;
        t = A * B;
@@ -1730,13 +1962,13 @@ void MC6809::mul()
 }
 
 /* $3E RST */
-void MC6809::rst()
+inline void MC6809::rst()
 {
        reset();
 }
 
 /* $3F SWI (SWI2 SWI3) absolute indirect ----- */
-void MC6809::swi()
+inline void MC6809::swi()
 {
        CC |= CC_E;                     /* HJB 980225: save entire state */
        PUSHWORD(pPC);
@@ -1752,7 +1984,7 @@ void MC6809::swi()
 }
 
 /* $103F SWI2 absolute indirect ----- */
-void MC6809::swi2()
+inline void MC6809::swi2()
 {
        CC |= CC_E;                     /* HJB 980225: save entire state */
        PUSHWORD(pPC);
@@ -1767,7 +1999,7 @@ void MC6809::swi2()
 }
 
 /* $113F SWI3 absolute indirect ----- */
-void MC6809::swi3()
+inline void MC6809::swi3()
 {
        CC |= CC_E;                     /* HJB 980225: save entire state */
        PUSHWORD(pPC);
@@ -1782,7 +2014,7 @@ void MC6809::swi3()
 }
 
 /* $40 NEGA inherent ?**** */
-void MC6809::nega()
+inline void MC6809::nega()
 {
        uint16 r;
        r = -A;
@@ -1794,7 +2026,7 @@ void MC6809::nega()
 /* $41 ILLEGAL, same as $40 */
 
 /* $42 NGCA */
-void MC6809::ngca()
+inline void MC6809::ngca()
 {
        if ((CC & CC_C) == 0) {
                nega();
@@ -1804,7 +2036,7 @@ void MC6809::ngca()
 }
 
 /* $43 COMA inherent -**01 */
-void MC6809::coma()
+inline void MC6809::coma()
 {
        A = ~A;
        CLR_NZV;
@@ -1813,7 +2045,7 @@ void MC6809::coma()
 }
 
 /* $44 LSRA inherent -0*-* */
-void MC6809::lsra()
+inline void MC6809::lsra()
 {
        CLR_NZC;
        CC |= (A & CC_C);
@@ -1824,7 +2056,7 @@ void MC6809::lsra()
 /* $45 ILLEGAL, same as $44 */
 
 /* $46 RORA inherent -**-* */
-void MC6809::rora()
+inline void MC6809::rora()
 {
        uint8 r;
        uint8 t;
@@ -1838,7 +2070,7 @@ void MC6809::rora()
 }
 
 /* $47 ASRA inherent ?**-* */
-void MC6809::asra()
+inline void MC6809::asra()
 {
        CLR_NZC;
        CC |= (A & CC_C);
@@ -1847,7 +2079,7 @@ void MC6809::asra()
 }
 
 /* $48 ASLA inherent ?**** */
-void MC6809::asla()
+inline void MC6809::asla()
 {
        uint16 r;
        r = A << 1;
@@ -1857,7 +2089,7 @@ void MC6809::asla()
 }
 
 /* $49 ROLA inherent -**** */
-void MC6809::rola()
+inline void MC6809::rola()
 {
        uint16 t, r;
        t = A & 0x00ff;
@@ -1867,7 +2099,7 @@ void MC6809::rola()
 }
 
 /* $4A DECA inherent -***- */
-void MC6809::deca()
+inline void MC6809::deca()
 {
        --A;
        CLR_NZV;
@@ -1875,7 +2107,7 @@ void MC6809::deca()
 }
 
 /* $4B DCCA */
-void MC6809::dcca()
+inline void MC6809::dcca()
 {
        uint8 s;
 //  BYTE t = A;
@@ -1890,7 +2122,7 @@ void MC6809::dcca()
 }
 
 /* $4C INCA inherent -***- */
-void MC6809::inca()
+inline void MC6809::inca()
 {
        ++A;
        CLR_NZV;
@@ -1898,14 +2130,14 @@ void MC6809::inca()
 }
 
 /* $4D TSTA inherent -**0- */
-void MC6809::tsta()
+inline void MC6809::tsta()
 {
        CLR_NZV;
        SET_NZ8(A);
 }
 
 /* $4E CLCA */
-void MC6809::clca()
+inline void MC6809::clca()
 {
        A = 0;
        CLR_NZV;
@@ -1914,14 +2146,14 @@ void MC6809::clca()
 }
 
 /* $4F CLRA inherent -0100 */
-void MC6809::clra()
+inline void MC6809::clra()
 {
        A = 0;
        CLR_NZVC; SEZ;
 }
 
 /* $50 NEGB inherent ?**** */
-void MC6809::negb()
+inline void MC6809::negb()
 {
        uint16 r;
        r = -B;
@@ -1933,7 +2165,7 @@ void MC6809::negb()
 /* $51 ILLEGAL, same as $50 */
 
 /* $52 NGCB */
-void MC6809::ngcb()
+inline void MC6809::ngcb()
 {
        if ((CC & CC_C) == 0) {
                negb();
@@ -1943,7 +2175,7 @@ void MC6809::ngcb()
 }
 
 /* $53 COMB inherent -**01 */
-void MC6809::comb()
+inline void MC6809::comb()
 {
        B = ~B;
        CLR_NZV;
@@ -1952,7 +2184,7 @@ void MC6809::comb()
 }
 
 /* $54 LSRB inherent -0*-* */
-void MC6809::lsrb()
+inline void MC6809::lsrb()
 {
        CLR_NZC;
        CC |= (B & CC_C);
@@ -1963,7 +2195,7 @@ void MC6809::lsrb()
 /* $55 ILLEGAL, same as $54 */
 
 /* $56 RORB inherent -**-* */
-void MC6809::rorb()
+inline void MC6809::rorb()
 {
        uint8 r;
        r = (CC & CC_C) << 7;
@@ -1975,7 +2207,7 @@ void MC6809::rorb()
 }
 
 /* $57 ASRB inherent ?**-* */
-void MC6809::asrb()
+inline void MC6809::asrb()
 {
        CLR_NZC;
        CC |= (B & CC_C);
@@ -1984,7 +2216,7 @@ void MC6809::asrb()
 }
 
 /* $58 ASLB inherent ?**** */
-void MC6809::aslb()
+inline void MC6809::aslb()
 {
        uint16 r;
        r = B << 1;
@@ -1994,7 +2226,7 @@ void MC6809::aslb()
 }
 
 /* $59 ROLB inherent -**** */
-void MC6809::rolb()
+inline void MC6809::rolb()
 {
        uint16 t, r;
        t = B;
@@ -2006,7 +2238,7 @@ void MC6809::rolb()
 }
 
 /* $5A DECB inherent -***- */
-void MC6809::decb()
+inline void MC6809::decb()
 {
        --B;
        CLR_NZV;
@@ -2014,7 +2246,7 @@ void MC6809::decb()
 }
 
 /* $5B DCCB */
-void MC6809::dccb()
+inline void MC6809::dccb()
 {
        BYTE s;
        --B;
@@ -2028,7 +2260,7 @@ void MC6809::dccb()
 }
 
 /* $5C INCB inherent -***- */
-void MC6809::incb()
+inline void MC6809::incb()
 {
        ++B;
        CLR_NZV;
@@ -2036,14 +2268,14 @@ void MC6809::incb()
 }
 
 /* $5D TSTB inherent -**0- */
-void MC6809::tstb()
+inline void MC6809::tstb()
 {
        CLR_NZV;
        SET_NZ8(B);
 }
 
 /* $5E CLCB */
-void MC6809::clcb()
+inline void MC6809::clcb()
 {
        B = 0;
        CLR_NZV;
@@ -2052,14 +2284,14 @@ void MC6809::clcb()
 }
 
 /* $5F CLRB inherent -0100 */
-void MC6809::clrb()
+inline void MC6809::clrb()
 {
        B = 0;
        CLR_NZVC; SEZ;
 }
 
 /* $60 NEG indexed ?**** */
-void MC6809::neg_ix()
+inline void MC6809::neg_ix()
 {
        uint16 r, t;
        fetch_effective_address();
@@ -2073,7 +2305,7 @@ void MC6809::neg_ix()
 /* $61 ILLEGAL, same as $60 */
 
 /* $62 NGC_IX */
-void MC6809::ngc_ix()
+inline void MC6809::ngc_ix()
 {
        if ((CC & CC_C) == 0) {
                neg_ix();
@@ -2083,7 +2315,7 @@ void MC6809::ngc_ix()
 }
 
 /* $63 COM indexed -**01 */
-void MC6809::com_ix()
+inline void MC6809::com_ix()
 {
        uint8 t;
        fetch_effective_address();
@@ -2095,7 +2327,7 @@ void MC6809::com_ix()
 }
 
 /* $64 LSR indexed -0*-* */
-void MC6809::lsr_ix()
+inline void MC6809::lsr_ix()
 {
        uint8 t;
        fetch_effective_address();
@@ -2109,7 +2341,7 @@ void MC6809::lsr_ix()
 /* $65 ILLEGAL, same as $64 */
 
 /* $66 ROR indexed -**-* */
-void MC6809::ror_ix()
+inline void MC6809::ror_ix()
 {
        uint8 t, r;
        fetch_effective_address();
@@ -2122,7 +2354,7 @@ void MC6809::ror_ix()
 }
 
 /* $67 ASR indexed ?**-* */
-void MC6809::asr_ix()
+inline void MC6809::asr_ix()
 {
        uint8 t;
        fetch_effective_address();
@@ -2135,7 +2367,7 @@ void MC6809::asr_ix()
 }
 
 /* $68 ASL indexed ?**** */
-void MC6809::asl_ix()
+inline void MC6809::asl_ix()
 {
        uint16 t, r;
        fetch_effective_address();
@@ -2147,7 +2379,7 @@ void MC6809::asl_ix()
 }
 
 /* $69 ROL indexed -**** */
-void MC6809::rol_ix()
+inline void MC6809::rol_ix()
 {
        uint16 t, r;
        fetch_effective_address();
@@ -2160,7 +2392,7 @@ void MC6809::rol_ix()
 }
 
 /* $6A DEC indexed -***- */
-void MC6809::dec_ix()
+inline void MC6809::dec_ix()
 {
        uint8 t;
        fetch_effective_address();
@@ -2170,7 +2402,7 @@ void MC6809::dec_ix()
 }
 
 /* $6B ILLEGAL, same as $6A */
-void MC6809::dcc_ix()
+inline void MC6809::dcc_ix()
 {
        BYTE t, s;
        fetch_effective_address();
@@ -2186,7 +2418,7 @@ void MC6809::dcc_ix()
 }
 
 /* $6C INC indexed -***- */
-void MC6809::inc_ix()
+inline void MC6809::inc_ix()
 {
        uint8 t;
        fetch_effective_address();
@@ -2196,7 +2428,7 @@ void MC6809::inc_ix()
 }
 
 /* $6D TST indexed -**0- */
-void MC6809::tst_ix()
+inline void MC6809::tst_ix()
 {
        uint8 t;
        fetch_effective_address();
@@ -2206,14 +2438,14 @@ void MC6809::tst_ix()
 }
 
 /* $6E JMP indexed ----- */
-void MC6809::jmp_ix()
+inline void MC6809::jmp_ix()
 {
        fetch_effective_address();
        PCD = EAD;
 }
 
 /* $6F CLR indexed -0100 */
-void MC6809::clr_ix()
+inline void MC6809::clr_ix()
 {
        fetch_effective_address();
        (void)RM(EAD);
@@ -2222,7 +2454,7 @@ void MC6809::clr_ix()
 }
 
 /* $70 NEG extended ?**** */
-void MC6809::neg_ex()
+inline void MC6809::neg_ex()
 {
        uint16 r, t;
        EXTBYTE(t); r = -t;
@@ -2233,7 +2465,7 @@ void MC6809::neg_ex()
 /* $71 ILLEGAL, same as $70 */
 
 /* $72 NGC extended */
-void MC6809::ngc_ex()
+inline void MC6809::ngc_ex()
 {
        if ((CC & CC_C) == 0) {
                neg_ex();
@@ -2244,7 +2476,7 @@ void MC6809::ngc_ex()
 
 
 /* $73 COM extended -**01 */
-void MC6809::com_ex()
+inline void MC6809::com_ex()
 {
        uint8 t;
        EXTBYTE(t); t = ~t;
@@ -2253,7 +2485,7 @@ void MC6809::com_ex()
 }
 
 /* $74 LSR extended -0*-* */
-void MC6809::lsr_ex()
+inline void MC6809::lsr_ex()
 {
        uint8 t;
        EXTBYTE(t); CLR_NZC; CC |= (t & CC_C);
@@ -2264,7 +2496,7 @@ void MC6809::lsr_ex()
 /* $75 ILLEGAL, same as $74 */
 
 /* $76 ROR extended -**-* */
-void MC6809::ror_ex()
+inline void MC6809::ror_ex()
 {
        uint8 t, r;
        EXTBYTE(t); r = (CC & CC_C) << 7;
@@ -2274,7 +2506,7 @@ void MC6809::ror_ex()
 }
 
 /* $77 ASR extended ?**-* */
-void MC6809::asr_ex()
+inline void MC6809::asr_ex()
 {
        uint8 t;
        EXTBYTE(t); CLR_NZC; CC |= (t & CC_C);
@@ -2284,7 +2516,7 @@ void MC6809::asr_ex()
 }
 
 /* $78 ASL extended ?**** */
-void MC6809::asl_ex()
+inline void MC6809::asl_ex()
 {
        uint16 t, r;
        EXTBYTE(t); r = t << 1;
@@ -2293,7 +2525,7 @@ void MC6809::asl_ex()
 }
 
 /* $79 ROL extended -**** */
-void MC6809::rol_ex()
+inline void MC6809::rol_ex()
 {
        uint16 t, r;
        EXTBYTE(t); r = (CC & CC_C) | (t << 1);
@@ -2302,7 +2534,7 @@ void MC6809::rol_ex()
 }
 
 /* $7A DEC extended -***- */
-void MC6809::dec_ex()
+inline void MC6809::dec_ex()
 {
        uint8 t;
        EXTBYTE(t); --t;
@@ -2311,7 +2543,7 @@ void MC6809::dec_ex()
 }
 
 /* $7B DCC extended */
-void MC6809::dcc_ex()
+inline void MC6809::dcc_ex()
 {
        BYTE t, s;
        EXTBYTE(t);
@@ -2327,7 +2559,7 @@ void MC6809::dcc_ex()
 }
 
 /* $7C INC extended -***- */
-void MC6809::inc_ex()
+inline void MC6809::inc_ex()
 {
        uint8 t;
        EXTBYTE(t); ++t;
@@ -2336,21 +2568,21 @@ void MC6809::inc_ex()
 }
 
 /* $7D TST extended -**0- */
-void MC6809::tst_ex()
+inline void MC6809::tst_ex()
 {
        uint8 t;
        EXTBYTE(t); CLR_NZV; SET_NZ8(t);
 }
 
 /* $7E JMP extended ----- */
-void MC6809::jmp_ex()
+inline void MC6809::jmp_ex()
 {
        EXTENDED;
        PCD = EAD;
 }
 
 /* $7F CLR extended -0100 */
-void MC6809::clr_ex()
+inline void MC6809::clr_ex()
 {
        EXTENDED;
        (void)RM(EAD);
@@ -2359,7 +2591,7 @@ void MC6809::clr_ex()
 }
 
 /* $80 SUBA immediate ?**** */
-void MC6809::suba_im()
+inline void MC6809::suba_im()
 {
        uint16 t, r;
        IMMBYTE(t);
@@ -2370,7 +2602,7 @@ void MC6809::suba_im()
 }
 
 /* $81 CMPA immediate ?**** */
-void MC6809::cmpa_im()
+inline void MC6809::cmpa_im()
 {
        uint16 t, r;
        IMMBYTE(t);
@@ -2380,7 +2612,7 @@ void MC6809::cmpa_im()
 }
 
 /* $82 SBCA immediate ?**** */
-void MC6809::sbca_im()
+inline void MC6809::sbca_im()
 {
        uint16 t, r;
        IMMBYTE(t);
@@ -2391,7 +2623,7 @@ void MC6809::sbca_im()
 }
 
 /* $83 SUBD (CMPD CMPU) immediate -**** */
-void MC6809::subd_im()
+inline void MC6809::subd_im()
 {
        uint32 r, d;
        pair b;
@@ -2404,7 +2636,7 @@ void MC6809::subd_im()
 }
 
 /* $1083 CMPD immediate -**** */
-void MC6809::cmpd_im()
+inline void MC6809::cmpd_im()
 {
        uint32 r, d;
        pair b;
@@ -2416,7 +2648,7 @@ void MC6809::cmpd_im()
 }
 
 /* $1183 CMPU immediate -**** */
-void MC6809::cmpu_im()
+inline void MC6809::cmpu_im()
 {
        uint32 r, d;
        pair b;
@@ -2428,7 +2660,7 @@ void MC6809::cmpu_im()
 }
 
 /* $84 ANDA immediate -**0- */
-void MC6809::anda_im()
+inline void MC6809::anda_im()
 {
        uint8 t;
        IMMBYTE(t);
@@ -2438,7 +2670,7 @@ void MC6809::anda_im()
 }
 
 /* $85 BITA immediate -**0- */
-void MC6809::bita_im()
+inline void MC6809::bita_im()
 {
        uint8 t, r;
        IMMBYTE(t);
@@ -2448,7 +2680,7 @@ void MC6809::bita_im()
 }
 
 /* $86 LDA immediate -**0- */
-void MC6809::lda_im()
+inline void MC6809::lda_im()
 {
        IMMBYTE(A);
        CLR_NZV;
@@ -2458,7 +2690,7 @@ void MC6809::lda_im()
 /* is this a legal instruction? */
 #if 0
 /* $87 STA immediate -**0-  in not used*/
-void MC6809::sta_im()
+inline void MC6809::sta_im()
 {
        CLR_NZV;
        SET_NZ8(A);
@@ -2469,7 +2701,7 @@ void MC6809::sta_im()
 /*
  * $87 , $C7: FLAG8
  */
-void MC6809::flag8_im()
+inline void MC6809::flag8_im()
 {
        // 20111117
        BYTE t;
@@ -2480,7 +2712,7 @@ void MC6809::flag8_im()
 #endif
 
 /* $88 EORA immediate -**0- */
-void MC6809::eora_im()
+inline void MC6809::eora_im()
 {
        uint8 t;
        IMMBYTE(t);
@@ -2490,7 +2722,7 @@ void MC6809::eora_im()
 }
 
 /* $89 ADCA immediate ***** */
-void MC6809::adca_im()
+inline void MC6809::adca_im()
 {
        uint16 t, r;
        IMMBYTE(t);
@@ -2502,7 +2734,7 @@ void MC6809::adca_im()
 }
 
 /* $8A ORA immediate -**0- */
-void MC6809::ora_im()
+inline void MC6809::ora_im()
 {
        uint8 t;
        IMMBYTE(t);
@@ -2512,7 +2744,7 @@ void MC6809::ora_im()
 }
 
 /* $8B ADDA immediate ***** */
-void MC6809::adda_im()
+inline void MC6809::adda_im()
 {
        uint16 t, r;
        IMMBYTE(t);
@@ -2524,7 +2756,7 @@ void MC6809::adda_im()
 }
 
 /* $8C CMPX (CMPY CMPS) immediate -**** */
-void MC6809::cmpx_im()
+inline void MC6809::cmpx_im()
 {
        uint32 r, d;
        pair b;
@@ -2536,7 +2768,7 @@ void MC6809::cmpx_im()
 }
 
 /* $108C CMPY immediate -**** */
-void MC6809::cmpy_im()
+inline void MC6809::cmpy_im()
 {
        uint32 r, d;
        pair b;
@@ -2548,7 +2780,7 @@ void MC6809::cmpy_im()
 }
 
 /* $118C CMPS immediate -**** */
-void MC6809::cmps_im()
+inline void MC6809::cmps_im()
 {
        uint32 r, d;
        pair b;
@@ -2560,7 +2792,7 @@ void MC6809::cmps_im()
 }
 
 /* $8D BSR ----- */
-void MC6809::bsr()
+inline void MC6809::bsr()
 {
        uint8 t;
        IMMBYTE(t);
@@ -2569,7 +2801,7 @@ void MC6809::bsr()
 }
 
 /* $8E LDX (LDY) immediate -**0- */
-void MC6809::ldx_im()
+inline void MC6809::ldx_im()
 {
        IMMWORD(pX);
        CLR_NZV;
@@ -2577,7 +2809,7 @@ void MC6809::ldx_im()
 }
 
 /* $108E LDY immediate -**0- */
-void MC6809::ldy_im()
+inline void MC6809::ldy_im()
 {
        IMMWORD(pY);
        CLR_NZV;
@@ -2587,7 +2819,7 @@ void MC6809::ldy_im()
 /* is this a legal instruction? */
 #if 0
 /* $8F STX (STY) immediate -**0- */
-void MC6809::stx_im()
+inline void MC6809::stx_im()
 {
        CLR_NZV;
        SET_NZ16(X);
@@ -2598,7 +2830,7 @@ void MC6809::stx_im()
 /*
  * $8F , $CF: FLAG16
  */
-void MC6809::flag16_im()
+inline void MC6809::flag16_im()
 {
        pair t;
        IMMWORD(t);
@@ -2608,7 +2840,7 @@ void MC6809::flag16_im()
 #endif
 /* is this a legal instruction? */
 /* $108F STY immediate -**0- */
-void MC6809::sty_im()
+inline void MC6809::sty_im()
 {
        CLR_NZV;
        SET_NZ16(Y);
@@ -2617,7 +2849,7 @@ void MC6809::sty_im()
 }
 
 /* $90 SUBA direct ?**** */
-void MC6809::suba_di()
+inline void MC6809::suba_di()
 {
        uint16 t, r;
        DIRBYTE(t);
@@ -2628,7 +2860,7 @@ void MC6809::suba_di()
 }
 
 /* $91 CMPA direct ?**** */
-void MC6809::cmpa_di()
+inline void MC6809::cmpa_di()
 {
        uint16 t, r;
        DIRBYTE(t);
@@ -2638,7 +2870,7 @@ void MC6809::cmpa_di()
 }
 
 /* $92 SBCA direct ?**** */
-void MC6809::sbca_di()
+inline void MC6809::sbca_di()
 {
        uint16 t, r;
        DIRBYTE(t);
@@ -2649,7 +2881,7 @@ void MC6809::sbca_di()
 }
 
 /* $93 SUBD (CMPD CMPU) direct -**** */
-void MC6809::subd_di()
+inline void MC6809::subd_di()
 {
        uint32 r, d;
        pair b;
@@ -2662,7 +2894,7 @@ void MC6809::subd_di()
 }
 
 /* $1093 CMPD direct -**** */
-void MC6809::cmpd_di()
+inline void MC6809::cmpd_di()
 {
        uint32 r, d;
        pair b;
@@ -2674,7 +2906,7 @@ void MC6809::cmpd_di()
 }
 
 /* $1193 CMPU direct -**** */
-void MC6809::cmpu_di()
+inline void MC6809::cmpu_di()
 {
        uint32 r, d;
        pair b;
@@ -2686,7 +2918,7 @@ void MC6809::cmpu_di()
 }
 
 /* $94 ANDA direct -**0- */
-void MC6809::anda_di()
+inline void MC6809::anda_di()
 {
        uint8 t;
        DIRBYTE(t);
@@ -2696,7 +2928,7 @@ void MC6809::anda_di()
 }
 
 /* $95 BITA direct -**0- */
-void MC6809::bita_di()
+inline void MC6809::bita_di()
 {
        uint8 t, r;
        DIRBYTE(t);
@@ -2706,7 +2938,7 @@ void MC6809::bita_di()
 }
 
 /* $96 LDA direct -**0- */
-void MC6809::lda_di()
+inline void MC6809::lda_di()
 {
        DIRBYTE(A);
        CLR_NZV;
@@ -2714,7 +2946,7 @@ void MC6809::lda_di()
 }
 
 /* $97 STA direct -**0- */
-void MC6809::sta_di()
+inline void MC6809::sta_di()
 {
        CLR_NZV;
        SET_NZ8(A);
@@ -2723,7 +2955,7 @@ void MC6809::sta_di()
 }
 
 /* $98 EORA direct -**0- */
-void MC6809::eora_di()
+inline void MC6809::eora_di()
 {
        uint8 t;
        DIRBYTE(t);
@@ -2733,7 +2965,7 @@ void MC6809::eora_di()
 }
 
 /* $99 ADCA direct ***** */
-void MC6809::adca_di()
+inline void MC6809::adca_di()
 {
        uint16 t, r;
        DIRBYTE(t);
@@ -2745,7 +2977,7 @@ void MC6809::adca_di()
 }
 
 /* $9A ORA direct -**0- */
-void MC6809::ora_di()
+inline void MC6809::ora_di()
 {
        uint8 t;
        DIRBYTE(t);
@@ -2755,7 +2987,7 @@ void MC6809::ora_di()
 }
 
 /* $9B ADDA direct ***** */
-void MC6809::adda_di()
+inline void MC6809::adda_di()
 {
        uint16 t, r;
        DIRBYTE(t);
@@ -2767,7 +2999,7 @@ void MC6809::adda_di()
 }
 
 /* $9C CMPX (CMPY CMPS) direct -**** */
-void MC6809::cmpx_di()
+inline void MC6809::cmpx_di()
 {
        uint32 r, d;
        pair b;
@@ -2779,7 +3011,7 @@ void MC6809::cmpx_di()
 }
 
 /* $109C CMPY direct -**** */
-void MC6809::cmpy_di()
+inline void MC6809::cmpy_di()
 {
        uint32 r, d;
        pair b;
@@ -2791,7 +3023,7 @@ void MC6809::cmpy_di()
 }
 
 /* $119C CMPS direct -**** */
-void MC6809::cmps_di()
+inline void MC6809::cmps_di()
 {
        uint32 r, d;
        pair b;
@@ -2803,7 +3035,7 @@ void MC6809::cmps_di()
 }
 
 /* $9D JSR direct ----- */
-void MC6809::jsr_di()
+inline void MC6809::jsr_di()
 {
        DIRECT;
        PUSHWORD(pPC);
@@ -2811,7 +3043,7 @@ void MC6809::jsr_di()
 }
 
 /* $9E LDX (LDY) direct -**0- */
-void MC6809::ldx_di()
+inline void MC6809::ldx_di()
 {
        DIRWORD(pX);
        CLR_NZV;
@@ -2819,7 +3051,7 @@ void MC6809::ldx_di()
 }
 
 /* $109E LDY direct -**0- */
-void MC6809::ldy_di()
+inline void MC6809::ldy_di()
 {
        DIRWORD(pY);
        CLR_NZV;
@@ -2827,7 +3059,7 @@ void MC6809::ldy_di()
 }
 
 /* $9F STX (STY) direct -**0- */
-void MC6809::stx_di()
+inline void MC6809::stx_di()
 {
        CLR_NZV;
        SET_NZ16(X);
@@ -2836,7 +3068,7 @@ void MC6809::stx_di()
 }
 
 /* $109F STY direct -**0- */
-void MC6809::sty_di()
+inline void MC6809::sty_di()
 {
        CLR_NZV;
        SET_NZ16(Y);
@@ -2845,7 +3077,7 @@ void MC6809::sty_di()
 }
 
 /* $a0 SUBA indexed ?**** */
-void MC6809::suba_ix()
+inline void MC6809::suba_ix()
 {
        uint16 t, r;
        fetch_effective_address();
@@ -2857,7 +3089,7 @@ void MC6809::suba_ix()
 }
 
 /* $a1 CMPA indexed ?**** */
-void MC6809::cmpa_ix()
+inline void MC6809::cmpa_ix()
 {
        uint16 t, r;
        fetch_effective_address();
@@ -2868,7 +3100,7 @@ void MC6809::cmpa_ix()
 }
 
 /* $a2 SBCA indexed ?**** */
-void MC6809::sbca_ix()
+inline void MC6809::sbca_ix()
 {
        uint16 t, r;
        fetch_effective_address();
@@ -2880,7 +3112,7 @@ void MC6809::sbca_ix()
 }
 
 /* $a3 SUBD (CMPD CMPU) indexed -**** */
-void MC6809::subd_ix()
+inline void MC6809::subd_ix()
 {
        uint32 r, d;
        pair b;
@@ -2894,7 +3126,7 @@ void MC6809::subd_ix()
 }
 
 /* $10a3 CMPD indexed -**** */
-void MC6809::cmpd_ix()
+inline void MC6809::cmpd_ix()
 {
        uint32 r, d;
        pair b;
@@ -2907,7 +3139,7 @@ void MC6809::cmpd_ix()
 }
 
 /* $11a3 CMPU indexed -**** */
-void MC6809::cmpu_ix()
+inline void MC6809::cmpu_ix()
 {
        uint32 r;
        pair b;
@@ -2919,7 +3151,7 @@ void MC6809::cmpu_ix()
 }
 
 /* $a4 ANDA indexed -**0- */
-void MC6809::anda_ix()
+inline void MC6809::anda_ix()
 {
        fetch_effective_address();
        A &= RM(EAD);
@@ -2928,7 +3160,7 @@ void MC6809::anda_ix()
 }
 
 /* $a5 BITA indexed -**0- */
-void MC6809::bita_ix()
+inline void MC6809::bita_ix()
 {
        uint8 r;
        fetch_effective_address();
@@ -2938,7 +3170,7 @@ void MC6809::bita_ix()
 }
 
 /* $a6 LDA indexed -**0- */
-void MC6809::lda_ix()
+inline void MC6809::lda_ix()
 {
        fetch_effective_address();
        A = RM(EAD);
@@ -2947,7 +3179,7 @@ void MC6809::lda_ix()
 }
 
 /* $a7 STA indexed -**0- */
-void MC6809::sta_ix()
+inline void MC6809::sta_ix()
 {
        fetch_effective_address();
        CLR_NZV;
@@ -2956,7 +3188,7 @@ void MC6809::sta_ix()
 }
 
 /* $a8 EORA indexed -**0- */
-void MC6809::eora_ix()
+inline void MC6809::eora_ix()
 {
        fetch_effective_address();
        A ^= RM(EAD);
@@ -2965,7 +3197,7 @@ void MC6809::eora_ix()
 }
 
 /* $a9 ADCA indexed ***** */
-void MC6809::adca_ix()
+inline void MC6809::adca_ix()
 {
        uint16 t, r;
        fetch_effective_address();
@@ -2978,7 +3210,7 @@ void MC6809::adca_ix()
 }
 
 /* $aA ORA indexed -**0- */
-void MC6809::ora_ix()
+inline void MC6809::ora_ix()
 {
        fetch_effective_address();
        A |= RM(EAD);
@@ -2987,7 +3219,7 @@ void MC6809::ora_ix()
 }
 
 /* $aB ADDA indexed ***** */
-void MC6809::adda_ix()
+inline void MC6809::adda_ix()
 {
        uint16 t, r;
        fetch_effective_address();
@@ -3000,7 +3232,7 @@ void MC6809::adda_ix()
 }
 
 /* $aC CMPX (CMPY CMPS) indexed -**** */
-void MC6809::cmpx_ix()
+inline void MC6809::cmpx_ix()
 {
        uint32 r, d;
        pair b;
@@ -3013,7 +3245,7 @@ void MC6809::cmpx_ix()
 }
 
 /* $10aC CMPY indexed -**** */
-void MC6809::cmpy_ix()
+inline void MC6809::cmpy_ix()
 {
        uint32 r, d;
        pair b;
@@ -3026,7 +3258,7 @@ void MC6809::cmpy_ix()
 }
 
 /* $11aC CMPS indexed -**** */
-void MC6809::cmps_ix()
+inline void MC6809::cmps_ix()
 {
        uint32 r, d;
        pair b;
@@ -3039,7 +3271,7 @@ void MC6809::cmps_ix()
 }
 
 /* $aD JSR indexed ----- */
-void MC6809::jsr_ix()
+inline void MC6809::jsr_ix()
 {
        fetch_effective_address();
        PUSHWORD(pPC);
@@ -3047,7 +3279,7 @@ void MC6809::jsr_ix()
 }
 
 /* $aE LDX (LDY) indexed -**0- */
-void MC6809::ldx_ix()
+inline void MC6809::ldx_ix()
 {
        fetch_effective_address();
        X = RM16(EAD);
@@ -3056,7 +3288,7 @@ void MC6809::ldx_ix()
 }
 
 /* $10aE LDY indexed -**0- */
-void MC6809::ldy_ix()
+inline void MC6809::ldy_ix()
 {
        fetch_effective_address();
        Y = RM16(EAD);
@@ -3065,7 +3297,7 @@ void MC6809::ldy_ix()
 }
 
 /* $aF STX (STY) indexed -**0- */
-void MC6809::stx_ix()
+inline void MC6809::stx_ix()
 {
        fetch_effective_address();
        CLR_NZV;
@@ -3074,7 +3306,7 @@ void MC6809::stx_ix()
 }
 
 /* $10aF STY indexed -**0- */
-void MC6809::sty_ix()
+inline void MC6809::sty_ix()
 {
        fetch_effective_address();
        CLR_NZV;
@@ -3083,7 +3315,7 @@ void MC6809::sty_ix()
 }
 
 /* $b0 SUBA extended ?**** */
-void MC6809::suba_ex()
+inline void MC6809::suba_ex()
 {
        uint16 t, r;
        EXTBYTE(t);
@@ -3094,7 +3326,7 @@ void MC6809::suba_ex()
 }
 
 /* $b1 CMPA extended ?**** */
-void MC6809::cmpa_ex()
+inline void MC6809::cmpa_ex()
 {
        uint16 t, r;
        EXTBYTE(t);
@@ -3104,7 +3336,7 @@ void MC6809::cmpa_ex()
 }
 
 /* $b2 SBCA extended ?**** */
-void MC6809::sbca_ex()
+inline void MC6809::sbca_ex()
 {
        uint16 t, r;
        EXTBYTE(t);
@@ -3115,7 +3347,7 @@ void MC6809::sbca_ex()
 }
 
 /* $b3 SUBD (CMPD CMPU) extended -**** */
-void MC6809::subd_ex()
+inline void MC6809::subd_ex()
 {
        uint32 r, d;
        pair b;
@@ -3128,7 +3360,7 @@ void MC6809::subd_ex()
 }
 
 /* $10b3 CMPD extended -**** */
-void MC6809::cmpd_ex()
+inline void MC6809::cmpd_ex()
 {
        uint32 r, d;
        pair b;
@@ -3140,7 +3372,7 @@ void MC6809::cmpd_ex()
 }
 
 /* $11b3 CMPU extended -**** */
-void MC6809::cmpu_ex()
+inline void MC6809::cmpu_ex()
 {
        uint32 r, d;
        pair b;
@@ -3152,7 +3384,7 @@ void MC6809::cmpu_ex()
 }
 
 /* $b4 ANDA extended -**0- */
-void MC6809::anda_ex()
+inline void MC6809::anda_ex()
 {
        uint8 t;
        EXTBYTE(t);
@@ -3162,7 +3394,7 @@ void MC6809::anda_ex()
 }
 
 /* $b5 BITA extended -**0- */
-void MC6809::bita_ex()
+inline void MC6809::bita_ex()
 {
        uint8 t, r;
        EXTBYTE(t);
@@ -3171,7 +3403,7 @@ void MC6809::bita_ex()
 }
 
 /* $b6 LDA extended -**0- */
-void MC6809::lda_ex()
+inline void MC6809::lda_ex()
 {
        EXTBYTE(A);
        CLR_NZV;
@@ -3179,7 +3411,7 @@ void MC6809::lda_ex()
 }
 
 /* $b7 STA extended -**0- */
-void MC6809::sta_ex()
+inline void MC6809::sta_ex()
 {
        CLR_NZV;
        SET_NZ8(A);
@@ -3188,7 +3420,7 @@ void MC6809::sta_ex()
 }
 
 /* $b8 EORA extended -**0- */
-void MC6809::eora_ex()
+inline void MC6809::eora_ex()
 {
        uint8 t;
        EXTBYTE(t);
@@ -3198,7 +3430,7 @@ void MC6809::eora_ex()
 }
 
 /* $b9 ADCA extended ***** */
-void MC6809::adca_ex()
+inline void MC6809::adca_ex()
 {
        uint16 t, r;
        EXTBYTE(t);
@@ -3210,7 +3442,7 @@ void MC6809::adca_ex()
 }
 
 /* $bA ORA extended -**0- */
-void MC6809::ora_ex()
+inline void MC6809::ora_ex()
 {
        uint8 t;
        EXTBYTE(t);
@@ -3220,7 +3452,7 @@ void MC6809::ora_ex()
 }
 
 /* $bB ADDA extended ***** */
-void MC6809::adda_ex()
+inline void MC6809::adda_ex()
 {
        uint16 t, r;
        EXTBYTE(t);
@@ -3232,7 +3464,7 @@ void MC6809::adda_ex()
 }
 
 /* $bC CMPX (CMPY CMPS) extended -**** */
-void MC6809::cmpx_ex()
+inline void MC6809::cmpx_ex()
 {
        uint32 r, d;
        pair b;
@@ -3244,7 +3476,7 @@ void MC6809::cmpx_ex()
 }
 
 /* $10bC CMPY extended -**** */
-void MC6809::cmpy_ex()
+inline void MC6809::cmpy_ex()
 {
        uint32 r, d;
        pair b;
@@ -3256,7 +3488,7 @@ void MC6809::cmpy_ex()
 }
 
 /* $11bC CMPS extended -**** */
-void MC6809::cmps_ex()
+inline void MC6809::cmps_ex()
 {
        uint32 r, d;
        pair b;
@@ -3268,7 +3500,7 @@ void MC6809::cmps_ex()
 }
 
 /* $bD JSR extended ----- */
-void MC6809::jsr_ex()
+inline void MC6809::jsr_ex()
 {
        EXTENDED;
        PUSHWORD(pPC);
@@ -3276,7 +3508,7 @@ void MC6809::jsr_ex()
 }
 
 /* $bE LDX (LDY) extended -**0- */
-void MC6809::ldx_ex()
+inline void MC6809::ldx_ex()
 {
        EXTWORD(pX);
        CLR_NZV;
@@ -3284,7 +3516,7 @@ void MC6809::ldx_ex()
 }
 
 /* $10bE LDY extended -**0- */
-void MC6809::ldy_ex()
+inline void MC6809::ldy_ex()
 {
        EXTWORD(pY);
        CLR_NZV;
@@ -3292,7 +3524,7 @@ void MC6809::ldy_ex()
 }
 
 /* $bF STX (STY) extended -**0- */
-void MC6809::stx_ex()
+inline void MC6809::stx_ex()
 {
        CLR_NZV;
        SET_NZ16(X);
@@ -3301,7 +3533,7 @@ void MC6809::stx_ex()
 }
 
 /* $10bF STY extended -**0- */
-void MC6809::sty_ex()
+inline void MC6809::sty_ex()
 {
        CLR_NZV;
        SET_NZ16(Y);
@@ -3310,7 +3542,7 @@ void MC6809::sty_ex()
 }
 
 /* $c0 SUBB immediate ?**** */
-void MC6809::subb_im()
+inline void MC6809::subb_im()
 {
        uint16 t, r;
        IMMBYTE(t);
@@ -3321,7 +3553,7 @@ void MC6809::subb_im()
 }
 
 /* $c1 CMPB immediate ?**** */
-void MC6809::cmpb_im()
+inline void MC6809::cmpb_im()
 {
        uint16 t, r;
        IMMBYTE(t);
@@ -3330,7 +3562,7 @@ void MC6809::cmpb_im()
 }
 
 /* $c2 SBCB immediate ?**** */
-void MC6809::sbcb_im()
+inline void MC6809::sbcb_im()
 {
        uint16 t, r;
        IMMBYTE(t);
@@ -3341,7 +3573,7 @@ void MC6809::sbcb_im()
 }
 
 /* $c3 ADDD immediate -**** */
-void MC6809::addd_im()
+inline void MC6809::addd_im()
 {
        uint32 r, d;
        pair b;
@@ -3354,7 +3586,7 @@ void MC6809::addd_im()
 }
 
 /* $c4 ANDB immediate -**0- */
-void MC6809::andb_im()
+inline void MC6809::andb_im()
 {
        uint8 t;
        IMMBYTE(t);
@@ -3364,7 +3596,7 @@ void MC6809::andb_im()
 }
 
 /* $c5 BITB immediate -**0- */
-void MC6809::bitb_im()
+inline void MC6809::bitb_im()
 {
        uint8 t, r;
        IMMBYTE(t);
@@ -3374,7 +3606,7 @@ void MC6809::bitb_im()
 }
 
 /* $c6 LDB immediate -**0- */
-void MC6809::ldb_im()
+inline void MC6809::ldb_im()
 {
        IMMBYTE(B);
        CLR_NZV;
@@ -3383,7 +3615,7 @@ void MC6809::ldb_im()
 
 /* is this a legal instruction? */
 /* $c7 STB immediate -**0- */
-void MC6809::stb_im()
+inline void MC6809::stb_im()
 {
        CLR_NZV;
        SET_NZ8(B);
@@ -3392,7 +3624,7 @@ void MC6809::stb_im()
 }
 
 /* $c8 EORB immediate -**0- */
-void MC6809::eorb_im()
+inline void MC6809::eorb_im()
 {
        uint8 t;
        IMMBYTE(t);
@@ -3402,7 +3634,7 @@ void MC6809::eorb_im()
 }
 
 /* $c9 ADCB immediate ***** */
-void MC6809::adcb_im()
+inline void MC6809::adcb_im()
 {
        uint16 t, r;
        IMMBYTE(t);
@@ -3414,7 +3646,7 @@ void MC6809::adcb_im()
 }
 
 /* $cA ORB immediate -**0- */
-void MC6809::orb_im()
+inline void MC6809::orb_im()
 {
        uint8 t;
        IMMBYTE(t);
@@ -3424,7 +3656,7 @@ void MC6809::orb_im()
 }
 
 /* $cB ADDB immediate ***** */
-void MC6809::addb_im()
+inline void MC6809::addb_im()
 {
        uint16 t, r;
        IMMBYTE(t);
@@ -3436,7 +3668,7 @@ void MC6809::addb_im()
 }
 
 /* $cC LDD immediate -**0- */
-void MC6809::ldd_im()
+inline void MC6809::ldd_im()
 {
        IMMWORD(pD);
        CLR_NZV;
@@ -3445,7 +3677,7 @@ void MC6809::ldd_im()
 
 /* is this a legal instruction? */
 /* $cD STD immediate -**0- */
-void MC6809::std_im()
+inline void MC6809::std_im()
 {
        CLR_NZV;
        SET_NZ16(D);
@@ -3454,7 +3686,7 @@ void MC6809::std_im()
 }
 
 /* $cE LDU (LDS) immediate -**0- */
-void MC6809::ldu_im()
+inline void MC6809::ldu_im()
 {
        IMMWORD(pU);
        CLR_NZV;
@@ -3462,7 +3694,7 @@ void MC6809::ldu_im()
 }
 
 /* $10cE LDS immediate -**0- */
-void MC6809::lds_im()
+inline void MC6809::lds_im()
 {
        IMMWORD(pS);
        CLR_NZV;
@@ -3472,7 +3704,7 @@ void MC6809::lds_im()
 
 /* is this a legal instruction? */
 /* $cF STU (STS) immediate -**0- */
-void MC6809::stu_im()
+inline void MC6809::stu_im()
 {
        CLR_NZV;
        SET_NZ16(U);
@@ -3482,7 +3714,7 @@ void MC6809::stu_im()
 
 /* is this a legal instruction? */
 /* $10cF STS immediate -**0- */
-void MC6809::sts_im()
+inline void MC6809::sts_im()
 {
        CLR_NZV;
        SET_NZ16(S);
@@ -3491,7 +3723,7 @@ void MC6809::sts_im()
 }
 
 /* $d0 SUBB direct ?**** */
-void MC6809::subb_di()
+inline void MC6809::subb_di()
 {
        uint16 t, r;
        DIRBYTE(t);
@@ -3502,7 +3734,7 @@ void MC6809::subb_di()
 }
 
 /* $d1 CMPB direct ?**** */
-void MC6809::cmpb_di()
+inline void MC6809::cmpb_di()
 {
        uint16 t, r;
        DIRBYTE(t);
@@ -3512,7 +3744,7 @@ void MC6809::cmpb_di()
 }
 
 /* $d2 SBCB direct ?**** */
-void MC6809::sbcb_di()
+inline void MC6809::sbcb_di()
 {
        uint16 t, r;
        DIRBYTE(t);
@@ -3523,7 +3755,7 @@ void MC6809::sbcb_di()
 }
 
 /* $d3 ADDD direct -**** */
-void MC6809::addd_di()
+inline void MC6809::addd_di()
 {
        uint32 r, d;
        pair b;
@@ -3536,7 +3768,7 @@ void MC6809::addd_di()
 }
 
 /* $d4 ANDB direct -**0- */
-void MC6809::andb_di()
+inline void MC6809::andb_di()
 {
        uint8 t;
        DIRBYTE(t);
@@ -3546,7 +3778,7 @@ void MC6809::andb_di()
 }
 
 /* $d5 BITB direct -**0- */
-void MC6809::bitb_di()
+inline void MC6809::bitb_di()
 {
        uint8 t, r;
        DIRBYTE(t);
@@ -3556,7 +3788,7 @@ void MC6809::bitb_di()
 }
 
 /* $d6 LDB direct -**0- */
-void MC6809::ldb_di()
+inline void MC6809::ldb_di()
 {
        DIRBYTE(B);
        CLR_NZV;
@@ -3564,7 +3796,7 @@ void MC6809::ldb_di()
 }
 
 /* $d7 STB direct -**0- */
-void MC6809::stb_di()
+inline void MC6809::stb_di()
 {
        CLR_NZV;
        SET_NZ8(B);
@@ -3573,7 +3805,7 @@ void MC6809::stb_di()
 }
 
 /* $d8 EORB direct -**0- */
-void MC6809::eorb_di()
+inline void MC6809::eorb_di()
 {
        uint8 t;
        DIRBYTE(t);
@@ -3583,7 +3815,7 @@ void MC6809::eorb_di()
 }
 
 /* $d9 ADCB direct ***** */
-void MC6809::adcb_di()
+inline void MC6809::adcb_di()
 {
        uint16 t, r;
        DIRBYTE(t);
@@ -3595,7 +3827,7 @@ void MC6809::adcb_di()
 }
 
 /* $dA ORB direct -**0- */
-void MC6809::orb_di()
+inline void MC6809::orb_di()
 {
        uint8 t;
        DIRBYTE(t);
@@ -3605,7 +3837,7 @@ void MC6809::orb_di()
 }
 
 /* $dB ADDB direct ***** */
-void MC6809::addb_di()
+inline void MC6809::addb_di()
 {
        uint16 t, r;
        DIRBYTE(t);
@@ -3617,7 +3849,7 @@ void MC6809::addb_di()
 }
 
 /* $dC LDD direct -**0- */
-void MC6809::ldd_di()
+inline void MC6809::ldd_di()
 {
        DIRWORD(pD);
        CLR_NZV;
@@ -3625,7 +3857,7 @@ void MC6809::ldd_di()
 }
 
 /* $dD STD direct -**0- */
-void MC6809::std_di()
+inline void MC6809::std_di()
 {
        CLR_NZV;
        SET_NZ16(D);
@@ -3634,7 +3866,7 @@ void MC6809::std_di()
 }
 
 /* $dE LDU (LDS) direct -**0- */
-void MC6809::ldu_di()
+inline void MC6809::ldu_di()
 {
        DIRWORD(pU);
        CLR_NZV;
@@ -3642,7 +3874,7 @@ void MC6809::ldu_di()
 }
 
 /* $10dE LDS direct -**0- */
-void MC6809::lds_di()
+inline void MC6809::lds_di()
 {
        DIRWORD(pS);
        CLR_NZV;
@@ -3651,7 +3883,7 @@ void MC6809::lds_di()
 }
 
 /* $dF STU (STS) direct -**0- */
-void MC6809::stu_di()
+inline void MC6809::stu_di()
 {
        CLR_NZV;
        SET_NZ16(U);
@@ -3660,7 +3892,7 @@ void MC6809::stu_di()
 }
 
 /* $10dF STS direct -**0- */
-void MC6809::sts_di()
+inline void MC6809::sts_di()
 {
        CLR_NZV;
        SET_NZ16(S);
@@ -3669,7 +3901,7 @@ void MC6809::sts_di()
 }
 
 /* $e0 SUBB indexed ?**** */
-void MC6809::subb_ix()
+inline void MC6809::subb_ix()
 {
        uint16 t, r;
        fetch_effective_address();
@@ -3681,7 +3913,7 @@ void MC6809::subb_ix()
 }
 
 /* $e1 CMPB indexed ?**** */
-void MC6809::cmpb_ix()
+inline void MC6809::cmpb_ix()
 {
        uint16 t, r;
        fetch_effective_address();
@@ -3692,7 +3924,7 @@ void MC6809::cmpb_ix()
 }
 
 /* $e2 SBCB indexed ?**** */
-void MC6809::sbcb_ix()
+inline void MC6809::sbcb_ix()
 {
        uint16 t, r;
        fetch_effective_address();
@@ -3704,7 +3936,7 @@ void MC6809::sbcb_ix()
 }
 
 /* $e3 ADDD indexed -**** */
-void MC6809::addd_ix()
+inline void MC6809::addd_ix()
 {
        uint32 r, d;
        pair b;
@@ -3718,7 +3950,7 @@ void MC6809::addd_ix()
 }
 
 /* $e4 ANDB indexed -**0- */
-void MC6809::andb_ix()
+inline void MC6809::andb_ix()
 {
        fetch_effective_address();
        B &= RM(EAD);
@@ -3727,7 +3959,7 @@ void MC6809::andb_ix()
 }
 
 /* $e5 BITB indexed -**0- */
-void MC6809::bitb_ix()
+inline void MC6809::bitb_ix()
 {
        uint8 r;
        fetch_effective_address();
@@ -3737,7 +3969,7 @@ void MC6809::bitb_ix()
 }
 
 /* $e6 LDB indexed -**0- */
-void MC6809::ldb_ix()
+inline void MC6809::ldb_ix()
 {
        fetch_effective_address();
        B = RM(EAD);
@@ -3746,7 +3978,7 @@ void MC6809::ldb_ix()
 }
 
 /* $e7 STB indexed -**0- */
-void MC6809::stb_ix()
+inline void MC6809::stb_ix()
 {
        fetch_effective_address();
        CLR_NZV;
@@ -3755,7 +3987,7 @@ void MC6809::stb_ix()
 }
 
 /* $e8 EORB indexed -**0- */
-void MC6809::eorb_ix()
+inline void MC6809::eorb_ix()
 {
        fetch_effective_address();
        B ^= RM(EAD);
@@ -3764,7 +3996,7 @@ void MC6809::eorb_ix()
 }
 
 /* $e9 ADCB indexed ***** */
-void MC6809::adcb_ix()
+inline void MC6809::adcb_ix()
 {
        uint16 t, r;
        fetch_effective_address();
@@ -3777,7 +4009,7 @@ void MC6809::adcb_ix()
 }
 
 /* $eA ORB indexed -**0- */
-void MC6809::orb_ix()
+inline void MC6809::orb_ix()
 {
        fetch_effective_address();
        B |= RM(EAD);
@@ -3786,7 +4018,7 @@ void MC6809::orb_ix()
 }
 
 /* $eB ADDB indexed ***** */
-void MC6809::addb_ix()
+inline void MC6809::addb_ix()
 {
        uint16 t, r;
        fetch_effective_address();
@@ -3799,7 +4031,7 @@ void MC6809::addb_ix()
 }
 
 /* $eC LDD indexed -**0- */
-void MC6809::ldd_ix()
+inline void MC6809::ldd_ix()
 {
        fetch_effective_address();
        D = RM16(EAD);
@@ -3807,7 +4039,7 @@ void MC6809::ldd_ix()
 }
 
 /* $eD STD indexed -**0- */
-void MC6809::std_ix()
+inline void MC6809::std_ix()
 {
        fetch_effective_address();
        CLR_NZV;
@@ -3816,7 +4048,7 @@ void MC6809::std_ix()
 }
 
 /* $eE LDU (LDS) indexed -**0- */
-void MC6809::ldu_ix()
+inline void MC6809::ldu_ix()
 {
        fetch_effective_address();
        U = RM16(EAD);
@@ -3825,7 +4057,7 @@ void MC6809::ldu_ix()
 }
 
 /* $10eE LDS indexed -**0- */
-void MC6809::lds_ix()
+inline void MC6809::lds_ix()
 {
        fetch_effective_address();
        S = RM16(EAD);
@@ -3835,7 +4067,7 @@ void MC6809::lds_ix()
 }
 
 /* $eF STU (STS) indexed -**0- */
-void MC6809::stu_ix()
+inline void MC6809::stu_ix()
 {
        fetch_effective_address();
        CLR_NZV;
@@ -3844,7 +4076,7 @@ void MC6809::stu_ix()
 }
 
 /* $10eF STS indexed -**0- */
-void MC6809::sts_ix()
+inline void MC6809::sts_ix()
 {
        fetch_effective_address();
        CLR_NZV;
@@ -3853,7 +4085,7 @@ void MC6809::sts_ix()
 }
 
 /* $f0 SUBB extended ?**** */
-void MC6809::subb_ex()
+inline void MC6809::subb_ex()
 {
        uint16 t, r;
        EXTBYTE(t);
@@ -3864,7 +4096,7 @@ void MC6809::subb_ex()
 }
 
 /* $f1 CMPB extended ?**** */
-void MC6809::cmpb_ex()
+inline void MC6809::cmpb_ex()
 {
        uint16 t, r;
        EXTBYTE(t);
@@ -3874,7 +4106,7 @@ void MC6809::cmpb_ex()
 }
 
 /* $f2 SBCB extended ?**** */
-void MC6809::sbcb_ex()
+inline void MC6809::sbcb_ex()
 {
        uint16 t, r;
        EXTBYTE(t);
@@ -3885,7 +4117,7 @@ void MC6809::sbcb_ex()
 }
 
 /* $f3 ADDD extended -**** */
-void MC6809::addd_ex()
+inline void MC6809::addd_ex()
 {
        uint32 r, d;
        pair b;
@@ -3898,7 +4130,7 @@ void MC6809::addd_ex()
 }
 
 /* $f4 ANDB extended -**0- */
-void MC6809::andb_ex()
+inline void MC6809::andb_ex()
 {
        uint8 t;
        EXTBYTE(t);
@@ -3908,7 +4140,7 @@ void MC6809::andb_ex()
 }
 
 /* $f5 BITB extended -**0- */
-void MC6809::bitb_ex()
+inline void MC6809::bitb_ex()
 {
        uint8 t, r;
        EXTBYTE(t);
@@ -3918,7 +4150,7 @@ void MC6809::bitb_ex()
 }
 
 /* $f6 LDB extended -**0- */
-void MC6809::ldb_ex()
+inline void MC6809::ldb_ex()
 {
        EXTBYTE(B);
        CLR_NZV;
@@ -3926,7 +4158,7 @@ void MC6809::ldb_ex()
 }
 
 /* $f7 STB extended -**0- */
-void MC6809::stb_ex()
+inline void MC6809::stb_ex()
 {
        CLR_NZV;
        SET_NZ8(B);
@@ -3935,7 +4167,7 @@ void MC6809::stb_ex()
 }
 
 /* $f8 EORB extended -**0- */
-void MC6809::eorb_ex()
+inline void MC6809::eorb_ex()
 {
        uint8 t;
        EXTBYTE(t);
@@ -3945,7 +4177,7 @@ void MC6809::eorb_ex()
 }
 
 /* $f9 ADCB extended ***** */
-void MC6809::adcb_ex()
+inline void MC6809::adcb_ex()
 {
        uint16 t, r;
        EXTBYTE(t);
@@ -3957,7 +4189,7 @@ void MC6809::adcb_ex()
 }
 
 /* $fA ORB extended -**0- */
-void MC6809::orb_ex()
+inline void MC6809::orb_ex()
 {
        uint8 t;
        EXTBYTE(t);
@@ -3967,7 +4199,7 @@ void MC6809::orb_ex()
 }
 
 /* $fB ADDB extended ***** */
-void MC6809::addb_ex()
+inline void MC6809::addb_ex()
 {
        uint16 t, r;
        EXTBYTE(t);
@@ -3979,7 +4211,7 @@ void MC6809::addb_ex()
 }
 
 /* $fC LDD extended -**0- */
-void MC6809::ldd_ex()
+inline void MC6809::ldd_ex()
 {
        EXTWORD(pD);
        CLR_NZV;
@@ -3987,7 +4219,7 @@ void MC6809::ldd_ex()
 }
 
 /* $fD STD extended -**0- */
-void MC6809::std_ex()
+inline void MC6809::std_ex()
 {
        CLR_NZV;
        SET_NZ16(D);
@@ -3996,7 +4228,7 @@ void MC6809::std_ex()
 }
 
 /* $fE LDU (LDS) extended -**0- */
-void MC6809::ldu_ex()
+inline void MC6809::ldu_ex()
 {
        EXTWORD(pU);
        CLR_NZV;
@@ -4004,7 +4236,7 @@ void MC6809::ldu_ex()
 }
 
 /* $10fE LDS extended -**0- */
-void MC6809::lds_ex()
+inline void MC6809::lds_ex()
 {
        EXTWORD(pS);
        CLR_NZV;
@@ -4013,7 +4245,7 @@ void MC6809::lds_ex()
 }
 
 /* $fF STU (STS) extended -**0- */
-void MC6809::stu_ex()
+inline void MC6809::stu_ex()
 {
        CLR_NZV;
        SET_NZ16(U);
@@ -4022,7 +4254,7 @@ void MC6809::stu_ex()
 }
 
 /* $10fF STS extended -**0- */
-void MC6809::sts_ex()
+inline void MC6809::sts_ex()
 {
        CLR_NZV;
        SET_NZ16(S);
@@ -4032,7 +4264,7 @@ void MC6809::sts_ex()
 
 
 /* $10xx opcodes */
-void MC6809::pref10()
+inline void MC6809::pref10()
 {
        uint8 ireg2 = ROP_ARG(PCD);
        PC++;
@@ -4086,7 +4318,7 @@ void MC6809::pref10()
 }
 
 /* $11xx opcodes */
-void MC6809::pref11()
+inline void MC6809::pref11()
 {
        uint8 ireg2 = ROP(PCD);
        PC++;
index e6709a3..ae57cd2 100644 (file)
@@ -43,301 +43,301 @@ private:
        void op(uint8 ireg);
        void fetch_effective_address();
   public:      
-        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 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 addd_im();
-        void addd_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 andcc();
-        void asla();
-        void aslb();
-        void aslcc_in();
-        void asl_di();
-        void asl_ex();
-        void asl_ix();
-        void asra();
-        void asrb();
-        void asr_di();
-        void asr_ex();
-        void asr_ix();
-        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 clca();
-        void clcb();
-        void clra();
-        void clrb();
-        void clr_di();
-        void clr_ex();
-        void clr_ix();
-        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 cmpd_di();
-        void cmpd_ex();
-        void cmpd_im();
-        void cmpd_ix();
-        void cmps_di();
-        void cmps_ex();
-        void cmps_im();
-        void cmps_ix();
-        void cmpu_di();
-        void cmpu_ex();
-        void cmpu_im();
-        void cmpu_ix();
-        void cmpx_di();
-        void cmpx_ex();
-        void cmpx_im();
-        void cmpx_ix();
-        void cmpy_di();
-        void cmpy_ex();
-        void cmpy_im();
-        void cmpy_ix();
-        void coma();
-        void comb();
-        void com_di();
-        void com_ex();
-        void com_ix();
-        void cwai();
-        void daa();
-        void dcca();
-        void dccb();
-        void dcc_di();
-        void dcc_ex();
-        void dcc_ix();
-        void deca();
-        void decb();
-        void dec_di();
-        void dec_ex();
-        void dec_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 exg();
-        void flag8_im();
-        void flag16_im();
-        void illegal();
-        void inca();
-        void incb();
-        void inc_di();
-        void inc_ex();
-        void inc_ix();
-        void jmp_di();
-        void jmp_ex();
-        void jmp_ix();
-        void jsr_di();
-        void jsr_ex();
-        void jsr_ix();
-        void lbcc();
-        void lbcs();
-        void lbeq();
-        void lbge();
-        void lbgt();
-        void lbhi();
-        void lble();
-        void lbls();
-        void lblt();
-        void lbmi();
-        void lbne();
-        void lbpl();
-        void lbra();
-        void lbrn();
-        void lbsr();
-        void lbvc();
-        void lbvs();
-        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 ldu_di();
-        void ldu_ex();
-        void ldu_im();
-        void ldu_ix();
-        void ldx_di();
-        void ldx_ex();
-        void ldx_im();
-        void ldx_ix();
-        void ldy_di();
-        void ldy_ex();
-        void ldy_im();
-        void ldy_ix();
-        void leas();
-        void leau();
-        void leax();
-        void leay();
-        void lsra();
-        void lsrb();
-        void lsr_di();
-        void lsr_ex();
-        void lsr_ix();
-        void mul();
-        void nega();
-        void negb();
-        void neg_di();
-        void neg_ex();
-        void neg_ix();
-        void ngca();
-        void ngcb();
-        void ngc_di();
-        void ngc_ex();
-        void ngc_ix();
-        void nop();
-        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 orcc();
-        void pref10();
-        void pref11();
-        void pshs();
-        void pshu();
-        void puls();
-        void pulu();
-        void rola();
-        void rolb();
-        void rol_di();
-        void rol_ex();
-        void rol_ix();
-        void rora();
-        void rorb();
-        void ror_di();
-        void ror_ex();
-        void ror_ix();
-        void rst();
-        void rti();    
-        void rts();    
-        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 sex();
-        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 stu_di();
-        void stu_ex();
-        void stu_im();
-        void stu_ix();
-        void stx_di();
-        void stx_ex();
-        void stx_im();
-        void stx_ix();
-        void sty_di();
-        void sty_ex();
-        void sty_im();
-        void sty_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 swi2();
-        void swi3();
-        void swi();
-        void sync();
-        void tfr();
-        void trap();
-        void tsta();
-        void tstb();
-        void tst_di();
-        void tst_ex();
-        void tst_ix();
+        inline void abx();
+        inline void adca_di();
+        inline void adca_ex();
+        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();
+        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) {}