Category : Pascal Source Code
Archive   : TPU60C.ZIP
Filename : TPU6UNA.INC

 
Output of file : TPU6UNA.INC contained in archive : TPU60C.ZIP

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}


  3 Responses to “Category : Pascal Source Code
Archive   : TPU60C.ZIP
Filename : TPU6UNA.INC

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/