--- np2/i286c/i286c.h 2003/10/17 11:10:02 1.3 +++ np2/i286c/i286c.h 2003/12/26 02:02:09 1.14 @@ -1,37 +1,87 @@ +#define INTR_FAST + +// #define I286C_TEST +#if defined(I286C_TEST) +#undef MEMOPTIMIZE +#endif + + +#define I286_STAT i286core.s.r + +#define I286_REG i286core.s.r +#define I286_SEGREG i286core.s.r.w.es + +#define I286_AX i286core.s.r.w.ax +#define I286_BX i286core.s.r.w.bx +#define I286_CX i286core.s.r.w.cx +#define I286_DX i286core.s.r.w.dx +#define I286_SI i286core.s.r.w.si +#define I286_DI i286core.s.r.w.di +#define I286_BP i286core.s.r.w.bp +#define I286_SP i286core.s.r.w.sp +#define I286_CS i286core.s.r.w.cs +#define I286_DS i286core.s.r.w.ds +#define I286_ES i286core.s.r.w.es +#define I286_SS i286core.s.r.w.ss +#define I286_IP i286core.s.r.w.ip + +#define SEG_BASE i286core.s.es_base +#define ES_BASE i286core.s.es_base +#define CS_BASE i286core.s.cs_base +#define SS_BASE i286core.s.ss_base +#define DS_BASE i286core.s.ds_base +#define SS_FIX i286core.s.ss_fix +#define DS_FIX i286core.s.ds_fix + +#define I286_AL i286core.s.r.b.al +#define I286_BL i286core.s.r.b.bl +#define I286_CL i286core.s.r.b.cl +#define I286_DL i286core.s.r.b.dl +#define I286_AH i286core.s.r.b.ah +#define I286_BH i286core.s.r.b.bh +#define I286_CH i286core.s.r.b.ch +#define I286_DH i286core.s.r.b.dh + +#define I286_FLAG i286core.s.r.w.flag +#define I286_FLAGL i286core.s.r.b.flag_l +#define I286_FLAGH i286core.s.r.b.flag_h +#define I286_TRAP i286core.s.trap +#define I286_OV i286core.s.ovflag + +#define I286_GDTR i286core.s.GDTR +#define I286_IDTR i286core.s.IDTR +#define I286_LDTR i286core.s.LDTR +#define I286_LDTRC i286core.s.LDTRC +#define I286_TR i286core.s.TR +#define I286_TRC i286core.s.TRC +#define I286_MSW i286core.s.MSW + +#define I286_REMCLOCK i286core.s.remainclock +#define I286_BASECLOCK i286core.s.baseclock +#define I286_CLOCK i286core.s.clock +#define I286_ADRSMASK i286core.s.adrsmask +#define I286_INPADRS i286core.s.inport + +#define I286_PREFIX i286core.s.prefix + + #define I286FN static void -#define I286_P static void #define I286EXT void typedef void (*I286OP)(void); -typedef UINT32 (*CALCEA)(void); -typedef UINT16 (*CALCLEA)(void); -typedef UINT16 (*GETLEA)(void); - -extern UINT32 EA_FIX; -extern BYTE *reg8_b53[256]; -extern BYTE *reg8_b20[256]; -extern UINT16 *reg16_b53[256]; -extern UINT16 *reg16_b20[256]; -extern BYTE szpcflag[0x200]; -extern BYTE szpflag_w[0x10000]; -extern CALCEA c_calc_ea_dst[]; -extern CALCLEA c_calc_lea[]; -extern GETLEA c_get_ea[]; -extern void CPUCALL i286_intnum(UINT vect, UINT16 IP); +extern void CPUCALL i286c_intnum(UINT vect, REG16 IP); +extern UINT32 i286c_selector(UINT sel); +#if !defined(MEMOPTIMIZE) || (MEMOPTIMIZE < 2) +extern void i286cea_initialize(void); +#endif extern const I286OP i286op[]; extern const I286OP i286op_repe[]; extern const I286OP i286op_repne[]; - -extern const CALCEA i286c_ea_dst_tbl[]; -extern const CALCLEA i286c_lea_tbl[]; -extern const GETLEA i286c_ea_tbl[]; - - #define I286_0F static void CPUCALL typedef void (CPUCALL * I286OP_0F)(UINT op); @@ -39,7 +89,7 @@ I286EXT i286c_cts(void); #define I286_8X static void CPUCALL -typedef void (CPUCALL * I286OP8XREG8)(BYTE *p); +typedef void (CPUCALL * I286OP8XREG8)(UINT8 *p); typedef void (CPUCALL * I286OP8XEXT8)(UINT32 madr); typedef void (CPUCALL * I286OP8XREG16)(UINT16 *p, UINT32 src); typedef void (CPUCALL * I286OP8XEXT16)(UINT32 madr, UINT32 src); @@ -51,14 +101,14 @@ extern const I286OP8XEXT16 c_op8xext16_t #define I286_SFT static void CPUCALL -typedef void (CPUCALL * I286OPSFTR8)(BYTE *p); +typedef void (CPUCALL * I286OPSFTR8)(UINT8 *p); typedef void (CPUCALL * I286OPSFTE8)(UINT32 madr); typedef void (CPUCALL * I286OPSFTR16)(UINT16 *p); typedef void (CPUCALL * I286OPSFTE16)(UINT32 madr); -typedef void (CPUCALL * I286OPSFTR8CL)(BYTE *p, BYTE cl); -typedef void (CPUCALL * I286OPSFTE8CL)(UINT32 madr, BYTE cl); -typedef void (CPUCALL * I286OPSFTR16CL)(UINT16 *p, BYTE cl); -typedef void (CPUCALL * I286OPSFTE16CL)(UINT32 madr, BYTE cl); +typedef void (CPUCALL * I286OPSFTR8CL)(UINT8 *p, REG8 cl); +typedef void (CPUCALL * I286OPSFTE8CL)(UINT32 madr, REG8 cl); +typedef void (CPUCALL * I286OPSFTR16CL)(UINT16 *p, REG8 cl); +typedef void (CPUCALL * I286OPSFTE16CL)(UINT32 madr, REG8 cl); extern const I286OPSFTR8 sft_r8_table[]; extern const I286OPSFTE8 sft_e8_table[];