#ifdef SCPU_CPP

//adc_const
case 0x69: {
  if(regs.p.m) last_cycle();
  rd.l = op_readpc();
  if(regs.p.m) { op_adc_b(); break; }
  last_cycle();
  rd.h = op_readpc();
  op_adc_w();
} break;

//and_const
case 0x29: {
  if(regs.p.m) last_cycle();
  rd.l = op_readpc();
  if(regs.p.m) { op_and_b(); break; }
  last_cycle();
  rd.h = op_readpc();
  op_and_w();
} break;

//cmp_const
case 0xc9: {
  if(regs.p.m) last_cycle();
  rd.l = op_readpc();
  if(regs.p.m) { op_cmp_b(); break; }
  last_cycle();
  rd.h = op_readpc();
  op_cmp_w();
} break;

//cpx_const
case 0xe0: {
  if(regs.p.x) last_cycle();
  rd.l = op_readpc();
  if(regs.p.x) { op_cpx_b(); break; }
  last_cycle();
  rd.h = op_readpc();
  op_cpx_w();
} break;

//cpy_const
case 0xc0: {
  if(regs.p.x) last_cycle();
  rd.l = op_readpc();
  if(regs.p.x) { op_cpy_b(); break; }
  last_cycle();
  rd.h = op_readpc();
  op_cpy_w();
} break;

//eor_const
case 0x49: {
  if(regs.p.m) last_cycle();
  rd.l = op_readpc();
  if(regs.p.m) { op_eor_b(); break; }
  last_cycle();
  rd.h = op_readpc();
  op_eor_w();
} break;

//lda_const
case 0xa9: {
  if(regs.p.m) last_cycle();
  rd.l = op_readpc();
  if(regs.p.m) { op_lda_b(); break; }
  last_cycle();
  rd.h = op_readpc();
  op_lda_w();
} break;

//ldx_const
case 0xa2: {
  if(regs.p.x) last_cycle();
  rd.l = op_readpc();
  if(regs.p.x) { op_ldx_b(); break; }
  last_cycle();
  rd.h = op_readpc();
  op_ldx_w();
} break;

//ldy_const
case 0xa0: {
  if(regs.p.x) last_cycle();
  rd.l = op_readpc();
  if(regs.p.x) { op_ldy_b(); break; }
  last_cycle();
  rd.h = op_readpc();
  op_ldy_w();
} break;

//ora_const
case 0x09: {
  if(regs.p.m) last_cycle();
  rd.l = op_readpc();
  if(regs.p.m) { op_ora_b(); break; }
  last_cycle();
  rd.h = op_readpc();
  op_ora_w();
} break;

//sbc_const
case 0xe9: {
  if(regs.p.m) last_cycle();
  rd.l = op_readpc();
  if(regs.p.m) { op_sbc_b(); break; }
  last_cycle();
  rd.h = op_readpc();
  op_sbc_w();
} break;

//adc_addr
case 0x6d: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w);
  if(regs.p.m) { op_adc_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + 1);
  op_adc_w();
} break;

//and_addr
case 0x2d: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w);
  if(regs.p.m) { op_and_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + 1);
  op_and_w();
} break;

//bit_addr
case 0x2c: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w);
  if(regs.p.m) { op_bit_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + 1);
  op_bit_w();
} break;

//cmp_addr
case 0xcd: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w);
  if(regs.p.m) { op_cmp_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + 1);
  op_cmp_w();
} break;

//cpx_addr
case 0xec: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  if(regs.p.x) last_cycle();
  rd.l = op_readdbr(aa.w);
  if(regs.p.x) { op_cpx_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + 1);
  op_cpx_w();
} break;

//cpy_addr
case 0xcc: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  if(regs.p.x) last_cycle();
  rd.l = op_readdbr(aa.w);
  if(regs.p.x) { op_cpy_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + 1);
  op_cpy_w();
} break;

//eor_addr
case 0x4d: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w);
  if(regs.p.m) { op_eor_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + 1);
  op_eor_w();
} break;

