static void tst_l(struct cpu *cpu, WORD op) { LONG s; s = ea_read_long(cpu, op&0x3f, 0); cpu_set_flags_move(cpu, s&0x80000000, s); ADD_CYCLE(4); }
static void addq_l(struct cpu *cpu, int s, int mode) { LONG d,r; d = ea_read_long(cpu, mode, 1); r = s+d; ea_write_long(cpu, mode, r); ADD_CYCLE(8); cpu_set_flags_add(cpu, 0, d&0x80000000, r&0x80000000, r); }
static void negx_l(struct cpu *cpu, WORD op) { LONG d,r; d = ea_read_long(cpu, op&0x3f, 1); r = 0-d; if(CHKX) r -= 1; ea_set_prefetch_before_write(); ea_write_long(cpu, op&0x3f, r); ADD_CYCLE(6); if(op&0x38) { ADD_CYCLE(6); } cpu_set_flags_negx(cpu, d&0x80000000, r&0x80000000, r); }
static void subi_l(struct cpu *cpu, WORD op) { LONG s,d,r; s = bus_read_long(cpu->pc); cpu->pc += 4; if(op&0x38) { ADD_CYCLE(20); } else { ADD_CYCLE(16); } d = ea_read_long(cpu, op&0x3f, 1); r = d-s; ea_set_prefetch_before_write(); ea_write_long(cpu, op&0x3f, r); cpu_set_flags_sub(cpu, s&0x80000000, d&0x80000000, r&0x80000000, r); }
static void adda(struct cpu *cpu, WORD op) { LONG s; int r; ENTER; r = (op&0xe00)>>9; if(op&0x100) { ADD_CYCLE(6); s = ea_read_long(cpu, op&0x3f, 0); } else { ADD_CYCLE(8); s = ea_read_word(cpu, op&0x3f, 0); if(s&0x8000) s |= 0xffff0000; } cpu->a[r] += s; }