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) {