//lda_addr
case 0xad: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w);
  if(regs.p.m) { op_lda_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + 1);
  op_lda_w();
} break;

//ldx_addr
case 0xae: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  if(regs.p.x) last_cycle();
  rd.l = op_readdbr(aa.w);
  if(regs.p.x) { op_ldx_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + 1);
  op_ldx_w();
} break;

//ldy_addr
case 0xac: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  if(regs.p.x) last_cycle();
  rd.l = op_readdbr(aa.w);
  if(regs.p.x) { op_ldy_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + 1);
  op_ldy_w();
} break;

//ora_addr
case 0x0d: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w);
  if(regs.p.m) { op_ora_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + 1);
  op_ora_w();
} break;

//sbc_addr
case 0xed: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w);
  if(regs.p.m) { op_sbc_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + 1);
  op_sbc_w();
} break;

//adc_addrx
case 0x7d: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  op_io_cond4(aa.w, aa.w + regs.x.w);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.x.w);
  if(regs.p.m) { op_adc_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.x.w + 1);
  op_adc_w();
} break;

//and_addrx
case 0x3d: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  op_io_cond4(aa.w, aa.w + regs.x.w);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.x.w);
  if(regs.p.m) { op_and_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.x.w + 1);
  op_and_w();
} break;

//bit_addrx
case 0x3c: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  op_io_cond4(aa.w, aa.w + regs.x.w);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.x.w);
  if(regs.p.m) { op_bit_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.x.w + 1);
  op_bit_w();
} break;

//cmp_addrx
case 0xdd: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  op_io_cond4(aa.w, aa.w + regs.x.w);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.x.w);
  if(regs.p.m) { op_cmp_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.x.w + 1);
  op_cmp_w();
} break;

//eor_addrx
case 0x5d: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  op_io_cond4(aa.w, aa.w + regs.x.w);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.x.w);
  if(regs.p.m) { op_eor_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.x.w + 1);
  op_eor_w();
} break;

//lda_addrx
case 0xbd: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  op_io_cond4(aa.w, aa.w + regs.x.w);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.x.w);
  if(regs.p.m) { op_lda_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.x.w + 1);
  op_lda_w();
} break;

//ldy_addrx
case 0xbc: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  op_io_cond4(aa.w, aa.w + regs.x.w);
  if(regs.p.x) last_cycle();
  rd.l = op_readdbr(aa.w + regs.x.w);
  if(regs.p.x) { op_ldy_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.x.w + 1);
  op_ldy_w();
} break;

//ora_addrx
case 0x1d: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  op_io_cond4(aa.w, aa.w + regs.x.w);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.x.w);
  if(regs.p.m) { op_ora_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.x.w + 1);
  op_ora_w();
} break;

//sbc_addrx
case 0xfd: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  op_io_cond4(aa.w, aa.w + regs.x.w);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.x.w);
  if(regs.p.m) { op_sbc_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.x.w + 1);
  op_sbc_w();
} break;

//adc_addry
case 0x79: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  op_io_cond4(aa.w, aa.w + regs.y.w);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.y.w);
  if(regs.p.m) { op_adc_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.y.w + 1);
  op_adc_w();
} break;

//and_addry
case 0x39: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  op_io_cond4(aa.w, aa.w + regs.y.w);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.y.w);
  if(regs.p.m) { op_and_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.y.w + 1);
  op_and_w();
} break;

//cmp_addry
case 0xd9: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  op_io_cond4(aa.w, aa.w + regs.y.w);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.y.w);
  if(regs.p.m) { op_cmp_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.y.w + 1);
  op_cmp_w();
} break;

//eor_addry
case 0x59: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  op_io_cond4(aa.w, aa.w + regs.y.w);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.y.w);
  if(regs.p.m) { op_eor_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.y.w + 1);
  op_eor_w();
} break;

//lda_addry
case 0xb9: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  op_io_cond4(aa.w, aa.w + regs.y.w);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.y.w);
  if(regs.p.m) { op_lda_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.y.w + 1);
  op_lda_w();
} break;

