summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pavone <pavone@retrodev.com>2013-05-08 22:43:31 -0700
committerMike Pavone <pavone@retrodev.com>2013-05-08 22:43:31 -0700
commitbd3490ebb8ea68b2fb7ee3e0e81b89aa0b2f45f5 (patch)
tree5dab3aec5c3a0b77a3e3d00fb33096298af19353
parent6fbdf710778ddf1fd5531d7fd95bf2a6eaaefd63 (diff)
Fix printing of negative displacements in Z80 disassembler
-rw-r--r--z80inst.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/z80inst.c b/z80inst.c
index 959c73c..e6d2a33 100644
--- a/z80inst.c
+++ b/z80inst.c
@@ -1397,10 +1397,10 @@ int z80_disasm(z80inst * decoded, char * dst)
len += sprintf(dst+len, " ($%X)", decoded->immed);
break;
case Z80_IX_DISPLACE:
- len += sprintf(dst+len, " (ix+%d)", decoded->ea_reg);
+ len += sprintf(dst+len, " (ix+%d)", decoded->ea_reg & 0x80 ? decoded->ea_reg - 256 : decoded->ea_reg);
break;
case Z80_IY_DISPLACE:
- len += sprintf(dst+len, " (iy+%d)", decoded->ea_reg);
+ len += sprintf(dst+len, " (iy+%d)", decoded->ea_reg & 0x80 ? decoded->ea_reg - 256 : decoded->ea_reg);
break;
default:
needcomma = 0;
@@ -1449,10 +1449,10 @@ int z80_disasm(z80inst * decoded, char * dst)
len += sprintf(dst+len, "%s ($%X)", needcomma ? "," : "" , decoded->immed);
break;
case Z80_IX_DISPLACE:
- len += sprintf(dst+len, "%s (ix+%d)", needcomma ? "," : "" , decoded->ea_reg);
+ len += sprintf(dst+len, "%s (ix+%d)", needcomma ? "," : "" , decoded->ea_reg & 0x80 ? decoded->ea_reg - 256 : decoded->ea_reg);
break;
case Z80_IY_DISPLACE:
- len += sprintf(dst+len, "%s (iy+%d)", needcomma ? "," : "" , decoded->ea_reg);
+ len += sprintf(dst+len, "%s (iy+%d)", needcomma ? "," : "" , decoded->ea_reg & 0x80 ? decoded->ea_reg - 256 : decoded->ea_reg);
break;
}
}