# HG changeset patch # User Mike Pavone # Date 1368081079 25200 # Node ID 3970006fae909002a081eb6f038f31f659ff2f27 # Parent a57fac5b3d6545fae611270e347ce366860dc908 Properly handle negative displacements in Z80 core diff -r a57fac5b3d65 -r 3970006fae90 z80_to_x86.c --- a/z80_to_x86.c Wed May 08 23:29:21 2013 -0700 +++ b/z80_to_x86.c Wed May 08 23:31:19 2013 -0700 @@ -189,7 +189,7 @@ case Z80_IY_DISPLACE: reg = opts->regs[(inst->addr_mode & 0x1F) == Z80_IX_DISPLACE ? Z80_IX : Z80_IY]; dst = mov_rr(dst, reg, areg, SZ_W); - dst = add_ir(dst, inst->ea_reg, areg, SZ_W); + dst = add_ir(dst, inst->ea_reg & 0x80 ? inst->ea_reg - 256 : inst->ea_reg, areg, SZ_W); size = z80_size(inst); if (read) { if (modify) {