//ldx_addry
case 0xbe: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  op_io_cond4(aa.w, aa.w + regs.y.w);
  if(regs.p.x) last_cycle();
  rd.l = op_readdbr(aa.w + regs.y.w);
  if(regs.p.x) { op_ldx_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.y.w + 1);
  op_ldx_w();
} break;

//ora_addry
case 0x19: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  op_io_cond4(aa.w, aa.w + regs.y.w);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.y.w);
  if(regs.p.m) { op_ora_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.y.w + 1);
  op_ora_w();
} break;

//sbc_addry
case 0xf9: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  op_io_cond4(aa.w, aa.w + regs.y.w);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.y.w);
  if(regs.p.m) { op_sbc_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.y.w + 1);
  op_sbc_w();
} break;

//adc_long
case 0x6f: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  aa.b = op_readpc();
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d);
  if(regs.p.m) { op_adc_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + 1);
  op_adc_w();
} break;

//and_long
case 0x2f: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  aa.b = op_readpc();
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d);
  if(regs.p.m) { op_and_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + 1);
  op_and_w();
} break;

//cmp_long
case 0xcf: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  aa.b = op_readpc();
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d);
  if(regs.p.m) { op_cmp_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + 1);
  op_cmp_w();
} break;

//eor_long
case 0x4f: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  aa.b = op_readpc();
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d);
  if(regs.p.m) { op_eor_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + 1);
  op_eor_w();
} break;

//lda_long
case 0xaf: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  aa.b = op_readpc();
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d);
  if(regs.p.m) { op_lda_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + 1);
  op_lda_w();
} break;

//ora_long
case 0x0f: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  aa.b = op_readpc();
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d);
  if(regs.p.m) { op_ora_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + 1);
  op_ora_w();
} break;

//sbc_long
case 0xef: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  aa.b = op_readpc();
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d);
  if(regs.p.m) { op_sbc_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + 1);
  op_sbc_w();
} break;

//adc_longx
case 0x7f: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  aa.b = op_readpc();
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d + regs.x.w);
  if(regs.p.m) { op_adc_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + regs.x.w + 1);
  op_adc_w();
} break;

//and_longx
case 0x3f: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  aa.b = op_readpc();
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d + regs.x.w);
  if(regs.p.m) { op_and_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + regs.x.w + 1);
  op_and_w();
} break;

//cmp_longx
case 0xdf: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  aa.b = op_readpc();
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d + regs.x.w);
  if(regs.p.m) { op_cmp_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + regs.x.w + 1);
  op_cmp_w();
} break;

//eor_longx
case 0x5f: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  aa.b = op_readpc();
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d + regs.x.w);
  if(regs.p.m) { op_eor_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + regs.x.w + 1);
  op_eor_w();
} break;

//lda_longx
case 0xbf: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  aa.b = op_readpc();
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d + regs.x.w);
  if(regs.p.m) { op_lda_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + regs.x.w + 1);
  op_lda_w();
} break;

//ora_longx
case 0x1f: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  aa.b = op_readpc();
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d + regs.x.w);
  if(regs.p.m) { op_ora_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + regs.x.w + 1);
  op_ora_w();
} break;

//sbc_longx
case 0xff: {
  aa.l = op_readpc();
  aa.h = op_readpc();
  aa.b = op_readpc();
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d + regs.x.w);
  if(regs.p.m) { op_sbc_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + regs.x.w + 1);
  op_sbc_w();
} break;

//adc_dp
case 0x65: {
  dp = op_readpc();
  op_io_cond2();
  if(regs.p.m) last_cycle();
  rd.l = op_readdp(dp);
  if(regs.p.m) { op_adc_b(); break; }
  last_cycle();
  rd.h = op_readdp(dp + 1);
  op_adc_w();
} break;

//and_dp
case 0x25: {
  dp = op_readpc();
  op_io_cond2();
  if(regs.p.m) last_cycle();
  rd.l = op_readdp(dp);
  if(regs.p.m) { op_and_b(); break; }
  last_cycle();
  rd.h = op_readdp(dp + 1);
  op_and_w();
} break;

