Пример #1
0
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);
}
Пример #2
0
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);
}
Пример #3
0
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);
}
Пример #4
0
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);
}
Пример #5
0
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);
  }
}
Пример #6
0
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);
  }
}