Mercurial > repos > blastem
diff z80_to_x86.c @ 255:572b935dd030
Properly handle wrapping around to 0 in translate_z80_stream
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 29 Apr 2013 22:52:05 -0700 |
parents | 64feb6b67244 |
children | 4c7933444df4 |
line wrap: on
line diff
--- 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) {