# HG changeset patch # User Mike Pavone # Date 1368078211 25200 # Node ID 147e3198373043ce17b532e01cc9f9d5caa31039 # Parent f90aeea98e5320eb8dbc4ea5a671ad69caf206af Fix printing of negative displacements in Z80 disassembler diff -r f90aeea98e53 -r 147e31983730 z80inst.c --- a/z80inst.c Wed May 08 21:02:33 2013 -0700 +++ b/z80inst.c Wed May 08 22:43:31 2013 -0700 @@ -1397,10 +1397,10 @@ 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 @@ 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; } }