//bit_dp
case 0x24: {
  dp = op_readpc();
  op_io_cond2();
  if(regs.p.m) last_cycle();
  rd.l = op_readdp(dp);
  if(regs.p.m) { op_bit_b(); break; }
  last_cycle();
  rd.h = op_readdp(dp + 1);
  op_bit_w();
} break;

//cmp_dp
case 0xc5: {
  dp = op_readpc();
  op_io_cond2();
  if(regs.p.m) last_cycle();
  rd.l = op_readdp(dp);
  if(regs.p.m) { op_cmp_b(); break; }
  last_cycle();
  rd.h = op_readdp(dp + 1);
  op_cmp_w();
} break;

//cpx_dp
case 0xe4: {
  dp = op_readpc();
  op_io_cond2();
  if(regs.p.x) last_cycle();
  rd.l = op_readdp(dp);
  if(regs.p.x) { op_cpx_b(); break; }
  last_cycle();
  rd.h = op_readdp(dp + 1);
  op_cpx_w();
} break;

//cpy_dp
case 0xc4: {
  dp = op_readpc();
  op_io_cond2();
  if(regs.p.x) last_cycle();
  rd.l = op_readdp(dp);
  if(regs.p.x) { op_cpy_b(); break; }
  last_cycle();
  rd.h = op_readdp(dp + 1);
  op_cpy_w();
} break;

//eor_dp
case 0x45: {
  dp = op_readpc();
  op_io_cond2();
  if(regs.p.m) last_cycle();
  rd.l = op_readdp(dp);
  if(regs.p.m) { op_eor_b(); break; }
  last_cycle();
  rd.h = op_readdp(dp + 1);
  op_eor_w();
} break;

//lda_dp
case 0xa5: {
  dp = op_readpc();
  op_io_cond2();
  if(regs.p.m) last_cycle();
  rd.l = op_readdp(dp);
  if(regs.p.m) { op_lda_b(); break; }
  last_cycle();
  rd.h = op_readdp(dp + 1);
  op_lda_w();
} break;

//ldx_dp
case 0xa6: {
  dp = op_readpc();
  op_io_cond2();
  if(regs.p.x) last_cycle();
  rd.l = op_readdp(dp);
  if(regs.p.x) { op_ldx_b(); break; }
  last_cycle();
  rd.h = op_readdp(dp + 1);
  op_ldx_w();
} break;

//ldy_dp
case 0xa4: {
  dp = op_readpc();
  op_io_cond2();
  if(regs.p.x) last_cycle();
  rd.l = op_readdp(dp);
  if(regs.p.x) { op_ldy_b(); break; }
  last_cycle();
  rd.h = op_readdp(dp + 1);
  op_ldy_w();
} break;

//ora_dp
case 0x05: {
  dp = op_readpc();
  op_io_cond2();
  if(regs.p.m) last_cycle();
  rd.l = op_readdp(dp);
  if(regs.p.m) { op_ora_b(); break; }
  last_cycle();
  rd.h = op_readdp(dp + 1);
  op_ora_w();
} break;

//sbc_dp
case 0xe5: {
  dp = op_readpc();
  op_io_cond2();
  if(regs.p.m) last_cycle();
  rd.l = op_readdp(dp);
  if(regs.p.m) { op_sbc_b(); break; }
  last_cycle();
  rd.h = op_readdp(dp + 1);
  op_sbc_w();
} break;

//adc_dpx
case 0x75: {
  dp = op_readpc();
  op_io_cond2();
  op_io();
  if(regs.p.m) last_cycle();
  rd.l = op_readdp(dp + regs.x.w);
  if(regs.p.m) { op_adc_b(); break; }
  last_cycle();
  rd.h = op_readdp(dp + regs.x.w + 1);
  op_adc_w();
} break;

//and_dpx
case 0x35: {
  dp = op_readpc();
  op_io_cond2();
  op_io();
  if(regs.p.m) last_cycle();
  rd.l = op_readdp(dp + regs.x.w);
  if(regs.p.m) { op_and_b(); break; }
  last_cycle();
  rd.h = op_readdp(dp + regs.x.w + 1);
  op_and_w();
} break;

