static void tst_b(struct cpu *cpu, WORD op) { BYTE s; s = ea_read_byte(cpu, op&0x3f, 0); cpu_set_flags_move(cpu, s&0x80, s); ADD_CYCLE(4); }
static void addq_b(struct cpu *cpu, int s, int mode) { BYTE d,r; d = ea_read_byte(cpu, mode, 1); r = s+d; ea_write_byte(cpu, mode, r); ADD_CYCLE(4); cpu_set_flags_add(cpu, 0, d&0x80, r&0x80, r); }
static void negx_b(struct cpu *cpu, WORD op) { BYTE d,r; d = ea_read_byte(cpu, op&0x3f, 1); r = 0-d; if(CHKX) r -= 1; ea_set_prefetch_before_write(); ea_write_byte(cpu, op&0x3f, r); ADD_CYCLE(4); if(op&0x38) { ADD_CYCLE(4); } cpu_set_flags_negx(cpu, d&0x80, r&0x80, r); }
static void subi_b(struct cpu *cpu, WORD op) { BYTE s,d,r; s = bus_read_word(cpu->pc)&0xff; cpu->pc += 2; if(op&0x38) { ADD_CYCLE(12); } else { ADD_CYCLE(8); } d = ea_read_byte(cpu, op&0x3f, 1); r = d-s; ea_set_prefetch_before_write(); ea_write_byte(cpu, op&0x3f, r); cpu_set_flags_sub(cpu, s&0x80, d&0x80, r&0x80, r); }
static void bset_r(struct cpu *cpu, int reg, int mode) { BYTE b,d; b = cpu->d[reg]&31; if(mode&0x38) { ADD_CYCLE(4); d = ea_read_byte(cpu, mode, 1); if(d & (1<<(b&7))) CLRZ; else SETZ; d |= (1<<(b&7)); ea_set_prefetch_before_write(); ea_write_byte(cpu, mode, d); } else { ADD_CYCLE(6); if(cpu->d[mode&7] & (1<<b)) CLRZ; else SETZ; cpu->d[mode&7] |= (1<<b); } }
static void bset_i(struct cpu *cpu, int mode) { BYTE b,d; b = (BYTE)bus_read_word(cpu->pc)&0xff; b &= 31; cpu->pc += 2; if(mode&0x38) { ADD_CYCLE(8); d = ea_read_byte(cpu, mode, 1); if(d & (1<<(b&7))) CLRZ; else SETZ; d |= (1<<(b&7)); ea_set_prefetch_before_write(); ea_write_byte(cpu, mode, d); } else { ADD_CYCLE(10); if(cpu->d[mode&7] & (1<<b)) CLRZ; else SETZ; cpu->d[mode&7] |= (1<<b); } }