X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=sim%2Fucsim%2Fxa.src%2Fxa.cc;h=da7ed0fc6d74b42a279bd22124bcf800f7e86fae;hb=c15580c2bf5ecd77cdc3ef327ed91d2ef36cb301;hp=0f5ed45498c77f9f6fd3834c79d0cebfbcbb8614;hpb=0f13c644cfaea92c44ee33764cce21da520676f1;p=fw%2Fsdcc diff --git a/sim/ucsim/xa.src/xa.cc b/sim/ucsim/xa.src/xa.cc index 0f5ed454..da7ed0fc 100644 --- a/sim/ucsim/xa.src/xa.cc +++ b/sim/ucsim/xa.src/xa.cc @@ -619,30 +619,30 @@ cl_xa::disass(t_addr addr, char *sep) ((signed char) get_mem(MEM_ROM, addr+immed_offset+1) * 2) & 0xfffe ); break; case REG_DATA8_REL8 : - sprintf(parm_str, "%s,#0x%04x,0x%02x", + sprintf(parm_str, "%s,#0x%02x,0x%02x", reg_strs[((code >> 4) & 0xf)], - get_mem(MEM_ROM, addr+immed_offset), - ((signed char)get_mem(MEM_ROM, addr+immed_offset+1) * 2) & 0xfffe ); + get_mem(MEM_ROM, addr+immed_offset+1), + ((signed char)get_mem(MEM_ROM, addr+immed_offset) * 2) & 0xfffe ); break; case REG_DATA16_REL8 : - sprintf(parm_str, "%s,#0x%02x,0x%02x", - w_reg_strs[((code >> 4) & 0x7)*2], - get_mem(MEM_ROM, addr+immed_offset+1) + - (get_mem(MEM_ROM, addr+immed_offset+0)<<8), - ((signed char)get_mem(MEM_ROM, addr+immed_offset+2) * 2) & 0xfffe ); + sprintf(parm_str, "%s,#0x%04x,0x%02x", + w_reg_strs[(code >> 4) & 0xf], + get_mem(MEM_ROM, addr+immed_offset+2) + + (get_mem(MEM_ROM, addr+immed_offset+1)<<8), + ((signed char)get_mem(MEM_ROM, addr+immed_offset) * 2) & 0xfffe ); break; case IREG_DATA8_REL8 : - sprintf(parm_str, "[%s],#0x%04x,0x%02x", + sprintf(parm_str, "[%s],#0x%02x,0x%02x", reg_strs[((code >> 4) & 0x7)], - get_mem(MEM_ROM, addr+immed_offset), - ((signed char)get_mem(MEM_ROM, addr+immed_offset+1) * 2) & 0xfffe ); + get_mem(MEM_ROM, addr+immed_offset+1), + ((signed char)get_mem(MEM_ROM, addr+immed_offset) * 2) & 0xfffe ); break; case IREG_DATA16_REL8 : - sprintf(parm_str, "[%s],#0x%02x,0x%02x", - w_reg_strs[((code >> 4) & 0x7)*2], - get_mem(MEM_ROM, addr+immed_offset+1) + - (get_mem(MEM_ROM, addr+immed_offset+0)<<8), - ((signed char)get_mem(MEM_ROM, addr+immed_offset+2) * 2) & 0xfffe ); + sprintf(parm_str, "[%s],#0x%04x,0x%02x", + w_reg_strs[(code >> 4) & 0x7], + get_mem(MEM_ROM, addr+immed_offset+2) + + (get_mem(MEM_ROM, addr+immed_offset+1)<<8), + ((signed char)get_mem(MEM_ROM, addr+immed_offset) * 2) & 0xfffe ); break; case A_APLUSDPTR : @@ -653,6 +653,30 @@ cl_xa::disass(t_addr addr, char *sep) strcpy(parm_str, "A, [A+PC]"); break; + case REG_REGOFF8 : + sprintf(parm_str, "%s,%s+0x%02x", + w_reg_strs[(code >> 4) & 0x7], + w_reg_strs[code & 0x7], + get_mem(MEM_ROM, addr+immed_offset)); + break; + + case REG_REGOFF16 : + sprintf(parm_str, "%s,%s+0x%02x", + w_reg_strs[(code >> 4) & 0x7], + w_reg_strs[code & 0x7], + get_mem(MEM_ROM, addr+immed_offset+1) + + (get_mem(MEM_ROM, addr+immed_offset+0)<<8)); + break; + + case A_PLUSDPTR : + strcpy(parm_str, "[A+DPTR]"); + break; + + case IIREG : + sprintf(parm_str, "[[%s]]", + w_reg_strs[(code & 0x7)]); + break; + default: strcpy(parm_str, "???"); break;