# HG changeset patch # User Mike Pavone # Date 1367301125 25200 # Node ID 572b935dd03020bcecc5ccaef961501616df4061 # Parent 64feb6b672443dfb4ea9f8f4b305064bae6855cf Properly handle wrapping around to 0 in translate_z80_stream diff -r 64feb6b67244 -r 572b935dd030 z80_to_x86.c --- a/z80_to_x86.c Mon Apr 29 22:37:47 2013 -0700 +++ b/z80_to_x86.c Mon Apr 29 22:52:05 2013 -0700 @@ -1345,7 +1345,7 @@ opts->code_end = opts->cur_code + size; jmp(opts->cur_code, opts->cur_code); } - if (address > 0x4000 & address < 0x8000) { + if (address > 0x4000 && address < 0x8000) { opts->cur_code = xor_rr(opts->cur_code, RDI, RDI, SZ_D); opts->cur_code = call(opts->cur_code, (uint8_t *)exit); break; @@ -1366,7 +1366,12 @@ z80_map_native_address(context, address, opts->cur_code, next-encoded, after - opts->cur_code); opts->cur_code = after; address += next-encoded; - encoded = next; + if (address > 0xFFFF) { + address &= 0xFFFF; + + } else { + encoded = next; + } } while (!(inst.op == Z80_RET || inst.op == Z80_RETI || inst.op == Z80_RETN || inst.op == Z80_JP || (inst.op == Z80_NOP && inst.immed == 42))); process_deferred(&opts->deferred, context, (native_addr_func)z80_get_native_address); if (opts->deferred) {