From d04117369bdf589dd7ad899960b89a77fe0597ae Mon Sep 17 00:00:00 2001 From: Arnold Metselaar Date: Sun, 14 Sep 2008 08:38:02 +0000 Subject: [PATCH] Fix bugs in the disassembly of some ld-instructions --- opcodes/ChangeLog | 5 +++++ opcodes/z80-dis.c | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 6662ef4..ab3b5c7 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,8 @@ +2008-09-14 Arnold Metselaar + + * z80-dis.c (prt_rr_nn): Fix register pair for two byte opcodes. + (tab_elt opc_ed): Add "ld r,a" and "ld r,a" instructions. + 2008-09-11 H.J. Lu * i386-opc.tbl: Fix memory operand size for cmpXXXs[sd]. diff --git a/opcodes/z80-dis.c b/opcodes/z80-dis.c index 98161d9..c9ee19e 100644 --- a/opcodes/z80-dis.c +++ b/opcodes/z80-dis.c @@ -128,8 +128,10 @@ static int prt_rr_nn (struct buffer *buf, disassemble_info * info, char *txt) { char mytxt[TXTSIZ]; + int rr; - snprintf (mytxt, TXTSIZ, txt, rr_str[(buf->data[0] >> 4) & 3]); + rr = (buf->data[buf->n_fetch - 1] >> 4) & 3; + snprintf (mytxt, TXTSIZ, txt, rr_str[rr]); return prt_nn (buf, info, mytxt); } @@ -297,9 +299,11 @@ struct tab_elt opc_ed[] = { 0x4A, 0xCF, prt_rr, "adc hl," }, { 0x4B, 0xCF, prt_rr_nn, "ld %s,(0x%%04x)" }, { 0x4D, 0xFF, prt, "reti" }, + { 0x4F, 0xFF, prt, "ld r,a" }, { 0x56, 0xFF, prt, "im 1" }, { 0x57, 0xFF, prt, "ld a,i" }, { 0x5E, 0xFF, prt, "im 2" }, + { 0x5F, 0xFF, prt, "ld a,r" }, { 0x67, 0xFF, prt, "rrd" }, { 0x6F, 0xFF, prt, "rld" }, { 0xA0, 0xE4, cis, "" }, -- 2.7.4