From 425d13d843f702871465815b33f3bc35dc338e1c Mon Sep 17 00:00:00 2001 From: Mike Pavone Date: Wed, 8 May 2013 23:31:19 -0700 Subject: Properly handle negative displacements in Z80 core --- z80_to_x86.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'z80_to_x86.c') diff --git a/z80_to_x86.c b/z80_to_x86.c index b02df09..bbd0288 100644 --- a/z80_to_x86.c +++ b/z80_to_x86.c @@ -189,7 +189,7 @@ uint8_t * translate_z80_ea(z80inst * inst, x86_ea * ea, uint8_t * dst, x86_z80_o 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) { -- cgit v1.2.3