Previous 199869 Revisions Next

r33010 Monday 27th October, 2014 at 17:51:17 UTC by Carl
i386: lock [Barry Rodewald, Carl]
---
Some of the group opcodes need to be checked
[src/emu/cpu/i386]i386.c i386.h i386ops.h i386ops.inc
[src/mame/drivers]jackie.c peplus.c

trunk/src/emu/cpu/i386/i386.c
r241521r241522
687687   UINT16 segment;
688688   int entry = irq * (PROTECTED_MODE ? 8 : 4);
689689   int SetRPL = 0;
690   m_lock = false;
690691
691692   if( !(PROTECTED_MODE) )
692693   {
r241521r241522
28112812void i386_device::report_invalid_opcode()
28122813{
28132814#ifndef DEBUG_MISSING_OPCODE
2814   logerror("i386: Invalid opcode %02X at %08X\n", m_opcode, m_pc - 1);
2815   logerror("i386: Invalid opcode %02X at %08X %s\n", m_opcode, m_pc - 1, m_lock ? "with lock" : "");
28152816#else
28162817   logerror("i386: Invalid opcode");
28172818   for (int a = 0; a < m_opcode_bytes_length; a++)
r241521r241522
28452846void i386_device::i386_decode_opcode()
28462847{
28472848   m_opcode = FETCH();
2849
2850   if(m_lock && !m_lock_table[0][m_opcode])
2851      return i386_invalid();
2852
28482853   if( m_operand_size )
28492854      (this->*m_opcode_table1_32[m_opcode])();
28502855   else
r241521r241522
28552860void i386_device::i386_decode_two_byte()
28562861{
28572862   m_opcode = FETCH();
2863
2864   if(m_lock && !m_lock_table[1][m_opcode])
2865      return i386_invalid();
2866
28582867   if( m_operand_size )
28592868      (this->*m_opcode_table2_32[m_opcode])();
28602869   else
r241521r241522
31783187   save_item(NAME(m_nmi_masked));
31793188   save_item(NAME(m_nmi_latched));
31803189   save_item(NAME(m_smbase));
3190   save_item(NAME(m_lock));
31813191   machine().save().register_postload(save_prepost_delegate(FUNC(i386_device::i386_postload), this));
31823192
31833193   m_smiact.resolve_safe();
r241521r241522
33923402      m_opcode_table3f2_32[i] = &i386_device::i386_invalid;
33933403      m_opcode_table3f3_16[i] = &i386_device::i386_invalid;
33943404      m_opcode_table3f3_32[i] = &i386_device::i386_invalid;
3405      m_lock_table[0][i] = false;
3406      m_lock_table[1][i] = false;
33953407   }
33963408
33973409   for (i=0; i < sizeof(s_x86_opcode_table)/sizeof(X86_OPCODE); i++)
r241521r241522
34063418            m_opcode_table2_16[op->opcode] = op->handler16;
34073419            m_opcode_table366_32[op->opcode] = op->handler32;
34083420            m_opcode_table366_16[op->opcode] = op->handler16;
3421            m_lock_table[1][op->opcode] = op->lockable;
34093422         }
34103423         else if (op->flags & OP_3BYTE66)
34113424         {
r241521r241522
34263439         {
34273440            m_opcode_table1_32[op->opcode] = op->handler32;
34283441            m_opcode_table1_16[op->opcode] = op->handler16;
3442            m_lock_table[0][op->opcode] = op->lockable;
34293443         }
34303444      }
34313445   }
r241521r241522
35313545   m_smi_latched = false;
35323546   m_nmi_masked = false;
35333547   m_nmi_latched = false;
3548   m_lock = false;
35343549
35353550   m_a20_mask = ~0;
35363551
r241521r241522
37543769            m_ext = 1;
37553770            i386_trap(1,0,0);
37563771         }
3757
3772         if(m_lock && (m_opcode != 0xf0))
3773            m_lock = false;
37583774      }
37593775      catch(UINT64 e)
37603776      {
trunk/src/emu/cpu/i386/i386.h
r241521r241522
138138      UINT32 flags;
139139      i386_op_func handler16;
140140      i386_op_func handler32;
141      bool lockable;
141142   };
142143   static const X86_OPCODE s_x86_opcode_table[];
143144
r241521r241522
244245   i386_op_func m_opcode_table3f3_16[256];
245246   i386_op_func m_opcode_table3f3_32[256];
246247
248   bool m_lock_table[2][256];
249
247250   UINT8 *m_cycle_table_pm;
248251   UINT8 *m_cycle_table_rm;
249252
r241521r241522
256259   bool m_nmi_latched;
257260   UINT32 m_smbase;
258261   devcb_write_line m_smiact;
262   bool m_lock;
259263
260264   // bytes in current opcode, debug only
261265   UINT8 m_opcode_bytes[16];
trunk/src/emu/cpu/i386/i386ops.h
r241521r241522
1818const i386_device::X86_OPCODE i386_device::s_x86_opcode_table[] =
1919{
2020//  Opcode      Flags                       16-bit handler                  32-bit handler
21   { 0x00,     OP_I386,                    &i386_device::i386_add_rm8_r8,             &i386_device::i386_add_rm8_r8,         },
22   { 0x01,     OP_I386,                    &i386_device::i386_add_rm16_r16,           &i386_device::i386_add_rm32_r32,       },
23   { 0x02,     OP_I386,                    &i386_device::i386_add_r8_rm8,             &i386_device::i386_add_r8_rm8,         },
24   { 0x03,     OP_I386,                    &i386_device::i386_add_r16_rm16,           &i386_device::i386_add_r32_rm32,       },
25   { 0x04,     OP_I386,                    &i386_device::i386_add_al_i8,              &i386_device::i386_add_al_i8,          },
26   { 0x05,     OP_I386,                    &i386_device::i386_add_ax_i16,             &i386_device::i386_add_eax_i32,        },
27   { 0x06,     OP_I386,                    &i386_device::i386_push_es16,              &i386_device::i386_push_es32,          },
28   { 0x07,     OP_I386,                    &i386_device::i386_pop_es16,               &i386_device::i386_pop_es32,           },
29   { 0x08,     OP_I386,                    &i386_device::i386_or_rm8_r8,              &i386_device::i386_or_rm8_r8,          },
30   { 0x09,     OP_I386,                    &i386_device::i386_or_rm16_r16,            &i386_device::i386_or_rm32_r32,        },
31   { 0x0A,     OP_I386,                    &i386_device::i386_or_r8_rm8,              &i386_device::i386_or_r8_rm8,          },
32   { 0x0B,     OP_I386,                    &i386_device::i386_or_r16_rm16,            &i386_device::i386_or_r32_rm32,        },
33   { 0x0C,     OP_I386,                    &i386_device::i386_or_al_i8,               &i386_device::i386_or_al_i8,           },
34   { 0x0D,     OP_I386,                    &i386_device::i386_or_ax_i16,              &i386_device::i386_or_eax_i32,         },
35   { 0x0E,     OP_I386,                    &i386_device::i386_push_cs16,              &i386_device::i386_push_cs32,          },
36   { 0x0F,     OP_I386,                    &i386_device::i386_decode_two_byte,        &i386_device::i386_decode_two_byte,    },
37   { 0x10,     OP_I386,                    &i386_device::i386_adc_rm8_r8,             &i386_device::i386_adc_rm8_r8,         },
38   { 0x11,     OP_I386,                    &i386_device::i386_adc_rm16_r16,           &i386_device::i386_adc_rm32_r32,       },
39   { 0x12,     OP_I386,                    &i386_device::i386_adc_r8_rm8,             &i386_device::i386_adc_r8_rm8,         },
40   { 0x13,     OP_I386,                    &i386_device::i386_adc_r16_rm16,           &i386_device::i386_adc_r32_rm32,       },
41   { 0x14,     OP_I386,                    &i386_device::i386_adc_al_i8,              &i386_device::i386_adc_al_i8,          },
42   { 0x15,     OP_I386,                    &i386_device::i386_adc_ax_i16,             &i386_device::i386_adc_eax_i32,        },
43   { 0x16,     OP_I386,                    &i386_device::i386_push_ss16,              &i386_device::i386_push_ss32,          },
44   { 0x17,     OP_I386,                    &i386_device::i386_pop_ss16,               &i386_device::i386_pop_ss32,           },
45   { 0x18,     OP_I386,                    &i386_device::i386_sbb_rm8_r8,             &i386_device::i386_sbb_rm8_r8,         },
46   { 0x19,     OP_I386,                    &i386_device::i386_sbb_rm16_r16,           &i386_device::i386_sbb_rm32_r32,       },
47   { 0x1A,     OP_I386,                    &i386_device::i386_sbb_r8_rm8,             &i386_device::i386_sbb_r8_rm8,         },
48   { 0x1B,     OP_I386,                    &i386_device::i386_sbb_r16_rm16,           &i386_device::i386_sbb_r32_rm32,       },
49   { 0x1C,     OP_I386,                    &i386_device::i386_sbb_al_i8,              &i386_device::i386_sbb_al_i8,          },
50   { 0x1D,     OP_I386,                    &i386_device::i386_sbb_ax_i16,             &i386_device::i386_sbb_eax_i32,        },
51   { 0x1E,     OP_I386,                    &i386_device::i386_push_ds16,              &i386_device::i386_push_ds32,          },
52   { 0x1F,     OP_I386,                    &i386_device::i386_pop_ds16,               &i386_device::i386_pop_ds32,           },
53   { 0x20,     OP_I386,                    &i386_device::i386_and_rm8_r8,             &i386_device::i386_and_rm8_r8,         },
54   { 0x21,     OP_I386,                    &i386_device::i386_and_rm16_r16,           &i386_device::i386_and_rm32_r32,       },
55   { 0x22,     OP_I386,                    &i386_device::i386_and_r8_rm8,             &i386_device::i386_and_r8_rm8,         },
56   { 0x23,     OP_I386,                    &i386_device::i386_and_r16_rm16,           &i386_device::i386_and_r32_rm32,       },
57   { 0x24,     OP_I386,                    &i386_device::i386_and_al_i8,              &i386_device::i386_and_al_i8,          },
58   { 0x25,     OP_I386,                    &i386_device::i386_and_ax_i16,             &i386_device::i386_and_eax_i32,        },
59   { 0x26,     OP_I386,                    &i386_device::i386_segment_ES,             &i386_device::i386_segment_ES,         },
60   { 0x27,     OP_I386,                    &i386_device::i386_daa,                    &i386_device::i386_daa,                },
61   { 0x28,     OP_I386,                    &i386_device::i386_sub_rm8_r8,             &i386_device::i386_sub_rm8_r8,         },
62   { 0x29,     OP_I386,                    &i386_device::i386_sub_rm16_r16,           &i386_device::i386_sub_rm32_r32,       },
63   { 0x2A,     OP_I386,                    &i386_device::i386_sub_r8_rm8,             &i386_device::i386_sub_r8_rm8,         },
64   { 0x2B,     OP_I386,                    &i386_device::i386_sub_r16_rm16,           &i386_device::i386_sub_r32_rm32,       },
65   { 0x2C,     OP_I386,                    &i386_device::i386_sub_al_i8,              &i386_device::i386_sub_al_i8,          },
66   { 0x2D,     OP_I386,                    &i386_device::i386_sub_ax_i16,             &i386_device::i386_sub_eax_i32,        },
67   { 0x2E,     OP_I386,                    &i386_device::i386_segment_CS,             &i386_device::i386_segment_CS,         },
68   { 0x2F,     OP_I386,                    &i386_device::i386_das,                    &i386_device::i386_das,                },
69   { 0x30,     OP_I386,                    &i386_device::i386_xor_rm8_r8,             &i386_device::i386_xor_rm8_r8,         },
70   { 0x31,     OP_I386,                    &i386_device::i386_xor_rm16_r16,           &i386_device::i386_xor_rm32_r32,       },
71   { 0x32,     OP_I386,                    &i386_device::i386_xor_r8_rm8,             &i386_device::i386_xor_r8_rm8,         },
72   { 0x33,     OP_I386,                    &i386_device::i386_xor_r16_rm16,           &i386_device::i386_xor_r32_rm32,       },
73   { 0x34,     OP_I386,                    &i386_device::i386_xor_al_i8,              &i386_device::i386_xor_al_i8,          },
74   { 0x35,     OP_I386,                    &i386_device::i386_xor_ax_i16,             &i386_device::i386_xor_eax_i32,        },
75   { 0x36,     OP_I386,                    &i386_device::i386_segment_SS,             &i386_device::i386_segment_SS,         },
76   { 0x37,     OP_I386,                    &i386_device::i386_aaa,                    &i386_device::i386_aaa,                },
77   { 0x38,     OP_I386,                    &i386_device::i386_cmp_rm8_r8,             &i386_device::i386_cmp_rm8_r8,         },
78   { 0x39,     OP_I386,                    &i386_device::i386_cmp_rm16_r16,           &i386_device::i386_cmp_rm32_r32,       },
79   { 0x3A,     OP_I386,                    &i386_device::i386_cmp_r8_rm8,             &i386_device::i386_cmp_r8_rm8,         },
80   { 0x3B,     OP_I386,                    &i386_device::i386_cmp_r16_rm16,           &i386_device::i386_cmp_r32_rm32,       },
81   { 0x3C,     OP_I386,                    &i386_device::i386_cmp_al_i8,              &i386_device::i386_cmp_al_i8,          },
82   { 0x3D,     OP_I386,                    &i386_device::i386_cmp_ax_i16,             &i386_device::i386_cmp_eax_i32,        },
83   { 0x3E,     OP_I386,                    &i386_device::i386_segment_DS,             &i386_device::i386_segment_DS,         },
84   { 0x3F,     OP_I386,                    &i386_device::i386_aas,                    &i386_device::i386_aas,                },
85   { 0x40,     OP_I386,                    &i386_device::i386_inc_ax,                 &i386_device::i386_inc_eax,            },
86   { 0x41,     OP_I386,                    &i386_device::i386_inc_cx,                 &i386_device::i386_inc_ecx,            },
87   { 0x42,     OP_I386,                    &i386_device::i386_inc_dx,                 &i386_device::i386_inc_edx,            },
88   { 0x43,     OP_I386,                    &i386_device::i386_inc_bx,                 &i386_device::i386_inc_ebx,            },
89   { 0x44,     OP_I386,                    &i386_device::i386_inc_sp,                 &i386_device::i386_inc_esp,            },
90   { 0x45,     OP_I386,                    &i386_device::i386_inc_bp,                 &i386_device::i386_inc_ebp,            },
91   { 0x46,     OP_I386,                    &i386_device::i386_inc_si,                 &i386_device::i386_inc_esi,            },
92   { 0x47,     OP_I386,                    &i386_device::i386_inc_di,                 &i386_device::i386_inc_edi,            },
93   { 0x48,     OP_I386,                    &i386_device::i386_dec_ax,                 &i386_device::i386_dec_eax,            },
94   { 0x49,     OP_I386,                    &i386_device::i386_dec_cx,                 &i386_device::i386_dec_ecx,            },
95   { 0x4A,     OP_I386,                    &i386_device::i386_dec_dx,                 &i386_device::i386_dec_edx,            },
96   { 0x4B,     OP_I386,                    &i386_device::i386_dec_bx,                 &i386_device::i386_dec_ebx,            },
97   { 0x4C,     OP_I386,                    &i386_device::i386_dec_sp,                 &i386_device::i386_dec_esp,            },
98   { 0x4D,     OP_I386,                    &i386_device::i386_dec_bp,                 &i386_device::i386_dec_ebp,            },
99   { 0x4E,     OP_I386,                    &i386_device::i386_dec_si,                 &i386_device::i386_dec_esi,            },
100   { 0x4F,     OP_I386,                    &i386_device::i386_dec_di,                 &i386_device::i386_dec_edi,            },
101   { 0x50,     OP_I386,                    &i386_device::i386_push_ax,                &i386_device::i386_push_eax,           },
102   { 0x51,     OP_I386,                    &i386_device::i386_push_cx,                &i386_device::i386_push_ecx,           },
103   { 0x52,     OP_I386,                    &i386_device::i386_push_dx,                &i386_device::i386_push_edx,           },
104   { 0x53,     OP_I386,                    &i386_device::i386_push_bx,                &i386_device::i386_push_ebx,           },
105   { 0x54,     OP_I386,                    &i386_device::i386_push_sp,                &i386_device::i386_push_esp,           },
106   { 0x55,     OP_I386,                    &i386_device::i386_push_bp,                &i386_device::i386_push_ebp,           },
107   { 0x56,     OP_I386,                    &i386_device::i386_push_si,                &i386_device::i386_push_esi,           },
108   { 0x57,     OP_I386,                    &i386_device::i386_push_di,                &i386_device::i386_push_edi,           },
109   { 0x58,     OP_I386,                    &i386_device::i386_pop_ax,                 &i386_device::i386_pop_eax,            },
110   { 0x59,     OP_I386,                    &i386_device::i386_pop_cx,                 &i386_device::i386_pop_ecx,            },
111   { 0x5A,     OP_I386,                    &i386_device::i386_pop_dx,                 &i386_device::i386_pop_edx,            },
112   { 0x5B,     OP_I386,                    &i386_device::i386_pop_bx,                 &i386_device::i386_pop_ebx,            },
113   { 0x5C,     OP_I386,                    &i386_device::i386_pop_sp,                 &i386_device::i386_pop_esp,            },
114   { 0x5D,     OP_I386,                    &i386_device::i386_pop_bp,                 &i386_device::i386_pop_ebp,            },
115   { 0x5E,     OP_I386,                    &i386_device::i386_pop_si,                 &i386_device::i386_pop_esi,            },
116   { 0x5F,     OP_I386,                    &i386_device::i386_pop_di,                 &i386_device::i386_pop_edi,            },
117   { 0x60,     OP_I386,                    &i386_device::i386_pusha,                  &i386_device::i386_pushad,             },
118   { 0x61,     OP_I386,                    &i386_device::i386_popa,                   &i386_device::i386_popad,              },
119   { 0x62,     OP_I386,                    &i386_device::i386_bound_r16_m16_m16,      &i386_device::i386_bound_r32_m32_m32,  },
120   { 0x63,     OP_I386,                    &i386_device::i386_arpl,                   &i386_device::i386_arpl,               },
121   { 0x64,     OP_I386,                    &i386_device::i386_segment_FS,             &i386_device::i386_segment_FS,         },
122   { 0x65,     OP_I386,                    &i386_device::i386_segment_GS,             &i386_device::i386_segment_GS,         },
123   { 0x66,     OP_I386,                    &i386_device::i386_operand_size,           &i386_device::i386_operand_size,       },
124   { 0x67,     OP_I386,                    &i386_device::i386_address_size,           &i386_device::i386_address_size,       },
125   { 0x68,     OP_I386,                    &i386_device::i386_push_i16,               &i386_device::i386_push_i32,           },
126   { 0x69,     OP_I386,                    &i386_device::i386_imul_r16_rm16_i16,      &i386_device::i386_imul_r32_rm32_i32,  },
127   { 0x6A,     OP_I386,                    &i386_device::i386_push_i8,                &i386_device::i386_push_i8,            },
128   { 0x6B,     OP_I386,                    &i386_device::i386_imul_r16_rm16_i8,       &i386_device::i386_imul_r32_rm32_i8,   },
129   { 0x6C,     OP_I386,                    &i386_device::i386_insb,                   &i386_device::i386_insb,               },
130   { 0x6D,     OP_I386,                    &i386_device::i386_insw,                   &i386_device::i386_insd,               },
131   { 0x6E,     OP_I386,                    &i386_device::i386_outsb,                  &i386_device::i386_outsb,              },
132   { 0x6F,     OP_I386,                    &i386_device::i386_outsw,                  &i386_device::i386_outsd,              },
133   { 0x70,     OP_I386,                    &i386_device::i386_jo_rel8,                &i386_device::i386_jo_rel8,            },
134   { 0x71,     OP_I386,                    &i386_device::i386_jno_rel8,               &i386_device::i386_jno_rel8,           },
135   { 0x72,     OP_I386,                    &i386_device::i386_jc_rel8,                &i386_device::i386_jc_rel8,            },
136   { 0x73,     OP_I386,                    &i386_device::i386_jnc_rel8,               &i386_device::i386_jnc_rel8,           },
137   { 0x74,     OP_I386,                    &i386_device::i386_jz_rel8,                &i386_device::i386_jz_rel8,            },
138   { 0x75,     OP_I386,                    &i386_device::i386_jnz_rel8,               &i386_device::i386_jnz_rel8,           },
139   { 0x76,     OP_I386,                    &i386_device::i386_jbe_rel8,               &i386_device::i386_jbe_rel8,           },
140   { 0x77,     OP_I386,                    &i386_device::i386_ja_rel8,                &i386_device::i386_ja_rel8,            },
141   { 0x78,     OP_I386,                    &i386_device::i386_js_rel8,                &i386_device::i386_js_rel8,            },
142   { 0x79,     OP_I386,                    &i386_device::i386_jns_rel8,               &i386_device::i386_jns_rel8,           },
143   { 0x7A,     OP_I386,                    &i386_device::i386_jp_rel8,                &i386_device::i386_jp_rel8,            },
144   { 0x7B,     OP_I386,                    &i386_device::i386_jnp_rel8,               &i386_device::i386_jnp_rel8,           },
145   { 0x7C,     OP_I386,                    &i386_device::i386_jl_rel8,                &i386_device::i386_jl_rel8,            },
146   { 0x7D,     OP_I386,                    &i386_device::i386_jge_rel8,               &i386_device::i386_jge_rel8,           },
147   { 0x7E,     OP_I386,                    &i386_device::i386_jle_rel8,               &i386_device::i386_jle_rel8,           },
148   { 0x7F,     OP_I386,                    &i386_device::i386_jg_rel8,                &i386_device::i386_jg_rel8,            },
149   { 0x80,     OP_I386,                    &i386_device::i386_group80_8,              &i386_device::i386_group80_8,          },
150   { 0x81,     OP_I386,                    &i386_device::i386_group81_16,             &i386_device::i386_group81_32,         },
151   { 0x82,     OP_I386,                    &i386_device::i386_group80_8,              &i386_device::i386_group80_8,          },
152   { 0x83,     OP_I386,                    &i386_device::i386_group83_16,             &i386_device::i386_group83_32,         },
153   { 0x84,     OP_I386,                    &i386_device::i386_test_rm8_r8,            &i386_device::i386_test_rm8_r8,        },
154   { 0x85,     OP_I386,                    &i386_device::i386_test_rm16_r16,          &i386_device::i386_test_rm32_r32,      },
155   { 0x86,     OP_I386,                    &i386_device::i386_xchg_r8_rm8,            &i386_device::i386_xchg_r8_rm8,        },
156   { 0x87,     OP_I386,                    &i386_device::i386_xchg_r16_rm16,          &i386_device::i386_xchg_r32_rm32,      },
157   { 0x88,     OP_I386,                    &i386_device::i386_mov_rm8_r8,             &i386_device::i386_mov_rm8_r8,         },
158   { 0x89,     OP_I386,                    &i386_device::i386_mov_rm16_r16,           &i386_device::i386_mov_rm32_r32,       },
159   { 0x8A,     OP_I386,                    &i386_device::i386_mov_r8_rm8,             &i386_device::i386_mov_r8_rm8,         },
160   { 0x8B,     OP_I386,                    &i386_device::i386_mov_r16_rm16,           &i386_device::i386_mov_r32_rm32,       },
161   { 0x8C,     OP_I386,                    &i386_device::i386_mov_rm16_sreg,          &i386_device::i386_mov_rm16_sreg,      },
162   { 0x8D,     OP_I386,                    &i386_device::i386_lea16,                  &i386_device::i386_lea32,              },
163   { 0x8E,     OP_I386,                    &i386_device::i386_mov_sreg_rm16,          &i386_device::i386_mov_sreg_rm16,      },
164   { 0x8F,     OP_I386,                    &i386_device::i386_pop_rm16,               &i386_device::i386_pop_rm32,           },
165   { 0x90,     OP_I386,                    &i386_device::i386_nop,                    &i386_device::i386_nop,                },
166   { 0x91,     OP_I386,                    &i386_device::i386_xchg_ax_cx,             &i386_device::i386_xchg_eax_ecx,       },
167   { 0x92,     OP_I386,                    &i386_device::i386_xchg_ax_dx,             &i386_device::i386_xchg_eax_edx,       },
168   { 0x93,     OP_I386,                    &i386_device::i386_xchg_ax_bx,             &i386_device::i386_xchg_eax_ebx,       },
169   { 0x94,     OP_I386,                    &i386_device::i386_xchg_ax_sp,             &i386_device::i386_xchg_eax_esp,       },
170   { 0x95,     OP_I386,                    &i386_device::i386_xchg_ax_bp,             &i386_device::i386_xchg_eax_ebp,       },
171   { 0x96,     OP_I386,                    &i386_device::i386_xchg_ax_si,             &i386_device::i386_xchg_eax_esi,       },
172   { 0x97,     OP_I386,                    &i386_device::i386_xchg_ax_di,             &i386_device::i386_xchg_eax_edi,       },
173   { 0x98,     OP_I386,                    &i386_device::i386_cbw,                    &i386_device::i386_cwde,               },
174   { 0x99,     OP_I386,                    &i386_device::i386_cwd,                    &i386_device::i386_cdq,                },
175   { 0x9A,     OP_I386,                    &i386_device::i386_call_abs16,             &i386_device::i386_call_abs32,         },
176   { 0x9B,     OP_I386,                    &i386_device::i386_wait,                   &i386_device::i386_wait,               },
177   { 0x9C,     OP_I386,                    &i386_device::i386_pushf,                  &i386_device::i386_pushfd,             },
178   { 0x9D,     OP_I386,                    &i386_device::i386_popf,                   &i386_device::i386_popfd,              },
179   { 0x9E,     OP_I386,                    &i386_device::i386_sahf,                   &i386_device::i386_sahf,               },
180   { 0x9F,     OP_I386,                    &i386_device::i386_lahf,                   &i386_device::i386_lahf,               },
181   { 0xA0,     OP_I386,                    &i386_device::i386_mov_al_m8,              &i386_device::i386_mov_al_m8,          },
182   { 0xA1,     OP_I386,                    &i386_device::i386_mov_ax_m16,             &i386_device::i386_mov_eax_m32,        },
183   { 0xA2,     OP_I386,                    &i386_device::i386_mov_m8_al,              &i386_device::i386_mov_m8_al,          },
184   { 0xA3,     OP_I386,                    &i386_device::i386_mov_m16_ax,             &i386_device::i386_mov_m32_eax,        },
185   { 0xA4,     OP_I386,                    &i386_device::i386_movsb,                  &i386_device::i386_movsb,              },
186   { 0xA5,     OP_I386,                    &i386_device::i386_movsw,                  &i386_device::i386_movsd,              },
187   { 0xA6,     OP_I386,                    &i386_device::i386_cmpsb,                  &i386_device::i386_cmpsb,              },
188   { 0xA7,     OP_I386,                    &i386_device::i386_cmpsw,                  &i386_device::i386_cmpsd,              },
189   { 0xA8,     OP_I386,                    &i386_device::i386_test_al_i8,             &i386_device::i386_test_al_i8,         },
190   { 0xA9,     OP_I386,                    &i386_device::i386_test_ax_i16,            &i386_device::i386_test_eax_i32,       },
191   { 0xAA,     OP_I386,                    &i386_device::i386_stosb,                  &i386_device::i386_stosb,              },
192   { 0xAB,     OP_I386,                    &i386_device::i386_stosw,                  &i386_device::i386_stosd,              },
193   { 0xAC,     OP_I386,                    &i386_device::i386_lodsb,                  &i386_device::i386_lodsb,              },
194   { 0xAD,     OP_I386,                    &i386_device::i386_lodsw,                  &i386_device::i386_lodsd,              },
195   { 0xAE,     OP_I386,                    &i386_device::i386_scasb,                  &i386_device::i386_scasb,              },
196   { 0xAF,     OP_I386,                    &i386_device::i386_scasw,                  &i386_device::i386_scasd,              },
197   { 0xB0,     OP_I386,                    &i386_device::i386_mov_al_i8,              &i386_device::i386_mov_al_i8,          },
198   { 0xB1,     OP_I386,                    &i386_device::i386_mov_cl_i8,              &i386_device::i386_mov_cl_i8,          },
199   { 0xB2,     OP_I386,                    &i386_device::i386_mov_dl_i8,              &i386_device::i386_mov_dl_i8,          },
200   { 0xB3,     OP_I386,                    &i386_device::i386_mov_bl_i8,              &i386_device::i386_mov_bl_i8,          },
201   { 0xB4,     OP_I386,                    &i386_device::i386_mov_ah_i8,              &i386_device::i386_mov_ah_i8,          },
202   { 0xB5,     OP_I386,                    &i386_device::i386_mov_ch_i8,              &i386_device::i386_mov_ch_i8,          },
203   { 0xB6,     OP_I386,                    &i386_device::i386_mov_dh_i8,              &i386_device::i386_mov_dh_i8,          },
204   { 0xB7,     OP_I386,                    &i386_device::i386_mov_bh_i8,              &i386_device::i386_mov_bh_i8,          },
205   { 0xB8,     OP_I386,                    &i386_device::i386_mov_ax_i16,             &i386_device::i386_mov_eax_i32,        },
206   { 0xB9,     OP_I386,                    &i386_device::i386_mov_cx_i16,             &i386_device::i386_mov_ecx_i32,        },
207   { 0xBA,     OP_I386,                    &i386_device::i386_mov_dx_i16,             &i386_device::i386_mov_edx_i32,        },
208   { 0xBB,     OP_I386,                    &i386_device::i386_mov_bx_i16,             &i386_device::i386_mov_ebx_i32,        },
209   { 0xBC,     OP_I386,                    &i386_device::i386_mov_sp_i16,             &i386_device::i386_mov_esp_i32,        },
210   { 0xBD,     OP_I386,                    &i386_device::i386_mov_bp_i16,             &i386_device::i386_mov_ebp_i32,        },
211   { 0xBE,     OP_I386,                    &i386_device::i386_mov_si_i16,             &i386_device::i386_mov_esi_i32,        },
212   { 0xBF,     OP_I386,                    &i386_device::i386_mov_di_i16,             &i386_device::i386_mov_edi_i32,        },
213   { 0xC0,     OP_I386,                    &i386_device::i386_groupC0_8,              &i386_device::i386_groupC0_8,          },
214   { 0xC1,     OP_I386,                    &i386_device::i386_groupC1_16,             &i386_device::i386_groupC1_32,         },
215   { 0xC2,     OP_I386,                    &i386_device::i386_ret_near16_i16,         &i386_device::i386_ret_near32_i16,     },
216   { 0xC3,     OP_I386,                    &i386_device::i386_ret_near16,             &i386_device::i386_ret_near32,         },
217   { 0xC4,     OP_I386,                    &i386_device::i386_les16,                  &i386_device::i386_les32,              },
218   { 0xC5,     OP_I386,                    &i386_device::i386_lds16,                  &i386_device::i386_lds32,              },
219   { 0xC6,     OP_I386,                    &i386_device::i386_mov_rm8_i8,             &i386_device::i386_mov_rm8_i8,         },
220   { 0xC7,     OP_I386,                    &i386_device::i386_mov_rm16_i16,           &i386_device::i386_mov_rm32_i32,       },
221   { 0xC8,     OP_I386,                    &i386_device::i386_enter16,                &i386_device::i386_enter32,            },
222   { 0xC9,     OP_I386,                    &i386_device::i386_leave16,                &i386_device::i386_leave32,            },
223   { 0xCA,     OP_I386,                    &i386_device::i386_retf_i16,               &i386_device::i386_retf_i32,           },
224   { 0xCB,     OP_I386,                    &i386_device::i386_retf16,                 &i386_device::i386_retf32,             },
225   { 0xCC,     OP_I386,                    &i386_device::i386_int3,                   &i386_device::i386_int3,               },
226   { 0xCD,     OP_I386,                    &i386_device::i386_int,                    &i386_device::i386_int,                },
227   { 0xCE,     OP_I386,                    &i386_device::i386_into,                   &i386_device::i386_into,               },
228   { 0xCF,     OP_I386,                    &i386_device::i386_iret16,                 &i386_device::i386_iret32,             },
229   { 0xD0,     OP_I386,                    &i386_device::i386_groupD0_8,              &i386_device::i386_groupD0_8,          },
230   { 0xD1,     OP_I386,                    &i386_device::i386_groupD1_16,             &i386_device::i386_groupD1_32,         },
231   { 0xD2,     OP_I386,                    &i386_device::i386_groupD2_8,              &i386_device::i386_groupD2_8,          },
232   { 0xD3,     OP_I386,                    &i386_device::i386_groupD3_16,             &i386_device::i386_groupD3_32,         },
233   { 0xD4,     OP_I386,                    &i386_device::i386_aam,                    &i386_device::i386_aam,                },
234   { 0xD5,     OP_I386,                    &i386_device::i386_aad,                    &i386_device::i386_aad,                },
235   { 0xD6,     OP_I386,                    &i386_device::i386_setalc,                 &i386_device::i386_setalc,             },
236   { 0xD7,     OP_I386,                    &i386_device::i386_xlat,                   &i386_device::i386_xlat,               },
237   { 0xD8,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             },
238   { 0xD9,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             },
239   { 0xDA,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             },
240   { 0xDB,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             },
241   { 0xDC,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             },
242   { 0xDD,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             },
243   { 0xDE,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             },
244   { 0xDF,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             },
245   { 0xD8,     OP_FPU,                     &i386_device::i386_x87_group_d8,           &i386_device::i386_x87_group_d8,       },
246   { 0xD9,     OP_FPU,                     &i386_device::i386_x87_group_d9,           &i386_device::i386_x87_group_d9,       },
247   { 0xDA,     OP_FPU,                     &i386_device::i386_x87_group_da,           &i386_device::i386_x87_group_da,       },
248   { 0xDB,     OP_FPU,                     &i386_device::i386_x87_group_db,           &i386_device::i386_x87_group_db,       },
249   { 0xDC,     OP_FPU,                     &i386_device::i386_x87_group_dc,           &i386_device::i386_x87_group_dc,       },
250   { 0xDD,     OP_FPU,                     &i386_device::i386_x87_group_dd,           &i386_device::i386_x87_group_dd,       },
251   { 0xDE,     OP_FPU,                     &i386_device::i386_x87_group_de,           &i386_device::i386_x87_group_de,       },
252   { 0xDF,     OP_FPU,                     &i386_device::i386_x87_group_df,           &i386_device::i386_x87_group_df,       },
253   { 0xE0,     OP_I386,                    &i386_device::i386_loopne16,               &i386_device::i386_loopne32,           },
254   { 0xE1,     OP_I386,                    &i386_device::i386_loopz16,                &i386_device::i386_loopz32,            },
255   { 0xE2,     OP_I386,                    &i386_device::i386_loop16,                 &i386_device::i386_loop32,             },
256   { 0xE3,     OP_I386,                    &i386_device::i386_jcxz16,                 &i386_device::i386_jcxz32,             },
257   { 0xE4,     OP_I386,                    &i386_device::i386_in_al_i8,               &i386_device::i386_in_al_i8,           },
258   { 0xE5,     OP_I386,                    &i386_device::i386_in_ax_i8,               &i386_device::i386_in_eax_i8,          },
259   { 0xE6,     OP_I386,                    &i386_device::i386_out_al_i8,              &i386_device::i386_out_al_i8,          },
260   { 0xE7,     OP_I386,                    &i386_device::i386_out_ax_i8,              &i386_device::i386_out_eax_i8,         },
261   { 0xE8,     OP_I386,                    &i386_device::i386_call_rel16,             &i386_device::i386_call_rel32,         },
262   { 0xE9,     OP_I386,                    &i386_device::i386_jmp_rel16,              &i386_device::i386_jmp_rel32,          },
263   { 0xEA,     OP_I386,                    &i386_device::i386_jmp_abs16,              &i386_device::i386_jmp_abs32,          },
264   { 0xEB,     OP_I386,                    &i386_device::i386_jmp_rel8,               &i386_device::i386_jmp_rel8,           },
265   { 0xEC,     OP_I386,                    &i386_device::i386_in_al_dx,               &i386_device::i386_in_al_dx,           },
266   { 0xED,     OP_I386,                    &i386_device::i386_in_ax_dx,               &i386_device::i386_in_eax_dx,          },
267   { 0xEE,     OP_I386,                    &i386_device::i386_out_al_dx,              &i386_device::i386_out_al_dx,          },
268   { 0xEF,     OP_I386,                    &i386_device::i386_out_ax_dx,              &i386_device::i386_out_eax_dx,         },
269   { 0xF0,     OP_I386,                    &i386_device::i386_lock,                   &i386_device::i386_lock,               },
270   { 0xF1,     OP_I386,                    &i386_device::i386_invalid,                &i386_device::i386_invalid,            },
271   { 0xF2,     OP_I386,                    &i386_device::i386_repne,                  &i386_device::i386_repne,              },
272   { 0xF3,     OP_I386,                    &i386_device::i386_rep,                    &i386_device::i386_rep,                },
273   { 0xF4,     OP_I386,                    &i386_device::i386_hlt,                    &i386_device::i386_hlt,                },
274   { 0xF5,     OP_I386,                    &i386_device::i386_cmc,                    &i386_device::i386_cmc,                },
275   { 0xF6,     OP_I386,                    &i386_device::i386_groupF6_8,              &i386_device::i386_groupF6_8,          },
276   { 0xF7,     OP_I386,                    &i386_device::i386_groupF7_16,             &i386_device::i386_groupF7_32,         },
277   { 0xF8,     OP_I386,                    &i386_device::i386_clc,                    &i386_device::i386_clc,                },
278   { 0xF9,     OP_I386,                    &i386_device::i386_stc,                    &i386_device::i386_stc,                },
279   { 0xFA,     OP_I386,                    &i386_device::i386_cli,                    &i386_device::i386_cli,                },
280   { 0xFB,     OP_I386,                    &i386_device::i386_sti,                    &i386_device::i386_sti,                },
281   { 0xFC,     OP_I386,                    &i386_device::i386_cld,                    &i386_device::i386_cld,                },
282   { 0xFD,     OP_I386,                    &i386_device::i386_std,                    &i386_device::i386_std,                },
283   { 0xFE,     OP_I386,                    &i386_device::i386_groupFE_8,              &i386_device::i386_groupFE_8,          },
284   { 0xFF,     OP_I386,                    &i386_device::i386_groupFF_16,             &i386_device::i386_groupFF_32,         },
21   { 0x00,     OP_I386,                    &i386_device::i386_add_rm8_r8,             &i386_device::i386_add_rm8_r8,         true },
22   { 0x01,     OP_I386,                    &i386_device::i386_add_rm16_r16,           &i386_device::i386_add_rm32_r32,       true },
23   { 0x02,     OP_I386,                    &i386_device::i386_add_r8_rm8,             &i386_device::i386_add_r8_rm8,         false},
24   { 0x03,     OP_I386,                    &i386_device::i386_add_r16_rm16,           &i386_device::i386_add_r32_rm32,       false},
25   { 0x04,     OP_I386,                    &i386_device::i386_add_al_i8,              &i386_device::i386_add_al_i8,          false},
26   { 0x05,     OP_I386,                    &i386_device::i386_add_ax_i16,             &i386_device::i386_add_eax_i32,        false},
27   { 0x06,     OP_I386,                    &i386_device::i386_push_es16,              &i386_device::i386_push_es32,          false},
28   { 0x07,     OP_I386,                    &i386_device::i386_pop_es16,               &i386_device::i386_pop_es32,           false},
29   { 0x08,     OP_I386,                    &i386_device::i386_or_rm8_r8,              &i386_device::i386_or_rm8_r8,          true },
30   { 0x09,     OP_I386,                    &i386_device::i386_or_rm16_r16,            &i386_device::i386_or_rm32_r32,        true },
31   { 0x0A,     OP_I386,                    &i386_device::i386_or_r8_rm8,              &i386_device::i386_or_r8_rm8,          false},
32   { 0x0B,     OP_I386,                    &i386_device::i386_or_r16_rm16,            &i386_device::i386_or_r32_rm32,        false},
33   { 0x0C,     OP_I386,                    &i386_device::i386_or_al_i8,               &i386_device::i386_or_al_i8,           false},
34   { 0x0D,     OP_I386,                    &i386_device::i386_or_ax_i16,              &i386_device::i386_or_eax_i32,         false},
35   { 0x0E,     OP_I386,                    &i386_device::i386_push_cs16,              &i386_device::i386_push_cs32,          false},
36   { 0x0F,     OP_I386,                    &i386_device::i386_decode_two_byte,        &i386_device::i386_decode_two_byte,    true },
37   { 0x10,     OP_I386,                    &i386_device::i386_adc_rm8_r8,             &i386_device::i386_adc_rm8_r8,         true },
38   { 0x11,     OP_I386,                    &i386_device::i386_adc_rm16_r16,           &i386_device::i386_adc_rm32_r32,       true },
39   { 0x12,     OP_I386,                    &i386_device::i386_adc_r8_rm8,             &i386_device::i386_adc_r8_rm8,         false},
40   { 0x13,     OP_I386,                    &i386_device::i386_adc_r16_rm16,           &i386_device::i386_adc_r32_rm32,       false},
41   { 0x14,     OP_I386,                    &i386_device::i386_adc_al_i8,              &i386_device::i386_adc_al_i8,          false},
42   { 0x15,     OP_I386,                    &i386_device::i386_adc_ax_i16,             &i386_device::i386_adc_eax_i32,        false},
43   { 0x16,     OP_I386,                    &i386_device::i386_push_ss16,              &i386_device::i386_push_ss32,          false},
44   { 0x17,     OP_I386,                    &i386_device::i386_pop_ss16,               &i386_device::i386_pop_ss32,           false},
45   { 0x18,     OP_I386,                    &i386_device::i386_sbb_rm8_r8,             &i386_device::i386_sbb_rm8_r8,         true },
46   { 0x19,     OP_I386,                    &i386_device::i386_sbb_rm16_r16,           &i386_device::i386_sbb_rm32_r32,       true },
47   { 0x1A,     OP_I386,                    &i386_device::i386_sbb_r8_rm8,             &i386_device::i386_sbb_r8_rm8,         false},
48   { 0x1B,     OP_I386,                    &i386_device::i386_sbb_r16_rm16,           &i386_device::i386_sbb_r32_rm32,       false},
49   { 0x1C,     OP_I386,                    &i386_device::i386_sbb_al_i8,              &i386_device::i386_sbb_al_i8,          false},
50   { 0x1D,     OP_I386,                    &i386_device::i386_sbb_ax_i16,             &i386_device::i386_sbb_eax_i32,        false},
51   { 0x1E,     OP_I386,                    &i386_device::i386_push_ds16,              &i386_device::i386_push_ds32,          false},
52   { 0x1F,     OP_I386,                    &i386_device::i386_pop_ds16,               &i386_device::i386_pop_ds32,           false},
53   { 0x20,     OP_I386,                    &i386_device::i386_and_rm8_r8,             &i386_device::i386_and_rm8_r8,         true },
54   { 0x21,     OP_I386,                    &i386_device::i386_and_rm16_r16,           &i386_device::i386_and_rm32_r32,       true },
55   { 0x22,     OP_I386,                    &i386_device::i386_and_r8_rm8,             &i386_device::i386_and_r8_rm8,         false},
56   { 0x23,     OP_I386,                    &i386_device::i386_and_r16_rm16,           &i386_device::i386_and_r32_rm32,       false},
57   { 0x24,     OP_I386,                    &i386_device::i386_and_al_i8,              &i386_device::i386_and_al_i8,          false},
58   { 0x25,     OP_I386,                    &i386_device::i386_and_ax_i16,             &i386_device::i386_and_eax_i32,        false},
59   { 0x26,     OP_I386,                    &i386_device::i386_segment_ES,             &i386_device::i386_segment_ES,         false},
60   { 0x27,     OP_I386,                    &i386_device::i386_daa,                    &i386_device::i386_daa,                false},
61   { 0x28,     OP_I386,                    &i386_device::i386_sub_rm8_r8,             &i386_device::i386_sub_rm8_r8,         true },
62   { 0x29,     OP_I386,                    &i386_device::i386_sub_rm16_r16,           &i386_device::i386_sub_rm32_r32,       true },
63   { 0x2A,     OP_I386,                    &i386_device::i386_sub_r8_rm8,             &i386_device::i386_sub_r8_rm8,         false},
64   { 0x2B,     OP_I386,                    &i386_device::i386_sub_r16_rm16,           &i386_device::i386_sub_r32_rm32,       false},
65   { 0x2C,     OP_I386,                    &i386_device::i386_sub_al_i8,              &i386_device::i386_sub_al_i8,          false},
66   { 0x2D,     OP_I386,                    &i386_device::i386_sub_ax_i16,             &i386_device::i386_sub_eax_i32,        false},
67   { 0x2E,     OP_I386,                    &i386_device::i386_segment_CS,             &i386_device::i386_segment_CS,         false},
68   { 0x2F,     OP_I386,                    &i386_device::i386_das,                    &i386_device::i386_das,                false},
69   { 0x30,     OP_I386,                    &i386_device::i386_xor_rm8_r8,             &i386_device::i386_xor_rm8_r8,         true },
70   { 0x31,     OP_I386,                    &i386_device::i386_xor_rm16_r16,           &i386_device::i386_xor_rm32_r32,       true },
71   { 0x32,     OP_I386,                    &i386_device::i386_xor_r8_rm8,             &i386_device::i386_xor_r8_rm8,         false},
72   { 0x33,     OP_I386,                    &i386_device::i386_xor_r16_rm16,           &i386_device::i386_xor_r32_rm32,       false},
73   { 0x34,     OP_I386,                    &i386_device::i386_xor_al_i8,              &i386_device::i386_xor_al_i8,          false},
74   { 0x35,     OP_I386,                    &i386_device::i386_xor_ax_i16,             &i386_device::i386_xor_eax_i32,        false},
75   { 0x36,     OP_I386,                    &i386_device::i386_segment_SS,             &i386_device::i386_segment_SS,         false},
76   { 0x37,     OP_I386,                    &i386_device::i386_aaa,                    &i386_device::i386_aaa,                false},
77   { 0x38,     OP_I386,                    &i386_device::i386_cmp_rm8_r8,             &i386_device::i386_cmp_rm8_r8,         false},
78   { 0x39,     OP_I386,                    &i386_device::i386_cmp_rm16_r16,           &i386_device::i386_cmp_rm32_r32,       false},
79   { 0x3A,     OP_I386,                    &i386_device::i386_cmp_r8_rm8,             &i386_device::i386_cmp_r8_rm8,         false},
80   { 0x3B,     OP_I386,                    &i386_device::i386_cmp_r16_rm16,           &i386_device::i386_cmp_r32_rm32,       false},
81   { 0x3C,     OP_I386,                    &i386_device::i386_cmp_al_i8,              &i386_device::i386_cmp_al_i8,          false},
82   { 0x3D,     OP_I386,                    &i386_device::i386_cmp_ax_i16,             &i386_device::i386_cmp_eax_i32,        false},
83   { 0x3E,     OP_I386,                    &i386_device::i386_segment_DS,             &i386_device::i386_segment_DS,         false},
84   { 0x3F,     OP_I386,                    &i386_device::i386_aas,                    &i386_device::i386_aas,                false},
85   { 0x40,     OP_I386,                    &i386_device::i386_inc_ax,                 &i386_device::i386_inc_eax,            false},
86   { 0x41,     OP_I386,                    &i386_device::i386_inc_cx,                 &i386_device::i386_inc_ecx,            false},
87   { 0x42,     OP_I386,                    &i386_device::i386_inc_dx,                 &i386_device::i386_inc_edx,            false},
88   { 0x43,     OP_I386,                    &i386_device::i386_inc_bx,                 &i386_device::i386_inc_ebx,            false},
89   { 0x44,     OP_I386,                    &i386_device::i386_inc_sp,                 &i386_device::i386_inc_esp,            false},
90   { 0x45,     OP_I386,                    &i386_device::i386_inc_bp,                 &i386_device::i386_inc_ebp,            false},
91   { 0x46,     OP_I386,                    &i386_device::i386_inc_si,                 &i386_device::i386_inc_esi,            false},
92   { 0x47,     OP_I386,                    &i386_device::i386_inc_di,                 &i386_device::i386_inc_edi,            false},
93   { 0x48,     OP_I386,                    &i386_device::i386_dec_ax,                 &i386_device::i386_dec_eax,            false},
94   { 0x49,     OP_I386,                    &i386_device::i386_dec_cx,                 &i386_device::i386_dec_ecx,            false},
95   { 0x4A,     OP_I386,                    &i386_device::i386_dec_dx,                 &i386_device::i386_dec_edx,            false},
96   { 0x4B,     OP_I386,                    &i386_device::i386_dec_bx,                 &i386_device::i386_dec_ebx,            false},
97   { 0x4C,     OP_I386,                    &i386_device::i386_dec_sp,                 &i386_device::i386_dec_esp,            false},
98   { 0x4D,     OP_I386,                    &i386_device::i386_dec_bp,                 &i386_device::i386_dec_ebp,            false},
99   { 0x4E,     OP_I386,                    &i386_device::i386_dec_si,                 &i386_device::i386_dec_esi,            false},
100   { 0x4F,     OP_I386,                    &i386_device::i386_dec_di,                 &i386_device::i386_dec_edi,            false},
101   { 0x50,     OP_I386,                    &i386_device::i386_push_ax,                &i386_device::i386_push_eax,           false},
102   { 0x51,     OP_I386,                    &i386_device::i386_push_cx,                &i386_device::i386_push_ecx,           false},
103   { 0x52,     OP_I386,                    &i386_device::i386_push_dx,                &i386_device::i386_push_edx,           false},
104   { 0x53,     OP_I386,                    &i386_device::i386_push_bx,                &i386_device::i386_push_ebx,           false},
105   { 0x54,     OP_I386,                    &i386_device::i386_push_sp,                &i386_device::i386_push_esp,           false},
106   { 0x55,     OP_I386,                    &i386_device::i386_push_bp,                &i386_device::i386_push_ebp,           false},
107   { 0x56,     OP_I386,                    &i386_device::i386_push_si,                &i386_device::i386_push_esi,           false},
108   { 0x57,     OP_I386,                    &i386_device::i386_push_di,                &i386_device::i386_push_edi,           false},
109   { 0x58,     OP_I386,                    &i386_device::i386_pop_ax,                 &i386_device::i386_pop_eax,            false},
110   { 0x59,     OP_I386,                    &i386_device::i386_pop_cx,                 &i386_device::i386_pop_ecx,            false},
111   { 0x5A,     OP_I386,                    &i386_device::i386_pop_dx,                 &i386_device::i386_pop_edx,            false},
112   { 0x5B,     OP_I386,                    &i386_device::i386_pop_bx,                 &i386_device::i386_pop_ebx,            false},
113   { 0x5C,     OP_I386,                    &i386_device::i386_pop_sp,                 &i386_device::i386_pop_esp,            false},
114   { 0x5D,     OP_I386,                    &i386_device::i386_pop_bp,                 &i386_device::i386_pop_ebp,            false},
115   { 0x5E,     OP_I386,                    &i386_device::i386_pop_si,                 &i386_device::i386_pop_esi,            false},
116   { 0x5F,     OP_I386,                    &i386_device::i386_pop_di,                 &i386_device::i386_pop_edi,            false},
117   { 0x60,     OP_I386,                    &i386_device::i386_pusha,                  &i386_device::i386_pushad,             false},
118   { 0x61,     OP_I386,                    &i386_device::i386_popa,                   &i386_device::i386_popad,              false},
119   { 0x62,     OP_I386,                    &i386_device::i386_bound_r16_m16_m16,      &i386_device::i386_bound_r32_m32_m32,  false},
120   { 0x63,     OP_I386,                    &i386_device::i386_arpl,                   &i386_device::i386_arpl,               false},
121   { 0x64,     OP_I386,                    &i386_device::i386_segment_FS,             &i386_device::i386_segment_FS,         false},
122   { 0x65,     OP_I386,                    &i386_device::i386_segment_GS,             &i386_device::i386_segment_GS,         false},
123   { 0x66,     OP_I386,                    &i386_device::i386_operand_size,           &i386_device::i386_operand_size,       false},
124   { 0x67,     OP_I386,                    &i386_device::i386_address_size,           &i386_device::i386_address_size,       false},
125   { 0x68,     OP_I386,                    &i386_device::i386_push_i16,               &i386_device::i386_push_i32,           false},
126   { 0x69,     OP_I386,                    &i386_device::i386_imul_r16_rm16_i16,      &i386_device::i386_imul_r32_rm32_i32,  false},
127   { 0x6A,     OP_I386,                    &i386_device::i386_push_i8,                &i386_device::i386_push_i8,            false},
128   { 0x6B,     OP_I386,                    &i386_device::i386_imul_r16_rm16_i8,       &i386_device::i386_imul_r32_rm32_i8,   false},
129   { 0x6C,     OP_I386,                    &i386_device::i386_insb,                   &i386_device::i386_insb,               false},
130   { 0x6D,     OP_I386,                    &i386_device::i386_insw,                   &i386_device::i386_insd,               false},
131   { 0x6E,     OP_I386,                    &i386_device::i386_outsb,                  &i386_device::i386_outsb,              false},
132   { 0x6F,     OP_I386,                    &i386_device::i386_outsw,                  &i386_device::i386_outsd,              false},
133   { 0x70,     OP_I386,                    &i386_device::i386_jo_rel8,                &i386_device::i386_jo_rel8,            false},
134   { 0x71,     OP_I386,                    &i386_device::i386_jno_rel8,               &i386_device::i386_jno_rel8,           false},
135   { 0x72,     OP_I386,                    &i386_device::i386_jc_rel8,                &i386_device::i386_jc_rel8,            false},
136   { 0x73,     OP_I386,                    &i386_device::i386_jnc_rel8,               &i386_device::i386_jnc_rel8,           false},
137   { 0x74,     OP_I386,                    &i386_device::i386_jz_rel8,                &i386_device::i386_jz_rel8,            false},
138   { 0x75,     OP_I386,                    &i386_device::i386_jnz_rel8,               &i386_device::i386_jnz_rel8,           false},
139   { 0x76,     OP_I386,                    &i386_device::i386_jbe_rel8,               &i386_device::i386_jbe_rel8,           false},
140   { 0x77,     OP_I386,                    &i386_device::i386_ja_rel8,                &i386_device::i386_ja_rel8,            false},
141   { 0x78,     OP_I386,                    &i386_device::i386_js_rel8,                &i386_device::i386_js_rel8,            false},
142   { 0x79,     OP_I386,                    &i386_device::i386_jns_rel8,               &i386_device::i386_jns_rel8,           false},
143   { 0x7A,     OP_I386,                    &i386_device::i386_jp_rel8,                &i386_device::i386_jp_rel8,            false},
144   { 0x7B,     OP_I386,                    &i386_device::i386_jnp_rel8,               &i386_device::i386_jnp_rel8,           false},
145   { 0x7C,     OP_I386,                    &i386_device::i386_jl_rel8,                &i386_device::i386_jl_rel8,            false},
146   { 0x7D,     OP_I386,                    &i386_device::i386_jge_rel8,               &i386_device::i386_jge_rel8,           false},
147   { 0x7E,     OP_I386,                    &i386_device::i386_jle_rel8,               &i386_device::i386_jle_rel8,           false},
148   { 0x7F,     OP_I386,                    &i386_device::i386_jg_rel8,                &i386_device::i386_jg_rel8,            false},
149   { 0x80,     OP_I386,                    &i386_device::i386_group80_8,              &i386_device::i386_group80_8,          true },
150   { 0x81,     OP_I386,                    &i386_device::i386_group81_16,             &i386_device::i386_group81_32,         true },
151   { 0x82,     OP_I386,                    &i386_device::i386_group80_8,              &i386_device::i386_group80_8,          true },
152   { 0x83,     OP_I386,                    &i386_device::i386_group83_16,             &i386_device::i386_group83_32,         true },
153   { 0x84,     OP_I386,                    &i386_device::i386_test_rm8_r8,            &i386_device::i386_test_rm8_r8,        false},
154   { 0x85,     OP_I386,                    &i386_device::i386_test_rm16_r16,          &i386_device::i386_test_rm32_r32,      false},
155   { 0x86,     OP_I386,                    &i386_device::i386_xchg_r8_rm8,            &i386_device::i386_xchg_r8_rm8,        true },
156   { 0x87,     OP_I386,                    &i386_device::i386_xchg_r16_rm16,          &i386_device::i386_xchg_r32_rm32,      true },
157   { 0x88,     OP_I386,                    &i386_device::i386_mov_rm8_r8,             &i386_device::i386_mov_rm8_r8,         false},
158   { 0x89,     OP_I386,                    &i386_device::i386_mov_rm16_r16,           &i386_device::i386_mov_rm32_r32,       false},
159   { 0x8A,     OP_I386,                    &i386_device::i386_mov_r8_rm8,             &i386_device::i386_mov_r8_rm8,         false},
160   { 0x8B,     OP_I386,                    &i386_device::i386_mov_r16_rm16,           &i386_device::i386_mov_r32_rm32,       false},
161   { 0x8C,     OP_I386,                    &i386_device::i386_mov_rm16_sreg,          &i386_device::i386_mov_rm16_sreg,      false},
162   { 0x8D,     OP_I386,                    &i386_device::i386_lea16,                  &i386_device::i386_lea32,              false},
163   { 0x8E,     OP_I386,                    &i386_device::i386_mov_sreg_rm16,          &i386_device::i386_mov_sreg_rm16,      false},
164   { 0x8F,     OP_I386,                    &i386_device::i386_pop_rm16,               &i386_device::i386_pop_rm32,           false},
165   { 0x90,     OP_I386,                    &i386_device::i386_nop,                    &i386_device::i386_nop,                false},
166   { 0x91,     OP_I386,                    &i386_device::i386_xchg_ax_cx,             &i386_device::i386_xchg_eax_ecx,       false},
167   { 0x92,     OP_I386,                    &i386_device::i386_xchg_ax_dx,             &i386_device::i386_xchg_eax_edx,       false},
168   { 0x93,     OP_I386,                    &i386_device::i386_xchg_ax_bx,             &i386_device::i386_xchg_eax_ebx,       false},
169   { 0x94,     OP_I386,                    &i386_device::i386_xchg_ax_sp,             &i386_device::i386_xchg_eax_esp,       false},
170   { 0x95,     OP_I386,                    &i386_device::i386_xchg_ax_bp,             &i386_device::i386_xchg_eax_ebp,       false},
171   { 0x96,     OP_I386,                    &i386_device::i386_xchg_ax_si,             &i386_device::i386_xchg_eax_esi,       false},
172   { 0x97,     OP_I386,                    &i386_device::i386_xchg_ax_di,             &i386_device::i386_xchg_eax_edi,       false},
173   { 0x98,     OP_I386,                    &i386_device::i386_cbw,                    &i386_device::i386_cwde,               false},
174   { 0x99,     OP_I386,                    &i386_device::i386_cwd,                    &i386_device::i386_cdq,                false},
175   { 0x9A,     OP_I386,                    &i386_device::i386_call_abs16,             &i386_device::i386_call_abs32,         false},
176   { 0x9B,     OP_I386,                    &i386_device::i386_wait,                   &i386_device::i386_wait,               false},
177   { 0x9C,     OP_I386,                    &i386_device::i386_pushf,                  &i386_device::i386_pushfd,             false},
178   { 0x9D,     OP_I386,                    &i386_device::i386_popf,                   &i386_device::i386_popfd,              false},
179   { 0x9E,     OP_I386,                    &i386_device::i386_sahf,                   &i386_device::i386_sahf,               false},
180   { 0x9F,     OP_I386,                    &i386_device::i386_lahf,                   &i386_device::i386_lahf,               false},
181   { 0xA0,     OP_I386,                    &i386_device::i386_mov_al_m8,              &i386_device::i386_mov_al_m8,          false},
182   { 0xA1,     OP_I386,                    &i386_device::i386_mov_ax_m16,             &i386_device::i386_mov_eax_m32,        false},
183   { 0xA2,     OP_I386,                    &i386_device::i386_mov_m8_al,              &i386_device::i386_mov_m8_al,          false},
184   { 0xA3,     OP_I386,                    &i386_device::i386_mov_m16_ax,             &i386_device::i386_mov_m32_eax,        false},
185   { 0xA4,     OP_I386,                    &i386_device::i386_movsb,                  &i386_device::i386_movsb,              false},
186   { 0xA5,     OP_I386,                    &i386_device::i386_movsw,                  &i386_device::i386_movsd,              false},
187   { 0xA6,     OP_I386,                    &i386_device::i386_cmpsb,                  &i386_device::i386_cmpsb,              false},
188   { 0xA7,     OP_I386,                    &i386_device::i386_cmpsw,                  &i386_device::i386_cmpsd,              false},
189   { 0xA8,     OP_I386,                    &i386_device::i386_test_al_i8,             &i386_device::i386_test_al_i8,         false},
190   { 0xA9,     OP_I386,                    &i386_device::i386_test_ax_i16,            &i386_device::i386_test_eax_i32,       false},
191   { 0xAA,     OP_I386,                    &i386_device::i386_stosb,                  &i386_device::i386_stosb,              false},
192   { 0xAB,     OP_I386,                    &i386_device::i386_stosw,                  &i386_device::i386_stosd,              false},
193   { 0xAC,     OP_I386,                    &i386_device::i386_lodsb,                  &i386_device::i386_lodsb,              false},
194   { 0xAD,     OP_I386,                    &i386_device::i386_lodsw,                  &i386_device::i386_lodsd,              false},
195   { 0xAE,     OP_I386,                    &i386_device::i386_scasb,                  &i386_device::i386_scasb,              false},
196   { 0xAF,     OP_I386,                    &i386_device::i386_scasw,                  &i386_device::i386_scasd,              false},
197   { 0xB0,     OP_I386,                    &i386_device::i386_mov_al_i8,              &i386_device::i386_mov_al_i8,          false},
198   { 0xB1,     OP_I386,                    &i386_device::i386_mov_cl_i8,              &i386_device::i386_mov_cl_i8,          false},
199   { 0xB2,     OP_I386,                    &i386_device::i386_mov_dl_i8,              &i386_device::i386_mov_dl_i8,          false},
200   { 0xB3,     OP_I386,                    &i386_device::i386_mov_bl_i8,              &i386_device::i386_mov_bl_i8,          false},
201   { 0xB4,     OP_I386,                    &i386_device::i386_mov_ah_i8,              &i386_device::i386_mov_ah_i8,          false},
202   { 0xB5,     OP_I386,                    &i386_device::i386_mov_ch_i8,              &i386_device::i386_mov_ch_i8,          false},
203   { 0xB6,     OP_I386,                    &i386_device::i386_mov_dh_i8,              &i386_device::i386_mov_dh_i8,          false},
204   { 0xB7,     OP_I386,                    &i386_device::i386_mov_bh_i8,              &i386_device::i386_mov_bh_i8,          false},
205   { 0xB8,     OP_I386,                    &i386_device::i386_mov_ax_i16,             &i386_device::i386_mov_eax_i32,        false},
206   { 0xB9,     OP_I386,                    &i386_device::i386_mov_cx_i16,             &i386_device::i386_mov_ecx_i32,        false},
207   { 0xBA,     OP_I386,                    &i386_device::i386_mov_dx_i16,             &i386_device::i386_mov_edx_i32,        false},
208   { 0xBB,     OP_I386,                    &i386_device::i386_mov_bx_i16,             &i386_device::i386_mov_ebx_i32,        false},
209   { 0xBC,     OP_I386,                    &i386_device::i386_mov_sp_i16,             &i386_device::i386_mov_esp_i32,        false},
210   { 0xBD,     OP_I386,                    &i386_device::i386_mov_bp_i16,             &i386_device::i386_mov_ebp_i32,        false},
211   { 0xBE,     OP_I386,                    &i386_device::i386_mov_si_i16,             &i386_device::i386_mov_esi_i32,        false},
212   { 0xBF,     OP_I386,                    &i386_device::i386_mov_di_i16,             &i386_device::i386_mov_edi_i32,        false},
213   { 0xC0,     OP_I386,                    &i386_device::i386_groupC0_8,              &i386_device::i386_groupC0_8,          false},
214   { 0xC1,     OP_I386,                    &i386_device::i386_groupC1_16,             &i386_device::i386_groupC1_32,         false},
215   { 0xC2,     OP_I386,                    &i386_device::i386_ret_near16_i16,         &i386_device::i386_ret_near32_i16,     false},
216   { 0xC3,     OP_I386,                    &i386_device::i386_ret_near16,             &i386_device::i386_ret_near32,         false},
217   { 0xC4,     OP_I386,                    &i386_device::i386_les16,                  &i386_device::i386_les32,              false},
218   { 0xC5,     OP_I386,                    &i386_device::i386_lds16,                  &i386_device::i386_lds32,              false},
219   { 0xC6,     OP_I386,                    &i386_device::i386_mov_rm8_i8,             &i386_device::i386_mov_rm8_i8,         false},
220   { 0xC7,     OP_I386,                    &i386_device::i386_mov_rm16_i16,           &i386_device::i386_mov_rm32_i32,       false},
221   { 0xC8,     OP_I386,                    &i386_device::i386_enter16,                &i386_device::i386_enter32,            false},
222   { 0xC9,     OP_I386,                    &i386_device::i386_leave16,                &i386_device::i386_leave32,            false},
223   { 0xCA,     OP_I386,                    &i386_device::i386_retf_i16,               &i386_device::i386_retf_i32,           false},
224   { 0xCB,     OP_I386,                    &i386_device::i386_retf16,                 &i386_device::i386_retf32,             false},
225   { 0xCC,     OP_I386,                    &i386_device::i386_int3,                   &i386_device::i386_int3,               false},
226   { 0xCD,     OP_I386,                    &i386_device::i386_int,                    &i386_device::i386_int,                false},
227   { 0xCE,     OP_I386,                    &i386_device::i386_into,                   &i386_device::i386_into,               false},
228   { 0xCF,     OP_I386,                    &i386_device::i386_iret16,                 &i386_device::i386_iret32,             false},
229   { 0xD0,     OP_I386,                    &i386_device::i386_groupD0_8,              &i386_device::i386_groupD0_8,          false},
230   { 0xD1,     OP_I386,                    &i386_device::i386_groupD1_16,             &i386_device::i386_groupD1_32,         false},
231   { 0xD2,     OP_I386,                    &i386_device::i386_groupD2_8,              &i386_device::i386_groupD2_8,          false},
232   { 0xD3,     OP_I386,                    &i386_device::i386_groupD3_16,             &i386_device::i386_groupD3_32,         false},
233   { 0xD4,     OP_I386,                    &i386_device::i386_aam,                    &i386_device::i386_aam,                false},
234   { 0xD5,     OP_I386,                    &i386_device::i386_aad,                    &i386_device::i386_aad,                false},
235   { 0xD6,     OP_I386,                    &i386_device::i386_setalc,                 &i386_device::i386_setalc,             false},
236   { 0xD7,     OP_I386,                    &i386_device::i386_xlat,                   &i386_device::i386_xlat,               false},
237   { 0xD8,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             false},
238   { 0xD9,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             false},
239   { 0xDA,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             false},
240   { 0xDB,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             false},
241   { 0xDC,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             false},
242   { 0xDD,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             false},
243   { 0xDE,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             false},
244   { 0xDF,     OP_I386,                    &i386_device::i386_escape,                 &i386_device::i386_escape,             false},
245   { 0xD8,     OP_FPU,                     &i386_device::i386_x87_group_d8,           &i386_device::i386_x87_group_d8,       false},
246   { 0xD9,     OP_FPU,                     &i386_device::i386_x87_group_d9,           &i386_device::i386_x87_group_d9,       false},
247   { 0xDA,     OP_FPU,                     &i386_device::i386_x87_group_da,           &i386_device::i386_x87_group_da,       false},
248   { 0xDB,     OP_FPU,                     &i386_device::i386_x87_group_db,           &i386_device::i386_x87_group_db,       false},
249   { 0xDC,     OP_FPU,                     &i386_device::i386_x87_group_dc,           &i386_device::i386_x87_group_dc,       false},
250   { 0xDD,     OP_FPU,                     &i386_device::i386_x87_group_dd,           &i386_device::i386_x87_group_dd,       false},
251   { 0xDE,     OP_FPU,                     &i386_device::i386_x87_group_de,           &i386_device::i386_x87_group_de,       false},
252   { 0xDF,     OP_FPU,                     &i386_device::i386_x87_group_df,           &i386_device::i386_x87_group_df,       false},
253   { 0xE0,     OP_I386,                    &i386_device::i386_loopne16,               &i386_device::i386_loopne32,           false},
254   { 0xE1,     OP_I386,                    &i386_device::i386_loopz16,                &i386_device::i386_loopz32,            false},
255   { 0xE2,     OP_I386,                    &i386_device::i386_loop16,                 &i386_device::i386_loop32,             false},
256   { 0xE3,     OP_I386,                    &i386_device::i386_jcxz16,                 &i386_device::i386_jcxz32,             false},
257   { 0xE4,     OP_I386,                    &i386_device::i386_in_al_i8,               &i386_device::i386_in_al_i8,           false},
258   { 0xE5,     OP_I386,                    &i386_device::i386_in_ax_i8,               &i386_device::i386_in_eax_i8,          false},
259   { 0xE6,     OP_I386,                    &i386_device::i386_out_al_i8,              &i386_device::i386_out_al_i8,          false},
260   { 0xE7,     OP_I386,                    &i386_device::i386_out_ax_i8,              &i386_device::i386_out_eax_i8,         false},
261   { 0xE8,     OP_I386,                    &i386_device::i386_call_rel16,             &i386_device::i386_call_rel32,         false},
262   { 0xE9,     OP_I386,                    &i386_device::i386_jmp_rel16,              &i386_device::i386_jmp_rel32,          false},
263   { 0xEA,     OP_I386,                    &i386_device::i386_jmp_abs16,              &i386_device::i386_jmp_abs32,          false},
264   { 0xEB,     OP_I386,                    &i386_device::i386_jmp_rel8,               &i386_device::i386_jmp_rel8,           false},
265   { 0xEC,     OP_I386,                    &i386_device::i386_in_al_dx,               &i386_device::i386_in_al_dx,           false},
266   { 0xED,     OP_I386,                    &i386_device::i386_in_ax_dx,               &i386_device::i386_in_eax_dx,          false},
267   { 0xEE,     OP_I386,                    &i386_device::i386_out_al_dx,              &i386_device::i386_out_al_dx,          false},
268   { 0xEF,     OP_I386,                    &i386_device::i386_out_ax_dx,              &i386_device::i386_out_eax_dx,         false},
269   { 0xF0,     OP_I386,                    &i386_device::i386_lock,                   &i386_device::i386_lock,               false},
270   { 0xF1,     OP_I386,                    &i386_device::i386_invalid,                &i386_device::i386_invalid,            false},
271   { 0xF2,     OP_I386,                    &i386_device::i386_repne,                  &i386_device::i386_repne,              false},
272   { 0xF3,     OP_I386,                    &i386_device::i386_rep,                    &i386_device::i386_rep,                false},
273   { 0xF4,     OP_I386,                    &i386_device::i386_hlt,                    &i386_device::i386_hlt,                false},
274   { 0xF5,     OP_I386,                    &i386_device::i386_cmc,                    &i386_device::i386_cmc,                false},
275   { 0xF6,     OP_I386,                    &i386_device::i386_groupF6_8,              &i386_device::i386_groupF6_8,          true },
276   { 0xF7,     OP_I386,                    &i386_device::i386_groupF7_16,             &i386_device::i386_groupF7_32,         true },
277   { 0xF8,     OP_I386,                    &i386_device::i386_clc,                    &i386_device::i386_clc,                false},
278   { 0xF9,     OP_I386,                    &i386_device::i386_stc,                    &i386_device::i386_stc,                false},
279   { 0xFA,     OP_I386,                    &i386_device::i386_cli,                    &i386_device::i386_cli,                false},
280   { 0xFB,     OP_I386,                    &i386_device::i386_sti,                    &i386_device::i386_sti,                false},
281   { 0xFC,     OP_I386,                    &i386_device::i386_cld,                    &i386_device::i386_cld,                false},
282   { 0xFD,     OP_I386,                    &i386_device::i386_std,                    &i386_device::i386_std,                false},
283   { 0xFE,     OP_I386,                    &i386_device::i386_groupFE_8,              &i386_device::i386_groupFE_8,          true },
284   { 0xFF,     OP_I386,                    &i386_device::i386_groupFF_16,             &i386_device::i386_groupFF_32,         true },
285285   /* 0F ?? */
286   { 0x00,     OP_2BYTE|OP_I386,           &i386_device::i386_group0F00_16,           &i386_device::i386_group0F00_32,       },
287   { 0x01,     OP_2BYTE|OP_I386,           &i386_device::i386_group0F01_16,           &i386_device::i386_group0F01_32,       },
288   { 0x01,     OP_2BYTE|OP_I486,           &i386_device::i486_group0F01_16,           &i386_device::i486_group0F01_32,       },
289   { 0x02,     OP_2BYTE|OP_I386,           &i386_device::i386_lar_r16_rm16,           &i386_device::i386_lar_r32_rm32,       },
290   { 0x03,     OP_2BYTE|OP_I386,           &i386_device::i386_lsl_r16_rm16,           &i386_device::i386_lsl_r32_rm32,       },
291   { 0x06,     OP_2BYTE|OP_I386,           &i386_device::i386_clts,                   &i386_device::i386_clts,               },
292   { 0x07,     OP_2BYTE|OP_I386,           &i386_device::i386_loadall,                &i386_device::i386_loadall,            },
293   { 0x08,     OP_2BYTE|OP_I486,           &i386_device::i486_invd,                   &i386_device::i486_invd,               },
294   { 0x09,     OP_2BYTE|OP_I486,           &i386_device::i486_wbinvd,                 &i386_device::i486_wbinvd,             },
295   { 0x0B,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_ud2,                 &i386_device::pentium_ud2,             },
296   { 0x10,     OP_2BYTE|OP_SSE,            &i386_device::sse_movups_r128_rm128,       &i386_device::sse_movups_r128_rm128,   },
297   { 0x11,     OP_2BYTE|OP_SSE,            &i386_device::sse_movups_rm128_r128,       &i386_device::sse_movups_rm128_r128,   },
298   { 0x12,     OP_2BYTE|OP_SSE,            &i386_device::sse_movlps_r128_m64,         &i386_device::sse_movlps_r128_m64,     },
299   { 0x13,     OP_2BYTE|OP_SSE,            &i386_device::sse_movlps_m64_r128,         &i386_device::sse_movlps_m64_r128,     },
300   { 0x14,     OP_2BYTE|OP_SSE,            &i386_device::sse_unpcklps_r128_rm128,     &i386_device::sse_unpcklps_r128_rm128, },
301   { 0x15,     OP_2BYTE|OP_SSE,            &i386_device::sse_unpckhps_r128_rm128,     &i386_device::sse_unpckhps_r128_rm128, },
302   { 0x16,     OP_2BYTE|OP_SSE,            &i386_device::sse_movhps_r128_m64,         &i386_device::sse_movhps_r128_m64,     },
303   { 0x17,     OP_2BYTE|OP_SSE,            &i386_device::sse_movhps_m64_r128,         &i386_device::sse_movhps_m64_r128,     },
304   { 0x18,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_prefetch_m8,         &i386_device::pentium_prefetch_m8,     },
305   { 0x20,     OP_2BYTE|OP_I386,           &i386_device::i386_mov_r32_cr,             &i386_device::i386_mov_r32_cr,         },
306   { 0x21,     OP_2BYTE|OP_I386,           &i386_device::i386_mov_r32_dr,             &i386_device::i386_mov_r32_dr,         },
307   { 0x22,     OP_2BYTE|OP_I386,           &i386_device::i386_mov_cr_r32,             &i386_device::i386_mov_cr_r32,         },
308   { 0x22,     OP_2BYTE|OP_I486,           &i386_device::i486_mov_cr_r32,             &i386_device::i486_mov_cr_r32,         },
309   { 0x23,     OP_2BYTE|OP_I386,           &i386_device::i386_mov_dr_r32,             &i386_device::i386_mov_dr_r32,         },
310   { 0x24,     OP_2BYTE|OP_I386,           &i386_device::i386_mov_r32_tr,             &i386_device::i386_mov_r32_tr,         },
311   { 0x26,     OP_2BYTE|OP_I386,           &i386_device::i386_mov_tr_r32,             &i386_device::i386_mov_tr_r32,         },
312   { 0x28,     OP_2BYTE|OP_SSE,            &i386_device::sse_movaps_r128_rm128,       &i386_device::sse_movaps_r128_rm128,   },
313   { 0x29,     OP_2BYTE|OP_SSE,            &i386_device::sse_movaps_rm128_r128,       &i386_device::sse_movaps_rm128_r128,   },
314   { 0x2a,     OP_2BYTE|OP_SSE,            &i386_device::sse_cvtpi2ps_r128_rm64,      &i386_device::sse_cvtpi2ps_r128_rm64,  },
315   { 0x2b,     OP_2BYTE|OP_SSE,            &i386_device::sse_movntps_m128_r128,       &i386_device::sse_movntps_m128_r128,   },
316   { 0x2c,     OP_2BYTE|OP_SSE,            &i386_device::sse_cvttps2pi_r64_r128m64,   &i386_device::sse_cvttps2pi_r64_r128m64,},
317   { 0x2d,     OP_2BYTE|OP_SSE,            &i386_device::sse_cvtps2pi_r64_r128m64,    &i386_device::sse_cvtps2pi_r64_r128m64,},
318   { 0x2e,     OP_2BYTE|OP_SSE,            &i386_device::sse_ucomiss_r128_r128m32,    &i386_device::sse_ucomiss_r128_r128m32,},
319   { 0x2f,     OP_2BYTE|OP_SSE,            &i386_device::sse_comiss_r128_r128m32,     &i386_device::sse_comiss_r128_r128m32, },
320   { 0x30,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_wrmsr,               &i386_device::pentium_wrmsr,           },
321   { 0x31,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_rdtsc,               &i386_device::pentium_rdtsc,           },
322   { 0x32,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_rdmsr,               &i386_device::pentium_rdmsr,           },
323   { 0x40,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovo_r16_rm16,      &i386_device::pentium_cmovo_r32_rm32,  },
324   { 0x41,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovno_r16_rm16,     &i386_device::pentium_cmovno_r32_rm32, },
325   { 0x42,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovb_r16_rm16,      &i386_device::pentium_cmovb_r32_rm32,  },
326   { 0x43,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovae_r16_rm16,     &i386_device::pentium_cmovae_r32_rm32, },
327   { 0x44,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmove_r16_rm16,      &i386_device::pentium_cmove_r32_rm32,  },
328   { 0x45,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovne_r16_rm16,     &i386_device::pentium_cmovne_r32_rm32, },
329   { 0x46,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovbe_r16_rm16,     &i386_device::pentium_cmovbe_r32_rm32, },
330   { 0x47,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmova_r16_rm16,      &i386_device::pentium_cmova_r32_rm32,  },
331   { 0x48,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovs_r16_rm16,      &i386_device::pentium_cmovs_r32_rm32,  },
332   { 0x49,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovns_r16_rm16,     &i386_device::pentium_cmovns_r32_rm32, },
333   { 0x4a,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovp_r16_rm16,      &i386_device::pentium_cmovp_r32_rm32,  },
334   { 0x4b,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovnp_r16_rm16,     &i386_device::pentium_cmovnp_r32_rm32, },
335   { 0x4c,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovl_r16_rm16,      &i386_device::pentium_cmovl_r32_rm32,  },
336   { 0x4d,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovge_r16_rm16,     &i386_device::pentium_cmovge_r32_rm32, },
337   { 0x4e,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovle_r16_rm16,     &i386_device::pentium_cmovle_r32_rm32, },
338   { 0x4f,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovg_r16_rm16,      &i386_device::pentium_cmovg_r32_rm32,  },
339   { 0x50,     OP_2BYTE|OP_SSE,            &i386_device::sse_movmskps_r16_r128,       &i386_device::sse_movmskps_r32_r128,   },
340   { 0x51,     OP_2BYTE|OP_SSE,            &i386_device::sse_sqrtps_r128_rm128,       &i386_device::sse_sqrtps_r128_rm128,   },
341   { 0x52,     OP_2BYTE|OP_SSE,            &i386_device::sse_rsqrtps_r128_rm128,      &i386_device::sse_rsqrtps_r128_rm128,  },
342   { 0x53,     OP_2BYTE|OP_SSE,            &i386_device::sse_rcpps_r128_rm128,        &i386_device::sse_rcpps_r128_rm128,    },
343   { 0x54,     OP_2BYTE|OP_SSE,            &i386_device::sse_andps_r128_rm128,        &i386_device::sse_andps_r128_rm128,    },
344   { 0x55,     OP_2BYTE|OP_SSE,            &i386_device::sse_andnps_r128_rm128,       &i386_device::sse_andnps_r128_rm128,   },
345   { 0x56,     OP_2BYTE|OP_SSE,            &i386_device::sse_orps_r128_rm128,         &i386_device::sse_orps_r128_rm128,     },
346   { 0x57,     OP_2BYTE|OP_SSE,            &i386_device::sse_xorps,                   &i386_device::sse_xorps,               },
347   { 0x58,     OP_2BYTE|OP_SSE,            &i386_device::sse_addps,                   &i386_device::sse_addps,               },
348   { 0x59,     OP_2BYTE|OP_SSE,            &i386_device::sse_mulps,                   &i386_device::sse_mulps,               },
349   { 0x5a,     OP_2BYTE|OP_SSE,            &i386_device::sse_cvtps2pd_r128_r128m64,   &i386_device::sse_cvtps2pd_r128_r128m64,},
350   { 0x5b,     OP_2BYTE|OP_SSE,            &i386_device::sse_cvtdq2ps_r128_rm128,     &i386_device::sse_cvtdq2ps_r128_rm128, },
351   { 0x5c,     OP_2BYTE|OP_SSE,            &i386_device::sse_subps,                   &i386_device::sse_subps,               },
352   { 0x5d,     OP_2BYTE|OP_SSE,            &i386_device::sse_minps,                   &i386_device::sse_minps,               },
353   { 0x5e,     OP_2BYTE|OP_SSE,            &i386_device::sse_divps,                   &i386_device::sse_divps,               },
354   { 0x5f,     OP_2BYTE|OP_SSE,            &i386_device::sse_maxps,                   &i386_device::sse_maxps,               },
355   { 0x60,     OP_2BYTE|OP_MMX,            &i386_device::mmx_punpcklbw_r64_r64m32,    &i386_device::mmx_punpcklbw_r64_r64m32,},
356   { 0x61,     OP_2BYTE|OP_MMX,            &i386_device::mmx_punpcklwd_r64_r64m32,    &i386_device::mmx_punpcklwd_r64_r64m32,},
357   { 0x62,     OP_2BYTE|OP_MMX,            &i386_device::mmx_punpckldq_r64_r64m32,    &i386_device::mmx_punpckldq_r64_r64m32,},
358   { 0x63,     OP_2BYTE|OP_MMX,            &i386_device::mmx_packsswb_r64_rm64,       &i386_device::mmx_packsswb_r64_rm64,   },
359   { 0x64,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pcmpgtb_r64_rm64,        &i386_device::mmx_pcmpgtb_r64_rm64,    },
360   { 0x65,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pcmpgtw_r64_rm64,        &i386_device::mmx_pcmpgtw_r64_rm64,    },
361   { 0x66,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pcmpgtd_r64_rm64,        &i386_device::mmx_pcmpgtd_r64_rm64,    },
362   { 0x67,     OP_2BYTE|OP_MMX,            &i386_device::mmx_packuswb_r64_rm64,       &i386_device::mmx_packuswb_r64_rm64,   },
363   { 0x68,     OP_2BYTE|OP_MMX,            &i386_device::mmx_punpckhbw_r64_rm64,      &i386_device::mmx_punpckhbw_r64_rm64,  },
364   { 0x69,     OP_2BYTE|OP_MMX,            &i386_device::mmx_punpckhwd_r64_rm64,      &i386_device::mmx_punpckhwd_r64_rm64,  },
365   { 0x6a,     OP_2BYTE|OP_MMX,            &i386_device::mmx_punpckhdq_r64_rm64,      &i386_device::mmx_punpckhdq_r64_rm64,  },
366   { 0x6b,     OP_2BYTE|OP_MMX,            &i386_device::mmx_packssdw_r64_rm64,       &i386_device::mmx_packssdw_r64_rm64,   },
367   { 0x6e,     OP_2BYTE|OP_MMX,            &i386_device::mmx_movd_r64_rm32,           &i386_device::mmx_movd_r64_rm32,       },
368   { 0x6f,     OP_2BYTE|OP_MMX,            &i386_device::mmx_movq_r64_rm64,           &i386_device::mmx_movq_r64_rm64,       },
369   { 0x70,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pshufw_r64_rm64_i8,      &i386_device::mmx_pshufw_r64_rm64_i8,  },
370   { 0x71,     OP_2BYTE|OP_MMX,            &i386_device::mmx_group_0f71,              &i386_device::mmx_group_0f71,          },
371   { 0x72,     OP_2BYTE|OP_MMX,            &i386_device::mmx_group_0f72,              &i386_device::mmx_group_0f72,          },
372   { 0x73,     OP_2BYTE|OP_MMX,            &i386_device::mmx_group_0f73,              &i386_device::mmx_group_0f73,          },
373   { 0x74,     OP_2BYTE|OP_CYRIX,          &i386_device::i386_cyrix_unknown,          &i386_device::i386_cyrix_unknown,      },
374   { 0x74,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pcmpeqb_r64_rm64,        &i386_device::mmx_pcmpeqb_r64_rm64,    },
375   { 0x75,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pcmpeqw_r64_rm64,        &i386_device::mmx_pcmpeqw_r64_rm64,    },
376   { 0x76,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pcmpeqd_r64_rm64,        &i386_device::mmx_pcmpeqd_r64_rm64,    },
377   { 0x77,     OP_2BYTE|OP_MMX,            &i386_device::mmx_emms,                    &i386_device::mmx_emms,                },
378   { 0x7e,     OP_2BYTE|OP_MMX,            &i386_device::mmx_movd_rm32_r64,           &i386_device::mmx_movd_rm32_r64,       },
379   { 0x7f,     OP_2BYTE|OP_MMX,            &i386_device::mmx_movq_rm64_r64,           &i386_device::mmx_movq_rm64_r64,       },
380   { 0x80,     OP_2BYTE|OP_I386,           &i386_device::i386_jo_rel16,               &i386_device::i386_jo_rel32,           },
381   { 0x81,     OP_2BYTE|OP_I386,           &i386_device::i386_jno_rel16,              &i386_device::i386_jno_rel32,          },
382   { 0x82,     OP_2BYTE|OP_I386,           &i386_device::i386_jc_rel16,               &i386_device::i386_jc_rel32,           },
383   { 0x83,     OP_2BYTE|OP_I386,           &i386_device::i386_jnc_rel16,              &i386_device::i386_jnc_rel32,          },
384   { 0x84,     OP_2BYTE|OP_I386,           &i386_device::i386_jz_rel16,               &i386_device::i386_jz_rel32,           },
385   { 0x85,     OP_2BYTE|OP_I386,           &i386_device::i386_jnz_rel16,              &i386_device::i386_jnz_rel32,          },
386   { 0x86,     OP_2BYTE|OP_I386,           &i386_device::i386_jbe_rel16,              &i386_device::i386_jbe_rel32,          },
387   { 0x87,     OP_2BYTE|OP_I386,           &i386_device::i386_ja_rel16,               &i386_device::i386_ja_rel32,           },
388   { 0x88,     OP_2BYTE|OP_I386,           &i386_device::i386_js_rel16,               &i386_device::i386_js_rel32,           },
389   { 0x89,     OP_2BYTE|OP_I386,           &i386_device::i386_jns_rel16,              &i386_device::i386_jns_rel32,          },
390   { 0x8A,     OP_2BYTE|OP_I386,           &i386_device::i386_jp_rel16,               &i386_device::i386_jp_rel32,           },
391   { 0x8B,     OP_2BYTE|OP_I386,           &i386_device::i386_jnp_rel16,              &i386_device::i386_jnp_rel32,          },
392   { 0x8C,     OP_2BYTE|OP_I386,           &i386_device::i386_jl_rel16,               &i386_device::i386_jl_rel32,           },
393   { 0x8D,     OP_2BYTE|OP_I386,           &i386_device::i386_jge_rel16,              &i386_device::i386_jge_rel32,          },
394   { 0x8E,     OP_2BYTE|OP_I386,           &i386_device::i386_jle_rel16,              &i386_device::i386_jle_rel32,          },
395   { 0x8F,     OP_2BYTE|OP_I386,           &i386_device::i386_jg_rel16,               &i386_device::i386_jg_rel32,           },
396   { 0x90,     OP_2BYTE|OP_I386,           &i386_device::i386_seto_rm8,               &i386_device::i386_seto_rm8,           },
397   { 0x91,     OP_2BYTE|OP_I386,           &i386_device::i386_setno_rm8,              &i386_device::i386_setno_rm8,          },
398   { 0x92,     OP_2BYTE|OP_I386,           &i386_device::i386_setc_rm8,               &i386_device::i386_setc_rm8,           },
399   { 0x93,     OP_2BYTE|OP_I386,           &i386_device::i386_setnc_rm8,              &i386_device::i386_setnc_rm8,          },
400   { 0x94,     OP_2BYTE|OP_I386,           &i386_device::i386_setz_rm8,               &i386_device::i386_setz_rm8,           },
401   { 0x95,     OP_2BYTE|OP_I386,           &i386_device::i386_setnz_rm8,              &i386_device::i386_setnz_rm8,          },
402   { 0x96,     OP_2BYTE|OP_I386,           &i386_device::i386_setbe_rm8,              &i386_device::i386_setbe_rm8,          },
403   { 0x97,     OP_2BYTE|OP_I386,           &i386_device::i386_seta_rm8,               &i386_device::i386_seta_rm8,           },
404   { 0x98,     OP_2BYTE|OP_I386,           &i386_device::i386_sets_rm8,               &i386_device::i386_sets_rm8,           },
405   { 0x99,     OP_2BYTE|OP_I386,           &i386_device::i386_setns_rm8,              &i386_device::i386_setns_rm8,          },
406   { 0x9A,     OP_2BYTE|OP_I386,           &i386_device::i386_setp_rm8,               &i386_device::i386_setp_rm8,           },
407   { 0x9B,     OP_2BYTE|OP_I386,           &i386_device::i386_setnp_rm8,              &i386_device::i386_setnp_rm8,          },
408   { 0x9C,     OP_2BYTE|OP_I386,           &i386_device::i386_setl_rm8,               &i386_device::i386_setl_rm8,           },
409   { 0x9D,     OP_2BYTE|OP_I386,           &i386_device::i386_setge_rm8,              &i386_device::i386_setge_rm8,          },
410   { 0x9E,     OP_2BYTE|OP_I386,           &i386_device::i386_setle_rm8,              &i386_device::i386_setle_rm8,          },
411   { 0x9F,     OP_2BYTE|OP_I386,           &i386_device::i386_setg_rm8,               &i386_device::i386_setg_rm8,           },
412   { 0xA0,     OP_2BYTE|OP_I386,           &i386_device::i386_push_fs16,              &i386_device::i386_push_fs32,          },
413   { 0xA1,     OP_2BYTE|OP_I386,           &i386_device::i386_pop_fs16,               &i386_device::i386_pop_fs32,           },
414   { 0xA2,     OP_2BYTE|OP_I486,           &i386_device::i486_cpuid,                  &i386_device::i486_cpuid,              },
415   { 0xA3,     OP_2BYTE|OP_I386,           &i386_device::i386_bt_rm16_r16,            &i386_device::i386_bt_rm32_r32,        },
416   { 0xA4,     OP_2BYTE|OP_I386,           &i386_device::i386_shld16_i8,              &i386_device::i386_shld32_i8,          },
417   { 0xA5,     OP_2BYTE|OP_I386,           &i386_device::i386_shld16_cl,              &i386_device::i386_shld32_cl,          },
418   { 0xA8,     OP_2BYTE|OP_I386,           &i386_device::i386_push_gs16,              &i386_device::i386_push_gs32,          },
419   { 0xA9,     OP_2BYTE|OP_I386,           &i386_device::i386_pop_gs16,               &i386_device::i386_pop_gs32,           },
420   { 0xAA,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_rsm,                 &i386_device::pentium_rsm,             },
421   { 0xAB,     OP_2BYTE|OP_I386,           &i386_device::i386_bts_rm16_r16,           &i386_device::i386_bts_rm32_r32,       },
422   { 0xAC,     OP_2BYTE|OP_I386,           &i386_device::i386_shrd16_i8,              &i386_device::i386_shrd32_i8,          },
423   { 0xAD,     OP_2BYTE|OP_I386,           &i386_device::i386_shrd16_cl,              &i386_device::i386_shrd32_cl,          },
424   { 0xAE,     OP_2BYTE|OP_SSE,            &i386_device::sse_sse_group0fae,           &i386_device::sse_sse_group0fae,       },
425   { 0xAF,     OP_2BYTE|OP_I386,           &i386_device::i386_imul_r16_rm16,          &i386_device::i386_imul_r32_rm32,      },
426   { 0xB0,     OP_2BYTE|OP_I486,           &i386_device::i486_cmpxchg_rm8_r8,         &i386_device::i486_cmpxchg_rm8_r8,     },
427   { 0xB1,     OP_2BYTE|OP_I486,           &i386_device::i486_cmpxchg_rm16_r16,       &i386_device::i486_cmpxchg_rm32_r32,   },
428   { 0xB2,     OP_2BYTE|OP_I386,           &i386_device::i386_lss16,                  &i386_device::i386_lss32,              },
429   { 0xB3,     OP_2BYTE|OP_I386,           &i386_device::i386_btr_rm16_r16,           &i386_device::i386_btr_rm32_r32,       },
430   { 0xB4,     OP_2BYTE|OP_I386,           &i386_device::i386_lfs16,                  &i386_device::i386_lfs32,              },
431   { 0xB5,     OP_2BYTE|OP_I386,           &i386_device::i386_lgs16,                  &i386_device::i386_lgs32,              },
432   { 0xB6,     OP_2BYTE|OP_I386,           &i386_device::i386_movzx_r16_rm8,          &i386_device::i386_movzx_r32_rm8,      },
433   { 0xB7,     OP_2BYTE|OP_I386,           &i386_device::i386_invalid,                &i386_device::i386_movzx_r32_rm16,     },
434   { 0xBA,     OP_2BYTE|OP_I386,           &i386_device::i386_group0FBA_16,           &i386_device::i386_group0FBA_32,       },
435   { 0xBB,     OP_2BYTE|OP_I386,           &i386_device::i386_btc_rm16_r16,           &i386_device::i386_btc_rm32_r32,       },
436   { 0xBC,     OP_2BYTE|OP_I386,           &i386_device::i386_bsf_r16_rm16,           &i386_device::i386_bsf_r32_rm32,       },
437   { 0xBD,     OP_2BYTE|OP_I386,           &i386_device::i386_bsr_r16_rm16,           &i386_device::i386_bsr_r32_rm32,       },
438   { 0xBE,     OP_2BYTE|OP_I386,           &i386_device::i386_movsx_r16_rm8,          &i386_device::i386_movsx_r32_rm8,      },
439   { 0xBF,     OP_2BYTE|OP_I386,           &i386_device::i386_invalid,                &i386_device::i386_movsx_r32_rm16,     },
440   { 0xC0,     OP_2BYTE|OP_I486,           &i386_device::i486_xadd_rm8_r8,            &i386_device::i486_xadd_rm8_r8,        },
441   { 0xC1,     OP_2BYTE|OP_I486,           &i386_device::i486_xadd_rm16_r16,          &i386_device::i486_xadd_rm32_r32,      },
442   { 0xC2,     OP_2BYTE|OP_SSE,            &i386_device::sse_cmpps_r128_rm128_i8,     &i386_device::sse_cmpps_r128_rm128_i8, },
443   { 0xC3,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_movnti_m16_r16,      &i386_device::pentium_movnti_m32_r32,  },
444   { 0xC4,     OP_2BYTE|OP_SSE,            &i386_device::sse_pinsrw_r64_r16m16_i8,    &i386_device::sse_pinsrw_r64_r32m16_i8,},
445   { 0xC5,     OP_2BYTE|OP_SSE,            &i386_device::sse_pextrw_r16_r64_i8,       &i386_device::sse_pextrw_r32_r64_i8,   },
446   { 0xC6,     OP_2BYTE|OP_SSE,            &i386_device::sse_shufps,                  &i386_device::sse_shufps,              },
447   { 0xC7,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmpxchg8b_m64,       &i386_device::pentium_cmpxchg8b_m64,   },
448   { 0xC8,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_eax,              &i386_device::i486_bswap_eax,          },
449   { 0xC9,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_ecx,              &i386_device::i486_bswap_ecx,          },
450   { 0xCA,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_edx,              &i386_device::i486_bswap_edx,          },
451   { 0xCB,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_ebx,              &i386_device::i486_bswap_ebx,          },
452   { 0xCC,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_esp,              &i386_device::i486_bswap_esp,          },
453   { 0xCD,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_ebp,              &i386_device::i486_bswap_ebp,          },
454   { 0xCE,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_esi,              &i386_device::i486_bswap_esi,          },
455   { 0xCF,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_edi,              &i386_device::i486_bswap_edi,          },
456   { 0xD1,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psrlw_r64_rm64,          &i386_device::mmx_psrlw_r64_rm64,      },
457   { 0xD2,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psrld_r64_rm64,          &i386_device::mmx_psrld_r64_rm64,      },
458   { 0xD3,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psrlq_r64_rm64,          &i386_device::mmx_psrlq_r64_rm64,      },
459   { 0xD4,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddq_r64_rm64,          &i386_device::mmx_paddq_r64_rm64,      },
460   { 0xD5,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pmullw_r64_rm64,         &i386_device::mmx_pmullw_r64_rm64,     },
461   { 0xD7,     OP_2BYTE|OP_SSE,            &i386_device::sse_pmovmskb_r16_r64,        &i386_device::sse_pmovmskb_r32_r64,    },
462   { 0xD8,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubusb_r64_rm64,        &i386_device::mmx_psubusb_r64_rm64,    },
463   { 0xD9,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubusw_r64_rm64,        &i386_device::mmx_psubusw_r64_rm64,    },
464   { 0xDA,     OP_2BYTE|OP_SSE,            &i386_device::sse_pminub_r64_rm64,         &i386_device::sse_pminub_r64_rm64,     },
465   { 0xDB,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pand_r64_rm64,           &i386_device::mmx_pand_r64_rm64,       },
466   { 0xDC,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddusb_r64_rm64,        &i386_device::mmx_paddusb_r64_rm64,    },
467   { 0xDD,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddusw_r64_rm64,        &i386_device::mmx_paddusw_r64_rm64,    },
468   { 0xDE,     OP_2BYTE|OP_SSE,            &i386_device::sse_pmaxub_r64_rm64,         &i386_device::sse_pmaxub_r64_rm64,     },
469   { 0xDF,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pandn_r64_rm64,          &i386_device::mmx_pandn_r64_rm64,      },
470   { 0xE0,     OP_2BYTE|OP_SSE,            &i386_device::sse_pavgb_r64_rm64,          &i386_device::sse_pavgb_r64_rm64,      },
471   { 0xE1,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psraw_r64_rm64,          &i386_device::mmx_psraw_r64_rm64,      },
472   { 0xE2,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psrad_r64_rm64,          &i386_device::mmx_psrad_r64_rm64,      },
473   { 0xE3,     OP_2BYTE|OP_SSE,            &i386_device::sse_pavgw_r64_rm64,          &i386_device::sse_pavgw_r64_rm64,      },
474   { 0xE4,     OP_2BYTE|OP_SSE,            &i386_device::sse_pmulhuw_r64_rm64,        &i386_device::sse_pmulhuw_r64_rm64,    },
475   { 0xE5,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pmulhw_r64_rm64,         &i386_device::mmx_pmulhw_r64_rm64,     },
476   { 0xE7,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_movntq_m64_r64,      &i386_device::pentium_movntq_m64_r64,  },
477   { 0xE8,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubsb_r64_rm64,         &i386_device::mmx_psubsb_r64_rm64,     },
478   { 0xE9,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubsw_r64_rm64,         &i386_device::mmx_psubsw_r64_rm64,     },
479   { 0xEA,     OP_2BYTE|OP_SSE,            &i386_device::sse_pminsw_r64_rm64,         &i386_device::sse_pminsw_r64_rm64,     },
480   { 0xEB,     OP_2BYTE|OP_MMX,            &i386_device::mmx_por_r64_rm64,            &i386_device::mmx_por_r64_rm64,        },
481   { 0xEC,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddsb_r64_rm64,         &i386_device::mmx_paddsb_r64_rm64,     },
482   { 0xED,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddsw_r64_rm64,         &i386_device::mmx_paddsw_r64_rm64,     },
483   { 0xEE,     OP_2BYTE|OP_SSE,            &i386_device::sse_pmaxsw_r64_rm64,         &i386_device::sse_pmaxsw_r64_rm64,     },
484   { 0xEF,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pxor_r64_rm64,           &i386_device::mmx_pxor_r64_rm64,       },
485   { 0xF1,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psllw_r64_rm64,          &i386_device::mmx_psllw_r64_rm64,      },
486   { 0xF2,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pslld_r64_rm64,          &i386_device::mmx_pslld_r64_rm64,      },
487   { 0xF3,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psllq_r64_rm64,          &i386_device::mmx_psllq_r64_rm64,      },
488   { 0xF4,     OP_2BYTE|OP_SSE,            &i386_device::sse_pmuludq_r64_rm64,        &i386_device::sse_pmuludq_r64_rm64,    },
489   { 0xF5,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pmaddwd_r64_rm64,        &i386_device::mmx_pmaddwd_r64_rm64,    },
490   { 0xF6,     OP_2BYTE|OP_SSE,            &i386_device::sse_psadbw_r64_rm64,         &i386_device::sse_psadbw_r64_rm64,     },
491   { 0xf7,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_maskmovq_r64_r64,    &i386_device::pentium_maskmovq_r64_r64,},
492   { 0xF8,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubb_r64_rm64,          &i386_device::mmx_psubb_r64_rm64,      },
493   { 0xF9,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubw_r64_rm64,          &i386_device::mmx_psubw_r64_rm64,      },
494   { 0xFA,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubd_r64_rm64,          &i386_device::mmx_psubd_r64_rm64,      },
495   { 0xFB,     OP_2BYTE|OP_SSE,            &i386_device::sse_psubq_r64_rm64,          &i386_device::sse_psubq_r64_rm64,      },
496   { 0xFC,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddb_r64_rm64,          &i386_device::mmx_paddb_r64_rm64,      },
497   { 0xFD,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddw_r64_rm64,          &i386_device::mmx_paddw_r64_rm64,      },
498   { 0xFE,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddd_r64_rm64,          &i386_device::mmx_paddd_r64_rm64,      },
286   { 0x00,     OP_2BYTE|OP_I386,           &i386_device::i386_group0F00_16,           &i386_device::i386_group0F00_32,       false},
287   { 0x01,     OP_2BYTE|OP_I386,           &i386_device::i386_group0F01_16,           &i386_device::i386_group0F01_32,       false},
288   { 0x01,     OP_2BYTE|OP_I486,           &i386_device::i486_group0F01_16,           &i386_device::i486_group0F01_32,       false},
289   { 0x02,     OP_2BYTE|OP_I386,           &i386_device::i386_lar_r16_rm16,           &i386_device::i386_lar_r32_rm32,       false},
290   { 0x03,     OP_2BYTE|OP_I386,           &i386_device::i386_lsl_r16_rm16,           &i386_device::i386_lsl_r32_rm32,       false},
291   { 0x06,     OP_2BYTE|OP_I386,           &i386_device::i386_clts,                   &i386_device::i386_clts,               false},
292   { 0x07,     OP_2BYTE|OP_I386,           &i386_device::i386_loadall,                &i386_device::i386_loadall,            false},
293   { 0x08,     OP_2BYTE|OP_I486,           &i386_device::i486_invd,                   &i386_device::i486_invd,               false},
294   { 0x09,     OP_2BYTE|OP_I486,           &i386_device::i486_wbinvd,                 &i386_device::i486_wbinvd,             false},
295   { 0x0B,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_ud2,                 &i386_device::pentium_ud2,             false},
296   { 0x10,     OP_2BYTE|OP_SSE,            &i386_device::sse_movups_r128_rm128,       &i386_device::sse_movups_r128_rm128,   false},
297   { 0x11,     OP_2BYTE|OP_SSE,            &i386_device::sse_movups_rm128_r128,       &i386_device::sse_movups_rm128_r128,   false},
298   { 0x12,     OP_2BYTE|OP_SSE,            &i386_device::sse_movlps_r128_m64,         &i386_device::sse_movlps_r128_m64,     false},
299   { 0x13,     OP_2BYTE|OP_SSE,            &i386_device::sse_movlps_m64_r128,         &i386_device::sse_movlps_m64_r128,     false},
300   { 0x14,     OP_2BYTE|OP_SSE,            &i386_device::sse_unpcklps_r128_rm128,     &i386_device::sse_unpcklps_r128_rm128, false},
301   { 0x15,     OP_2BYTE|OP_SSE,            &i386_device::sse_unpckhps_r128_rm128,     &i386_device::sse_unpckhps_r128_rm128, false},
302   { 0x16,     OP_2BYTE|OP_SSE,            &i386_device::sse_movhps_r128_m64,         &i386_device::sse_movhps_r128_m64,     false},
303   { 0x17,     OP_2BYTE|OP_SSE,            &i386_device::sse_movhps_m64_r128,         &i386_device::sse_movhps_m64_r128,     false},
304   { 0x18,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_prefetch_m8,         &i386_device::pentium_prefetch_m8,     false},
305   { 0x20,     OP_2BYTE|OP_I386,           &i386_device::i386_mov_r32_cr,             &i386_device::i386_mov_r32_cr,         false},
306   { 0x21,     OP_2BYTE|OP_I386,           &i386_device::i386_mov_r32_dr,             &i386_device::i386_mov_r32_dr,         false},
307   { 0x22,     OP_2BYTE|OP_I386,           &i386_device::i386_mov_cr_r32,             &i386_device::i386_mov_cr_r32,         false},
308   { 0x22,     OP_2BYTE|OP_I486,           &i386_device::i486_mov_cr_r32,             &i386_device::i486_mov_cr_r32,         false},
309   { 0x23,     OP_2BYTE|OP_I386,           &i386_device::i386_mov_dr_r32,             &i386_device::i386_mov_dr_r32,         false},
310   { 0x24,     OP_2BYTE|OP_I386,           &i386_device::i386_mov_r32_tr,             &i386_device::i386_mov_r32_tr,         false},
311   { 0x26,     OP_2BYTE|OP_I386,           &i386_device::i386_mov_tr_r32,             &i386_device::i386_mov_tr_r32,         false},
312   { 0x28,     OP_2BYTE|OP_SSE,            &i386_device::sse_movaps_r128_rm128,       &i386_device::sse_movaps_r128_rm128,   false},
313   { 0x29,     OP_2BYTE|OP_SSE,            &i386_device::sse_movaps_rm128_r128,       &i386_device::sse_movaps_rm128_r128,   false},
314   { 0x2a,     OP_2BYTE|OP_SSE,            &i386_device::sse_cvtpi2ps_r128_rm64,      &i386_device::sse_cvtpi2ps_r128_rm64,  false},
315   { 0x2b,     OP_2BYTE|OP_SSE,            &i386_device::sse_movntps_m128_r128,       &i386_device::sse_movntps_m128_r128,   false},
316   { 0x2c,     OP_2BYTE|OP_SSE,            &i386_device::sse_cvttps2pi_r64_r128m64,   &i386_device::sse_cvttps2pi_r64_r128m64,false},
317   { 0x2d,     OP_2BYTE|OP_SSE,            &i386_device::sse_cvtps2pi_r64_r128m64,    &i386_device::sse_cvtps2pi_r64_r128m64,false},
318   { 0x2e,     OP_2BYTE|OP_SSE,            &i386_device::sse_ucomiss_r128_r128m32,    &i386_device::sse_ucomiss_r128_r128m32,false},
319   { 0x2f,     OP_2BYTE|OP_SSE,            &i386_device::sse_comiss_r128_r128m32,     &i386_device::sse_comiss_r128_r128m32, false},
320   { 0x30,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_wrmsr,               &i386_device::pentium_wrmsr,           false},
321   { 0x31,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_rdtsc,               &i386_device::pentium_rdtsc,           false},
322   { 0x32,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_rdmsr,               &i386_device::pentium_rdmsr,           false},
323   { 0x40,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovo_r16_rm16,      &i386_device::pentium_cmovo_r32_rm32,  false},
324   { 0x41,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovno_r16_rm16,     &i386_device::pentium_cmovno_r32_rm32, false},
325   { 0x42,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovb_r16_rm16,      &i386_device::pentium_cmovb_r32_rm32,  false},
326   { 0x43,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovae_r16_rm16,     &i386_device::pentium_cmovae_r32_rm32, false},
327   { 0x44,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmove_r16_rm16,      &i386_device::pentium_cmove_r32_rm32,  false},
328   { 0x45,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovne_r16_rm16,     &i386_device::pentium_cmovne_r32_rm32, false},
329   { 0x46,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovbe_r16_rm16,     &i386_device::pentium_cmovbe_r32_rm32, false},
330   { 0x47,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmova_r16_rm16,      &i386_device::pentium_cmova_r32_rm32,  false},
331   { 0x48,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovs_r16_rm16,      &i386_device::pentium_cmovs_r32_rm32,  false},
332   { 0x49,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovns_r16_rm16,     &i386_device::pentium_cmovns_r32_rm32, false},
333   { 0x4a,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovp_r16_rm16,      &i386_device::pentium_cmovp_r32_rm32,  false},
334   { 0x4b,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovnp_r16_rm16,     &i386_device::pentium_cmovnp_r32_rm32, false},
335   { 0x4c,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovl_r16_rm16,      &i386_device::pentium_cmovl_r32_rm32,  false},
336   { 0x4d,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovge_r16_rm16,     &i386_device::pentium_cmovge_r32_rm32, false},
337   { 0x4e,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovle_r16_rm16,     &i386_device::pentium_cmovle_r32_rm32, false},
338   { 0x4f,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovg_r16_rm16,      &i386_device::pentium_cmovg_r32_rm32,  false},
339   { 0x50,     OP_2BYTE|OP_SSE,            &i386_device::sse_movmskps_r16_r128,       &i386_device::sse_movmskps_r32_r128,   false},
340   { 0x51,     OP_2BYTE|OP_SSE,            &i386_device::sse_sqrtps_r128_rm128,       &i386_device::sse_sqrtps_r128_rm128,   false},
341   { 0x52,     OP_2BYTE|OP_SSE,            &i386_device::sse_rsqrtps_r128_rm128,      &i386_device::sse_rsqrtps_r128_rm128,  false},
342   { 0x53,     OP_2BYTE|OP_SSE,            &i386_device::sse_rcpps_r128_rm128,        &i386_device::sse_rcpps_r128_rm128,    false},
343   { 0x54,     OP_2BYTE|OP_SSE,            &i386_device::sse_andps_r128_rm128,        &i386_device::sse_andps_r128_rm128,    false},
344   { 0x55,     OP_2BYTE|OP_SSE,            &i386_device::sse_andnps_r128_rm128,       &i386_device::sse_andnps_r128_rm128,   false},
345   { 0x56,     OP_2BYTE|OP_SSE,            &i386_device::sse_orps_r128_rm128,         &i386_device::sse_orps_r128_rm128,     false},
346   { 0x57,     OP_2BYTE|OP_SSE,            &i386_device::sse_xorps,                   &i386_device::sse_xorps,               false},
347   { 0x58,     OP_2BYTE|OP_SSE,            &i386_device::sse_addps,                   &i386_device::sse_addps,               false},
348   { 0x59,     OP_2BYTE|OP_SSE,            &i386_device::sse_mulps,                   &i386_device::sse_mulps,               false},
349   { 0x5a,     OP_2BYTE|OP_SSE,            &i386_device::sse_cvtps2pd_r128_r128m64,   &i386_device::sse_cvtps2pd_r128_r128m64,false},
350   { 0x5b,     OP_2BYTE|OP_SSE,            &i386_device::sse_cvtdq2ps_r128_rm128,     &i386_device::sse_cvtdq2ps_r128_rm128, false},
351   { 0x5c,     OP_2BYTE|OP_SSE,            &i386_device::sse_subps,                   &i386_device::sse_subps,               false},
352   { 0x5d,     OP_2BYTE|OP_SSE,            &i386_device::sse_minps,                   &i386_device::sse_minps,               false},
353   { 0x5e,     OP_2BYTE|OP_SSE,            &i386_device::sse_divps,                   &i386_device::sse_divps,               false},
354   { 0x5f,     OP_2BYTE|OP_SSE,            &i386_device::sse_maxps,                   &i386_device::sse_maxps,               false},
355   { 0x60,     OP_2BYTE|OP_MMX,            &i386_device::mmx_punpcklbw_r64_r64m32,    &i386_device::mmx_punpcklbw_r64_r64m32,false},
356   { 0x61,     OP_2BYTE|OP_MMX,            &i386_device::mmx_punpcklwd_r64_r64m32,    &i386_device::mmx_punpcklwd_r64_r64m32,false},
357   { 0x62,     OP_2BYTE|OP_MMX,            &i386_device::mmx_punpckldq_r64_r64m32,    &i386_device::mmx_punpckldq_r64_r64m32,false},
358   { 0x63,     OP_2BYTE|OP_MMX,            &i386_device::mmx_packsswb_r64_rm64,       &i386_device::mmx_packsswb_r64_rm64,   false},
359   { 0x64,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pcmpgtb_r64_rm64,        &i386_device::mmx_pcmpgtb_r64_rm64,    false},
360   { 0x65,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pcmpgtw_r64_rm64,        &i386_device::mmx_pcmpgtw_r64_rm64,    false},
361   { 0x66,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pcmpgtd_r64_rm64,        &i386_device::mmx_pcmpgtd_r64_rm64,    false},
362   { 0x67,     OP_2BYTE|OP_MMX,            &i386_device::mmx_packuswb_r64_rm64,       &i386_device::mmx_packuswb_r64_rm64,   false},
363   { 0x68,     OP_2BYTE|OP_MMX,            &i386_device::mmx_punpckhbw_r64_rm64,      &i386_device::mmx_punpckhbw_r64_rm64,  false},
364   { 0x69,     OP_2BYTE|OP_MMX,            &i386_device::mmx_punpckhwd_r64_rm64,      &i386_device::mmx_punpckhwd_r64_rm64,  false},
365   { 0x6a,     OP_2BYTE|OP_MMX,            &i386_device::mmx_punpckhdq_r64_rm64,      &i386_device::mmx_punpckhdq_r64_rm64,  false},
366   { 0x6b,     OP_2BYTE|OP_MMX,            &i386_device::mmx_packssdw_r64_rm64,       &i386_device::mmx_packssdw_r64_rm64,   false},
367   { 0x6e,     OP_2BYTE|OP_MMX,            &i386_device::mmx_movd_r64_rm32,           &i386_device::mmx_movd_r64_rm32,       false},
368   { 0x6f,     OP_2BYTE|OP_MMX,            &i386_device::mmx_movq_r64_rm64,           &i386_device::mmx_movq_r64_rm64,       false},
369   { 0x70,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pshufw_r64_rm64_i8,      &i386_device::mmx_pshufw_r64_rm64_i8,  false},
370   { 0x71,     OP_2BYTE|OP_MMX,            &i386_device::mmx_group_0f71,              &i386_device::mmx_group_0f71,          false},
371   { 0x72,     OP_2BYTE|OP_MMX,            &i386_device::mmx_group_0f72,              &i386_device::mmx_group_0f72,          false},
372   { 0x73,     OP_2BYTE|OP_MMX,            &i386_device::mmx_group_0f73,              &i386_device::mmx_group_0f73,          false},
373   { 0x74,     OP_2BYTE|OP_CYRIX,          &i386_device::i386_cyrix_unknown,          &i386_device::i386_cyrix_unknown,      false},
374   { 0x74,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pcmpeqb_r64_rm64,        &i386_device::mmx_pcmpeqb_r64_rm64,    false},
375   { 0x75,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pcmpeqw_r64_rm64,        &i386_device::mmx_pcmpeqw_r64_rm64,    false},
376   { 0x76,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pcmpeqd_r64_rm64,        &i386_device::mmx_pcmpeqd_r64_rm64,    false},
377   { 0x77,     OP_2BYTE|OP_MMX,            &i386_device::mmx_emms,                    &i386_device::mmx_emms,                false},
378   { 0x7e,     OP_2BYTE|OP_MMX,            &i386_device::mmx_movd_rm32_r64,           &i386_device::mmx_movd_rm32_r64,       false},
379   { 0x7f,     OP_2BYTE|OP_MMX,            &i386_device::mmx_movq_rm64_r64,           &i386_device::mmx_movq_rm64_r64,       false},
380   { 0x80,     OP_2BYTE|OP_I386,           &i386_device::i386_jo_rel16,               &i386_device::i386_jo_rel32,           false},
381   { 0x81,     OP_2BYTE|OP_I386,           &i386_device::i386_jno_rel16,              &i386_device::i386_jno_rel32,          false},
382   { 0x82,     OP_2BYTE|OP_I386,           &i386_device::i386_jc_rel16,               &i386_device::i386_jc_rel32,           false},
383   { 0x83,     OP_2BYTE|OP_I386,           &i386_device::i386_jnc_rel16,              &i386_device::i386_jnc_rel32,          false},
384   { 0x84,     OP_2BYTE|OP_I386,           &i386_device::i386_jz_rel16,               &i386_device::i386_jz_rel32,           false},
385   { 0x85,     OP_2BYTE|OP_I386,           &i386_device::i386_jnz_rel16,              &i386_device::i386_jnz_rel32,          false},
386   { 0x86,     OP_2BYTE|OP_I386,           &i386_device::i386_jbe_rel16,              &i386_device::i386_jbe_rel32,          false},
387   { 0x87,     OP_2BYTE|OP_I386,           &i386_device::i386_ja_rel16,               &i386_device::i386_ja_rel32,           false},
388   { 0x88,     OP_2BYTE|OP_I386,           &i386_device::i386_js_rel16,               &i386_device::i386_js_rel32,           false},
389   { 0x89,     OP_2BYTE|OP_I386,           &i386_device::i386_jns_rel16,              &i386_device::i386_jns_rel32,          false},
390   { 0x8A,     OP_2BYTE|OP_I386,           &i386_device::i386_jp_rel16,               &i386_device::i386_jp_rel32,           false},
391   { 0x8B,     OP_2BYTE|OP_I386,           &i386_device::i386_jnp_rel16,              &i386_device::i386_jnp_rel32,          false},
392   { 0x8C,     OP_2BYTE|OP_I386,           &i386_device::i386_jl_rel16,               &i386_device::i386_jl_rel32,           false},
393   { 0x8D,     OP_2BYTE|OP_I386,           &i386_device::i386_jge_rel16,              &i386_device::i386_jge_rel32,          false},
394   { 0x8E,     OP_2BYTE|OP_I386,           &i386_device::i386_jle_rel16,              &i386_device::i386_jle_rel32,          false},
395   { 0x8F,     OP_2BYTE|OP_I386,           &i386_device::i386_jg_rel16,               &i386_device::i386_jg_rel32,           false},
396   { 0x90,     OP_2BYTE|OP_I386,           &i386_device::i386_seto_rm8,               &i386_device::i386_seto_rm8,           false},
397   { 0x91,     OP_2BYTE|OP_I386,           &i386_device::i386_setno_rm8,              &i386_device::i386_setno_rm8,          false},
398   { 0x92,     OP_2BYTE|OP_I386,           &i386_device::i386_setc_rm8,               &i386_device::i386_setc_rm8,           false},
399   { 0x93,     OP_2BYTE|OP_I386,           &i386_device::i386_setnc_rm8,              &i386_device::i386_setnc_rm8,          false},
400   { 0x94,     OP_2BYTE|OP_I386,           &i386_device::i386_setz_rm8,               &i386_device::i386_setz_rm8,           false},
401   { 0x95,     OP_2BYTE|OP_I386,           &i386_device::i386_setnz_rm8,              &i386_device::i386_setnz_rm8,          false},
402   { 0x96,     OP_2BYTE|OP_I386,           &i386_device::i386_setbe_rm8,              &i386_device::i386_setbe_rm8,          false},
403   { 0x97,     OP_2BYTE|OP_I386,           &i386_device::i386_seta_rm8,               &i386_device::i386_seta_rm8,           false},
404   { 0x98,     OP_2BYTE|OP_I386,           &i386_device::i386_sets_rm8,               &i386_device::i386_sets_rm8,           false},
405   { 0x99,     OP_2BYTE|OP_I386,           &i386_device::i386_setns_rm8,              &i386_device::i386_setns_rm8,          false},
406   { 0x9A,     OP_2BYTE|OP_I386,           &i386_device::i386_setp_rm8,               &i386_device::i386_setp_rm8,           false},
407   { 0x9B,     OP_2BYTE|OP_I386,           &i386_device::i386_setnp_rm8,              &i386_device::i386_setnp_rm8,          false},
408   { 0x9C,     OP_2BYTE|OP_I386,           &i386_device::i386_setl_rm8,               &i386_device::i386_setl_rm8,           false},
409   { 0x9D,     OP_2BYTE|OP_I386,           &i386_device::i386_setge_rm8,              &i386_device::i386_setge_rm8,          false},
410   { 0x9E,     OP_2BYTE|OP_I386,           &i386_device::i386_setle_rm8,              &i386_device::i386_setle_rm8,          false},
411   { 0x9F,     OP_2BYTE|OP_I386,           &i386_device::i386_setg_rm8,               &i386_device::i386_setg_rm8,           false},
412   { 0xA0,     OP_2BYTE|OP_I386,           &i386_device::i386_push_fs16,              &i386_device::i386_push_fs32,          false},
413   { 0xA1,     OP_2BYTE|OP_I386,           &i386_device::i386_pop_fs16,               &i386_device::i386_pop_fs32,           false},
414   { 0xA2,     OP_2BYTE|OP_I486,           &i386_device::i486_cpuid,                  &i386_device::i486_cpuid,              false},
415   { 0xA3,     OP_2BYTE|OP_I386,           &i386_device::i386_bt_rm16_r16,            &i386_device::i386_bt_rm32_r32,        false},
416   { 0xA4,     OP_2BYTE|OP_I386,           &i386_device::i386_shld16_i8,              &i386_device::i386_shld32_i8,          false},
417   { 0xA5,     OP_2BYTE|OP_I386,           &i386_device::i386_shld16_cl,              &i386_device::i386_shld32_cl,          false},
418   { 0xA8,     OP_2BYTE|OP_I386,           &i386_device::i386_push_gs16,              &i386_device::i386_push_gs32,          false},
419   { 0xA9,     OP_2BYTE|OP_I386,           &i386_device::i386_pop_gs16,               &i386_device::i386_pop_gs32,           false},
420   { 0xAA,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_rsm,                 &i386_device::pentium_rsm,             false},
421   { 0xAB,     OP_2BYTE|OP_I386,           &i386_device::i386_bts_rm16_r16,           &i386_device::i386_bts_rm32_r32,       true },
422   { 0xAC,     OP_2BYTE|OP_I386,           &i386_device::i386_shrd16_i8,              &i386_device::i386_shrd32_i8,          false},
423   { 0xAD,     OP_2BYTE|OP_I386,           &i386_device::i386_shrd16_cl,              &i386_device::i386_shrd32_cl,          false},
424   { 0xAE,     OP_2BYTE|OP_SSE,            &i386_device::sse_sse_group0fae,           &i386_device::sse_sse_group0fae,       false},
425   { 0xAF,     OP_2BYTE|OP_I386,           &i386_device::i386_imul_r16_rm16,          &i386_device::i386_imul_r32_rm32,      false},
426   { 0xB0,     OP_2BYTE|OP_I486,           &i386_device::i486_cmpxchg_rm8_r8,         &i386_device::i486_cmpxchg_rm8_r8,     true },
427   { 0xB1,     OP_2BYTE|OP_I486,           &i386_device::i486_cmpxchg_rm16_r16,       &i386_device::i486_cmpxchg_rm32_r32,   true },
428   { 0xB2,     OP_2BYTE|OP_I386,           &i386_device::i386_lss16,                  &i386_device::i386_lss32,              false},
429   { 0xB3,     OP_2BYTE|OP_I386,           &i386_device::i386_btr_rm16_r16,           &i386_device::i386_btr_rm32_r32,       true },
430   { 0xB4,     OP_2BYTE|OP_I386,           &i386_device::i386_lfs16,                  &i386_device::i386_lfs32,              false},
431   { 0xB5,     OP_2BYTE|OP_I386,           &i386_device::i386_lgs16,                  &i386_device::i386_lgs32,              false},
432   { 0xB6,     OP_2BYTE|OP_I386,           &i386_device::i386_movzx_r16_rm8,          &i386_device::i386_movzx_r32_rm8,      false},
433   { 0xB7,     OP_2BYTE|OP_I386,           &i386_device::i386_invalid,                &i386_device::i386_movzx_r32_rm16,     false},
434   { 0xBA,     OP_2BYTE|OP_I386,           &i386_device::i386_group0FBA_16,           &i386_device::i386_group0FBA_32,       true },
435   { 0xBB,     OP_2BYTE|OP_I386,           &i386_device::i386_btc_rm16_r16,           &i386_device::i386_btc_rm32_r32,       true },
436   { 0xBC,     OP_2BYTE|OP_I386,           &i386_device::i386_bsf_r16_rm16,           &i386_device::i386_bsf_r32_rm32,       false},
437   { 0xBD,     OP_2BYTE|OP_I386,           &i386_device::i386_bsr_r16_rm16,           &i386_device::i386_bsr_r32_rm32,       false},
438   { 0xBE,     OP_2BYTE|OP_I386,           &i386_device::i386_movsx_r16_rm8,          &i386_device::i386_movsx_r32_rm8,      false},
439   { 0xBF,     OP_2BYTE|OP_I386,           &i386_device::i386_invalid,                &i386_device::i386_movsx_r32_rm16,     false},
440   { 0xC0,     OP_2BYTE|OP_I486,           &i386_device::i486_xadd_rm8_r8,            &i386_device::i486_xadd_rm8_r8,        true },
441   { 0xC1,     OP_2BYTE|OP_I486,           &i386_device::i486_xadd_rm16_r16,          &i386_device::i486_xadd_rm32_r32,      true },
442   { 0xC2,     OP_2BYTE|OP_SSE,            &i386_device::sse_cmpps_r128_rm128_i8,     &i386_device::sse_cmpps_r128_rm128_i8, false},
443   { 0xC3,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_movnti_m16_r16,      &i386_device::pentium_movnti_m32_r32,  false},
444   { 0xC4,     OP_2BYTE|OP_SSE,            &i386_device::sse_pinsrw_r64_r16m16_i8,    &i386_device::sse_pinsrw_r64_r32m16_i8,false},
445   { 0xC5,     OP_2BYTE|OP_SSE,            &i386_device::sse_pextrw_r16_r64_i8,       &i386_device::sse_pextrw_r32_r64_i8,   false},
446   { 0xC6,     OP_2BYTE|OP_SSE,            &i386_device::sse_shufps,                  &i386_device::sse_shufps,              false},
447   { 0xC7,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmpxchg8b_m64,       &i386_device::pentium_cmpxchg8b_m64,   true },
448   { 0xC8,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_eax,              &i386_device::i486_bswap_eax,          false},
449   { 0xC9,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_ecx,              &i386_device::i486_bswap_ecx,          false},
450   { 0xCA,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_edx,              &i386_device::i486_bswap_edx,          false},
451   { 0xCB,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_ebx,              &i386_device::i486_bswap_ebx,          false},
452   { 0xCC,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_esp,              &i386_device::i486_bswap_esp,          false},
453   { 0xCD,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_ebp,              &i386_device::i486_bswap_ebp,          false},
454   { 0xCE,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_esi,              &i386_device::i486_bswap_esi,          false},
455   { 0xCF,     OP_2BYTE|OP_I486,           &i386_device::i486_bswap_edi,              &i386_device::i486_bswap_edi,          false},
456   { 0xD1,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psrlw_r64_rm64,          &i386_device::mmx_psrlw_r64_rm64,      false},
457   { 0xD2,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psrld_r64_rm64,          &i386_device::mmx_psrld_r64_rm64,      false},
458   { 0xD3,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psrlq_r64_rm64,          &i386_device::mmx_psrlq_r64_rm64,      false},
459   { 0xD4,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddq_r64_rm64,          &i386_device::mmx_paddq_r64_rm64,      false},
460   { 0xD5,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pmullw_r64_rm64,         &i386_device::mmx_pmullw_r64_rm64,     false},
461   { 0xD7,     OP_2BYTE|OP_SSE,            &i386_device::sse_pmovmskb_r16_r64,        &i386_device::sse_pmovmskb_r32_r64,    false},
462   { 0xD8,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubusb_r64_rm64,        &i386_device::mmx_psubusb_r64_rm64,    false},
463   { 0xD9,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubusw_r64_rm64,        &i386_device::mmx_psubusw_r64_rm64,    false},
464   { 0xDA,     OP_2BYTE|OP_SSE,            &i386_device::sse_pminub_r64_rm64,         &i386_device::sse_pminub_r64_rm64,     false},
465   { 0xDB,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pand_r64_rm64,           &i386_device::mmx_pand_r64_rm64,       false},
466   { 0xDC,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddusb_r64_rm64,        &i386_device::mmx_paddusb_r64_rm64,    false},
467   { 0xDD,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddusw_r64_rm64,        &i386_device::mmx_paddusw_r64_rm64,    false},
468   { 0xDE,     OP_2BYTE|OP_SSE,            &i386_device::sse_pmaxub_r64_rm64,         &i386_device::sse_pmaxub_r64_rm64,     false},
469   { 0xDF,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pandn_r64_rm64,          &i386_device::mmx_pandn_r64_rm64,      false},
470   { 0xE0,     OP_2BYTE|OP_SSE,            &i386_device::sse_pavgb_r64_rm64,          &i386_device::sse_pavgb_r64_rm64,      false},
471   { 0xE1,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psraw_r64_rm64,          &i386_device::mmx_psraw_r64_rm64,      false},
472   { 0xE2,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psrad_r64_rm64,          &i386_device::mmx_psrad_r64_rm64,      false},
473   { 0xE3,     OP_2BYTE|OP_SSE,            &i386_device::sse_pavgw_r64_rm64,          &i386_device::sse_pavgw_r64_rm64,      false},
474   { 0xE4,     OP_2BYTE|OP_SSE,            &i386_device::sse_pmulhuw_r64_rm64,        &i386_device::sse_pmulhuw_r64_rm64,    false},
475   { 0xE5,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pmulhw_r64_rm64,         &i386_device::mmx_pmulhw_r64_rm64,     false},
476   { 0xE7,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_movntq_m64_r64,      &i386_device::pentium_movntq_m64_r64,  false},
477   { 0xE8,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubsb_r64_rm64,         &i386_device::mmx_psubsb_r64_rm64,     false},
478   { 0xE9,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubsw_r64_rm64,         &i386_device::mmx_psubsw_r64_rm64,     false},
479   { 0xEA,     OP_2BYTE|OP_SSE,            &i386_device::sse_pminsw_r64_rm64,         &i386_device::sse_pminsw_r64_rm64,     false},
480   { 0xEB,     OP_2BYTE|OP_MMX,            &i386_device::mmx_por_r64_rm64,            &i386_device::mmx_por_r64_rm64,        false},
481   { 0xEC,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddsb_r64_rm64,         &i386_device::mmx_paddsb_r64_rm64,     false},
482   { 0xED,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddsw_r64_rm64,         &i386_device::mmx_paddsw_r64_rm64,     false},
483   { 0xEE,     OP_2BYTE|OP_SSE,            &i386_device::sse_pmaxsw_r64_rm64,         &i386_device::sse_pmaxsw_r64_rm64,     false},
484   { 0xEF,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pxor_r64_rm64,           &i386_device::mmx_pxor_r64_rm64,       false},
485   { 0xF1,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psllw_r64_rm64,          &i386_device::mmx_psllw_r64_rm64,      false},
486   { 0xF2,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pslld_r64_rm64,          &i386_device::mmx_pslld_r64_rm64,      false},
487   { 0xF3,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psllq_r64_rm64,          &i386_device::mmx_psllq_r64_rm64,      false},
488   { 0xF4,     OP_2BYTE|OP_SSE,            &i386_device::sse_pmuludq_r64_rm64,        &i386_device::sse_pmuludq_r64_rm64,    false},
489   { 0xF5,     OP_2BYTE|OP_MMX,            &i386_device::mmx_pmaddwd_r64_rm64,        &i386_device::mmx_pmaddwd_r64_rm64,    false},
490   { 0xF6,     OP_2BYTE|OP_SSE,            &i386_device::sse_psadbw_r64_rm64,         &i386_device::sse_psadbw_r64_rm64,     false},
491   { 0xf7,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_maskmovq_r64_r64,    &i386_device::pentium_maskmovq_r64_r64,false},
492   { 0xF8,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubb_r64_rm64,          &i386_device::mmx_psubb_r64_rm64,      false},
493   { 0xF9,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubw_r64_rm64,          &i386_device::mmx_psubw_r64_rm64,      false},
494   { 0xFA,     OP_2BYTE|OP_MMX,            &i386_device::mmx_psubd_r64_rm64,          &i386_device::mmx_psubd_r64_rm64,      false},
495   { 0xFB,     OP_2BYTE|OP_SSE,            &i386_device::sse_psubq_r64_rm64,          &i386_device::sse_psubq_r64_rm64,      false},
496   { 0xFC,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddb_r64_rm64,          &i386_device::mmx_paddb_r64_rm64,      false},
497   { 0xFD,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddw_r64_rm64,          &i386_device::mmx_paddw_r64_rm64,      false},
498   { 0xFE,     OP_2BYTE|OP_MMX,            &i386_device::mmx_paddd_r64_rm64,          &i386_device::mmx_paddd_r64_rm64,      false},
499499   /* F3 0F ?? */
500   { 0x10,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movss_r128_rm128,        &i386_device::sse_movss_r128_rm128,    },
501   { 0x11,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movss_rm128_r128,        &i386_device::sse_movss_rm128_r128,    },
502   { 0x12,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movsldup_r128_rm128,     &i386_device::sse_movsldup_r128_rm128, },
503   { 0x16,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movshdup_r128_rm128,     &i386_device::sse_movshdup_r128_rm128, },
504   { 0x2A,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cvtsi2ss_r128_rm32,      &i386_device::sse_cvtsi2ss_r128_rm32,  },
505   { 0x2C,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cvttss2si_r32_r128m32,   &i386_device::sse_cvttss2si_r32_r128m32,},
506   { 0x2D,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cvtss2si_r32_r128m32,    &i386_device::sse_cvtss2si_r32_r128m32,},
507   { 0x51,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_sqrtss_r128_r128m32,     &i386_device::sse_sqrtss_r128_r128m32, },
508   { 0x52,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_rsqrtss_r128_r128m32,    &i386_device::sse_rsqrtss_r128_r128m32,},
509   { 0x53,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_rcpss_r128_r128m32,      &i386_device::sse_rcpss_r128_r128m32,  },
510   { 0x58,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_addss,                   &i386_device::sse_addss,               },
511   { 0x59,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_mulss,                   &i386_device::sse_mulss,               },
512   { 0x5A,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cvtss2sd_r128_r128m32,   &i386_device::sse_cvtss2sd_r128_r128m32,},
513   { 0x5B,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cvttps2dq_r128_rm128,    &i386_device::sse_cvttps2dq_r128_rm128,},
514   { 0x5C,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_subss,                   &i386_device::sse_subss,               },
515   { 0x5D,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_minss_r128_r128m32,      &i386_device::sse_minss_r128_r128m32,  },
516   { 0x5E,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_divss,                   &i386_device::sse_divss,               },
517   { 0x5F,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_maxss_r128_r128m32,      &i386_device::sse_maxss_r128_r128m32,  },
518   { 0x6F,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movdqu_r128_rm128,       &i386_device::sse_movdqu_r128_rm128,   },
519   { 0x70,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_pshufhw_r128_rm128_i8,   &i386_device::sse_pshufhw_r128_rm128_i8,},
520   { 0x7E,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movq_r128_r128m64,       &i386_device::sse_movq_r128_r128m64,   },
521   { 0x7F,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movdqu_rm128_r128,       &i386_device::sse_movdqu_rm128_r128,   },
522   { 0xB8,     OP_3BYTEF3|OP_PENTIUM,      &i386_device::pentium_popcnt_r16_rm16,     &i386_device::pentium_popcnt_r32_rm32, },
523   { 0xBC,     OP_3BYTEF3|OP_PENTIUM,      &i386_device::pentium_tzcnt_r16_rm16,      &i386_device::pentium_tzcnt_r32_rm32, },
524   { 0xC2,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cmpss_r128_r128m32_i8,   &i386_device::sse_cmpss_r128_r128m32_i8,},
525   { 0xD6,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movq2dq_r128_r64,        &i386_device::sse_movq2dq_r128_r64,    },
526   { 0xE6,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cvtdq2pd_r128_r128m64,   &i386_device::sse_cvtdq2pd_r128_r128m64}
500   { 0x10,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movss_r128_rm128,        &i386_device::sse_movss_r128_rm128,    false},
501   { 0x11,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movss_rm128_r128,        &i386_device::sse_movss_rm128_r128,    false},
502   { 0x12,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movsldup_r128_rm128,     &i386_device::sse_movsldup_r128_rm128, false},
503   { 0x16,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movshdup_r128_rm128,     &i386_device::sse_movshdup_r128_rm128, false},
504   { 0x2A,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cvtsi2ss_r128_rm32,      &i386_device::sse_cvtsi2ss_r128_rm32,  false},
505   { 0x2C,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cvttss2si_r32_r128m32,   &i386_device::sse_cvttss2si_r32_r128m32,false},
506   { 0x2D,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cvtss2si_r32_r128m32,    &i386_device::sse_cvtss2si_r32_r128m32,false},
507   { 0x51,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_sqrtss_r128_r128m32,     &i386_device::sse_sqrtss_r128_r128m32, false},
508   { 0x52,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_rsqrtss_r128_r128m32,    &i386_device::sse_rsqrtss_r128_r128m32,false},
509   { 0x53,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_rcpss_r128_r128m32,      &i386_device::sse_rcpss_r128_r128m32,  false},
510   { 0x58,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_addss,                   &i386_device::sse_addss,               false},
511   { 0x59,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_mulss,                   &i386_device::sse_mulss,               false},
512   { 0x5A,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cvtss2sd_r128_r128m32,   &i386_device::sse_cvtss2sd_r128_r128m32,false},
513   { 0x5B,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cvttps2dq_r128_rm128,    &i386_device::sse_cvttps2dq_r128_rm128,false},
514   { 0x5C,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_subss,                   &i386_device::sse_subss,               false},
515   { 0x5D,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_minss_r128_r128m32,      &i386_device::sse_minss_r128_r128m32,  false},
516   { 0x5E,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_divss,                   &i386_device::sse_divss,               false},
517   { 0x5F,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_maxss_r128_r128m32,      &i386_device::sse_maxss_r128_r128m32,  false},
518   { 0x6F,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movdqu_r128_rm128,       &i386_device::sse_movdqu_r128_rm128,   false},
519   { 0x70,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_pshufhw_r128_rm128_i8,   &i386_device::sse_pshufhw_r128_rm128_i8,false},
520   { 0x7E,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movq_r128_r128m64,       &i386_device::sse_movq_r128_r128m64,   false},
521   { 0x7F,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movdqu_rm128_r128,       &i386_device::sse_movdqu_rm128_r128,   false},
522   { 0xB8,     OP_3BYTEF3|OP_PENTIUM,      &i386_device::pentium_popcnt_r16_rm16,     &i386_device::pentium_popcnt_r32_rm32, false},
523   { 0xBC,     OP_3BYTEF3|OP_PENTIUM,      &i386_device::pentium_tzcnt_r16_rm16,      &i386_device::pentium_tzcnt_r32_rm32, false},
524   { 0xC2,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cmpss_r128_r128m32_i8,   &i386_device::sse_cmpss_r128_r128m32_i8,false},
525   { 0xD6,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_movq2dq_r128_r64,        &i386_device::sse_movq2dq_r128_r64,    false},
526   { 0xE6,     OP_3BYTEF3|OP_SSE,          &i386_device::sse_cvtdq2pd_r128_r128m64,   &i386_device::sse_cvtdq2pd_r128_r128m64,false}
527527};
trunk/src/emu/cpu/i386/i386ops.inc
r241521r241522
24832483void i386_device::i386_lock()              // Opcode 0xf0
24842484{
24852485   // lock doesn't depend on iopl on 386
2486   // TODO: lock causes UD on unlockable opcodes
2486   m_lock = true;
24872487   CYCLES(CYCLES_LOCK);       // TODO: Determine correct cycle count
24882488   i386_decode_opcode();
24892489}
trunk/src/mame/drivers/jackie.c
r241521r241522
264264}
265265
266266
267void jackie_state::show_out()
268{
269#ifdef MAME_DEBUG
270//  popmessage("%02x %02x %02x", m_out[0], m_out[1], m_out[2]);
271   popmessage("520: %04x %04x %04x %04x %04x\n560: %04x %04x %04x %04x %04x\n5A0: %04x %04x %04x %04x %04x",
272      m_unk_reg[0][0],m_unk_reg[0][1],m_unk_reg[0][2],m_unk_reg[0][3],m_unk_reg[0][4],
273      m_unk_reg[1][0],m_unk_reg[1][1],m_unk_reg[1][2],m_unk_reg[1][3],m_unk_reg[1][4],
267void jackie_state::show_out()
268{
269#ifdef MAME_DEBUG
270//  popmessage("%02x %02x %02x", m_out[0], m_out[1], m_out[2]);
271   popmessage("520: %04x %04x %04x %04x %04x\n560: %04x %04x %04x %04x %04x\n5A0: %04x %04x %04x %04x %04x",
272      m_unk_reg[0][0],m_unk_reg[0][1],m_unk_reg[0][2],m_unk_reg[0][3],m_unk_reg[0][4],
273      m_unk_reg[1][0],m_unk_reg[1][1],m_unk_reg[1][2],m_unk_reg[1][3],m_unk_reg[1][4],
274274      m_unk_reg[2][0],m_unk_reg[2][1],m_unk_reg[2][2],m_unk_reg[2][3],m_unk_reg[2][4]
275275   );
276276#endif
trunk/src/mame/drivers/peplus.c
r241521r241522
203203   {
204204      TIMER_ASSERT_LP
205205   };
206
207   peplus_state(const machine_config &mconfig, device_type type, const char *tag)
208      : driver_device(mconfig, type, tag),
209      m_maincpu(*this, "maincpu"),
210      m_crtc(*this, "crtc"),
211      m_i2cmem(*this, "i2cmem"),
212      m_screen(*this, "screen"),
213      m_gfxdecode(*this, "gfxdecode"),
214      m_palette(*this, "palette"),
215      m_cmos_ram(*this, "cmos"),
216      m_program_ram(*this, "prograram"),
217      m_s3000_ram(*this, "s3000_ram"),
218      m_s5000_ram(*this, "s5000_ram"),
206 
207   peplus_state(const machine_config &mconfig, device_type type, const char *tag)
208      : driver_device(mconfig, type, tag),
209      m_maincpu(*this, "maincpu"),
210      m_crtc(*this, "crtc"),
211      m_i2cmem(*this, "i2cmem"),
212      m_screen(*this, "screen"),
213      m_gfxdecode(*this, "gfxdecode"),
214      m_palette(*this, "palette"),
215      m_cmos_ram(*this, "cmos"),
216      m_program_ram(*this, "prograram"),
217      m_s3000_ram(*this, "s3000_ram"),
218      m_s5000_ram(*this, "s5000_ram"),
219219      m_videoram(*this, "videoram"),
220220      m_s7000_ram(*this, "s7000_ram"),
221      m_sb000_ram(*this, "sb000_ram"),
222      m_sd000_ram(*this, "sd000_ram"),
223      m_sf000_ram(*this, "sf000_ram"),
224      m_io_port(*this, "io_port")
225   {
226   }
227
228   required_device<cpu_device> m_maincpu;
229   required_device<r6545_1_device> m_crtc;
230   required_device<i2cmem_device> m_i2cmem;
231   required_device<screen_device> m_screen;
232   required_device<gfxdecode_device> m_gfxdecode;
233   required_device<palette_device> m_palette;
234   
235   required_shared_ptr<UINT8> m_cmos_ram;
236   required_shared_ptr<UINT8> m_program_ram;
237   required_shared_ptr<UINT8> m_s3000_ram;
221      m_sb000_ram(*this, "sb000_ram"),
222      m_sd000_ram(*this, "sd000_ram"),
223      m_sf000_ram(*this, "sf000_ram"),
224      m_io_port(*this, "io_port")
225   {
226   }
227 
228   required_device<cpu_device> m_maincpu;
229   required_device<r6545_1_device> m_crtc;
230   required_device<i2cmem_device> m_i2cmem;
231   required_device<screen_device> m_screen;
232   required_device<gfxdecode_device> m_gfxdecode;
233   required_device<palette_device> m_palette;
234   
235   required_shared_ptr<UINT8> m_cmos_ram;
236   required_shared_ptr<UINT8> m_program_ram;
237   required_shared_ptr<UINT8> m_s3000_ram;
238238   required_shared_ptr<UINT8> m_s5000_ram;
239239   required_shared_ptr<UINT8> m_videoram;
240240   required_shared_ptr<UINT8> m_s7000_ram;
241241   required_shared_ptr<UINT8> m_sb000_ram;
242   required_shared_ptr<UINT8> m_sd000_ram;
243   required_shared_ptr<UINT8> m_sf000_ram;
244   required_shared_ptr<UINT8> m_io_port;
245   
246   tilemap_t *m_bg_tilemap;
247   UINT8 m_wingboard;
248   UINT8 m_doorcycle;
242   required_shared_ptr<UINT8> m_sd000_ram;
243   required_shared_ptr<UINT8> m_sf000_ram;
244   required_shared_ptr<UINT8> m_io_port;
245   
246   tilemap_t *m_bg_tilemap;
247   UINT8 m_wingboard;
248   UINT8 m_doorcycle;
249249   UINT16 door_wait;
250250   UINT8 m_jumper_e16_e17;
251251   UINT16 m_vid_address;
r241521r241522
267267   UINT8 m_bv_last_enable_state;
268268   UINT8 m_bv_enable_state;
269269   UINT8 m_bv_enable_count;
270   UINT8 m_bv_data_bit;
271   UINT8 m_bv_loop_count;
272   UINT16 id023_data;
273   
274   DECLARE_WRITE8_MEMBER(peplus_bgcolor_w);
275   DECLARE_WRITE8_MEMBER(peplus_crtc_display_w);
276   DECLARE_WRITE8_MEMBER(peplus_duart_w);
277   DECLARE_WRITE8_MEMBER(peplus_cmos_w);
278   DECLARE_WRITE8_MEMBER(peplus_output_bank_a_w);
279   DECLARE_WRITE8_MEMBER(peplus_output_bank_b_w);
280   DECLARE_WRITE8_MEMBER(peplus_output_bank_c_w);
281   DECLARE_READ8_MEMBER(peplus_duart_r);
282   DECLARE_READ8_MEMBER(peplus_bgcolor_r);
283   DECLARE_READ8_MEMBER(peplus_dropdoor_r);
284   DECLARE_READ8_MEMBER(peplus_watchdog_r);
270   UINT8 m_bv_data_bit;
271   UINT8 m_bv_loop_count;
272   UINT16 id023_data;
273   
274   DECLARE_WRITE8_MEMBER(peplus_bgcolor_w);
275   DECLARE_WRITE8_MEMBER(peplus_crtc_display_w);
276   DECLARE_WRITE8_MEMBER(peplus_duart_w);
277   DECLARE_WRITE8_MEMBER(peplus_cmos_w);
278   DECLARE_WRITE8_MEMBER(peplus_output_bank_a_w);
279   DECLARE_WRITE8_MEMBER(peplus_output_bank_b_w);
280   DECLARE_WRITE8_MEMBER(peplus_output_bank_c_w);
281   DECLARE_READ8_MEMBER(peplus_duart_r);
282   DECLARE_READ8_MEMBER(peplus_bgcolor_r);
283   DECLARE_READ8_MEMBER(peplus_dropdoor_r);
284   DECLARE_READ8_MEMBER(peplus_watchdog_r);
285285   DECLARE_CUSTOM_INPUT_MEMBER(peplus_input_r);
286286   DECLARE_WRITE8_MEMBER(peplus_crtc_mode_w);
287287   DECLARE_WRITE_LINE_MEMBER(crtc_vsync);
r241521r241522
296296   MC6845_ON_UPDATE_ADDR_CHANGED(crtc_addr);
297297   virtual void machine_reset();
298298   virtual void video_start();
299   UINT32 screen_update_peplus(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
300   void peplus_load_superdata(const char *bank_name);
301   DECLARE_PALETTE_INIT(peplus);
302   void handle_lightpen();
303
304protected:
305   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
299   UINT32 screen_update_peplus(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
300   void peplus_load_superdata(const char *bank_name);
301   DECLARE_PALETTE_INIT(peplus);
302   void handle_lightpen();
303 
304protected:
305   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
306306};
307307
308308static const UINT8  id_022[8] = { 0x00, 0x01, 0x04, 0x09, 0x13, 0x16, 0x18, 0x00 };
r241521r241522
382382
383383void peplus_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
384384{
385   switch (id)
386   {
387   case TIMER_ASSERT_LP:
388      m_crtc->assert_light_pen_input();
389      break;
390   default:
391      assert_always(FALSE, "Unknown id in peplus_state::device_timer");
385   switch (id)
386   {
387   case TIMER_ASSERT_LP:
388      m_crtc->assert_light_pen_input();
389      break;
390   default:
391      assert_always(FALSE, "Unknown id in peplus_state::device_timer");
392392   }
393}
394
395
396void peplus_state::handle_lightpen()
393}
394 
395 
396void peplus_state::handle_lightpen()
397{
398   int x_val = ioport("TOUCH_X")->read_safe(0x00);
399   int y_val = ioport("TOUCH_Y")->read_safe(0x00);
400   const rectangle &vis_area = m_screen->visible_area();
401   int xt, yt;
402 
403   xt = x_val * vis_area.width() / 1024 + vis_area.min_x;
404   yt = y_val * vis_area.height() / 1024 + vis_area.min_y;
405 
406   timer_set(m_screen->time_until_pos(yt, xt), TIMER_ASSERT_LP, 0);
407}
408 
409WRITE_LINE_MEMBER(peplus_state::crtc_vsync)
410{
411   m_maincpu->set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE);
412   handle_lightpen();
413}
414 
415WRITE8_MEMBER(peplus_state::peplus_crtc_display_w)
397416{
398   int x_val = ioport("TOUCH_X")->read_safe(0x00);
399   int y_val = ioport("TOUCH_Y")->read_safe(0x00);
400   const rectangle &vis_area = m_screen->visible_area();
401   int xt, yt;
402
403   xt = x_val * vis_area.width() / 1024 + vis_area.min_x;
404   yt = y_val * vis_area.height() / 1024 + vis_area.min_y;
405
406   timer_set(m_screen->time_until_pos(yt, xt), TIMER_ASSERT_LP, 0);
407}
408
409WRITE_LINE_MEMBER(peplus_state::crtc_vsync)
410{
411   m_maincpu->set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE);
412   handle_lightpen();
413}
414
415WRITE8_MEMBER(peplus_state::peplus_crtc_display_w)
416{
417417   UINT8 *videoram = m_videoram;
418418   videoram[m_vid_address] = data;
419419   m_palette_ram[m_vid_address] = m_io_port[1];
420420   m_palette_ram2[m_vid_address] = m_io_port[3];
421421
422   m_bg_tilemap->mark_tile_dirty(m_vid_address);
423
424   /* An access here triggers a device read !*/
425   m_crtc->register_r(space, 0);
426}
427
428WRITE8_MEMBER(peplus_state::peplus_duart_w)
422   m_bg_tilemap->mark_tile_dirty(m_vid_address);
423 
424   /* An access here triggers a device read !*/
425   m_crtc->register_r(space, 0);
426}
427 
428WRITE8_MEMBER(peplus_state::peplus_duart_w)
429429{
430430   // Used for Slot Accounting System Communication
431431}
r241521r241522
441441      peplus_load_superdata(bank_name);
442442   }
443443
444   m_cmos_ram[offset] = data;
445}
446
447WRITE8_MEMBER(peplus_state::peplus_output_bank_a_w)
448{
449   output_set_value("pe_bnka0",(data >> 0) & 1); /* Coin Lockout */
444   m_cmos_ram[offset] = data;
445}
446 
447WRITE8_MEMBER(peplus_state::peplus_output_bank_a_w)
448{
449   output_set_value("pe_bnka0",(data >> 0) & 1); /* Coin Lockout */
450450   output_set_value("pe_bnka1",(data >> 1) & 1); /* Diverter */
451451   output_set_value("pe_bnka2",(data >> 2) & 1); /* Bell */
452452   output_set_value("pe_bnka3",(data >> 3) & 1); /* N/A */
r241521r241522
495495
496496
497497/****************
498* Read Handlers *
499****************/
500
501READ8_MEMBER(peplus_state::peplus_duart_r)
502{
503   // Used for Slot Accounting System Communication
504   return 0x00;
505}
506
507/* Last Color in Every Palette is bgcolor */
508READ8_MEMBER(peplus_state::peplus_bgcolor_r)
509{
498* Read Handlers *
499****************/
500 
501READ8_MEMBER(peplus_state::peplus_duart_r)
502{
503   // Used for Slot Accounting System Communication
504   return 0x00;
505}
506 
507/* Last Color in Every Palette is bgcolor */
508READ8_MEMBER(peplus_state::peplus_bgcolor_r)
509{
510510   return m_palette->pen_color(15); // Return bgcolor from First Palette
511511}
512512
r241521r241522
969969static ADDRESS_MAP_START( peplus_map, AS_PROGRAM, 8, peplus_state )
970970   AM_RANGE(0x0000, 0xffff) AM_ROM AM_SHARE("prograram")
971971ADDRESS_MAP_END
972
973static ADDRESS_MAP_START( peplus_iomap, AS_IO, 8, peplus_state )
974   // Battery-backed RAM (0x1000-0x01fff Extended RAM for Superboards Only)
975   AM_RANGE(0x0000, 0x1fff) AM_RAM_WRITE(peplus_cmos_w) AM_SHARE("cmos")
976
977   // CRT Controller
978   AM_RANGE(0x2008, 0x2008) AM_WRITE(peplus_crtc_mode_w)
972 
973static ADDRESS_MAP_START( peplus_iomap, AS_IO, 8, peplus_state )
974   // Battery-backed RAM (0x1000-0x01fff Extended RAM for Superboards Only)
975   AM_RANGE(0x0000, 0x1fff) AM_RAM_WRITE(peplus_cmos_w) AM_SHARE("cmos")
976 
977   // CRT Controller
978   AM_RANGE(0x2008, 0x2008) AM_WRITE(peplus_crtc_mode_w)
979979   AM_RANGE(0x2080, 0x2080) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
980980   AM_RANGE(0x2081, 0x2081) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
981   AM_RANGE(0x2083, 0x2083) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(peplus_crtc_display_w)
981   AM_RANGE(0x2083, 0x2083) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(peplus_crtc_display_w)
982 
983   // Superboard Data
984   AM_RANGE(0x3000, 0x3fff) AM_RAM AM_SHARE("s3000_ram")
985 
986   // Sound and Dipswitches
987   AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("aysnd", ay8910_device, address_w)
988   AM_RANGE(0x4004, 0x4004) AM_READ_PORT("SW1")/* likely ay8910 input port, not direct */ AM_DEVWRITE("aysnd", ay8910_device, data_w)
989 
990   // Superboard Data
991   AM_RANGE(0x5000, 0x5fff) AM_RAM AM_SHARE("s5000_ram")
992 
993   // Background Color Latch
994   AM_RANGE(0x6000, 0x6000) AM_READ(peplus_bgcolor_r) AM_WRITE(peplus_bgcolor_w)
982995
983   // Superboard Data
984   AM_RANGE(0x3000, 0x3fff) AM_RAM AM_SHARE("s3000_ram")
985
986   // Sound and Dipswitches
987   AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("aysnd", ay8910_device, address_w)
988   AM_RANGE(0x4004, 0x4004) AM_READ_PORT("SW1")/* likely ay8910 input port, not direct */ AM_DEVWRITE("aysnd", ay8910_device, data_w)
989
990   // Superboard Data
991   AM_RANGE(0x5000, 0x5fff) AM_RAM AM_SHARE("s5000_ram")
992
993   // Background Color Latch
994   AM_RANGE(0x6000, 0x6000) AM_READ(peplus_bgcolor_r) AM_WRITE(peplus_bgcolor_w)
995
996996   // Bogus Location for Video RAM
997   AM_RANGE(0x06001, 0x06400) AM_RAM AM_SHARE("videoram")
997   AM_RANGE(0x06001, 0x06400) AM_RAM AM_SHARE("videoram")
998 
999   // Superboard Data
1000   AM_RANGE(0x7000, 0x7fff) AM_RAM AM_SHARE("s7000_ram")
1001 
1002   // Input Bank A, Output Bank C
1003   AM_RANGE(0x8000, 0x8000) AM_READ(peplus_input_bank_a_r) AM_WRITE(peplus_output_bank_c_w)
9981004
999   // Superboard Data
1000   AM_RANGE(0x7000, 0x7fff) AM_RAM AM_SHARE("s7000_ram")
1001
1002   // Input Bank A, Output Bank C
1003   AM_RANGE(0x8000, 0x8000) AM_READ(peplus_input_bank_a_r) AM_WRITE(peplus_output_bank_c_w)
1004
10051005   // Drop Door, I2C EEPROM Writes
10061006   AM_RANGE(0x9000, 0x9000) AM_READ(peplus_dropdoor_r) AM_WRITE(i2c_nvram_w)
10071007
10081008   // Input Banks B & C, Output Bank B
1009   AM_RANGE(0xa000, 0xa000) AM_READ(peplus_input0_r) AM_WRITE(peplus_output_bank_b_w)
1010
1011   // Superboard Data
1012   AM_RANGE(0xb000, 0xbfff) AM_RAM AM_SHARE("sb000_ram")
1013
1014   // Output Bank A
1015   AM_RANGE(0xc000, 0xc000) AM_READ(peplus_watchdog_r) AM_WRITE(peplus_output_bank_a_w)
1016
1017   // Superboard Data
1018   AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("sd000_ram")
1019
1020   // DUART
1021   AM_RANGE(0xe000, 0xe00f) AM_READWRITE(peplus_duart_r, peplus_duart_w)
1022
1023   // Superboard Data
1024   AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("sf000_ram")
1025
1026   /* Ports start here */
1027   AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P3) AM_RAM AM_SHARE("io_port")
1028ADDRESS_MAP_END
1029
1030
1009   AM_RANGE(0xa000, 0xa000) AM_READ(peplus_input0_r) AM_WRITE(peplus_output_bank_b_w)
1010 
1011   // Superboard Data
1012   AM_RANGE(0xb000, 0xbfff) AM_RAM AM_SHARE("sb000_ram")
1013 
1014   // Output Bank A
1015   AM_RANGE(0xc000, 0xc000) AM_READ(peplus_watchdog_r) AM_WRITE(peplus_output_bank_a_w)
1016 
1017   // Superboard Data
1018   AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("sd000_ram")
1019 
1020   // DUART
1021   AM_RANGE(0xe000, 0xe00f) AM_READWRITE(peplus_duart_r, peplus_duart_w)
1022 
1023   // Superboard Data
1024   AM_RANGE(0xf000, 0xffff) AM_RAM AM_SHARE("sf000_ram")
1025 
1026   /* Ports start here */
1027   AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P3) AM_RAM AM_SHARE("io_port")
1028ADDRESS_MAP_END
1029 
1030 
10311031/*************************
10321032*      Input ports       *
10331033*************************/


Previous 199869 Revisions Next


© 1997-2024 The MAME Team