Esempio n. 1
0
File: tst.c Progetto: lokedhs/ostis
static void tst_w(struct cpu *cpu, WORD op)
{
  WORD s;

  s = ea_read_word(cpu, op&0x3f, 0);
  cpu_set_flags_move(cpu, s&0x8000, s);
  ADD_CYCLE(4);
}
Esempio n. 2
0
File: addq.c Progetto: lokedhs/ostis
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);
}
Esempio n. 3
0
File: negx.c Progetto: nocrew/ostis
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);
}
Esempio n. 4
0
File: subi.c Progetto: nocrew/ostis
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);
}
Esempio n. 5
0
File: adda.c Progetto: lokedhs/ostis
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;
}
Esempio n. 6
0
File: mulu.c Progetto: lokedhs/ostis
static void mulu(struct cpu *cpu, WORD op)
{
  LONG s,d,r;
  int reg;
  int i;

  ENTER;

  s = ea_read_word(cpu, op&0x3f, 0);
  reg = (op&0xe00)>>9;
  d = cpu->d[reg]&0xffff;
  r = s*d;
  cpu->d[reg] = r;
  ADD_CYCLE(38);
  for(i=0;i<16;i++) {
    if(s&(1<<i)) {
      ADD_CYCLE(2);
    }
  }
  cpu_set_flags_move(cpu, r&0x80000000, r);
}