//bit_dpx
case 0x34: {
  dp = op_readpc();
  op_io_cond2();
  op_io();
  if(regs.p.m) last_cycle();
  rd.l = op_readdp(dp + regs.x.w);
  if(regs.p.m) { op_bit_b(); break; }
  last_cycle();
  rd.h = op_readdp(dp + regs.x.w + 1);
  op_bit_w();
} break;

//cmp_dpx
case 0xd5: {
  dp = op_readpc();
  op_io_cond2();
  op_io();
  if(regs.p.m) last_cycle();
  rd.l = op_readdp(dp + regs.x.w);
  if(regs.p.m) { op_cmp_b(); break; }
  last_cycle();
  rd.h = op_readdp(dp + regs.x.w + 1);
  op_cmp_w();
} break;

//eor_dpx
case 0x55: {
  dp = op_readpc();
  op_io_cond2();
  op_io();
  if(regs.p.m) last_cycle();
  rd.l = op_readdp(dp + regs.x.w);
  if(regs.p.m) { op_eor_b(); break; }
  last_cycle();
  rd.h = op_readdp(dp + regs.x.w + 1);
  op_eor_w();
} break;

//lda_dpx
case 0xb5: {
  dp = op_readpc();
  op_io_cond2();
  op_io();
  if(regs.p.m) last_cycle();
  rd.l = op_readdp(dp + regs.x.w);
  if(regs.p.m) { op_lda_b(); break; }
  last_cycle();
  rd.h = op_readdp(dp + regs.x.w + 1);
  op_lda_w();
} break;

//ldy_dpx
case 0xb4: {
  dp = op_readpc();
  op_io_cond2();
  op_io();
  if(regs.p.x) last_cycle();
  rd.l = op_readdp(dp + regs.x.w);
  if(regs.p.x) { op_ldy_b(); break; }
  last_cycle();
  rd.h = op_readdp(dp + regs.x.w + 1);
  op_ldy_w();
} break;

//ora_dpx
case 0x15: {
  dp = op_readpc();
  op_io_cond2();
  op_io();
  if(regs.p.m) last_cycle();
  rd.l = op_readdp(dp + regs.x.w);
  if(regs.p.m) { op_ora_b(); break; }
  last_cycle();
  rd.h = op_readdp(dp + regs.x.w + 1);
  op_ora_w();
} break;

//sbc_dpx
case 0xf5: {
  dp = op_readpc();
  op_io_cond2();
  op_io();
  if(regs.p.m) last_cycle();
  rd.l = op_readdp(dp + regs.x.w);
  if(regs.p.m) { op_sbc_b(); break; }
  last_cycle();
  rd.h = op_readdp(dp + regs.x.w + 1);
  op_sbc_w();
} break;

//ldx_dpy
case 0xb6: {
  dp = op_readpc();
  op_io_cond2();
  op_io();
  if(regs.p.x) last_cycle();
  rd.l = op_readdp(dp + regs.y.w);
  if(regs.p.x) { op_ldx_b(); break; }
  last_cycle();
  rd.h = op_readdp(dp + regs.y.w + 1);
  op_ldx_w();
} break;

//adc_idp
case 0x72: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w);
  if(regs.p.m) { op_adc_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + 1);
  op_adc_w();
} break;

//and_idp
case 0x32: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w);
  if(regs.p.m) { op_and_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + 1);
  op_and_w();
} break;

//cmp_idp
case 0xd2: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w);
  if(regs.p.m) { op_cmp_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + 1);
  op_cmp_w();
} break;

//eor_idp
case 0x52: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w);
  if(regs.p.m) { op_eor_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + 1);
  op_eor_w();
} break;

//lda_idp
case 0xb2: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w);
  if(regs.p.m) { op_lda_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + 1);
  op_lda_w();
} break;

//ora_idp
case 0x12: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w);
  if(regs.p.m) { op_ora_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + 1);
  op_ora_w();
} break;

