Mercurial > repos > blastem
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 } |