Mercurial > repos > blastem
comparison z80_to_x86.c @ 254:64feb6b67244
Fix bug in end condition inside translate_z80_stream.
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 29 Apr 2013 22:37:47 -0700 |
parents | 3b34deba4ca0 |
children | 572b935dd030 |
comparison
equal
deleted
inserted
replaced
253:3b34deba4ca0 | 254:64feb6b67244 |
---|---|
1288 } | 1288 } |
1289 return orig_start; | 1289 return orig_start; |
1290 } else { | 1290 } else { |
1291 z80_map_native_address(context, address, dst, after-inst, ZMAX_NATIVE_SIZE); | 1291 z80_map_native_address(context, address, dst, after-inst, ZMAX_NATIVE_SIZE); |
1292 opts->code_end = dst+ZMAX_NATIVE_SIZE; | 1292 opts->code_end = dst+ZMAX_NATIVE_SIZE; |
1293 if(!(instbuf.op == Z80_RET || instbuf.op == Z80_RETI || instbuf.op == Z80_RETN || instbuf.op == Z80_JP || (instbuf.op = Z80_NOP && instbuf.immed == 42))) { | 1293 if(!(instbuf.op == Z80_RET || instbuf.op == Z80_RETI || instbuf.op == Z80_RETN || instbuf.op == Z80_JP || (instbuf.op == Z80_NOP && instbuf.immed == 42))) { |
1294 jmp(native_end, z80_get_native_address(context, address + after-inst)); | 1294 jmp(native_end, z80_get_native_address(context, address + after-inst)); |
1295 } | 1295 } |
1296 return dst; | 1296 return dst; |
1297 } | 1297 } |
1298 } else { | 1298 } else { |
1299 dst = translate_z80inst(&instbuf, orig_start, context, address); | 1299 dst = translate_z80inst(&instbuf, orig_start, context, address); |
1300 if(!(instbuf.op == Z80_RET || instbuf.op == Z80_RETI || instbuf.op == Z80_RETN || instbuf.op == Z80_JP || (instbuf.op = Z80_NOP && instbuf.immed == 42))) { | 1300 if(!(instbuf.op == Z80_RET || instbuf.op == Z80_RETI || instbuf.op == Z80_RETN || instbuf.op == Z80_JP || (instbuf.op == Z80_NOP && instbuf.immed == 42))) { |
1301 dst = jmp(dst, z80_get_native_address(context, address + after-inst)); | 1301 dst = jmp(dst, z80_get_native_address(context, address + after-inst)); |
1302 } | 1302 } |
1303 return orig_start; | 1303 return orig_start; |
1304 } | 1304 } |
1305 } | 1305 } |
1365 uint8_t *after = translate_z80inst(&inst, opts->cur_code, context, address); | 1365 uint8_t *after = translate_z80inst(&inst, opts->cur_code, context, address); |
1366 z80_map_native_address(context, address, opts->cur_code, next-encoded, after - opts->cur_code); | 1366 z80_map_native_address(context, address, opts->cur_code, next-encoded, after - opts->cur_code); |
1367 opts->cur_code = after; | 1367 opts->cur_code = after; |
1368 address += next-encoded; | 1368 address += next-encoded; |
1369 encoded = next; | 1369 encoded = next; |
1370 } while (!(inst.op == Z80_RET || inst.op == Z80_RETI || inst.op == Z80_RETN || inst.op == Z80_JP || (inst.op = Z80_NOP && inst.immed == 42))); | 1370 } while (!(inst.op == Z80_RET || inst.op == Z80_RETI || inst.op == Z80_RETN || inst.op == Z80_JP || (inst.op == Z80_NOP && inst.immed == 42))); |
1371 process_deferred(&opts->deferred, context, (native_addr_func)z80_get_native_address); | 1371 process_deferred(&opts->deferred, context, (native_addr_func)z80_get_native_address); |
1372 if (opts->deferred) { | 1372 if (opts->deferred) { |
1373 address = opts->deferred->address; | 1373 address = opts->deferred->address; |
1374 printf("defferred address: %X\n", address); | 1374 printf("defferred address: %X\n", address); |
1375 if (address < 0x4000) { | 1375 if (address < 0x4000) { |