comparison 68kinst.c @ 642:08d0e3e7d0d8

Fix interpretation of moves direction field
author Michael Pavone <pavone@retrodev.com>
date Wed, 15 Oct 2014 00:30:19 -0700
parents 66857bd2df0b
children da52f7b72156
comparison
equal deleted inserted replaced
641:66857bd2df0b 642:08d0e3e7d0d8
608 decoded->extra.size = *istream >> 6 & 0x3; 608 decoded->extra.size = *istream >> 6 & 0x3;
609 immed = *(++istream); 609 immed = *(++istream);
610 reg = immed >> 12 & 0x7; 610 reg = immed >> 12 & 0x7;
611 opmode = immed & 0x8000 ? MODE_AREG : MODE_REG; 611 opmode = immed & 0x8000 ? MODE_AREG : MODE_REG;
612 if (immed & 0x800) { 612 if (immed & 0x800) {
613 decoded->src.addr_mode = opmode;
614 decoded->src.params.regs.pri = reg;
615 m68k_decode_op_ex(istream, *start >> 3 & 0x7, *start & 0x7, decoded->extra.size, &(decoded->dst));
616 } else {
613 m68k_decode_op_ex(istream, *start >> 3 & 0x7, *start & 0x7, decoded->extra.size, &(decoded->src)); 617 m68k_decode_op_ex(istream, *start >> 3 & 0x7, *start & 0x7, decoded->extra.size, &(decoded->src));
614 decoded->dst.addr_mode = opmode; 618 decoded->dst.addr_mode = opmode;
615 decoded->dst.params.regs.pri = reg; 619 decoded->dst.params.regs.pri = reg;
616 } else {
617 decoded->src.addr_mode = opmode;
618 decoded->src.params.regs.pri = reg;
619 m68k_decode_op_ex(istream, *start >> 3 & 0x7, *start & 0x7, decoded->extra.size, &(decoded->dst));
620 } 620 }
621 #endif 621 #endif
622 break; 622 break;
623 } 623 }
624 } 624 }