From 7c1e92cdc17788e59c0aca980caac79e4b9bc643 Mon Sep 17 00:00:00 2001 From: Mike Pavone Date: Thu, 9 May 2013 19:38:28 -0700 Subject: Show absolute addresses for JR, JRCC and DJNZ in Z80 disassembler --- z80inst.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'z80inst.c') diff --git a/z80inst.c b/z80inst.c index d5def01..3643f43 100644 --- a/z80inst.c +++ b/z80inst.c @@ -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 { -- cgit v1.2.3