//sbc_idp
case 0xf2: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w);
  if(regs.p.m) { op_sbc_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + 1);
  op_sbc_w();
} break;

//adc_idpx
case 0x61: {
  dp = op_readpc();
  op_io_cond2();
  op_io();
  aa.l = op_readdp(dp + regs.x.w);
  aa.h = op_readdp(dp + regs.x.w + 1);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w);
  if(regs.p.m) { op_adc_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + 1);
  op_adc_w();
} break;

//and_idpx
case 0x21: {
  dp = op_readpc();
  op_io_cond2();
  op_io();
  aa.l = op_readdp(dp + regs.x.w);
  aa.h = op_readdp(dp + regs.x.w + 1);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w);
  if(regs.p.m) { op_and_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + 1);
  op_and_w();
} break;

//cmp_idpx
case 0xc1: {
  dp = op_readpc();
  op_io_cond2();
  op_io();
  aa.l = op_readdp(dp + regs.x.w);
  aa.h = op_readdp(dp + regs.x.w + 1);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w);
  if(regs.p.m) { op_cmp_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + 1);
  op_cmp_w();
} break;

//eor_idpx
case 0x41: {
  dp = op_readpc();
  op_io_cond2();
  op_io();
  aa.l = op_readdp(dp + regs.x.w);
  aa.h = op_readdp(dp + regs.x.w + 1);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w);
  if(regs.p.m) { op_eor_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + 1);
  op_eor_w();
} break;

//lda_idpx
case 0xa1: {
  dp = op_readpc();
  op_io_cond2();
  op_io();
  aa.l = op_readdp(dp + regs.x.w);
  aa.h = op_readdp(dp + regs.x.w + 1);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w);
  if(regs.p.m) { op_lda_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + 1);
  op_lda_w();
} break;

//ora_idpx
case 0x01: {
  dp = op_readpc();
  op_io_cond2();
  op_io();
  aa.l = op_readdp(dp + regs.x.w);
  aa.h = op_readdp(dp + regs.x.w + 1);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w);
  if(regs.p.m) { op_ora_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + 1);
  op_ora_w();
} break;

//sbc_idpx
case 0xe1: {
  dp = op_readpc();
  op_io_cond2();
  op_io();
  aa.l = op_readdp(dp + regs.x.w);
  aa.h = op_readdp(dp + regs.x.w + 1);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w);
  if(regs.p.m) { op_sbc_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + 1);
  op_sbc_w();
} break;

//adc_idpy
case 0x71: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  op_io_cond4(aa.w, aa.w + regs.y.w);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.y.w);
  if(regs.p.m) { op_adc_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.y.w + 1);
  op_adc_w();
} break;

//and_idpy
case 0x31: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  op_io_cond4(aa.w, aa.w + regs.y.w);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.y.w);
  if(regs.p.m) { op_and_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.y.w + 1);
  op_and_w();
} break;

//cmp_idpy
case 0xd1: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  op_io_cond4(aa.w, aa.w + regs.y.w);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.y.w);
  if(regs.p.m) { op_cmp_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.y.w + 1);
  op_cmp_w();
} break;

//eor_idpy
case 0x51: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  op_io_cond4(aa.w, aa.w + regs.y.w);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.y.w);
  if(regs.p.m) { op_eor_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.y.w + 1);
  op_eor_w();
} break;

//lda_idpy
case 0xb1: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  op_io_cond4(aa.w, aa.w + regs.y.w);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.y.w);
  if(regs.p.m) { op_lda_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.y.w + 1);
  op_lda_w();
} break;

//ora_idpy
case 0x11: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  op_io_cond4(aa.w, aa.w + regs.y.w);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.y.w);
  if(regs.p.m) { op_ora_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.y.w + 1);
  op_ora_w();
} break;

//sbc_idpy
case 0xf1: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  op_io_cond4(aa.w, aa.w + regs.y.w);
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.y.w);
  if(regs.p.m) { op_sbc_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.y.w + 1);
  op_sbc_w();
} break;

