Exemple #1
0
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);
}
Exemple #2
0
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);
}
Exemple #3
0
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);
}
Exemple #4
0
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);
}
Exemple #5
0
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);
}