diff 68kinst.c @ 12:db60ed283d8d

Add mising bit instructions to decoder. Add test assembly file containing most distinct instructions.
author Mike Pavone <pavone@retrodev.com>
date Thu, 15 Nov 2012 00:52:53 -0800
parents d5e9bac9ebdf
children 168b1a873895
line wrap: on
line diff
--- a/68kinst.c	Wed Nov 14 23:04:55 2012 -0800
+++ b/68kinst.c	Thu Nov 15 00:52:53 2012 -0800
@@ -123,8 +123,31 @@
 			}
 			decoded->src.addr_mode = MODE_REG;
 			decoded->src.params.regs.pri = m68K_reg_quick_field(*istream);
+			decoded->extra.size = OPSIZE_LONG;
 			istream = m68k_decode_op(istream, OPSIZE_LONG, &(decoded->dst));
 		} else if ((*istream & 0xF00) == 0x800) {
+			//BTST, BCHG, BCLR, BSET
+			switch ((*istream >> 6) & 0x3)
+			{
+			case 0:
+				decoded->op = M68K_BTST;
+				break;
+			case 1:
+				decoded->op = M68K_BCHG;
+				break;
+			case 2:
+				decoded->op = M68K_BCLR;
+				break;
+			case 3:
+				decoded->op = M68K_BSET;
+				break;
+			}
+			opmode = (*istream >> 3) & 0x7;
+			reg = *istream & 0x7;
+			decoded->src.addr_mode = MODE_IMMEDIATE;
+			decoded->src.params.u8 = *(++istream);
+			decoded->extra.size = OPSIZE_BYTE;
+			istream = m68k_decode_op_ex(istream, opmode, reg, OPSIZE_BYTE, &(decoded->dst));
 		} else if ((*istream & 0xC0) == 0xC0) {
 #ifdef M68020
 			//CMP2, CHK2, CAS, CAS2, RTM, CALLM
@@ -1090,7 +1113,7 @@
 	"trap",
 	"trapv",
 	"tst",
-	"unlnk",
+	"unlk",
 	"invalid"
 };