diff options
author | Mike Pavone <pavone@retrodev.com> | 2013-05-09 19:38:28 -0700 |
---|---|---|
committer | Mike Pavone <pavone@retrodev.com> | 2013-05-09 19:38:28 -0700 |
commit | 7c1e92cdc17788e59c0aca980caac79e4b9bc643 (patch) | |
tree | 6fcf920d052684f2f3d7f0380dfebaaeddf0fd6e /z80inst.c | |
parent | 7d51c0144bcc12d49cc6d4d5207e086451b9b6b7 (diff) |
Show absolute addresses for JR, JRCC and DJNZ in Z80 disassembler
Diffstat (limited to 'z80inst.c')
-rw-r--r-- | z80inst.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -1371,7 +1371,7 @@ char * z80_conditions[Z80_CC_M+1] = { "m" }; -int z80_disasm(z80inst * decoded, char * dst) +int z80_disasm(z80inst * decoded, char * dst, uint16_t address) { int len = sprintf(dst, "%s", z80_mnemonics[decoded->op]); uint8_t needcomma; @@ -1438,7 +1438,10 @@ int z80_disasm(z80inst * decoded, char * dst) len += sprintf(dst+len, "%s (%s)", needcomma ? "," : "" , z80_regs[decoded->ea_reg]); break; case Z80_IMMED: - if (decoded->immed >= 63 || decoded->op == Z80_JP || decoded->op == Z80_JPCC || decoded->op == Z80_CALL || decoded->op == Z80_CALLCC || decoded->op == Z80_RST) + if (decoded->op == Z80_JR || decoded->op == Z80_JRCC || decoded->op == Z80_DJNZ) { + address += 2 + decoded->immed; + len += sprintf(dst+len, "%s %X", needcomma ? "," : "" , address); + } else if (decoded->immed >= 63 || decoded->op == Z80_JP || decoded->op == Z80_JPCC || decoded->op == Z80_CALL || decoded->op == Z80_CALLCC || decoded->op == Z80_RST) { len += sprintf(dst+len, "%s $%X", needcomma ? "," : "" , decoded->immed); } else { |