diff --git a/InstructionSets/x86/Decoder.cpp b/InstructionSets/x86/Decoder.cpp index d94c453ee..622b81bf4 100644 --- a/InstructionSets/x86/Decoder.cpp +++ b/InstructionSets/x86/Decoder.cpp @@ -469,7 +469,7 @@ std::pair::InstructionT> Decoder::decode(con break; case 0xd4: RegData(AAM, eAX, DataSize::Byte); break; case 0xd5: RegData(AAD, eAX, DataSize::Byte); break; - // Unused: 0xd6. + case 0xd6: Complete(SALC, None, None, DataSize::Byte); break; case 0xd7: Complete(XLAT, None, None, DataSize::Byte); break; case 0xd8: MemRegReg(ESC, Reg_MemReg, data_size_); break; diff --git a/InstructionSets/x86/Instruction.cpp b/InstructionSets/x86/Instruction.cpp index 4b24ac47a..0c50b996e 100644 --- a/InstructionSets/x86/Instruction.cpp +++ b/InstructionSets/x86/Instruction.cpp @@ -136,6 +136,7 @@ std::string InstructionSet::x86::to_string(Operation operation, DataSize size) { case Operation::XCHG: return "xchg"; case Operation::XLAT: return "xlat"; + case Operation::SALC: return "salc"; case Operation::Invalid: return "invalid"; diff --git a/InstructionSets/x86/Instruction.hpp b/InstructionSets/x86/Instruction.hpp index c70ef640b..714ce6aae 100644 --- a/InstructionSets/x86/Instruction.hpp +++ b/InstructionSets/x86/Instruction.hpp @@ -211,6 +211,9 @@ enum class Operation: uint8_t { /// Load AL with DS:[AL+BX]. XLAT, + /// Set AL to FFh if carry is set; 00h otherwise. + SALC, + // // 80186 additions. // @@ -219,7 +222,7 @@ enum class Operation: uint8_t { /// stored at the location indicated by the source register, which will point to two /// 16- or 32-bit words, the first being a signed lower bound and the signed upper. /// Raises a bounds exception if not. - BOUND, + BOUND = SALC, /// Create stack frame. See operand() for the nesting level and offset() @@ -415,6 +418,7 @@ constexpr int max_num_operands(Operation operation) { case Operation::IRET: case Operation::NOP: case Operation::XLAT: + case Operation::SALC: case Operation::Invalid: return 0; } diff --git a/OSBindings/Mac/Clock SignalTests/8088Tests.mm b/OSBindings/Mac/Clock SignalTests/8088Tests.mm index 9e404deb2..d52e20aca 100644 --- a/OSBindings/Mac/Clock SignalTests/8088Tests.mm +++ b/OSBindings/Mac/Clock SignalTests/8088Tests.mm @@ -154,7 +154,6 @@ std::string to_string( // Undocumented instructions. @"D0.6.json.gz", @"D1.6.json.gz", @"D2.6.json.gz", @"D3.6.json.gz", - @"D6.json.gz", nil ];