@@ -144,8 +144,8 @@ constexpr Entry MC68000_TABLE[] PROGMEM = {
144
144
E1 (0056700 , TEXT_SLT, ISZ_NONE, M_WDATA, OP_10, SZ_BYTE),
145
145
E1 (0057300 , TEXT_SGT, ISZ_NONE, M_WDATA, OP_10, SZ_BYTE),
146
146
E1 (0057700 , TEXT_SLE, ISZ_NONE, M_WDATA, OP_10, SZ_BYTE),
147
- E2 (0050000 , TEXT_ADDQ, ISZ_DATA, M_IM3, M_WADDR, OP___ , OP_10, SZ_DATA),
148
- E2 (0050400 , TEXT_SUBQ, ISZ_DATA, M_IM3, M_WADDR, OP___ , OP_10, SZ_DATA),
147
+ E2 (0050000 , TEXT_ADDQ, ISZ_DATA, M_IM3, M_WADDR, OP__3 , OP_10, SZ_DATA),
148
+ E2 (0050400 , TEXT_SUBQ, ISZ_DATA, M_IM3, M_WADDR, OP__3 , OP_10, SZ_DATA),
149
149
E1 (0060000 , TEXT_BRA, ISZ_NONE, M_REL8, OP___, SZ_BYTE),
150
150
E1 (0060000 , TEXT_BRA, ISZ_NONE, M_REL16, OP___, SZ_WORD),
151
151
E1 (0060000 , TEXT_BT, ISZ_NONE, M_REL8, OP___, SZ_BYTE),
@@ -223,21 +223,21 @@ constexpr Entry MC68000_TABLE[] PROGMEM = {
223
223
E1 (0162700 , TEXT_ROXL, ISZ_DATA, M_WMEM, OP_10, SZ_WORD),
224
224
E1 (0163300 , TEXT_ROR, ISZ_DATA, M_WMEM, OP_10, SZ_WORD),
225
225
E1 (0163700 , TEXT_ROL, ISZ_DATA, M_WMEM, OP_10, SZ_WORD),
226
- E2 (0160000 , TEXT_ASR, ISZ_DATA, M_IM3, M_DREG, OP___ , OP__0, SZ_DATA),
226
+ E2 (0160000 , TEXT_ASR, ISZ_DATA, M_IM3, M_DREG, OP__3 , OP__0, SZ_DATA),
227
227
E2 (0160040 , TEXT_ASR, ISZ_DATA, M_DREG, M_DREG, OP__3, OP__0, SZ_DATA),
228
- E2 (0160400 , TEXT_ASL, ISZ_DATA, M_IM3, M_DREG, OP___ , OP__0, SZ_DATA),
228
+ E2 (0160400 , TEXT_ASL, ISZ_DATA, M_IM3, M_DREG, OP__3 , OP__0, SZ_DATA),
229
229
E2 (0160440 , TEXT_ASL, ISZ_DATA, M_DREG, M_DREG, OP__3, OP__0, SZ_DATA),
230
- E2 (0160010 , TEXT_LSR, ISZ_DATA, M_IM3, M_DREG, OP___ , OP__0, SZ_DATA),
230
+ E2 (0160010 , TEXT_LSR, ISZ_DATA, M_IM3, M_DREG, OP__3 , OP__0, SZ_DATA),
231
231
E2 (0160050 , TEXT_LSR, ISZ_DATA, M_DREG, M_DREG, OP__3, OP__0, SZ_DATA),
232
- E2 (0160410 , TEXT_LSL, ISZ_DATA, M_IM3, M_DREG, OP___ , OP__0, SZ_DATA),
232
+ E2 (0160410 , TEXT_LSL, ISZ_DATA, M_IM3, M_DREG, OP__3 , OP__0, SZ_DATA),
233
233
E2 (0160450 , TEXT_LSL, ISZ_DATA, M_DREG, M_DREG, OP__3, OP__0, SZ_DATA),
234
- E2 (0160020 , TEXT_ROXR, ISZ_DATA, M_IM3, M_DREG, OP___ , OP__0, SZ_DATA),
234
+ E2 (0160020 , TEXT_ROXR, ISZ_DATA, M_IM3, M_DREG, OP__3 , OP__0, SZ_DATA),
235
235
E2 (0160060 , TEXT_ROXR, ISZ_DATA, M_DREG, M_DREG, OP__3, OP__0, SZ_DATA),
236
- E2 (0160420 , TEXT_ROXL, ISZ_DATA, M_IM3, M_DREG, OP___ , OP__0, SZ_DATA),
236
+ E2 (0160420 , TEXT_ROXL, ISZ_DATA, M_IM3, M_DREG, OP__3 , OP__0, SZ_DATA),
237
237
E2 (0160460 , TEXT_ROXL, ISZ_DATA, M_DREG, M_DREG, OP__3, OP__0, SZ_DATA),
238
- E2 (0160030 , TEXT_ROR, ISZ_DATA, M_IM3, M_DREG, OP___ , OP__0, SZ_DATA),
238
+ E2 (0160030 , TEXT_ROR, ISZ_DATA, M_IM3, M_DREG, OP__3 , OP__0, SZ_DATA),
239
239
E2 (0160070 , TEXT_ROR, ISZ_DATA, M_DREG, M_DREG, OP__3, OP__0, SZ_DATA),
240
- E2 (0160430 , TEXT_ROL, ISZ_DATA, M_IM3, M_DREG, OP___ , OP__0, SZ_DATA),
240
+ E2 (0160430 , TEXT_ROL, ISZ_DATA, M_IM3, M_DREG, OP__3 , OP__0, SZ_DATA),
241
241
E2 (0160470 , TEXT_ROL, ISZ_DATA, M_DREG, M_DREG, OP__3, OP__0, SZ_DATA),
242
242
A2 (0020100 , TEXT_MOVE, ISZ_LONG, M_RADDR, M_AREG, OP_10, OP__3, SZ_LONG),
243
243
A2 (0030100 , TEXT_MOVE, ISZ_WORD, M_RADDR, M_AREG, OP_10, OP__3, SZ_WORD),
@@ -459,6 +459,7 @@ constexpr uint8_t MC68000_INDEX[] PROGMEM = {
459
459
};
460
460
461
461
constexpr Entry MC68010_TABLE[] PROGMEM = {
462
+ E1 (0044110 , TEXT_BKPT, ISZ_NONE, M_IM3, OP__0, SZ_NONE),
462
463
E1 (0047164 , TEXT_RTD, ISZ_NONE, M_IMDAT, OP___, SZ_WORD),
463
464
P2 (0047172 , TEXT_MOVEC, ISZ_NONE, M_CREG, M_DREG, EX_RC, EX_RR, SZ_LONG, 0x0000 ),
464
465
P2 (0047172 , TEXT_MOVEC, ISZ_NONE, M_CREG, M_AREG, EX_RC, EX_RR, SZ_LONG, 0x8000 ),
@@ -471,15 +472,16 @@ constexpr Entry MC68010_TABLE[] PROGMEM = {
471
472
};
472
473
473
474
constexpr uint8_t MC68010_INDEX[] PROGMEM = {
474
- 1 , // TEXT_MOVEC
475
+ 0 , // TEXT_BKPT
475
476
2 , // TEXT_MOVEC
476
477
3 , // TEXT_MOVEC
477
478
4 , // TEXT_MOVEC
478
- 5 , // TEXT_MOVES
479
+ 5 , // TEXT_MOVEC
479
480
6 , // TEXT_MOVES
480
481
7 , // TEXT_MOVES
481
482
8 , // TEXT_MOVES
482
- 0 , // TEXT_RTD
483
+ 9 , // TEXT_MOVES
484
+ 1 , // TEXT_RTD
483
485
};
484
486
485
487
#if !defined(LIBASM_MC68000_NOFPU)
@@ -1222,8 +1224,8 @@ constexpr EntryPage MC68000_PAGES[] PROGMEM = {
1222
1224
};
1223
1225
1224
1226
constexpr EntryPage MC68010_PAGES[] PROGMEM = {
1225
- {ARRAY_RANGE (MC68000_TABLE), ARRAY_RANGE (MC68000_INDEX)},
1226
1227
{ARRAY_RANGE (MC68010_TABLE), ARRAY_RANGE (MC68010_INDEX)},
1228
+ {ARRAY_RANGE (MC68000_TABLE), ARRAY_RANGE (MC68000_INDEX)},
1227
1229
};
1228
1230
1229
1231
#if !defined(LIBASM_MC68000_NOFPU)
@@ -1416,6 +1418,7 @@ bool matchOpCode(DisInsn &insn, const Entry *entry, const EntryPage *) {
1416
1418
opc &= ~07000 ; // clear co-processor ID
1417
1419
if (opc != entry->readOpCode ())
1418
1420
return false ;
1421
+ // Check illegal addressing mode
1419
1422
opc = insn.opCode ();
1420
1423
if (invalidModeReg (opc, flags.src (), flags.srcPos (), flags.oprSize ()))
1421
1424
return false ;
0 commit comments