changeset 297:147e31983730

Fix printing of negative displacements in Z80 disassembler
author Mike Pavone <pavone@retrodev.com>
date Wed, 08 May 2013 22:43:31 -0700
parents f90aeea98e53
children 170722e80fc0
files z80inst.c
diffstat 1 files changed, 4 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- 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;
 		}
 	}