static void move_from_sr(struct cpu *cpu, WORD op) { ENTER; ADD_CYCLE(8); /* really 6 for EA==reg, but that will be 8 anyway */ ea_set_prefetch_before_write(); ea_write_word(cpu, op&0x3f, cpu->sr); }
static void addq_w(struct cpu *cpu, int s, int mode) { WORD d,r; d = ea_read_word(cpu, mode, 1); r = s+d; ea_write_word(cpu, mode, r); ADD_CYCLE(4); cpu_set_flags_add(cpu, 0, d&0x8000, r&0x8000, r); }
static void not_w(struct cpu *cpu, WORD op) { WORD r; ADD_CYCLE(4); if(op&0x38) { ADD_CYCLE(4); } r = ~ea_read_word(cpu, op&0x3f, 1); ea_set_prefetch_before_write(); ea_write_word(cpu, op&0x3f, r); cpu_set_flags_move(cpu, r&0x8000, r); }
static void negx_w(struct cpu *cpu, WORD op) { WORD d,r; d = ea_read_word(cpu, op&0x3f, 1); r = 0-d; if(CHKX) r -= 1; ea_set_prefetch_before_write(); ea_write_word(cpu, op&0x3f, r); ADD_CYCLE(4); if(op&0x38) { ADD_CYCLE(4); } cpu_set_flags_negx(cpu, d&0x8000, r&0x8000, r); }
static void subi_w(struct cpu *cpu, WORD op) { WORD s,d,r; s = bus_read_word(cpu->pc); cpu->pc += 2; if(op&0x38) { ADD_CYCLE(12); } else { ADD_CYCLE(8); } d = ea_read_word(cpu, op&0x3f, 1); r = d-s; ea_set_prefetch_before_write(); ea_write_word(cpu, op&0x3f, r); cpu_set_flags_sub(cpu, s&0x8000, d&0x8000, r&0x8000, r); }