diff options
author | Mike Pavone <pavone@retrodev.com> | 2013-05-08 22:43:31 -0700 |
---|---|---|
committer | Mike Pavone <pavone@retrodev.com> | 2013-05-08 22:43:31 -0700 |
commit | bd3490ebb8ea68b2fb7ee3e0e81b89aa0b2f45f5 (patch) | |
tree | 5dab3aec5c3a0b77a3e3d00fb33096298af19353 | |
parent | 6fbdf710778ddf1fd5531d7fd95bf2a6eaaefd63 (diff) |
Fix printing of negative displacements in Z80 disassembler
-rw-r--r-- | z80inst.c | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -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; } } |