123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- inc(0x1a, regs.p.m, a),
- inx(0xe8, regs.p.x, x),
- iny(0xc8, regs.p.x, y) {
- 1:last_cycle();
- op_io_irq();
- if($1) {
- regs.$2.l++;
- regs.p.n = !!(regs.$2.l & 0x80);
- regs.p.z = (regs.$2.l == 0);
- } else {
- regs.$2.w++;
- regs.p.n = !!(regs.$2.w & 0x8000);
- regs.p.z = (regs.$2.w == 0);
- }
- }
- dec(0x3a, regs.p.m, a),
- dex(0xca, regs.p.x, x),
- dey(0x88, regs.p.x, y) {
- 1:last_cycle();
- op_io_irq();
- if($1) {
- regs.$2.l--;
- regs.p.n = !!(regs.$2.l & 0x80);
- regs.p.z = (regs.$2.l == 0);
- } else {
- regs.$2.w--;
- regs.p.n = !!(regs.$2.w & 0x8000);
- regs.p.z = (regs.$2.w == 0);
- }
- }
- asl(0x0a) {
- 1:last_cycle();
- op_io_irq();
- if(regs.p.m) {
- regs.p.c = !!(regs.a.l & 0x80);
- regs.a.l <<= 1;
- regs.p.n = !!(regs.a.l & 0x80);
- regs.p.z = (regs.a.l == 0);
- } else {
- regs.p.c = !!(regs.a.w & 0x8000);
- regs.a.w <<= 1;
- regs.p.n = !!(regs.a.w & 0x8000);
- regs.p.z = (regs.a.w == 0);
- }
- }
- lsr(0x4a) {
- 1:last_cycle();
- op_io_irq();
- if(regs.p.m) {
- regs.p.c = regs.a.l & 1;
- regs.a.l >>= 1;
- regs.p.n = !!(regs.a.l & 0x80);
- regs.p.z = (regs.a.l == 0);
- } else {
- regs.p.c = regs.a.w & 1;
- regs.a.w >>= 1;
- regs.p.n = !!(regs.a.w & 0x8000);
- regs.p.z = (regs.a.w == 0);
- }
- }
- rol(0x2a) {
- 1:last_cycle();
- op_io_irq();
- uint16 c = regs.p.c;
- if(regs.p.m) {
- regs.p.c = !!(regs.a.l & 0x80);
- regs.a.l <<= 1;
- regs.a.l |= c;
- regs.p.n = !!(regs.a.l & 0x80);
- regs.p.z = (regs.a.l == 0);
- } else {
- regs.p.c = !!(regs.a.w & 0x8000);
- regs.a.w <<= 1;
- regs.a.w |= c;
- regs.p.n = !!(regs.a.w & 0x8000);
- regs.p.z = (regs.a.w == 0);
- }
- }
- ror(0x6a) {
- 1:last_cycle();
- op_io_irq();
- uint16 c;
- if(regs.p.m) {
- c = regs.p.c ? 0x80 : 0;
- regs.p.c = regs.a.l & 1;
- regs.a.l >>= 1;
- regs.a.l |= c;
- regs.p.n = !!(regs.a.l & 0x80);
- regs.p.z = (regs.a.l == 0);
- } else {
- c = regs.p.c ? 0x8000 : 0;
- regs.p.c = regs.a.w & 1;
- regs.a.w >>= 1;
- regs.a.w |= c;
- regs.p.n = !!(regs.a.w & 0x8000);
- regs.p.z = (regs.a.w == 0);
- }
- }
- inc_addr(0xee, inc),
- dec_addr(0xce, dec),
- asl_addr(0x0e, asl),
- lsr_addr(0x4e, lsr),
- rol_addr(0x2e, rol),
- ror_addr(0x6e, ror),
- trb_addr(0x1c, trb),
- tsb_addr(0x0c, tsb) {
- 1:aa.l = op_readpc();
- 2:aa.h = op_readpc();
- 3:rd.l = op_readdbr(aa.w);
- 4:if(!regs.p.m) rd.h = op_readdbr(aa.w + 1);
- 5:op_io();
- if(regs.p.m) { op_$1_b(); }
- else { op_$1_w();
- 6:op_writedbr(aa.w + 1, rd.h); }
- 7:last_cycle();
- op_writedbr(aa.w, rd.l);
- }
- inc_addrx(0xfe, inc),
- dec_addrx(0xde, dec),
- asl_addrx(0x1e, asl),
- lsr_addrx(0x5e, lsr),
- rol_addrx(0x3e, rol),
- ror_addrx(0x7e, ror) {
- 1:aa.l = op_readpc();
- 2:aa.h = op_readpc();
- 3:op_io();
- 4:rd.l = op_readdbr(aa.w + regs.x.w);
- 5:if(!regs.p.m) rd.h = op_readdbr(aa.w + regs.x.w + 1);
- 6:op_io();
- if(regs.p.m) { op_$1_b(); }
- else { op_$1_w();
- 7:op_writedbr(aa.w + regs.x.w + 1, rd.h); }
- 8:last_cycle();
- op_writedbr(aa.w + regs.x.w, rd.l);
- }
- inc_dp(0xe6, inc),
- dec_dp(0xc6, dec),
- asl_dp(0x06, asl),
- lsr_dp(0x46, lsr),
- rol_dp(0x26, rol),
- ror_dp(0x66, ror),
- trb_dp(0x14, trb),
- tsb_dp(0x04, tsb) {
- 1:dp = op_readpc();
- 2:op_io_cond2();
- 3:rd.l = op_readdp(dp);
- 4:if(!regs.p.m) rd.h = op_readdp(dp + 1);
- 5:op_io();
- if(regs.p.m) { op_$1_b(); }
- else { op_$1_w();
- 6:op_writedp(dp + 1, rd.h); }
- 7:last_cycle();
- op_writedp(dp, rd.l);
- }
- inc_dpx(0xf6, inc),
- dec_dpx(0xd6, dec),
- asl_dpx(0x16, asl),
- lsr_dpx(0x56, lsr),
- rol_dpx(0x36, rol),
- ror_dpx(0x76, ror) {
- 1:dp = op_readpc();
- 2:op_io_cond2();
- 3:op_io();
- 4:rd.l = op_readdp(dp + regs.x.w);
- 5:if(!regs.p.m) rd.h = op_readdp(dp + regs.x.w + 1);
- 6:op_io();
- if(regs.p.m) { op_$1_b(); }
- else { op_$1_w();
- 7:op_writedp(dp + regs.x.w + 1, rd.h); }
- 8:last_cycle();
- op_writedp(dp + regs.x.w, rd.l);
- }
|