#pragma once

#ifndef __INSTR86_H__
#define __INSTR86_H__

/****************************************************************************
*             real mode i286 emulator v1.4 by Fabrice Frances               *
*               (initial work based on David Hedley's pcemu)                *
****************************************************************************/

// file will be included in all cpu variants
// put non i86 instructions in own files (i286, i386, nec)
// function renaming will be added when necessary
// timing value should move to separate array

//void IX86_OPS::PREFIX86(_add_br8)();
//void IX86_OPS::PREFIX86(_add_wr16)();
//void IX86_OPS::PREFIX86(_add_r8b)();
//void IX86_OPS::PREFIX86(_add_r16w)();
//void IX86_OPS::PREFIX86(_add_ald8)();
//void IX86_OPS::PREFIX86(_add_axd16)();
//void IX86_OPS::PREFIX86(_push_es)();
//void IX86_OPS::PREFIX86(_pop_es)();
//void IX86_OPS::PREFIX86(_or_br8)();
//void IX86_OPS::PREFIX86(_or_r8b)();
//void IX86_OPS::PREFIX86(_or_wr16)();
//void IX86_OPS::PREFIX86(_or_r16w)();
//void IX86_OPS::PREFIX86(_or_ald8)();
//void IX86_OPS::PREFIX86(_or_axd16)();
//void IX86_OPS::PREFIX86(_push_cs)();
//#ifndef I80286
//void IX86_OPS::PREFIX86(_pop_cs)();
//#endif
//void IX86_OPS::PREFIX86(_adc_br8)();
//void IX86_OPS::PREFIX86(_adc_wr16)();
//void IX86_OPS::PREFIX86(_adc_r8b)();
//void IX86_OPS::PREFIX86(_adc_r16w)();
//void IX86_OPS::PREFIX86(_adc_ald8)();
//void IX86_OPS::PREFIX86(_adc_axd16)();
//void IX86_OPS::PREFIX86(_push_ss)();
//void IX86_OPS::PREFIX86(_pop_ss)();
//void IX86_OPS::PREFIX86(_sbb_br8)();
//void IX86_OPS::PREFIX86(_sbb_wr16)();
//void IX86_OPS::PREFIX86(_sbb_r8b)();
//void IX86_OPS::PREFIX86(_sbb_r16w)();
//void IX86_OPS::PREFIX86(_sbb_ald8)();
//void IX86_OPS::PREFIX86(_sbb_axd16)();
//void IX86_OPS::PREFIX86(_push_ds)();
//void IX86_OPS::PREFIX86(_pop_ds)();
//void IX86_OPS::PREFIX86(_and_br8)();
//void IX86_OPS::PREFIX86(_and_r8b)();
//void IX86_OPS::PREFIX86(_and_wr16)();
//void IX86_OPS::PREFIX86(_and_r16w)();
//void IX86_OPS::PREFIX86(_and_ald8)();
//void IX86_OPS::PREFIX86(_and_axd16)();
//void IX86_OPS::PREFIX86(_es)();
//void IX86_OPS::PREFIX86(_daa)();
//void IX86_OPS::PREFIX86(_sub_br8)();
//void IX86_OPS::PREFIX86(_sub_wr16)();
//void IX86_OPS::PREFIX86(_sub_r8b)();
//void IX86_OPS::PREFIX86(_sub_r16w)();
//void IX86_OPS::PREFIX86(_sub_ald8)();
//void IX86_OPS::PREFIX86(_sub_axd16)();
//void IX86_OPS::PREFIX86(_cs)();
//void IX86_OPS::PREFIX86(_das)();
//void IX86_OPS::PREFIX86(_xor_br8)();
//void IX86_OPS::PREFIX86(_xor_r8b)();
//void IX86_OPS::PREFIX86(_xor_wr16)();
//void IX86_OPS::PREFIX86(_xor_r16w)();
//void IX86_OPS::PREFIX86(_xor_ald8)();
//void IX86_OPS::PREFIX86(_xor_axd16)();
//void IX86_OPS::PREFIX86(_ss)();
//void IX86_OPS::PREFIX86(_aaa)();
//void IX86_OPS::PREFIX86(_cmp_br8)();
//void IX86_OPS::PREFIX86(_cmp_wr16)();
//void IX86_OPS::PREFIX86(_cmp_r8b)();
//void IX86_OPS::PREFIX86(_cmp_r16w)();
//void IX86_OPS::PREFIX86(_cmp_ald8)();
//void IX86_OPS::PREFIX86(_cmp_axd16)();
//void IX86_OPS::PREFIX86(_ds)();
//void IX86_OPS::PREFIX86(_aas)();
//void IX86_OPS::PREFIX86(_inc_ax)();
//void IX86_OPS::PREFIX86(_inc_cx)();
//void IX86_OPS::PREFIX86(_inc_dx)();
//void IX86_OPS::PREFIX86(_inc_bx)();
//void IX86_OPS::PREFIX86(_inc_sp)();
//void IX86_OPS::PREFIX86(_inc_bp)();
//void IX86_OPS::PREFIX86(_inc_si)();
//void IX86_OPS::PREFIX86(_inc_di)();
//void IX86_OPS::PREFIX86(_dec_ax)();
//void IX86_OPS::PREFIX86(_dec_cx)();
//void IX86_OPS::PREFIX86(_dec_dx)();
//void IX86_OPS::PREFIX86(_dec_bx)();
//void IX86_OPS::PREFIX86(_dec_sp)();
//void IX86_OPS::PREFIX86(_dec_bp)();
//void IX86_OPS::PREFIX86(_dec_si)();
//void IX86_OPS::PREFIX86(_dec_di)();
//void IX86_OPS::PREFIX86(_push_ax)();
//void IX86_OPS::PREFIX86(_push_cx)();
//void IX86_OPS::PREFIX86(_push_dx)();
//void IX86_OPS::PREFIX86(_push_bx)();
//void IX86_OPS::PREFIX86(_push_sp)();
//void IX86_OPS::PREFIX86(_push_bp)();
//void IX86_OPS::PREFIX86(_push_si)();
//void IX86_OPS::PREFIX86(_push_di)();
//void IX86_OPS::PREFIX86(_pop_ax)();
//void IX86_OPS::PREFIX86(_pop_cx)();
//void IX86_OPS::PREFIX86(_pop_dx)();
//void IX86_OPS::PREFIX86(_pop_bx)();
//void IX86_OPS::PREFIX86(_pop_sp)();
//void IX86_OPS::PREFIX86(_pop_bp)();
//void IX86_OPS::PREFIX86(_pop_si)();
//void IX86_OPS::PREFIX86(_pop_di)();
//void IX86_OPS::PREFIX86(_jo)();
//void IX86_OPS::PREFIX86(_jno)();
//void IX86_OPS::PREFIX86(_jb)();
//void IX86_OPS::PREFIX86(_jnb)();
//void IX86_OPS::PREFIX86(_jz)();
//void IX86_OPS::PREFIX86(_jnz)();
//void IX86_OPS::PREFIX86(_jbe)();
//void IX86_OPS::PREFIX86(_jnbe)();
//void IX86_OPS::PREFIX86(_js)();
//void IX86_OPS::PREFIX86(_jns)();
//void IX86_OPS::PREFIX86(_jp)();
//void IX86_OPS::PREFIX86(_jnp)();
//void IX86_OPS::PREFIX86(_jl)();
//void IX86_OPS::PREFIX86(_jnl)();
//void IX86_OPS::PREFIX86(_jle)();
//void IX86_OPS::PREFIX86(_jnle)();
//void IX86_OPS::PREFIX86(_80pre)();
//void IX86_OPS::PREFIX86(_82pre)();
//void IX86_OPS::PREFIX86(_81pre)();
//void IX86_OPS::PREFIX86(_83pre)();
//void IX86_OPS::PREFIX86(_test_br8)();
//void IX86_OPS::PREFIX86(_test_wr16)();
//void IX86_OPS::PREFIX86(_xchg_br8)();
//void IX86_OPS::PREFIX86(_xchg_wr16)();
//void IX86_OPS::PREFIX86(_mov_br8)();
//void IX86_OPS::PREFIX86(_mov_r8b)();
//void IX86_OPS::PREFIX86(_mov_wr16)();
//void IX86_OPS::PREFIX86(_mov_r16w)();
//void IX86_OPS::PREFIX86(_mov_wsreg)();
//void IX86_OPS::PREFIX86(_lea)();
//void IX86_OPS::PREFIX86(_mov_sregw)();
//void IX86_OPS::PREFIX86(_invalid)();
//#ifndef I80286
//void IX86_OPS::PREFIX86(_invalid_2b)();
//#endif
//void IX86_OPS::PREFIX86(_popw)();
//void IX86_OPS::PREFIX86(_nop)();
//void IX86_OPS::PREFIX86(_xchg_axcx)();
//void IX86_OPS::PREFIX86(_xchg_axdx)();
//void IX86_OPS::PREFIX86(_xchg_axbx)();
//void IX86_OPS::PREFIX86(_xchg_axsp)();
//void IX86_OPS::PREFIX86(_xchg_axbp)();
//void IX86_OPS::PREFIX86(_xchg_axsi)();
//void IX86_OPS::PREFIX86(_xchg_axdi)();
//void IX86_OPS::PREFIX86(_cbw)();
//void IX86_OPS::PREFIX86(_cwd)();
//void IX86_OPS::PREFIX86(_call_far)();
//void IX86_OPS::PREFIX86(_pushf)();
//void IX86_OPS::PREFIX86(_popf)();
//void IX86_OPS::PREFIX86(_sahf)();
//void IX86_OPS::PREFIX86(_lahf)();
//void IX86_OPS::PREFIX86(_mov_aldisp)();
//void IX86_OPS::PREFIX86(_mov_axdisp)();
//void IX86_OPS::PREFIX86(_mov_dispal)();
//void IX86_OPS::PREFIX86(_mov_dispax)();
//void IX86_OPS::PREFIX86(_movsb)();
//void IX86_OPS::PREFIX86(_movsw)();
//void IX86_OPS::PREFIX86(_cmpsb)();
//void IX86_OPS::PREFIX86(_cmpsw)();
//void IX86_OPS::PREFIX86(_test_ald8)();
//void IX86_OPS::PREFIX86(_test_axd16)();
//void IX86_OPS::PREFIX86(_stosb)();
//void IX86_OPS::PREFIX86(_stosw)();
//void IX86_OPS::PREFIX86(_lodsb)();
//void IX86_OPS::PREFIX86(_lodsw)();
//void IX86_OPS::PREFIX86(_scasb)();
//void IX86_OPS::PREFIX86(_scasw)();
//void IX86_OPS::PREFIX86(_mov_ald8)();
//void IX86_OPS::PREFIX86(_mov_cld8)();
//void IX86_OPS::PREFIX86(_mov_dld8)();
//void IX86_OPS::PREFIX86(_mov_bld8)();
//void IX86_OPS::PREFIX86(_mov_ahd8)();
//void IX86_OPS::PREFIX86(_mov_chd8)();
//void IX86_OPS::PREFIX86(_mov_dhd8)();
//void IX86_OPS::PREFIX86(_mov_bhd8)();
//void IX86_OPS::PREFIX86(_mov_axd16)();
//void IX86_OPS::PREFIX86(_mov_cxd16)();
//void IX86_OPS::PREFIX86(_mov_dxd16)();
//void IX86_OPS::PREFIX86(_mov_bxd16)();
//void IX86_OPS::PREFIX86(_mov_spd16)();
//void IX86_OPS::PREFIX86(_mov_bpd16)();
//void IX86_OPS::PREFIX86(_mov_sid16)();
//void IX86_OPS::PREFIX86(_mov_did16)();
//void IX86_OPS::PREFIX86(_ret_d16)();
//void IX86_OPS::PREFIX86(_ret)();
//void IX86_OPS::PREFIX86(_les_dw)();
//void IX86_OPS::PREFIX86(_lds_dw)();
//void IX86_OPS::PREFIX86(_mov_bd8)();
//void IX86_OPS::PREFIX86(_mov_wd16)();
//void IX86_OPS::PREFIX86(_retf_d16)();
//void IX86_OPS::PREFIX86(_retf)();
//void IX86_OPS::PREFIX86(_int3)();
//void IX86_OPS::PREFIX86(_int)();
//void IX86_OPS::PREFIX86(_into)();
//void IX86_OPS::PREFIX86(_iret)();
//void IX86_OPS::PREFIX86(_rotshft_b)();
//void IX86_OPS::PREFIX86(_rotshft_w)();
//void IX86_OPS::PREFIX86(_rotshft_bcl)();
//void IX86_OPS::PREFIX86(_rotshft_wcl)();
//void IX86_OPS::PREFIX86(_aam)();
//void IX86_OPS::PREFIX86(_aad)();
//void IX86_OPS::PREFIX86(_xlat)();
//void IX86_OPS::PREFIX86(_escape)();
//void IX86_OPS::PREFIX86(_loopne)();
//void IX86_OPS::PREFIX86(_loope)();
//void IX86_OPS::PREFIX86(_loop)();
//void IX86_OPS::PREFIX86(_jcxz)();
//void IX86_OPS::PREFIX86(_inal)();
//void IX86_OPS::PREFIX86(_inax)();
//void IX86_OPS::PREFIX86(_outal)();
//void IX86_OPS::PREFIX86(_outax)();
//void IX86_OPS::PREFIX86(_call_d16)();
//void IX86_OPS::PREFIX86(_jmp_d16)();
//void IX86_OPS::PREFIX86(_jmp_far)();
//void IX86_OPS::PREFIX86(_jmp_d8)();
//void IX86_OPS::PREFIX86(_inaldx)();
//void IX86_OPS::PREFIX86(_inaxdx)();
//void IX86_OPS::PREFIX86(_outdxal)();
//void IX86_OPS::PREFIX86(_outdxax)();
//void IX86_OPS::PREFIX86(_lock)();
//void IX86_OPS::PREFIX86(_repne)();
//void IX86_OPS::PREFIX86(_repe)();
//void IX86_OPS::PREFIX86(_hlt)();
//void IX86_OPS::PREFIX86(_cmc)();
//void IX86_OPS::PREFIX86(_f6pre)();
//void IX86_OPS::PREFIX86(_f7pre)();
//void IX86_OPS::PREFIX86(_clc)();
//void IX86_OPS::PREFIX86(_stc)();
//void IX86_OPS::PREFIX86(_cli)();
//void IX86_OPS::PREFIX86(_sti)();
//void IX86_OPS::PREFIX86(_cld)();
//void IX86_OPS::PREFIX86(_std)();
//void IX86_OPS::PREFIX86(_fepre)();
//void IX86_OPS::PREFIX86(_ffpre)();
//void IX86_OPS::PREFIX86(_wait)();

#endif /* __INSTR86_H__ */
