Mercurial > repos > blastem
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 } |