From bd3490ebb8ea68b2fb7ee3e0e81b89aa0b2f45f5 Mon Sep 17 00:00:00 2001 From: Mike Pavone Date: Wed, 8 May 2013 22:43:31 -0700 Subject: Fix printing of negative displacements in Z80 disassembler --- z80inst.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'z80inst.c') 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; } } -- cgit v1.2.3