//adc_ildp
case 0x67: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  aa.b = op_readdp(dp + 2);
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d);
  if(regs.p.m) { op_adc_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + 1);
  op_adc_w();
} break;

//and_ildp
case 0x27: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  aa.b = op_readdp(dp + 2);
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d);
  if(regs.p.m) { op_and_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + 1);
  op_and_w();
} break;

//cmp_ildp
case 0xc7: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  aa.b = op_readdp(dp + 2);
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d);
  if(regs.p.m) { op_cmp_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + 1);
  op_cmp_w();
} break;

//eor_ildp
case 0x47: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  aa.b = op_readdp(dp + 2);
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d);
  if(regs.p.m) { op_eor_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + 1);
  op_eor_w();
} break;

//lda_ildp
case 0xa7: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  aa.b = op_readdp(dp + 2);
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d);
  if(regs.p.m) { op_lda_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + 1);
  op_lda_w();
} break;

//ora_ildp
case 0x07: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  aa.b = op_readdp(dp + 2);
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d);
  if(regs.p.m) { op_ora_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + 1);
  op_ora_w();
} break;

//sbc_ildp
case 0xe7: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  aa.b = op_readdp(dp + 2);
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d);
  if(regs.p.m) { op_sbc_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + 1);
  op_sbc_w();
} break;

//adc_ildpy
case 0x77: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  aa.b = op_readdp(dp + 2);
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d + regs.y.w);
  if(regs.p.m) { op_adc_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + regs.y.w + 1);
  op_adc_w();
} break;

//and_ildpy
case 0x37: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  aa.b = op_readdp(dp + 2);
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d + regs.y.w);
  if(regs.p.m) { op_and_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + regs.y.w + 1);
  op_and_w();
} break;

//cmp_ildpy
case 0xd7: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  aa.b = op_readdp(dp + 2);
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d + regs.y.w);
  if(regs.p.m) { op_cmp_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + regs.y.w + 1);
  op_cmp_w();
} break;

//eor_ildpy
case 0x57: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  aa.b = op_readdp(dp + 2);
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d + regs.y.w);
  if(regs.p.m) { op_eor_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + regs.y.w + 1);
  op_eor_w();
} break;

//lda_ildpy
case 0xb7: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  aa.b = op_readdp(dp + 2);
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d + regs.y.w);
  if(regs.p.m) { op_lda_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + regs.y.w + 1);
  op_lda_w();
} break;

//ora_ildpy
case 0x17: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  aa.b = op_readdp(dp + 2);
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d + regs.y.w);
  if(regs.p.m) { op_ora_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + regs.y.w + 1);
  op_ora_w();
} break;

//sbc_ildpy
case 0xf7: {
  dp = op_readpc();
  op_io_cond2();
  aa.l = op_readdp(dp);
  aa.h = op_readdp(dp + 1);
  aa.b = op_readdp(dp + 2);
  if(regs.p.m) last_cycle();
  rd.l = op_readlong(aa.d + regs.y.w);
  if(regs.p.m) { op_sbc_b(); break; }
  last_cycle();
  rd.h = op_readlong(aa.d + regs.y.w + 1);
  op_sbc_w();
} break;

//adc_sr
case 0x63: {
  sp = op_readpc();
  op_io();
  if(regs.p.m) last_cycle();
  rd.l = op_readsp(sp);
  if(regs.p.m) { op_adc_b(); break; }
  last_cycle();
  rd.h = op_readsp(sp + 1);
  op_adc_w();
} break;

//and_sr
case 0x23: {
  sp = op_readpc();
  op_io();
  if(regs.p.m) last_cycle();
  rd.l = op_readsp(sp);
  if(regs.p.m) { op_and_b(); break; }
  last_cycle();
  rd.h = op_readsp(sp + 1);
  op_and_w();
} break;

//cmp_sr
case 0xc3: {
  sp = op_readpc();
  op_io();
  if(regs.p.m) last_cycle();
  rd.l = op_readsp(sp);
  if(regs.p.m) { op_cmp_b(); break; }
  last_cycle();
  rd.h = op_readsp(sp + 1);
  op_cmp_w();
} break;

