# HG changeset patch # User Mike Pavone # Date 1356023293 28800 # Node ID 1c9a4052a2c0f409ba149aa570d9a2a2e27cc283 # Parent 534eb49764233d4e9ecf8641ffaa485467e7a976 Fix decoding and disassembly of MOVEM diff -r 534eb4976423 -r 1c9a4052a2c0 68kinst.c --- a/68kinst.c Thu Dec 20 00:56:33 2012 -0800 +++ b/68kinst.c Thu Dec 20 09:08:13 2012 -0800 @@ -418,14 +418,13 @@ decoded->op = M68K_MOVEM; decoded->extra.size = *istream & 0x40 ? OPSIZE_LONG : OPSIZE_WORD; reg = *istream & 0x7; - immed = *(++istream); if(*istream & 0x400) { decoded->dst.addr_mode = MODE_REG; - decoded->dst.params.immed = immed; + decoded->dst.params.immed = *(++istream); istream = m68k_decode_op_ex(istream, opmode, reg, decoded->extra.size, &(decoded->src)); } else { decoded->src.addr_mode = MODE_REG; - decoded->src.params.immed = immed; + decoded->src.params.immed = *(++istream); istream = m68k_decode_op_ex(istream, opmode, reg, decoded->extra.size, &(decoded->dst)); } } else { @@ -1176,8 +1175,14 @@ reg = 0; bit = 1; } - strcat(dst, " "); - for (oplen = 1, reg=0; bit < 16 && bit > -1; bit += dir, reg++) { + if (need_comma) { + strcat(dst, ", "); + oplen = 2; + } else { + strcat(dst, " "); + oplen = 1; + } + for (reg=0; bit < 16 && bit > -1; bit += dir, reg++) { if (decoded->params.immed & (1 << bit)) { if (reg > 7) { rtype = "a";