Mercurial > repos > blastem
changeset 306:3970006fae90
Properly handle negative displacements in Z80 core
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 08 May 2013 23:31:19 -0700 |
parents | a57fac5b3d65 |
children | b6393b89a7e4 |
files | z80_to_x86.c |
diffstat | 1 files changed, 1 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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) {