comparison z80_to_x86.c @ 314:54c0e5f22198

Show absolute addresses for JR, JRCC and DJNZ in Z80 disassembler
author Mike Pavone <pavone@retrodev.com>
date Thu, 09 May 2013 19:38:28 -0700
parents a13329645ea3
children 684e71e9f0d0
comparison
equal deleted inserted replaced
313:a13329645ea3 314:54c0e5f22198
1620 case Z80_OTIR: 1620 case Z80_OTIR:
1621 case Z80_OUTD: 1621 case Z80_OUTD:
1622 case Z80_OTDR:*/ 1622 case Z80_OTDR:*/
1623 default: { 1623 default: {
1624 char disbuf[80]; 1624 char disbuf[80];
1625 z80_disasm(inst, disbuf); 1625 z80_disasm(inst, disbuf, address);
1626 fprintf(stderr, "unimplemented instruction: %s\n", disbuf); 1626 fprintf(stderr, "unimplemented instruction: %s\n", disbuf);
1627 FILE * f = fopen("zram.bin", "wb"); 1627 FILE * f = fopen("zram.bin", "wb");
1628 fwrite(context->mem_pointers[0], 1, 8 * 1024, f); 1628 fwrite(context->mem_pointers[0], 1, 8 * 1024, f);
1629 fclose(f); 1629 fclose(f);
1630 exit(1); 1630 exit(1);
1771 uint8_t *after, *inst = context->mem_pointers[0] + address; 1771 uint8_t *after, *inst = context->mem_pointers[0] + address;
1772 z80inst instbuf; 1772 z80inst instbuf;
1773 dprintf("Retranslating code at Z80 address %X, native address %p\n", address, orig_start); 1773 dprintf("Retranslating code at Z80 address %X, native address %p\n", address, orig_start);
1774 after = z80_decode(inst, &instbuf); 1774 after = z80_decode(inst, &instbuf);
1775 #ifdef DO_DEBUG_PRINT 1775 #ifdef DO_DEBUG_PRINT
1776 z80_disasm(&instbuf, disbuf); 1776 z80_disasm(&instbuf, disbuf, address);
1777 if (instbuf.op == Z80_NOP) { 1777 if (instbuf.op == Z80_NOP) {
1778 printf("%X\t%s(%d)\n", address, disbuf, instbuf.immed); 1778 printf("%X\t%s(%d)\n", address, disbuf, instbuf.immed);
1779 } else { 1779 } else {
1780 printf("%X\t%s\n", address, disbuf); 1780 printf("%X\t%s\n", address, disbuf);
1781 } 1781 }
1861 opts->cur_code = jmp(opts->cur_code, existing); 1861 opts->cur_code = jmp(opts->cur_code, existing);
1862 break; 1862 break;
1863 } 1863 }
1864 next = z80_decode(encoded, &inst); 1864 next = z80_decode(encoded, &inst);
1865 #ifdef DO_DEBUG_PRINT 1865 #ifdef DO_DEBUG_PRINT
1866 z80_disasm(&inst, disbuf); 1866 z80_disasm(&inst, disbuf, address);
1867 if (inst.op == Z80_NOP) { 1867 if (inst.op == Z80_NOP) {
1868 printf("%X\t%s(%d)\n", address, disbuf, inst.immed); 1868 printf("%X\t%s(%d)\n", address, disbuf, inst.immed);
1869 } else { 1869 } else {
1870 printf("%X\t%s\n", address, disbuf); 1870 printf("%X\t%s\n", address, disbuf);
1871 } 1871 }