Пример #1
0
static struct cprint *bset_print(LONG addr, WORD op)
{
  int b;
  struct cprint *ret;

  ret = cprint_alloc(addr);

  switch((op&0x100)>>8) {
  case 0:
    b = bus_read_word_print(addr+ret->size)&0x1f;
    ret->size += 2;
    if(op&0x38) {
      b &= 7;
      strcpy(ret->instr, "BSET.B");
    } else {
      strcpy(ret->instr, "BSET.L");
    }
    sprintf(ret->data, "#%d,", b);
    ea_print(ret, op&0x3f, 0);
    break;
  case 1:
    b = (op&0xe00)>>9;
    if(op&0x38) {
      strcpy(ret->instr, "BSET.B");
    } else {
      strcpy(ret->instr, "BSET.L");
    }
    sprintf(ret->data, "D%d,", b);
    ea_print(ret, op&0x3f, 0);
    break;
  }

  return ret;
}
Пример #2
0
static struct cprint *not_print(LONG addr, WORD op)
{
  int s;
  struct cprint *ret;

  ret = cprint_alloc(addr);

  s = (op&0xc0)>>6;
  
  switch(s) {
  case 0:
    strcpy(ret->instr, "NOT.B");
    break;
  case 1:
    strcpy(ret->instr, "NOT.W");
    break;
  case 2:
    strcpy(ret->instr, "NOT.L");
    break;
  }

  ea_print(ret, op&0x3f, s);

  return ret;
}
Пример #3
0
static struct cprint *addq_print(LONG addr, WORD op)
{
  int s;
  struct cprint *ret;

  ret = cprint_alloc(addr);

  s = (op&0xe00)>>9;
  if(!s) s = 8;

  switch((op&0xc0)>>6) {
  case 0:
    strcpy(ret->instr, "ADDQ.B");
    break;
  case 1:
    strcpy(ret->instr, "ADDQ.W");
    break;
  case 2:
    strcpy(ret->instr, "ADDQ.L");
    break;
  }
  sprintf(ret->data, "#%d,", s);
  ea_print(ret, op&0x3f, 0);

  return ret;
}
Пример #4
0
static struct cprint *subi_print(LONG addr, WORD op)
{
  int s;
  struct cprint *ret;

  ret = cprint_alloc(addr);

  s = (op&0xc0)>>6;

  switch(s) {
  case 0:
    strcpy(ret->instr, "SUBI.B");
    sprintf(ret->data, "#$%x,", bus_read_word_print(addr+ret->size)&0xff);
    ret->size += 2;
    break;
  case 1:
    strcpy(ret->instr, "SUBI.W");
    sprintf(ret->data, "#$%x,", bus_read_word_print(addr+ret->size));
    ret->size += 2;
    break;
  case 2:
    strcpy(ret->instr, "SUBI.L");
    sprintf(ret->data, "#$%x,", bus_read_long_print(addr+ret->size));
    ret->size += 4;
    break;
  }
  ea_print(ret, op&0x3f, s);

  return ret;
}
Пример #5
0
Файл: jsr.c Проект: nocrew/ostis
static struct cprint *jsr_print(LONG addr, WORD op)
{
  struct cprint *ret;

  ret = cprint_alloc(addr);

  strcpy(ret->instr, "JSR");
  ea_print(ret, op&0x3f, 0);
  
  return ret;
}
Пример #6
0
static struct cprint *move_from_sr_print(LONG addr, WORD op)
{
  struct cprint *ret;

  ret = cprint_alloc(addr);

  strcpy(ret->instr, "MOVE");
  strcpy(ret->data, "SR,");
  ea_print(ret, op&0x3f, 1);

  return ret;
}
Пример #7
0
static struct cprint *adda_print(LONG addr, WORD op)
{
  int r;
  struct cprint *ret;

  ret = cprint_alloc(addr);

  r = (op&0xe00)>>9;

  if(op&0x100) {
    strcpy(ret->instr, "ADDA.L");
    ea_print(ret, op&0x3f, 2);
    sprintf(ret->data, "%s,A%d", ret->data, r);
  } else {
    strcpy(ret->instr, "ADDA.W");
    ea_print(ret, op&0x3f, 1);
    sprintf(ret->data, "%s,A%d", ret->data, r);
  }
  
  return ret;
}
Пример #8
0
static struct cprint *addi_print(LONG addr, WORD op)
{
    BYTE b;
    WORD w;
    LONG l;
    int s,r;
    struct cprint *ret;

    ret = cprint_alloc(addr);

    s = (op&0xc0)>>6;

    switch(s) {
    case 0:
        strcpy(ret->instr, "ADDI.B");
        b = bus_read_word_print(addr+ret->size)&0xff;
        r = b;
        if(r&0x80) r |= 0xffffff00;
        if((r >= -128) && (r <= 127))
            sprintf(ret->data, "#%d,", r);
        else
            sprintf(ret->data, "#$%x,", r);
        ret->size += 2;
        break;
    case 1:
        strcpy(ret->instr, "ADDI.W");
        w = bus_read_word_print(addr+ret->size);
        r = w;
        if(r&0x8000) r |= 0xffff0000;
        if((r >= -128) && (r <= 127))
            sprintf(ret->data, "#%d,", r);
        else
            sprintf(ret->data, "#$%x,", r);
        ret->size += 2;
        break;
    case 2:
        strcpy(ret->instr, "ADDI.L");
        l = bus_read_long_print(addr+ret->size);
        r = (int)*((SLONG *)&l);
        if((r >= -128) && (r <= 127))
            sprintf(ret->data, "#%d,", r);
        else
            sprintf(ret->data, "#$%x,", r);
        ret->size += 4;
        break;
    }
    ea_print(ret, op&0x3f, s);

    return ret;
}
Пример #9
0
Файл: scc.c Проект: nocrew/ostis
static struct cprint *scc_print(LONG addr, WORD op)
{
  static char *cond[16] = {
    "ST", "SF", "SHI", "SLS", "SCC", "SCS", "SNE", "SEQ",
    "SVC", "SVS", "SPL", "SMI", "SGE", "SLT", "SGT", "SLE"
  };
  struct cprint *ret;

  ret = cprint_alloc(addr);

  strcpy(ret->instr, cond[(op&0xf00)>>8]);
  ea_print(ret, op&0x3f, 0);

  return ret;
}
Пример #10
0
static struct cprint *mulu_print(LONG addr, WORD op)
{
  int r;
  struct cprint *ret;

  ret = cprint_alloc(addr);

  r = (op&0xe00)>>9;

  strcpy(ret->instr, "MULU");
  ea_print(ret, op&0x3f, 1);
  sprintf(ret->data, "%s,D%d", ret->data, r);

  return ret;
}
Пример #11
0
static struct cprint *tst_print(LONG addr, WORD op)
{
  struct cprint *ret;

  ret = cprint_alloc(addr);

  switch((op&0xc0)>>6) {
  case 0:
    strcpy(ret->instr, "TST.B");
    break;
  case 1:
    strcpy(ret->instr, "TST.W");
    break;
  case 2:
    strcpy(ret->instr, "TST.L");
    break;
  }
  ea_print(ret, op&0x3f, 0);

  return ret;
}