void R65816::op_pea_e() { aa.l = op_readpc(); aa.h = op_readpc(); op_writestackn(aa.h); L op_writestackn(aa.l); regs.s.h = 0x01; }
void R65816::op_per_n() { aa.l = op_readpc(); aa.h = op_readpc(); op_io(); rd.w = regs.pc.d + (int16)aa.w; op_writestackn(rd.h); L op_writestackn(rd.l); }
void R65816::op_pei_n() { dp = op_readpc(); op_io_cond2(); aa.l = op_readdp(dp + 0); aa.h = op_readdp(dp + 1); op_writestackn(aa.h); L op_writestackn(aa.l); }
void R65816::op_jsr_iaddrx_n() { aa.l = op_readpc(); op_writestackn(regs.pc.h); op_writestackn(regs.pc.l); aa.h = op_readpc(); op_io(); rd.l = op_readpbr(aa.w + regs.x.w + 0); L rd.h = op_readpbr(aa.w + regs.x.w + 1); regs.pc.w = rd.w; }
void R65816::op_jsr_long_n() { aa.l = op_readpc(); aa.h = op_readpc(); op_writestackn(regs.pc.b); op_io(); aa.b = op_readpc(); regs.pc.w--; op_writestackn(regs.pc.h); L op_writestackn(regs.pc.l); regs.pc.d = aa.d & 0xffffff; }
void CPUcore::op_jsr_iaddrx() { aa.l = op_readpc(); op_writestackn(regs.pc.h); op_writestackn(regs.pc.l); aa.h = op_readpc(); op_io(); rd.l = op_readpbr(aa.w + regs.x.w + 0); L rd.h = op_readpbr(aa.w + regs.x.w + 1); regs.pc.w = rd.w; if(regs.e) regs.s.h = 0x01; }
void CPUcore::op_jsr_long() { aa.l = op_readpc(); aa.h = op_readpc(); op_writestackn(regs.pc.b); op_io(); aa.b = op_readpc(); regs.pc.w--; op_writestackn(regs.pc.h); L op_writestackn(regs.pc.l); regs.pc.d = aa.d & 0xffffff; if(regs.e) regs.s.h = 0x01; }
void R65816::op_pea_n() { aa.l = op_readpc(); aa.h = op_readpc(); op_writestackn(aa.h); L op_writestackn(aa.l); }
void R65816::op_phd_n() { op_io(); op_writestackn(regs.d.h); L op_writestackn(regs.d.l); }
void R65816::op_phd_e() { op_io(); op_writestackn(regs.d.h); L op_writestackn(regs.d.l); regs.s.h = 0x01; }