//eor_sr
case 0x43: {
  sp = op_readpc();
  op_io();
  if(regs.p.m) last_cycle();
  rd.l = op_readsp(sp);
  if(regs.p.m) { op_eor_b(); break; }
  last_cycle();
  rd.h = op_readsp(sp + 1);
  op_eor_w();
} break;

//lda_sr
case 0xa3: {
  sp = op_readpc();
  op_io();
  if(regs.p.m) last_cycle();
  rd.l = op_readsp(sp);
  if(regs.p.m) { op_lda_b(); break; }
  last_cycle();
  rd.h = op_readsp(sp + 1);
  op_lda_w();
} break;

//ora_sr
case 0x03: {
  sp = op_readpc();
  op_io();
  if(regs.p.m) last_cycle();
  rd.l = op_readsp(sp);
  if(regs.p.m) { op_ora_b(); break; }
  last_cycle();
  rd.h = op_readsp(sp + 1);
  op_ora_w();
} break;

//sbc_sr
case 0xe3: {
  sp = op_readpc();
  op_io();
  if(regs.p.m) last_cycle();
  rd.l = op_readsp(sp);
  if(regs.p.m) { op_sbc_b(); break; }
  last_cycle();
  rd.h = op_readsp(sp + 1);
  op_sbc_w();
} break;

//adc_isry
case 0x73: {
  sp = op_readpc();
  op_io();
  aa.l = op_readsp(sp);
  aa.h = op_readsp(sp + 1);
  op_io();
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.y.w);
  if(regs.p.m) { op_adc_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.y.w + 1);
  op_adc_w();
} break;

//and_isry
case 0x33: {
  sp = op_readpc();
  op_io();
  aa.l = op_readsp(sp);
  aa.h = op_readsp(sp + 1);
  op_io();
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.y.w);
  if(regs.p.m) { op_and_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.y.w + 1);
  op_and_w();
} break;

//cmp_isry
case 0xd3: {
  sp = op_readpc();
  op_io();
  aa.l = op_readsp(sp);
  aa.h = op_readsp(sp + 1);
  op_io();
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.y.w);
  if(regs.p.m) { op_cmp_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.y.w + 1);
  op_cmp_w();
} break;

//eor_isry
case 0x53: {
  sp = op_readpc();
  op_io();
  aa.l = op_readsp(sp);
  aa.h = op_readsp(sp + 1);
  op_io();
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.y.w);
  if(regs.p.m) { op_eor_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.y.w + 1);
  op_eor_w();
} break;

//lda_isry
case 0xb3: {
  sp = op_readpc();
  op_io();
  aa.l = op_readsp(sp);
  aa.h = op_readsp(sp + 1);
  op_io();
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.y.w);
  if(regs.p.m) { op_lda_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.y.w + 1);
  op_lda_w();
} break;

//ora_isry
case 0x13: {
  sp = op_readpc();
  op_io();
  aa.l = op_readsp(sp);
  aa.h = op_readsp(sp + 1);
  op_io();
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.y.w);
  if(regs.p.m) { op_ora_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.y.w + 1);
  op_ora_w();
} break;

//sbc_isry
case 0xf3: {
  sp = op_readpc();
  op_io();
  aa.l = op_readsp(sp);
  aa.h = op_readsp(sp + 1);
  op_io();
  if(regs.p.m) last_cycle();
  rd.l = op_readdbr(aa.w + regs.y.w);
  if(regs.p.m) { op_sbc_b(); break; }
  last_cycle();
  rd.h = op_readdbr(aa.w + regs.y.w + 1);
  op_sbc_w();
} break;

//bit_const
case 0x89: {
  if(regs.p.m) last_cycle();
  rd.l = op_readpc();
  if(regs.p.m) {
    regs.p.z = ((rd.l & regs.a.l) == 0);
    break;
  }
  last_cycle();
  rd.h = op_readpc();
  regs.p.z = ((rd.w & regs.a.w) == 0);
} break;

#endif
