CONST {.CP08} { ------------------------------------------- } { Named Values for Bit Flags in RECORD CpuVec } { ------------------------------------------- } _386Xtnsn = $80; _32BitMax = $40; _16BitMin = $20; _SignXtnd = $10; _MODrmFld = $08; O0 = Ord(C086); O1 = Ord(C186); O2 = Ord(C286); O3 = Ord(C386); Mnem386 : ARRAY[1..170] OF STRING[6] = ( {.CP32} {001} 'AAA', 'AAD', 'AAM', 'AAS', 'ADC', 'ADD', {007} 'AND', 'ARPL', 'BOUND', 'BSF', 'BSR', 'BT', {013} 'BTC', 'BTR', 'BTS', 'CALL', 'CBW', 'CWDE', {019} 'CLC', 'CLD', 'CLI', 'CLTS', 'CMC', 'CMP', {025} 'CMPSB', 'CMPSW', 'CMPSD', 'CWD', 'CDQ', 'DAA', {031} 'DAS', 'DEC', 'DIV', 'ENTER', 'HLT', 'IDIV', {037} 'IMUL', 'IN', 'INC', 'INSB', 'INSW', 'INSD', {043} 'INT', 'INTO', 'IRET', 'JB', 'JBE', 'JCXZ', {049} 'JECXZ', 'JLE', 'JMP', 'JNB', 'JNBE', 'JNL', {055} 'JNLE', 'JNO', 'JNP', 'JNS', 'JNZ', 'JO', {061} 'JP', 'JS', 'JZ', 'LAHF', 'LAR', 'LDS', {067} 'LEA', 'LEAVE', 'LES', 'LFS', 'LGDT', 'LGS', {073} 'LIDT', 'LLDT', 'LMSW', 'LOCK', 'LODSB', 'LODSW', {079} 'LODSD', 'LOOP', 'LOOPE', 'LOOPNE', 'LSL', 'LSS', {085} 'LTR', 'MOV', 'MOVSB', 'MOVSW', 'MOVSD', 'MOVSX', {091} 'MOVZX', 'MUL', 'NEG', 'NOP', 'NOT', 'OR', {097} 'OUT', 'OUTSB', 'OUTSW', 'OUTSD', 'POP', 'POPA', {103} 'POPAD', 'POPF', 'POPFD', 'PUSH', 'PUSHA', 'PUSHAD', {109} 'PUSHF', 'PUSHFD', 'RCL', 'RCR', 'REP', 'REPNE', {115} 'RET', 'RETF', 'ROL', 'ROR', 'SAHF', 'SAR', {121} 'SBB', 'SCASB', 'SCASW', 'SCASD', 'SEGCS', 'SEGDS', {127} 'SEGES', 'SEGFS', 'SEGGS', 'SEGSS', 'SETB', 'SETBE', {133} 'SETL', 'SETLE', 'SETNB', 'SETNBE', 'SETNL', 'SETNLE', {139} 'SETNO', 'SETNP', 'SETNS', 'SETNZ', 'SETO', 'SETP', {145} 'SETS', 'SETZ', 'SGDT', 'SHL', 'SHLD', 'SHR', {151} 'SHRD', 'SIDT', 'SLDT', 'SMSW', 'STC', 'STD', {157} 'STI', 'STOSB', 'STOSW', 'STOSD', 'STR', 'SUB', {163} 'TEST', 'VERR', 'VERW', 'WAIT', 'XCHG', 'XLATB', {169} 'XOR', 'JL'); Mnem387 : ARRAY[1..76] OF STRING[7] = ( {.CP15} {01} 'F2XM1', 'FABS', 'FADD', 'FADDP', 'FBLD', 'FBSTP', {07} 'FCHS', 'FCLEX', 'FCOM', 'FCOMP', 'FCOMPP', 'FCOS', {13} 'FDECSTP','FDISI', 'FDIV', 'FDIVP', 'FDIVR', 'FDIVRP', {19} 'FENI', 'FFREE', 'FIADD', 'FICOM', 'FICOMP', 'FIDIV', {25} 'FIDIVR', 'FILD', 'FIMUL', 'FINCSTP', 'FINIT', 'FIST', {31} 'FISTP', 'FISUB', 'FISUBR', 'FLD', 'FLD1', 'FLDCW', {37} 'FLDENV', 'FLDG2', 'FLDL2E', 'FLDL2T', 'FLDN2', 'FLDPI', {43} 'FLDZ', 'FMUL', 'FMULP', 'FNOP', 'FPATAN', 'FPREM', {49} 'FPREM1', 'FPTAN', 'FRNDINT','FRSTOR', 'FSAVE', 'FSCALE', {55} 'FSETPM', 'FSIN', 'FSINCOS','FSQRT', 'FST', 'FSTCW', {61} 'FSTENV', 'FSTP', 'FSTSW', 'FSUB', 'FSUBP', 'FSUBR', {67} 'FSUBRP', 'FTST', 'FUCOM', 'FUCOMP', 'FUCOMPP','FXAM', {73} 'FXCH', 'FXTRACT','FYL2X', 'FYL2XP1'); { -------------------------------------------------- } {.CP37} { 386 Operations With One-Byte Op-Codes Handled Next } { -------------------------------------------------- } GateLvl1 : ARRAY[0..255] of Gating = ( {00} G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, {08} G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_0Fx, {10} G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, {18} G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, {20} G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Pfx, G_Hit, {28} G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Pfx, G_Hit, {30} G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Pfx, G_Hit, {38} G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Pfx, G_Hit, {40} G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, {48} G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, {50} G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, {58} G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, {60} G_Hit, G_Hit, G_Hit, G_Hit, G_Pfx, G_Pfx, G_Pfx, G_Pfx, {68} G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, {70} G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, {78} G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, {80} G_RM1, G_RM1, G_ooo, G_RM1, G_Hit, G_Hit, G_Hit, G_Hit, {88} G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, {90} G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, {98} G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, {A0} G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, {A8} G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, {B0} G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, {B8} G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, {C0} G_RM2, G_RM2, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, {C8} G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, {D0} G_RM2, G_RM2, G_RM2, G_RM2, G_Hit, G_Hit, G_ooo, G_Hit, {D8} G_387, G_387, G_387, G_387, G_387, G_387, G_387, G_387, {E0} G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, {E8} G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, {F0} G_Pfx, G_ooo, G_Pfx, G_Pfx, G_Hit, G_Hit, G_RM3, G_RM9, {F8} G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_RM4, G_RM5); { -------------------------------------------------- } {.CP32} { 386 Operations With Two-Byte Op-Codes Handled Next } { -------------------------------------------------- } GateLvX2 : ARRAY[0..15] OF Gate_2 = ( {0} Row_0, Row_X, Row_2, Row_X, Row_X, Row_X, Row_X, Row_X, {8} Row_8, Row_9, Row_A, Row_B, Row_X, Row_X, Row_X, Row_X); GateLvl2 : ARRAY[Row_0..Row_X] OF ARRAY[0..15] OF Gating = ( {[_0,0]} (G_RM6,G_RM7,G_Hit,G_Hit,G_ooo,G_ooo,G_Hit,G_ooo, {[_0,8]} G_ooo,G_ooo,G_ooo,G_ooo,G_ooo,G_ooo,G_ooo,G_ooo), {[_2,0]} (G_Hit,G_Hit,G_Hit,G_Hit,G_Hit,G_ooo,G_Hit,G_ooo, {[_2,8]} G_ooo,G_ooo,G_ooo,G_ooo,G_ooo,G_ooo,G_ooo,G_ooo), {[_8,0]} (G_Hit,G_Hit,G_Hit,G_Hit,G_Hit,G_Hit,G_Hit,G_Hit, {[_8,8]} G_Hit,G_Hit,G_Hit,G_Hit,G_Hit,G_Hit,G_Hit,G_Hit), {[_9,0]} (G_Hit,G_Hit,G_Hit,G_Hit,G_Hit,G_Hit,G_Hit,G_Hit, {[_9,8]} G_Hit,G_Hit,G_Hit,G_Hit,G_Hit,G_Hit,G_Hit,G_Hit), {[_A,0]} (G_Hit,G_Hit,G_ooo,G_Hit,G_Hit,G_Hit,G_ooo,G_ooo, {[_A,8]} G_Hit,G_Hit,G_ooo,G_Hit,G_Hit,G_Hit,G_ooo,G_Hit), {[_B,0]} (G_ooo,G_ooo,G_Hit,G_Hit,G_Hit,G_Hit,G_Hit,G_Hit, {[_B,8]} G_ooo,G_ooo,G_RM8,G_Hit,G_Hit,G_Hit,G_Hit,G_Hit), {[_X,0]} (G_ooo,G_ooo,G_ooo,G_ooo,G_ooo,G_ooo,G_ooo,G_ooo, {[_X,8]} G_ooo,G_ooo,G_ooo,G_ooo,G_ooo,G_ooo,G_ooo,G_ooo)); { -------------------------------------------------- } {.CP16} { 386 Operations Resolved in modR/M 543 Handled Next } { -------------------------------------------------- } GateLvl3 : ARRAY[G_RM1..G_RM9] OF ARRAY[0..7] OF Gating = ( {[_1,0]} (G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit), {[_2,0]} (G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_ooo, G_Hit), {[_3,0]} (G_Hit, G_ooo, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit), {[_4,0]} (G_Hit, G_Hit, G_ooo, G_ooo, G_ooo, G_ooo, G_ooo, G_ooo), {[_5,0]} (G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_ooo), {[_6,0]} (G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_ooo, G_ooo), {[_7,0]} (G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_ooo, G_Hit, G_ooo), {[_8,0]} (G_ooo, G_ooo, G_ooo, G_ooo, G_Hit, G_Hit, G_Hit, G_Hit), {[_9,0]} (G_Hit, G_ooo, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit, G_Hit)); { ------------------------------------------------- } {.CP08} { Operand Format Driver Vector - 80386 Instructions } { ------------------------------------------------- } OpType386 : ARRAY[0..96] OF TagGrp = ( {00} ((A: ' '; V: 30), (A: ' '; V: 30), (A: ' '; V: 30)), {01} ((A: ' '; V: 30), (A: 'I'; V: 34), (A: ' '; V: 30)), {02} ((A: ' '; V: 30), (A: 'I'; V: 38), (A: ' '; V: 30)), {03} ((A: 'A'; V: 36), (A: ' '; V: 30), (A: ' '; V: 30)), {04} ((A: 'C'; V: 35), (A: 'R'; V: 35), (A: ' '; V: 30)), {05} ((A: 'D'; V: 35), (A: 'R'; V: 35), (A: ' '; V: 30)), {06} ((A: 'E'; V: 34), (A: ' '; V: 30), (A: ' '; V: 30)), {07} ((A: 'E'; V: 34), (A: 'G'; V: 34), (A: ' '; V: 30)), {08} ((A: 'E'; V: 34), (A: 'I'; V: 34), (A: ' '; V: 30)), {09} ((A: 'E'; V: 34), (A: 'r'; V: 31), (A: ' '; V: 30)), {10} ((A: 'E'; V: 34), (A: 'r'; V: 01), (A: ' '; V: 30)), {11} ((A: 'E'; V: 36), (A: ' '; V: 30), (A: ' '; V: 30)), {12} ((A: 'E'; V: 38), (A: ' '; V: 30), (A: ' '; V: 30)), {13} ((A: 'E'; V: 38), (A: 'G'; V: 38), (A: ' '; V: 30)), {14} ((A: 'E'; V: 38), (A: 'G'; V: 38), (A: 'I'; V: 34)), {15} ((A: 'E'; V: 38), (A: 'G'; V: 38), (A: 'r'; V: 01)), {16} ((A: 'E'; V: 38), (A: 'I'; V: 34), (A: ' '; V: 30)), {17} ((A: 'E'; V: 38), (A: 'I'; V: 38), (A: ' '; V: 30)), {18} ((A: 'E'; V: 38), (A: 'r'; V: 31), (A: ' '; V: 30)), {19} ((A: 'E'; V: 38), (A: 'r'; V: 01), (A: ' '; V: 30)), {20} ((A: 'E'; V: 39), (A: ' '; V: 30), (A: ' '; V: 30)), {21} ((A: 'E'; V: 39), (A: 'G'; V: 39), (A: ' '; V: 30)), {22} ((A: 'E'; V: 39), (A: 'S'; V: 39), (A: ' '; V: 30)), {23} ((A: 'G'; V: 34), (A: 'E'; V: 34), (A: ' '; V: 30)), {24} ((A: 'G'; V: 38), (A: 'E'; V: 34), (A: ' '; V: 30)), {25} ((A: 'G'; V: 38), (A: 'E'; V: 38), (A: ' '; V: 30)), {26} ((A: 'G'; V: 38), (A: 'E'; V: 38), (A: 'I'; V: 34)), {27} ((A: 'G'; V: 38), (A: 'E'; V: 38), (A: 'I'; V: 38)), {28} ((A: 'G'; V: 38), (A: 'E'; V: 39), (A: ' '; V: 30)), {29} ((A: 'G'; V: 38), (A: 'I'; V: 38), (A: ' '; V: 30)), {30} ((A: 'G'; V: 38), (A: 'M'; V: 30), (A: ' '; V: 30)), {31} ((A: 'G'; V: 38), (A: 'M'; V: 33), (A: ' '; V: 30)), {32} ((A: 'G'; V: 38), (A: 'M'; V: 36), (A: ' '; V: 30)), {33} ((A: 'I'; V: 34), (A: ' '; V: 30), (A: ' '; V: 30)), {34} ((A: 'I'; V: 34), (A: 'e'; V: 08), (A: ' '; V: 30)), {35} ((A: 'I'; V: 34), (A: 'r'; V: 00), (A: ' '; V: 30)), {36} ((A: 'I'; V: 38), (A: ' '; V: 30), (A: ' '; V: 30)), {37} ((A: 'I'; V: 39), (A: ' '; V: 30), (A: ' '; V: 30)), {38} ((A: 'I'; V: 39), (A: 'I'; V: 34), (A: ' '; V: 30)), {39} ((A: 'J'; V: 34), (A: ' '; V: 30), (A: ' '; V: 30)), {40} ((A: 'J'; V: 38), (A: ' '; V: 30), (A: ' '; V: 30)), {41} ((A: 'M'; V: 37), (A: ' '; V: 30), (A: ' '; V: 30)), {42} ((A: 'O'; V: 34), (A: 'r'; V: 00), (A: ' '; V: 30)), {43} ((A: 'O'; V: 38), (A: 'e'; V: 08), (A: ' '; V: 30)), {44} ((A: 'R'; V: 35), (A: 'C'; V: 35), (A: ' '; V: 30)), {45} ((A: 'R'; V: 35), (A: 'D'; V: 35), (A: ' '; V: 30)), {46} ((A: 'R'; V: 35), (A: 'T'; V: 35), (A: ' '; V: 30)), {47} ((A: 'S'; V: 39), (A: 'E'; V: 39), (A: ' '; V: 30)), {48} ((A: 'T'; V: 35), (A: 'R'; V: 35), (A: ' '; V: 30)), {49} ((A: 'e'; V: 08), (A: ' '; V: 30), (A: ' '; V: 30)), {50} ((A: 'e'; V: 08), (A: 'E'; V: 38), (A: ' '; V: 30)), {51} ((A: 'e'; V: 08), (A: 'I'; V: 34), (A: ' '; V: 30)), {52} ((A: 'e'; V: 08), (A: 'I'; V: 38), (A: ' '; V: 30)), {53} ((A: 'e'; V: 08), (A: 'O'; V: 38), (A: ' '; V: 30)), {54} ((A: 'e'; V: 08), (A: 'e'; V: 13), (A: ' '; V: 30)), {55} ((A: 'e'; V: 08), (A: 'e'; V: 11), (A: ' '; V: 30)), {56} ((A: 'e'; V: 08), (A: 'e'; V: 09), (A: ' '; V: 30)), {57} ((A: 'e'; V: 08), (A: 'e'; V: 15), (A: ' '; V: 30)), {58} ((A: 'e'; V: 08), (A: 'e'; V: 10), (A: ' '; V: 30)), {59} ((A: 'e'; V: 08), (A: 'e'; V: 14), (A: ' '; V: 30)), {60} ((A: 'e'; V: 08), (A: 'e'; V: 12), (A: ' '; V: 30)), {61} ((A: 'e'; V: 08), (A: 'r'; V: 10), (A: ' '; V: 30)), {62} ((A: 'e'; V: 13), (A: ' '; V: 30), (A: ' '; V: 30)), {63} ((A: 'e'; V: 13), (A: 'I'; V: 38), (A: ' '; V: 30)), {64} ((A: 'e'; V: 11), (A: ' '; V: 30), (A: ' '; V: 30)), {65} ((A: 'e'; V: 11), (A: 'I'; V: 38), (A: ' '; V: 30)), {66} ((A: 'e'; V: 09), (A: ' '; V: 30), (A: ' '; V: 30)), {67} ((A: 'e'; V: 09), (A: 'I'; V: 38), (A: ' '; V: 30)), {68} ((A: 'e'; V: 15), (A: ' '; V: 30), (A: ' '; V: 30)), {69} ((A: 'e'; V: 15), (A: 'I'; V: 38), (A: ' '; V: 30)), {70} ((A: 'e'; V: 10), (A: ' '; V: 30), (A: ' '; V: 30)), {71} ((A: 'e'; V: 10), (A: 'I'; V: 38), (A: ' '; V: 30)), {72} ((A: 'e'; V: 14), (A: ' '; V: 30), (A: ' '; V: 30)), {73} ((A: 'e'; V: 14), (A: 'I'; V: 38), (A: ' '; V: 30)), {74} ((A: 'e'; V: 12), (A: ' '; V: 30), (A: ' '; V: 30)), {75} ((A: 'e'; V: 12), (A: 'I'; V: 38), (A: ' '; V: 30)), {76} ((A: 'r'; V: 32), (A: ' '; V: 30), (A: ' '; V: 30)), {77} ((A: 'r'; V: 04), (A: 'I'; V: 34), (A: ' '; V: 30)), {78} ((A: 'r'; V: 00), (A: 'E'; V: 34), (A: ' '; V: 30)), {79} ((A: 'r'; V: 00), (A: 'I'; V: 34), (A: ' '; V: 30)), {80} ((A: 'r'; V: 00), (A: 'O'; V: 34), (A: ' '; V: 30)), {81} ((A: 'r'; V: 00), (A: 'r'; V: 10), (A: ' '; V: 30)), {82} ((A: 'r'; V: 07), (A: 'I'; V: 34), (A: ' '; V: 30)), {83} ((A: 'r'; V: 03), (A: 'I'; V: 34), (A: ' '; V: 30)), {84} ((A: 'r'; V: 05), (A: 'I'; V: 34), (A: ' '; V: 30)), {85} ((A: 'r'; V: 01), (A: 'I'; V: 34), (A: ' '; V: 30)), {86} ((A: 'r'; V: 25), (A: ' '; V: 30), (A: ' '; V: 30)), {87} ((A: 'r'; V: 06), (A: 'I'; V: 34), (A: ' '; V: 30)), {88} ((A: 'r'; V: 02), (A: 'I'; V: 34), (A: ' '; V: 30)), {89} ((A: 'r'; V: 27), (A: ' '; V: 30), (A: ' '; V: 30)), {90} ((A: 'r'; V: 10), (A: 'e'; V: 08), (A: ' '; V: 30)), {91} ((A: 'r'; V: 10), (A: 'r'; V: 00), (A: ' '; V: 30)), {92} ((A: 'r'; V: 24), (A: ' '; V: 30), (A: ' '; V: 30)), {93} ((A: 'r'; V: 28), (A: ' '; V: 30), (A: ' '; V: 30)), {94} ((A: 'r'; V: 29), (A: ' '; V: 30), (A: ' '; V: 30)), {95} ((A: 'r'; V: 26), (A: ' '; V: 30), (A: ' '; V: 30)), {96} ((A: 'E'; V: 33), (A: ' '; V: 30), (A: ' '; V: 30))); ActLvl1 : ARRAY[$00..$FF] OF CpuVec = ( {.CP04} ({00} F:$08+O0; M:006; T:07), ({01} F:$68+O0; M:006; T:13), ({02} F:$08+O0; M:006; T:23), ({03} F:$68+O0; M:006; T:25), ({04} F:$00+O0; M:006; T:79), ({05} F:$60+O0; M:006; T:52), ({06} F:$20+O0; M:106; T:92), ({07} F:$00+O0; M:101; T:92), ({08} F:$08+O0; M:096; T:07), ({09} F:$68+O0; M:096; T:13), ({0A} F:$08+O0; M:096; T:23), ({0B} F:$68+O0; M:096; T:25), ({0C} F:$00+O0; M:096; T:79), ({0D} F:$60+O0; M:096; T:52), ({0E} F:$20+O0; M:106; T:86), ({0F} F:$00+O0; M:000; T:00), ({10} F:$08+O0; M:005; T:07), ({11} F:$68+O0; M:005; T:13), ({12} F:$08+O0; M:005; T:23), ({13} F:$68+O0; M:005; T:25), ({14} F:$00+O0; M:005; T:79), ({15} F:$60+O0; M:005; T:52), ({16} F:$20+O0; M:106; T:95), ({17} F:$00+O0; M:101; T:95), ({18} F:$08+O0; M:121; T:07), ({19} F:$68+O0; M:121; T:13), ({1A} F:$08+O0; M:121; T:23), ({1B} F:$68+O0; M:121; T:25), ({1C} F:$00+O0; M:121; T:79), ({1D} F:$60+O0; M:121; T:52), ({1E} F:$20+O0; M:106; T:89), ({1F} F:$00+O0; M:101; T:89), ({20} F:$08+O0; M:007; T:07), ({21} F:$68+O0; M:007; T:13), ({22} F:$08+O0; M:007; T:23), ({23} F:$68+O0; M:007; T:25), ({24} F:$00+O0; M:007; T:79), ({25} F:$60+O0; M:007; T:52), ({26} F:$00+O0; M:127; T:00), ({27} F:$00+O0; M:030; T:00), ({28} F:$08+O0; M:162; T:07), ({29} F:$68+O0; M:162; T:13), ({2A} F:$08+O0; M:162; T:23), ({2B} F:$68+O0; M:162; T:25), ({2C} F:$00+O0; M:162; T:79), ({2D} F:$60+O0; M:162; T:52), ({2E} F:$00+O0; M:125; T:00), ({2F} F:$00+O0; M:031; T:00), ({30} F:$08+O0; M:169; T:07), ({31} F:$68+O0; M:169; T:13), ({32} F:$08+O0; M:169; T:23), ({33} F:$48+O0; M:169; T:25), ({34} F:$00+O0; M:169; T:79), ({35} F:$60+O0; M:169; T:52), ({36} F:$00+O0; M:130; T:00), ({37} F:$00+O0; M:001; T:00), ({38} F:$08+O0; M:024; T:07), ({39} F:$68+O0; M:024; T:13), ({3A} F:$08+O0; M:024; T:23), ({3B} F:$68+O0; M:024; T:25), ({3C} F:$00+O0; M:024; T:79), ({3D} F:$60+O0; M:024; T:52), ({3E} F:$00+O0; M:126; T:00), ({3F} F:$00+O0; M:004; T:00), ({40} F:$60+O0; M:039; T:49), ({41} F:$60+O0; M:039; T:66), ({42} F:$60+O0; M:039; T:70), ({43} F:$60+O0; M:039; T:64), ({44} F:$60+O0; M:039; T:74), ({45} F:$60+O0; M:039; T:62), ({46} F:$60+O0; M:039; T:72), ({47} F:$60+O0; M:039; T:68), ({48} F:$60+O0; M:032; T:49), ({49} F:$60+O0; M:032; T:66), ({4A} F:$60+O0; M:032; T:70), ({4B} F:$60+O0; M:032; T:64), ({4C} F:$60+O0; M:032; T:74), ({4D} F:$60+O0; M:032; T:62), ({4E} F:$60+O0; M:032; T:72), ({4F} F:$60+O0; M:032; T:68), ({50} F:$60+O0; M:106; T:49), ({51} F:$60+O0; M:106; T:66), ({52} F:$60+O0; M:106; T:70), ({53} F:$60+O0; M:106; T:64), ({54} F:$60+O0; M:106; T:74), ({55} F:$60+O0; M:106; T:62), ({56} F:$60+O0; M:106; T:72), ({57} F:$60+O0; M:106; T:68), ({58} F:$60+O0; M:101; T:49), ({59} F:$60+O0; M:101; T:66), ({5A} F:$60+O0; M:101; T:70), ({5B} F:$60+O0; M:101; T:64), ({5C} F:$60+O0; M:101; T:74), ({5D} F:$60+O0; M:101; T:62), ({5E} F:$60+O0; M:101; T:72), ({5F} F:$60+O0; M:101; T:68), ({60} F:$E0+O1; M:107; T:00), ({61} F:$E0+O1; M:102; T:00), ({62} F:$68+O1; M:009; T:31), ({63} F:$08+O2; M:008; T:21), ({64} F:$00+O3; M:128; T:00), ({65} F:$00+O3; M:129; T:00), ({66} F:$00+O3; M:000; T:00), ({67} F:$00+O3; M:000; T:00), ({68} F:$60+O1; M:106; T:36), ({69} F:$68+O1; M:037; T:27), ({6A} F:$00+O1; M:106; T:33), ({6B} F:$78+O1; M:037; T:26), ({6C} F:$00+O1; M:040; T:00), ({6D} F:$C0+O1; M:041; T:00), ({6E} F:$00+O1; M:098; T:00), ({6F} F:$E0+O1; M:099; T:00), ({70} F:$00+O0; M:060; T:39), ({71} F:$00+O0; M:056; T:39), ({72} F:$00+O0; M:046; T:39), ({73} F:$00+O0; M:052; T:39), ({74} F:$00+O0; M:063; T:39), ({75} F:$00+O0; M:059; T:39), ({76} F:$00+O0; M:047; T:39), ({77} F:$00+O0; M:053; T:39), ({78} F:$00+O0; M:062; T:39), ({79} F:$00+O0; M:058; T:39), ({7A} F:$00+O0; M:061; T:39), ({7B} F:$00+O0; M:057; T:39), ({7C} F:$00+O0; M:170; T:39), ({7D} F:$00+O0; M:054; T:39), ({7E} F:$00+O0; M:050; T:39), ({7F} F:$00+O0; M:055; T:39), ({80} F:$00+O0; M:000; T:08), ({81} F:$60+O0; M:000; T:17), ({82} F:$00+O0; M:000; T:00), ({83} F:$70+O0; M:000; T:16), ({84} F:$08+O0; M:163; T:07), ({85} F:$68+O0; M:163; T:13), ({86} F:$08+O0; M:167; T:07), ({87} F:$68+O0; M:167; T:13), ({88} F:$08+O0; M:086; T:07), ({89} F:$68+O0; M:086; T:13), ({8A} F:$08+O0; M:086; T:23), ({8B} F:$68+O0; M:086; T:25), ({8C} F:$28+O0; M:086; T:22), ({8D} F:$68+O0; M:067; T:30), ({8E} F:$28+O0; M:086; T:47), ({8F} F:$68+O0; M:101; T:12), ({90} F:$00+O0; M:094; T:00), ({91} F:$60+O0; M:167; T:56), ({92} F:$40+O0; M:167; T:58), ({93} F:$60+O0; M:167; T:55), ({94} F:$60+O0; M:167; T:60), ({95} F:$60+O0; M:167; T:54), ({96} F:$60+O0; M:167; T:59), ({97} F:$60+O0; M:167; T:57), ({98} F:$F0+O0; M:017; T:00), ({99} F:$E0+O0; M:028; T:00), ({9A} F:$00+O0; M:016; T:03), ({9B} F:$00+O0; M:166; T:00), ({9C} F:$E0+O0; M:109; T:00), ({9D} F:$E0+O0; M:104; T:00), ({9E} F:$00+O0; M:119; T:00), ({9F} F:$00+O0; M:064; T:00), ({A0} F:$00+O0; M:086; T:80), ({A1} F:$60+O0; M:086; T:53), ({A2} F:$00+O0; M:086; T:42), ({A3} F:$60+O0; M:086; T:43), ({A4} F:$00+O0; M:087; T:00), ({A5} F:$E0+O0; M:088; T:00), ({A6} F:$00+O0; M:025; T:00), ({A7} F:$E0+O0; M:026; T:00), ({A8} F:$00+O0; M:163; T:79), ({A9} F:$60+O0; M:163; T:52), ({AA} F:$00+O0; M:158; T:00), ({AB} F:$E0+O0; M:159; T:00), ({AC} F:$00+O0; M:077; T:00), ({AD} F:$C0+O0; M:078; T:00), ({AE} F:$00+O0; M:122; T:00), ({AF} F:$E0+O0; M:123; T:00), ({B0} F:$00+O0; M:086; T:79), ({B1} F:$00+O0; M:086; T:85), ({B2} F:$00+O0; M:086; T:88), ({B3} F:$00+O0; M:086; T:83), ({B4} F:$00+O0; M:086; T:77), ({B5} F:$00+O0; M:086; T:84), ({B6} F:$00+O0; M:086; T:87), ({B7} F:$00+O0; M:086; T:82), ({B8} F:$60+O0; M:086; T:52), ({B9} F:$60+O0; M:086; T:67), ({BA} F:$60+O0; M:086; T:71), ({BB} F:$60+O0; M:086; T:65), ({BC} F:$60+O0; M:086; T:75), ({BD} F:$60+O0; M:086; T:63), ({BE} F:$60+O0; M:086; T:73), ({BF} F:$60+O0; M:086; T:69), ({C0} F:$00+O1; M:000; T:08), ({C1} F:$60+O1; M:000; T:16), ({C2} F:$00+O0; M:115; T:37), ({C3} F:$00+O0; M:115; T:00), ({C4} F:$68+O0; M:069; T:32), ({C5} F:$68+O0; M:066; T:32), ({C6} F:$08+O0; M:086; T:08), ({C7} F:$68+O0; M:086; T:17), ({C8} F:$00+O1; M:034; T:38), ({C9} F:$00+O1; M:068; T:00), ({CA} F:$00+O0; M:116; T:37), ({CB} F:$00+O0; M:116; T:00), ({CC} F:$00+O0; M:043; T:76), ({CD} F:$00+O0; M:043; T:33), ({CE} F:$00+O0; M:044; T:00), ({CF} F:$00+O0; M:045; T:00), ({D0} F:$00+O0; M:000; T:09), ({D1} F:$60+O0; M:000; T:18), ({D2} F:$00+O0; M:000; T:10), ({D3} F:$60+O0; M:000; T:19), ({D4} F:$00+O0; M:003; T:00), ({D5} F:$00+O0; M:002; T:00), ({D6} F:$00+O0; M:000; T:00), ({D7} F:$00+O0; M:168; T:00), ({D8} F:$00+O0; M:000; T:00), ({D9} F:$00+O0; M:000; T:00), ({DA} F:$00+O0; M:000; T:00), ({DB} F:$00+O0; M:000; T:00), ({DC} F:$00+O0; M:000; T:00), ({DD} F:$00+O0; M:000; T:00), ({DE} F:$00+O0; M:000; T:00), ({DF} F:$00+O0; M:000; T:00), ({E0} F:$00+O0; M:082; T:39), ({E1} F:$00+O0; M:081; T:39), ({E2} F:$00+O0; M:080; T:39), ({E3} F:$E0+O0; M:048; T:39), ({E4} F:$00+O0; M:038; T:79), ({E5} F:$60+O0; M:038; T:51), ({E6} F:$00+O0; M:097; T:35), ({E7} F:$60+O0; M:097; T:34), ({E8} F:$60+O0; M:016; T:40), ({E9} F:$40+O0; M:051; T:40), ({EA} F:$40+O0; M:051; T:03), ({EB} F:$00+O0; M:051; T:39), ({EC} F:$00+O0; M:038; T:81), ({ED} F:$60+O0; M:038; T:61), ({EE} F:$00+O0; M:097; T:91), ({EF} F:$60+O0; M:097; T:90), ({F0} F:$00+O0; M:076; T:00), ({F1} F:$00+O0; M:000; T:00), ({F2} F:$00+O0; M:114; T:00), ({F3} F:$00+O0; M:113; T:00), ({F4} F:$00+O0; M:035; T:00), ({F5} F:$00+O0; M:023; T:00), ({F6} F:$00+O0; M:000; T:06), ({F7} F:$00+O0; M:000; T:12), ({F8} F:$00+O0; M:019; T:00), ({F9} F:$00+O0; M:155; T:00), ({FA} F:$00+O0; M:021; T:00), ({FB} F:$00+O0; M:157; T:00), ({FC} F:$00+O0; M:020; T:00), ({FD} F:$00+O0; M:156; T:00), ({FE} F:$00+O0; M:000; T:00), ({FF} F:$00+O0; M:000; T:00)); ActLvl2 : ARRAY[Row_0..Row_B] OF {2-byte Row Index}{.CP05} ARRAY[$00..$0F] OF CpuVec = ( {2-byte Col Index} {_0,0} ((F:$00+O0; M:000; T:00), {_0,1} (F:$00+O0; M:000; T:00), {_0,2} (F:$48+O2; M:065; T:28), {_0,3} (F:$68+O2; M:083; T:28), {_0,4} (F:$00+O0; M:000; T:00), {_0,5} (F:$00+O0; M:000; T:00), {_0,6} (F:$00+O2; M:022; T:00), {_0,7} (F:$00+O0; M:000; T:00), {_0,8} (F:$00+O0; M:000; T:00), {_0,9} (F:$00+O0; M:000; T:00), {_0,A} (F:$00+O0; M:000; T:00), {_0,B} (F:$00+O0; M:000; T:00), {_0,C} (F:$00+O0; M:000; T:00), {_0,D} (F:$00+O0; M:000; T:00), {_0,E} (F:$00+O0; M:000; T:00), {_0,F} (F:$00+O0; M:000; T:00)), {_2,0} ((F:$08+O3; M:086; T:04), {_2,1} (F:$08+O3; M:086; T:05), {_2,2} (F:$08+O3; M:086; T:44), {_2,3} (F:$08+O3; M:086; T:45), {_2,4} (F:$08+O3; M:086; T:48), {_2,5} (F:$00+O0; M:000; T:00), {_2,6} (F:$08+O3; M:086; T:46), {_2,7} (F:$00+O0; M:000; T:00), {_2,8} (F:$00+O0; M:000; T:00), {_2,9} (F:$00+O0; M:000; T:00), {_2,A} (F:$00+O0; M:000; T:00), {_2,B} (F:$00+O0; M:000; T:00), {_2,C} (F:$00+O0; M:000; T:00), {_2,D} (F:$00+O0; M:000; T:00), {_2,E} (F:$00+O0; M:000; T:00), {_2,F} (F:$00+O0; M:000; T:00)), {_8,0} ((F:$40+O3; M:060; T:40), {_8,1} (F:$40+O3; M:056; T:40), {_8,2} (F:$40+O3; M:046; T:40), {_8,3} (F:$40+O3; M:052; T:40), {_8,4} (F:$40+O3; M:063; T:40), {_8,5} (F:$40+O3; M:059; T:40), {_8,6} (F:$40+O3; M:047; T:40), {_8,7} (F:$40+O3; M:053; T:40), {_8,8} (F:$40+O3; M:062; T:40), {_8,9} (F:$40+O3; M:058; T:40), {_8,A} (F:$40+O3; M:061; T:40), {_8,B} (F:$40+O3; M:057; T:40), {_8,C} (F:$40+O3; M:170; T:40), {_8,D} (F:$40+O3; M:054; T:40), {_8,E} (F:$40+O3; M:050; T:40), {_8,F} (F:$40+O3; M:055; T:40)), {_9,0} ((F:$08+O3; M:143; T:06), {_9,1} (F:$08+O3; M:139; T:06), {_9,2} (F:$08+O3; M:131; T:06), {_9,3} (F:$08+O3; M:135; T:06), {_9,4} (F:$08+O3; M:146; T:06), {_9,5} (F:$08+O3; M:142; T:06), {_9,6} (F:$08+O3; M:132; T:06), {_9,7} (F:$08+O3; M:136; T:06), {_9,8} (F:$08+O3; M:145; T:06), {_9,9} (F:$08+O3; M:141; T:06), {_9,A} (F:$08+O3; M:144; T:06), {_9,B} (F:$08+O3; M:140; T:06), {_9,C} (F:$08+O3; M:133; T:06), {_9,D} (F:$08+O3; M:137; T:06), {_9,E} (F:$08+O3; M:134; T:06), {_9,F} (F:$08+O3; M:138; T:06)), {_A,0} ((F:$20+O3; M:106; T:93), {_A,1} (F:$00+O3; M:101; T:93), {_A,2} (F:$00+O0; M:000; T:00), {_A,3} (F:$68+O3; M:012; T:13), {_A,4} (F:$68+O3; M:149; T:14), {_A,5} (F:$68+O3; M:149; T:15), {_A,6} (F:$00+O0; M:000; T:00), {_A,7} (F:$00+O0; M:000; T:00), {_A,8} (F:$20+O3; M:106; T:94), {_A,9} (F:$00+O3; M:101; T:94), {_A,A} (F:$00+O0; M:000; T:00), {_A,B} (F:$68+O3; M:015; T:13), {_A,C} (F:$68+O3; M:151; T:14), {_A,D} (F:$68+O3; M:151; T:15), {_A,E} (F:$00+O0; M:000; T:00), {_A,F} (F:$68+O3; M:037; T:25)), {_B,0} ((F:$00+O0; M:000; T:00), {_B,1} (F:$00+O0; M:000; T:00), {_B,2} (F:$68+O3; M:084; T:32), {_B,3} (F:$68+O3; M:014; T:13), {_B,4} (F:$68+O3; M:070; T:32), {_B,5} (F:$68+O3; M:072; T:32), {_B,6} (F:$78+O3; M:091; T:24), {_B,7} (F:$78+O3; M:091; T:28), {_B,8} (F:$00+O0; M:000; T:00), {_B,9} (F:$00+O0; M:000; T:00), {_B,A} (F:$00+O0; M:000; T:00), {_B,B} (F:$68+O3; M:013; T:13), {_B,C} (F:$68+O3; M:010; T:25), {_B,D} (F:$68+O3; M:011; T:25), {_B,E} (F:$78+O3; M:090; T:24), {_B,F} (F:$78+O3; M:090; T:28))); ActLvl3 : ARRAY[G_RM1..G_RM9] OF {modR/M Group Index}{.CP05} ARRAY[$00..$07] OF CpuVec = ( {modR/M Reg Index} {G_RM1,0} ((F:$00+O0; M:006; T:00), {G_RM1,1} (F:$00+O0; M:096; T:00), {G_RM1,2} (F:$00+O0; M:005; T:00), {G_RM1,3} (F:$00+O0; M:121; T:00), {G_RM1,4} (F:$00+O0; M:007; T:00), {G_RM1,5} (F:$00+O0; M:162; T:00), {G_RM1,6} (F:$00+O0; M:169; T:00), {G_RM1,7} (F:$00+O0; M:024; T:00)), {G_RM2,0} ((F:$00+O0; M:117; T:00), {G_RM2,1} (F:$00+O0; M:118; T:00), {G_RM2,2} (F:$00+O0; M:111; T:00), {G_RM2,3} (F:$00+O0; M:112; T:00), {G_RM2,4} (F:$00+O0; M:148; T:00), {G_RM2,5} (F:$00+O0; M:150; T:00), {G_RM2,6} (F:$00+O0; M:000; T:00), {G_RM2,7} (F:$00+O0; M:120; T:00)), {G_RM3,0} ((F:$00+O0; M:163; T:01), {G_RM3,1} (F:$00+O0; M:000; T:00), {G_RM3,2} (F:$00+O0; M:095; T:00), {G_RM3,3} (F:$00+O0; M:093; T:00), {G_RM3,4} (F:$00+O0; M:092; T:78), {G_RM3,5} (F:$00+O0; M:037; T:00), {G_RM3,6} (F:$00+O0; M:033; T:00), {G_RM3,7} (F:$00+O0; M:036; T:00)), {G_RM4,0} ((F:$00+O0; M:039; T:06), {G_RM4,1} (F:$00+O0; M:032; T:06), {G_RM4,2} (F:$00+O0; M:000; T:00), {G_RM4,3} (F:$00+O0; M:000; T:00), {G_RM4,4} (F:$00+O0; M:000; T:00), {G_RM4,5} (F:$00+O0; M:000; T:00), {G_RM4,6} (F:$00+O0; M:000; T:00), {G_RM4,7} (F:$00+O0; M:000; T:00)), {G_RM5,0} ((F:$60+O0; M:039; T:12), {G_RM5,1} (F:$60+O0; M:032; T:12), {G_RM5,2} (F:$60+O0; M:016; T:12), {G_RM5,3} (F:$20+O0; M:016; T:11), {G_RM5,4} (F:$40+O0; M:051; T:12), {G_RM5,5} (F:$40+O0; M:051; T:11), {G_RM5,6} (F:$60+O0; M:106; T:12), {G_RM5,7} (F:$00+O0; M:000; T:00)), {G_RM6,0} ((F:$00+O2; M:153; T:20), {G_RM6,1} (F:$00+O2; M:161; T:20), {G_RM6,2} (F:$20+O2; M:074; T:20), {G_RM6,3} (F:$00+O2; M:085; T:20), {G_RM6,4} (F:$00+O2; M:164; T:20), {G_RM6,5} (F:$00+O2; M:165; T:20), {G_RM6,6} (F:$00+O0; M:000; T:00), {G_RM6,7} (F:$00+O0; M:000; T:00)), {G_RM7,0} ((F:$00+O2; M:147; T:41), {G_RM7,1} (F:$00+O2; M:152; T:41), {G_RM7,2} (F:$40+O2; M:071; T:41), {G_RM7,3} (F:$40+O2; M:073; T:41), {G_RM7,4} (F:$00+O2; M:154; T:20), {G_RM7,5} (F:$00+O0; M:000; T:00), {G_RM7,6} (F:$00+O2; M:075; T:20), {G_RM7,7} (F:$00+O0; M:000; T:00)), {G_RM8,0} ((F:$00+O0; M:000; T:00), {G_RM8,1} (F:$00+O0; M:000; T:00), {G_RM8,2} (F:$00+O0; M:000; T:00), {G_RM8,3} (F:$00+O0; M:000; T:00), {G_RM8,4} (F:$60+O3; M:012; T:16), {G_RM8,5} (F:$60+O3; M:015; T:16), {G_RM8,6} (F:$60+O3; M:014; T:16), {G_RM8,7} (F:$60+O3; M:013; T:16)), {G_RM9,0} ((F:$60+O0; M:163; T:02), {G_RM9,1} (F:$00+O0; M:000; T:00), {G_RM9,2} (F:$60+O0; M:095; T:00), {G_RM9,3} (F:$60+O0; M:093; T:00), {G_RM9,4} (F:$60+O0; M:092; T:50), {G_RM9,5} (F:$60+O0; M:037; T:00), {G_RM9,6} (F:$60+O0; M:033; T:00), {G_RM9,7} (F:$60+O0; M:036; T:00))); MrmTab : ARRAY[TAdr] OF { addressing } {.CP08} ARRAY[0..2] OF { mod values } ARRAY[0..7] OF { R/M values } TMrm = ( {[Adr16,0,0]}(((D:0; SIB:0; rS:27 {DS}; rB:11 {BX}; rX:14 {SI}), {[Adr16,0,1]} (D:0; SIB:0; rS:27 {DS}; rB:11 {BX}; rX:15 {DI}), {[Adr16,0,2]} (D:0; SIB:0; rS:26 {SS}; rB:13 {BP}; rX:14 {SI}), {[Adr16,0,3]} (D:0; SIB:0; rS:26 {SS}; rB:13 {BP}; rX:15 {DI}), {[Adr16,0,4]} (D:0; SIB:0; rS:27 {DS}; rB:14 {SI}; rX:30 {}), {[Adr16,0,5]} (D:0; SIB:0; rS:27 {DS}; rB:15 {DI}; rX:30 {}), {[Adr16,0,6]} (D:2; SIB:0; rS:27 {DS}; rB:30 {}; rX:30 {}), {[Adr16,0,7]} (D:0; SIB:0; rS:27 {DS}; rB:11 {BX}; rX:30 {})), {[Adr16,1,0]} ((D:1; SIB:0; rS:27 {DS}; rB:11 {BX}; rX:14 {SI}), {[Adr16,1,1]} (D:1; SIB:0; rS:27 {DS}; rB:11 {BX}; rX:15 {DI}), {[Adr16,1,2]} (D:1; SIB:0; rS:26 {SS}; rB:13 {BP}; rX:14 {SI}), {[Adr16,1,3]} (D:1; SIB:0; rS:26 {SS}; rB:13 {BP}; rX:15 {DI}), {[Adr16,1,4]} (D:1; SIB:0; rS:27 {DS}; rB:14 {SI}; rX:30 {}), {[Adr16,1,5]} (D:1; SIB:0; rS:27 {DS}; rB:15 {DI}; rX:30 {}), {[Adr16,1,6]} (D:1; SIB:0; rS:26 {SS}; rB:13 {BP}; rX:30 {}), {[Adr16,1,7]} (D:1; SIB:0; rS:27 {DS}; rB:11 {BX}; rX:30 {})), {[Adr16,2,0]} ((D:2; SIB:0; rS:27 {DS}; rB:11 {BX}; rX:14 {SI}), {[Adr16,2,1]} (D:2; SIB:0; rS:27 {DS}; rB:11 {BX}; rX:15 {DI}), {[Adr16,2,2]} (D:2; SIB:0; rS:26 {SS}; rB:13 {BP}; rX:14 {SI}), {[Adr16,2,3]} (D:2; SIB:0; rS:26 {SS}; rB:13 {BP}; rX:15 {DI}), {[Adr16,2,4]} (D:2; SIB:0; rS:27 {DS}; rB:14 {SI}; rX:30 {}), {[Adr16,2,5]} (D:2; SIB:0; rS:27 {DS}; rB:15 {DI}; rX:30 {}), {[Adr16,2,6]} (D:2; SIB:0; rS:26 {SS}; rB:13 {BP}; rX:30 {}), {[Adr16,2,7]} (D:2; SIB:0; rS:27 {DS}; rB:11 {BX}; rX:30 {}))), {[Adr32,0,0]}(((D:0; SIB:0; rS:27 {DS}; rB:16 {EAX}; rX:30 {}), {[Adr32,0,1]} (D:0; SIB:0; rS:27 {DS}; rB:17 {ECX}; rX:30 {}), {[Adr32,0,2]} (D:0; SIB:0; rS:27 {DS}; rB:18 {EDX}; rX:30 {}), {[Adr32,0,3]} (D:0; SIB:0; rS:27 {DS}; rB:19 {EBX}; rX:30 {}), {[Adr32,0,4]} (D:0; SIB:1; rS:30 {}; rB:30 {}; rX:30 {}), {[Adr32,0,5]} (D:4; SIB:0; rS:27 {DS}; rB:30 {}; rX:30 {}), {[Adr32,0,6]} (D:0; SIB:0; rS:27 {DS}; rB:22 {ESI}; rX:30 {}), {[Adr32,0,7]} (D:0; SIB:0; rS:27 {DS}; rB:23 {EDI}; rX:30 {})), {[Adr32,1,0]} ((D:1; SIB:0; rS:27 {DS}; rB:16 {EAX}; rX:30 {}), {[Adr32,1,1]} (D:1; SIB:0; rS:27 {DS}; rB:17 {ECX}; rX:30 {}), {[Adr32,1,2]} (D:1; SIB:0; rS:27 {DS}; rB:18 {EDX}; rX:30 {}), {[Adr32,1,3]} (D:1; SIB:0; rS:27 {DS}; rB:19 {EBX}; rX:30 {}), {[Adr32,1,4]} (D:0; SIB:1; rS:30 {}; rB:30 {}; rX:30 {}), {[Adr32,1,5]} (D:1; SIB:0; rS:26 {SS}; rB:21 {EBP}; rX:30 {}), {[Adr32,1,6]} (D:1; SIB:0; rS:27 {DS}; rB:22 {ESI}; rX:30 {}), {[Adr32,1,7]} (D:1; SIB:0; rS:27 {DS}; rB:23 {EDI}; rX:30 {})), {[Adr32,2,0]} ((D:4; SIB:0; rS:27 {DS}; rB:16 {EAX}; rX:30 {}), {[Adr32,2,1]} (D:4; SIB:0; rS:27 {DS}; rB:17 {ECX}; rX:30 {}), {[Adr32,2,2]} (D:4; SIB:0; rS:27 {DS}; rB:18 {EDX}; rX:30 {}), {[Adr32,2,3]} (D:4; SIB:0; rS:27 {DS}; rB:19 {EBX}; rX:30 {}), {[Adr32,2,4]} (D:0; SIB:1; rS:30 {}; rB:30 {}; rX:30 {}), {[Adr32,2,5]} (D:4; SIB:0; rS:26 {SS}; rB:21 {EBP}; rX:30 {}), {[Adr32,2,6]} (D:4; SIB:0; rS:27 {DS}; rB:22 {ESI}; rX:30 {}), {[Adr32,2,7]} (D:4; SIB:0; rS:27 {DS}; rB:23 {EDI}; rX:30 {})))); RegList : ARRAY[00..41] OF STRING[3] = ( {.CP12} {00} 'AL', {01} 'CL', {02} 'DL', {03} 'BL', {04} 'AH', {05} 'CH', {06} 'DH', {07} 'BH', {08} 'AX', {09} 'CX', {10} 'DX', {11} 'BX', {12} 'SP', {13} 'BP', {14} 'SI', {15} 'DI', {16} 'EAX', {17} 'ECX', {18} 'EDX', {19} 'EBX', {20} 'ESP', {21} 'EBP', {22} 'ESI', {23} 'EDI', {24} 'ES', {25} 'CS', {26} 'SS', {27} 'DS', {28} 'FS', {29} 'GS', {30} '', {31} '1', {32} '3', {33} 'a', {34} 'b', {35} 'd', {36} 'p', {37} 's', {38} 'v', {39} 'w', {40} 'q', {41} 't'); RegDecode : ARRAY[TAdr] OF {.CP12} ARRAY[WBitStatus] OF ARRAY[0..7] OF BYTE = ( {decodes GP Reg fields} {[Adr16,W0,0]} ((00 {AL}, 01 {CL}, 02 {DL}, 03 {BL}, 04 {AH}, 05 {CH}, 06 {DH}, 07 {BH}), {[Adr16,W1,0]} (08 {AX}, 09 {CX}, 10 {DX}, 11 {BX}, 12 {SP}, 13 {BP}, 14 {SI}, 15 {DI})), {[Adr32,W0,0]} ((00 {AL}, 01 {CL}, 02 {DL}, 03 {BL}, 04 {AH}, 05 {CH}, 06 {DH}, 07 {BH}), {[Adr32,W1,0]} (16 {EAX}, 17 {ECX}, 18 {EDX}, 19 {EBX}, 20 {ESP}, 21 {EBP}, 22 {ESI}, 23 {EDI}))); SibTab : ARRAY[0..2] OF { mrmMOD indexes this } {.CP28} ARRAY[0..7] OF { sibBAS indexes this } SibRec = ( {[0,0]} ((D: 0; rS: 27 {DS}; rB: 16 {EAX}), {[0,1]} (D: 0; rS: 27 {DS}; rB: 17 {ECX}), {[0,2]} (D: 0; rS: 27 {DS}; rB: 18 {EDX}), {[0,3]} (D: 0; rS: 27 {DS}; rB: 19 {EBX}), {[0,4]} (D: 0; rS: 26 {SS}; rB: 20 {ESP}), {[0,5]} (D: 4; rS: 27 {DS}; rB: 30 {}), {[0,6]} (D: 0; rS: 27 {DS}; rB: 22 {ESI}), {[0,7]} (D: 0; rS: 27 {DS}; rB: 23 {EDI})), {[1,0]} ((D: 1; rS: 27 {DS}; rB: 16 {EAX}), {[1,1]} (D: 1; rS: 27 {DS}; rB: 17 {ECX}), {[1,2]} (D: 1; rS: 27 {DS}; rB: 18 {EDX}), {[1,3]} (D: 1; rS: 27 {DS}; rB: 19 {EBX}), {[1,4]} (D: 1; rS: 26 {SS}; rB: 21 {EBP}), {[1,5]} (D: 1; rS: 26 {SS}; rB: 20 {ESP}), {[1,6]} (D: 1; rS: 27 {DS}; rB: 22 {ESI}), {[1,7]} (D: 1; rS: 27 {DS}; rB: 23 {EDI})), {[2,0]} ((D: 4; rS: 27 {DS}; rB: 16 {EAX}), {[2,1]} (D: 4; rS: 27 {DS}; rB: 17 {ECX}), {[2,2]} (D: 4; rS: 27 {DS}; rB: 18 {EDX}), {[2,3]} (D: 4; rS: 27 {DS}; rB: 19 {EBX}), {[2,4]} (D: 4; rS: 26 {SS}; rB: 21 {EBP}), {[2,5]} (D: 4; rS: 26 {SS}; rB: 20 {ESP}), {[2,6]} (D: 4; rS: 27 {DS}; rB: 22 {ESI}), {[2,7]} (D: 4; rS: 27 {DS}; rB: 23 {EDI}))); sxTab : ARRAY[0..3] OF { ss field indexes this } {.CP20} ARRAY[0..7] OF { index field indexes this } sxRec = ( {[0,0]} ((rX: 16 {EAX}; sF: 1), {[0,1]} (rX: 17 {ECX}; sF: 1), {[0,2]} (rX: 18 {EDX}; sF: 1), {[0,3]} (rX: 19 {EBX}; sF: 1), {[0,4]} (rX: 30 {}; sF: 0), {[0,5]} (rX: 21 {EBP}; sF: 1), {[0,6]} (rX: 22 {ESI}; sF: 1), {[0,7]} (rX: 23 {EDI}; sF: 1)), {[1,0]} ((rX: 16 {EAX}; sF: 2), {[1,1]} (rX: 17 {ECX}; sF: 2), {[1,2]} (rX: 18 {EDX}; sF: 2), {[1,3]} (rX: 19 {EBX}; sF: 2), {[1,4]} (rX: 30 {}; sF: 0), {[1,5]} (rX: 21 {EBP}; sF: 2), {[1,6]} (rX: 22 {ESI}; sF: 2), {[1,7]} (rX: 23 {EDI}; sF: 2)), {[2,0]} ((rX: 16 {EAX}; sF: 4), {[2,1]} (rX: 17 {ECX}; sF: 4), {[2,2]} (rX: 18 {EDX}; sF: 4), {[2,3]} (rX: 19 {EBX}; sF: 4), {[2,4]} (rX: 30 {}; sF: 0), {[2,5]} (rX: 21 {EBP}; sF: 4), {[2,6]} (rX: 22 {ESI}; sF: 4), {[2,7]} (rX: 23 {EDI}; sF: 4)), {[3,0]} ((rX: 16 {EAX}; sF: 8), {[3,1]} (rX: 17 {ECX}; sF: 8), {[3,2]} (rX: 18 {EDX}; sF: 8), {[3,3]} (rX: 19 {EBX}; sF: 8), {[3,4]} (rX: 30 {}; sF: 0), {[3,5]} (rX: 21 {EBP}; sF: 8), {[3,6]} (rX: 22 {ESI}; sF: 8), {[3,7]} (rX: 23 {EDI}; sF: 8))); { -------------------------------------------- } {.CP44} { Control Tables for 80387 Instructions Follow } { -------------------------------------------- } { 387 EA table; 1st index = ESC group; 2nd index = REG field; } MpuEA : ARRAY[0..7] OF ARRAY[0..7] OF MpuVec = ( { used if mod <> 3 } {[0,0]} ((F: $18;M: 03), {[0,1]} (F: $18;M: 44), {[0,2]} (F: $18;M: 09), {[0,3]} (F: $18;M: 10), {[0,4]} (F: $18;M: 64), {[0,5]} (F: $18;M: 66), {[0,6]} (F: $18;M: 15), {[0,7]} (F: $18;M: 17)), {[1,0]} ((F: $18;M: 34), {[1,1]} (F: $00;M: 00), {[1,2]} (F: $18;M: 59), {[1,3]} (F: $18;M: 62), {[1,4]} (F: $13;M: 37), {[1,5]} (F: $14;M: 36), {[1,6]} (F: $13;M: 61), {[1,7]} (F: $14;M: 60)), {[2,0]} ((F: $15;M: 21), {[2,1]} (F: $15;M: 27), {[2,2]} (F: $15;M: 22), {[2,3]} (F: $15;M: 23), {[2,4]} (F: $15;M: 32), {[2,5]} (F: $15;M: 33), {[2,6]} (F: $15;M: 24), {[2,7]} (F: $15;M: 25)), {[3,0]} ((F: $15;M: 26), {[3,1]} (F: $00;M: 00), {[3,2]} (F: $15;M: 30), {[3,3]} (F: $15;M: 31), {[3,4]} (F: $00;M: 00), {[3,5]} (F: $1A;M: 34), {[3,6]} (F: $00;M: 00), {[3,7]} (F: $1A;M: 62)), {[4,0]} ((F: $19;M: 03), {[4,1]} (F: $19;M: 44), {[4,2]} (F: $19;M: 09), {[4,3]} (F: $19;M: 10), {[4,4]} (F: $19;M: 64), {[4,5]} (F: $19;M: 66), {[4,6]} (F: $19;M: 15), {[4,7]} (F: $19;M: 17)), {[5,0]} ((F: $19;M: 34), {[5,1]} (F: $00;M: 00), {[5,2]} (F: $19;M: 59), {[5,3]} (F: $19;M: 62), {[5,4]} (F: $13;M: 52), {[5,5]} (F: $00;M: 00), {[5,6]} (F: $13;M: 53), {[5,7]} (F: $14;M: 63)), {[6,0]} ((F: $16;M: 21), {[6,1]} (F: $16;M: 27), {[6,2]} (F: $16;M: 22), {[6,3]} (F: $16;M: 23), {[6,4]} (F: $16;M: 32), {[6,5]} (F: $16;M: 33), {[6,6]} (F: $16;M: 24), {[6,7]} (F: $16;M: 25)), {[7,0]} ((F: $16;M: 26), {[7,1]} (F: $00;M: 00), {[7,2]} (F: $16;M: 30), {[7,3]} (F: $16;M: 31), {[7,4]} (F: $12;M: 05), {[7,5]} (F: $17;M: 26), {[7,6]} (F: $12;M: 06), {[7,7]} (F: $17;M: 31))); { 387 mod=3 table part 1; use when mod field = 3 to access flags }{.CP37} MpuM11 : ARRAY[0..7] OF ARRAY[0..7] OF MpuVec = ( {M: is index to MpuOv } {[0,0]} ((F: $1D; M: 01), {[0,1]} (F: $1D; M: 02), {[0,2]} (F: $1D; M: 03), {[0,3]} (F: $1D; M: 04), {[0,4]} (F: $1D; M: 05), {[0,5]} (F: $1D; M: 06), {[0,6]} (F: $1D; M: 07), {[0,7]} (F: $1D; M: 08)), {[1,0]} ((F: $1B; M: 09), {[1,1]} (F: $1B; M: 10), {[1,2]} (F: $20; M: 11), {[1,3]} (F: $00; M: 00), {[1,4]} (F: $20; M: 12), {[1,5]} (F: $20; M: 13), {[1,6]} (F: $20; M: 14), {[1,7]} (F: $20; M: 15)), {[2,0]} ((F: $00; M: 00), {[2,1]} (F: $00; M: 00), {[2,2]} (F: $00; M: 00), {[2,3]} (F: $00; M: 00), {[2,4]} (F: $00; M: 00), {[2,5]} (F: $20; M: 16), {[2,6]} (F: $00; M: 00), {[2,7]} (F: $00; M: 00)), {[3,0]} ((F: $00; M: 00), {[3,1]} (F: $00; M: 00), {[3,2]} (F: $00; M: 00), {[3,3]} (F: $00; M: 00), {[3,4]} (F: $20; M: 17), {[3,5]} (F: $00; M: 00), {[3,6]} (F: $00; M: 00), {[3,7]} (F: $00; M: 00)), {[4,0]} ((F: $1C; M: 18), {[4,1]} (F: $1C; M: 19), {[4,2]} (F: $1C; M: 20), {[4,3]} (F: $1C; M: 21), {[4,4]} (F: $1C; M: 22), {[4,5]} (F: $1C; M: 23), {[4,6]} (F: $1C; M: 24), {[4,7]} (F: $1C; M: 25)), {[5,0]} ((F: $1B; M: 26), {[5,1]} (F: $00; M: 00), {[5,2]} (F: $1B; M: 27), {[5,3]} (F: $1B; M: 28), {[5,4]} (F: $1B; M: 29), {[5,5]} (F: $1B; M: 30), {[5,6]} (F: $00; M: 00), {[5,7]} (F: $00; M: 00)), {[6,0]} ((F: $1C; M: 31), {[6,1]} (F: $1C; M: 32), {[6,2]} (F: $00; M: 00), {[6,3]} (F: $20; M: 33), {[6,4]} (F: $1C; M: 34), {[6,5]} (F: $1C; M: 35), {[6,6]} (F: $1C; M: 36), {[6,7]} (F: $1C; M: 37)), {[7,0]} ((F: $00; M: 00), {[7,1]} (F: $00; M: 00), {[7,2]} (F: $00; M: 00), {[7,3]} (F: $00; M: 00), {[7,4]} (F: $21; M: 38), {[7,5]} (F: $00; M: 00), {[7,6]} (F: $00; M: 00), {[7,7]} (F: $00; M: 00))); { 387 mod=3 table part 2; use when mod field = 3 to find mnemonic }{.CP46} MpuOv : ARRAY[01..38] OF ARRAY[00..07] OF Byte = ( { R/M Values (00,01,02,03,04,05,06,07) esc,reg -- -- -- -- -- -- -- -- } {[0,0]-->link[01]} (03,03,03,03,03,03,03,03), {FADD} {[0,1]-->link[02]} (44,44,44,44,44,44,44,44), {FMUL} {[0,2]-->link[03]} (09,09,09,09,09,09,09,09), {FCOM} {[0,3]-->link[04]} (10,10,10,10,10,10,10,10), {FCOMP} {[0,4]-->link[05]} (64,64,64,64,64,64,64,64), {FSUB} {[0,5]-->link[06]} (66,66,66,66,66,66,66,66), {FSUBR} {[0,6]-->link[07]} (15,15,15,15,15,15,15,15), {FDIV} {[0,7]-->link[08]} (17,17,17,17,17,17,17,17), {FDIVR} {[1,0]-->link[09]} (34,34,34,34,34,34,34,34), {FLD} {[1,1]-->link[10]} (73,73,73,73,73,73,73,73), {FXCH} {[1,2]-->link[11]} (46,00,00,00,00,00,00,00), {FNOP,err..} {[1,4]-->link[12]} (07,02,00,00,68,72,00,00), {FCHS..FXAM} {[1,5]-->link[13]} (35,40,39,42,38,41,43,00), {FLD1..FLDZ} {[1,6]-->link[14]} (01,75,50,47,74,49,13,28), {F2XM1..FINCSTP} {[1,7]-->link[15]} (48,76,58,57,51,54,56,12), {FPREM..FCOS} {[2,5]-->link[16]} (00,71,00,00,00,00,00,00), {FUCOMPP} {[3,4]-->link[17]} (19,14,08,29,55,00,00,00), {FENI..FSETPM} {[4,0]-->link[18]} (03,03,03,03,03,03,03,03), {FADD} {[4,1]-->link[19]} (44,44,44,44,44,44,44,44), {FMUL} {[4,2]-->link[20]} (09,09,09,09,09,09,09,09), {FCOM} {[4,3]-->link[21]} (10,10,10,10,10,10,10,10), {FCOMP} {[4,4]-->link[22]} (64,64,64,64,64,64,64,64), {FSUB} {[4,5]-->link[23]} (66,66,66,66,66,66,66,66), {FSUBR} {[4,6]-->link[24]} (15,15,15,15,15,15,15,15), {FDIV} {[4,7]-->link[25]} (17,17,17,17,17,17,17,17), {FDIVR} {[5,0]-->link[26]} (20,20,20,20,20,20,20,20), {FFREE} {[5,2]-->link[27]} (59,59,59,59,59,59,59,59), {FST} {[5,3]-->link[28]} (62,62,62,62,62,62,62,62), {FSTP} {[5,4]-->link[29]} (69,69,69,69,69,69,69,69), {FUCOM} {[5,5]-->link[30]} (70,70,70,70,70,70,70,70), {FUCOMP} {[6,0]-->link[31]} (04,04,04,04,04,04,04,04), {FADDP} {[6,1]-->link[32]} (45,45,45,45,45,45,45,45), {FMULP} {[6,3]-->link[33]} (00,11,00,00,00,00,00,00), {FCOMPP} {[6,4]-->link[34]} (65,65,65,65,65,65,65,65), {FSUBP} {[6,5]-->link[35]} (67,67,67,67,67,67,67,67), {FSUBRP} {[6,6]-->link[36]} (16,16,16,16,16,16,16,16), {FDIVP} {[6,7]-->link[37]} (18,18,18,18,18,18,18,18), {FDIVRP} {[7,4]-->link[38]} (63,00,00,00,00,00,00,00));{FSTSW}