summaryrefslogtreecommitdiff
path: root/68kinst.c
diff options
context:
space:
mode:
authorMike Pavone <pavone@retrodev.com>2012-12-27 18:21:10 -0800
committerMike Pavone <pavone@retrodev.com>2012-12-27 18:21:10 -0800
commitebbab3cb4d9f149cd43528b71d3fcb1497626a32 (patch)
tree82ce943ca6adfd332612e6d68f0de609547f096a /68kinst.c
parent346cbc52292d8b0fbb25df451b07d44d40258746 (diff)
Implement EXT, add some fixes to LINK/UNLK
Diffstat (limited to '68kinst.c')
-rw-r--r--68kinst.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/68kinst.c b/68kinst.c
index 64d22e2..c28a103 100644
--- a/68kinst.c
+++ b/68kinst.c
@@ -527,14 +527,14 @@ uint16_t * m68k_decode(uint16_t * istream, m68kinst * decoded, uint32_t address)
break;
case 0x10:
decoded->op = M68K_EXT;
- decoded->src.addr_mode = MODE_REG;
- decoded->src.params.regs.pri = *istream & 0x7;
+ decoded->dst.addr_mode = MODE_REG;
+ decoded->dst.params.regs.pri = *istream & 0x7;
decoded->extra.size = OPSIZE_WORD;
break;
case 0x18:
decoded->op = M68K_EXT;
- decoded->src.addr_mode = MODE_REG;
- decoded->src.params.regs.pri = *istream & 0x7;
+ decoded->dst.addr_mode = MODE_REG;
+ decoded->dst.params.regs.pri = *istream & 0x7;
decoded->extra.size = OPSIZE_LONG;
break;
case 0x38:
@@ -607,7 +607,7 @@ uint16_t * m68k_decode(uint16_t * istream, m68kinst * decoded, uint32_t address)
decoded->src.addr_mode = MODE_AREG;
decoded->src.params.regs.pri = *istream & 0x7;
decoded->dst.addr_mode = MODE_IMMEDIATE;
- decoded->dst.params.immed = *(++istream);
+ decoded->dst.params.immed = sign_extend16(*(++istream));
break;
case 3:
//UNLK