123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293 |
- #ifdef SCPU_CPP
- //sta_addr
- case 0x8d: {
- aa.l = op_readpc();
- aa.h = op_readpc();
- if(regs.p.m) last_cycle();
- op_writedbr(aa.w, regs.a.w);
- if(regs.p.m) break;
- last_cycle();
- op_writedbr(aa.w + 1, regs.a.w >> 8);
- } break;
- //stx_addr
- case 0x8e: {
- aa.l = op_readpc();
- aa.h = op_readpc();
- if(regs.p.x) last_cycle();
- op_writedbr(aa.w, regs.x.w);
- if(regs.p.x) break;
- last_cycle();
- op_writedbr(aa.w + 1, regs.x.w >> 8);
- } break;
- //sty_addr
- case 0x8c: {
- aa.l = op_readpc();
- aa.h = op_readpc();
- if(regs.p.x) last_cycle();
- op_writedbr(aa.w, regs.y.w);
- if(regs.p.x) break;
- last_cycle();
- op_writedbr(aa.w + 1, regs.y.w >> 8);
- } break;
- //stz_addr
- case 0x9c: {
- aa.l = op_readpc();
- aa.h = op_readpc();
- if(regs.p.m) last_cycle();
- op_writedbr(aa.w, 0x0000);
- if(regs.p.m) break;
- last_cycle();
- op_writedbr(aa.w + 1, 0x0000 >> 8);
- } break;
- //sta_addrx
- case 0x9d: {
- aa.l = op_readpc();
- aa.h = op_readpc();
- op_io();
- if(regs.p.m) last_cycle();
- op_writedbr(aa.w + regs.x.w, regs.a.w);
- if(regs.p.m) break;
- last_cycle();
- op_writedbr(aa.w + regs.x.w + 1, regs.a.w >> 8);
- } break;
- //stz_addrx
- case 0x9e: {
- aa.l = op_readpc();
- aa.h = op_readpc();
- op_io();
- if(regs.p.m) last_cycle();
- op_writedbr(aa.w + regs.x.w, 0x0000);
- if(regs.p.m) break;
- last_cycle();
- op_writedbr(aa.w + regs.x.w + 1, 0x0000 >> 8);
- } break;
- //sta_addry
- case 0x99: {
- aa.l = op_readpc();
- aa.h = op_readpc();
- op_io();
- if(regs.p.m) last_cycle();
- op_writedbr(aa.w + regs.y.w, regs.a.l);
- if(regs.p.m) break;
- last_cycle();
- op_writedbr(aa.w + regs.y.w + 1, regs.a.h);
- } break;
- //sta_long
- case 0x8f: {
- aa.l = op_readpc();
- aa.h = op_readpc();
- aa.b = op_readpc();
- if(regs.p.m) last_cycle();
- op_writelong(aa.d, regs.a.l);
- if(regs.p.m) break;
- last_cycle();
- op_writelong(aa.d + 1, regs.a.h);
- } break;
- //sta_longx
- case 0x9f: {
- aa.l = op_readpc();
- aa.h = op_readpc();
- aa.b = op_readpc();
- if(regs.p.m) last_cycle();
- op_writelong(aa.d + regs.x.w, regs.a.l);
- if(regs.p.m) break;
- last_cycle();
- op_writelong(aa.d + regs.x.w + 1, regs.a.h);
- } break;
- //sta_dp
- case 0x85: {
- dp = op_readpc();
- op_io_cond2();
- if(regs.p.m) last_cycle();
- op_writedp(dp, regs.a.w);
- if(regs.p.m) break;
- last_cycle();
- op_writedp(dp + 1, regs.a.w >> 8);
- } break;
- //stx_dp
- case 0x86: {
- dp = op_readpc();
- op_io_cond2();
- if(regs.p.x) last_cycle();
- op_writedp(dp, regs.x.w);
- if(regs.p.x) break;
- last_cycle();
- op_writedp(dp + 1, regs.x.w >> 8);
- } break;
- //sty_dp
- case 0x84: {
- dp = op_readpc();
- op_io_cond2();
- if(regs.p.x) last_cycle();
- op_writedp(dp, regs.y.w);
- if(regs.p.x) break;
- last_cycle();
- op_writedp(dp + 1, regs.y.w >> 8);
- } break;
- //stz_dp
- case 0x64: {
- dp = op_readpc();
- op_io_cond2();
- if(regs.p.m) last_cycle();
- op_writedp(dp, 0x0000);
- if(regs.p.m) break;
- last_cycle();
- op_writedp(dp + 1, 0x0000 >> 8);
- } break;
- //sta_dpx
- case 0x95: {
- dp = op_readpc();
- op_io_cond2();
- op_io();
- if(regs.p.m) last_cycle();
- op_writedp(dp + regs.x.w, regs.a.w);
- if(regs.p.m) break;
- last_cycle();
- op_writedp(dp + regs.x.w + 1, regs.a.w >> 8);
- } break;
- //sty_dpx
- case 0x94: {
- dp = op_readpc();
- op_io_cond2();
- op_io();
- if(regs.p.x) last_cycle();
- op_writedp(dp + regs.x.w, regs.y.w);
- if(regs.p.x) break;
- last_cycle();
- op_writedp(dp + regs.x.w + 1, regs.y.w >> 8);
- } break;
- //stz_dpx
- case 0x74: {
- dp = op_readpc();
- op_io_cond2();
- op_io();
- if(regs.p.m) last_cycle();
- op_writedp(dp + regs.x.w, 0x0000);
- if(regs.p.m) break;
- last_cycle();
- op_writedp(dp + regs.x.w + 1, 0x0000 >> 8);
- } break;
- //stx_dpy
- case 0x96: {
- dp = op_readpc();
- op_io_cond2();
- op_io();
- if(regs.p.x) last_cycle();
- op_writedp(dp + regs.y.w, regs.x.l);
- if(regs.p.x) break;
- last_cycle();
- op_writedp(dp + regs.y.w + 1, regs.x.h);
- } break;
- //sta_idp
- case 0x92: {
- dp = op_readpc();
- op_io_cond2();
- aa.l = op_readdp(dp);
- aa.h = op_readdp(dp + 1);
- if(regs.p.m) last_cycle();
- op_writedbr(aa.w, regs.a.l);
- if(regs.p.m) break;
- last_cycle();
- op_writedbr(aa.w + 1, regs.a.h);
- } break;
- //sta_ildp
- case 0x87: {
- 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();
- op_writelong(aa.d, regs.a.l);
- if(regs.p.m) break;
- last_cycle();
- op_writelong(aa.d + 1, regs.a.h);
- } break;
- //sta_idpx
- case 0x81: {
- 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();
- op_writedbr(aa.w, regs.a.l);
- if(regs.p.m) break;
- last_cycle();
- op_writedbr(aa.w + 1, regs.a.h);
- } break;
- //sta_idpy
- case 0x91: {
- dp = op_readpc();
- op_io_cond2();
- aa.l = op_readdp(dp);
- aa.h = op_readdp(dp + 1);
- op_io();
- if(regs.p.m) last_cycle();
- op_writedbr(aa.w + regs.y.w, regs.a.l);
- if(regs.p.m) break;
- last_cycle();
- op_writedbr(aa.w + regs.y.w + 1, regs.a.h);
- } break;
- //sta_ildpy
- case 0x97: {
- 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();
- op_writelong(aa.d + regs.y.w, regs.a.l);
- if(regs.p.m) break;
- last_cycle();
- op_writelong(aa.d + regs.y.w + 1, regs.a.h);
- } break;
- //sta_sr
- case 0x83: {
- sp = op_readpc();
- op_io();
- if(regs.p.m) last_cycle();
- op_writesp(sp, regs.a.l);
- if(regs.p.m) break;
- last_cycle();
- op_writesp(sp + 1, regs.a.h);
- } break;
- //sta_isry
- case 0x93: {
- sp = op_readpc();
- op_io();
- aa.l = op_readsp(sp);
- aa.h = op_readsp(sp + 1);
- op_io();
- if(regs.p.m) last_cycle();
- op_writedbr(aa.w + regs.y.w, regs.a.l);
- if(regs.p.m) break;
- last_cycle();
- op_writedbr(aa.w + regs.y.w + 1, regs.a.h);
- } break;
- #endif
|