diff --git a/InstructionSets/68k/Decoder.cpp b/InstructionSets/68k/Decoder.cpp index b540754ac..3ca54ab04 100644 --- a/InstructionSets/68k/Decoder.cpp +++ b/InstructionSets/68k/Decoder.cpp @@ -601,6 +601,22 @@ Preinstruction Predecoder::decode4(uint16_t instruction) { default: break; } + switch(instruction & 0xff8) { + case 0x860: Decode(Op::SWAP); // 4-185 (p289) + case 0x880: Decode(Op::EXTbtow); // 4-106 (p210) + case 0x8c0: Decode(Op::EXTwtol); // 4-106 (p210) + case 0xe50: Decode(Op::LINKw); // 4-111 (p215) + case 0xe58: Decode(Op::UNLINK); // 4-194 (p298) + case 0xe60: Decode(Op::MOVEtoUSP); // 6-21 (p475) + case 0xe68: Decode(Op::MOVEfromUSP); // 6-21 (p475) + default: break; + } + + switch(instruction & 0xff0) { + case 0xe40: Decode(Op::TRAP); // 4-188 (p292) + default: break; + } + switch(instruction & 0xfc0) { // 4-146 (p250) case 0x000: Decode(Op::NEGXb); @@ -666,22 +682,6 @@ Preinstruction Predecoder::decode4(uint16_t instruction) { default: break; } - switch(instruction & 0xff0) { - case 0xe40: Decode(Op::TRAP); // 4-188 (p292) - default: break; - } - - switch(instruction & 0xff8) { - case 0x860: Decode(Op::SWAP); // 4-185 (p289) - case 0x880: Decode(Op::EXTbtow); // 4-106 (p210) - case 0x8c0: Decode(Op::EXTwtol); // 4-106 (p210) - case 0xe50: Decode(Op::LINKw); // 4-111 (p215) - case 0xe58: Decode(Op::UNLINK); // 4-194 (p298) - case 0xe60: Decode(Op::MOVEtoUSP); // 6-21 (p475) - case 0xe68: Decode(Op::MOVEfromUSP); // 6-21 (p475) - default: break; - } - return Preinstruction(); } diff --git a/OSBindings/Mac/Clock SignalTests/68000 Decoding/68000ops.json b/OSBindings/Mac/Clock SignalTests/68000 Decoding/68000ops.json index bb8e56f4f..3e0e5eb01 100644 --- a/OSBindings/Mac/Clock SignalTests/68000 Decoding/68000ops.json +++ b/OSBindings/Mac/Clock SignalTests/68000 Decoding/68000ops.json @@ -45453,7 +45453,7 @@ "4e74": "None", "4e73": "RTE/RTR", "4e72": "STOP", - "4e71": "None", + "4e71": "NOP", "4e70": "None", "4e6f": "MOVEA.l A0", "4e6e": "MOVEA.l A0",