template<int i> void CPUcore::op_write_longr_w() { aa.l = op_readpc(); aa.h = op_readpc(); aa.b = op_readpc(); op_writelong(aa.d + regs.r[i] + 0, regs.a.l); L op_writelong(aa.d + regs.r[i] + 1, regs.a.h); }
void CPUcore::op_sta_ildp_w() { dp = op_readpc(); op_io_cond2(); aa.l = op_readdpn(dp + 0); aa.h = op_readdpn(dp + 1); aa.b = op_readdpn(dp + 2); op_writelong(aa.d + 0, regs.a.l); L op_writelong(aa.d + 1, regs.a.h); }
template<int adjust> void R65816::op_move_w() { dp = op_readpc(); sp = op_readpc(); regs.db = dp; rd.l = op_readlong((sp << 16) | regs.x.w); op_writelong((dp << 16) | regs.y.w, rd.l); op_io(); regs.x.w += adjust; regs.y.w += adjust; L op_io(); if(regs.a.w--) regs.pc.w -= 3; }