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