--- np2/i286x/Attic/i286.h 2003/10/16 17:57:16 1.1 +++ np2/i286x/Attic/i286.h 2003/10/17 07:17:20 1.2 @@ -41,7 +41,7 @@ typedef struct { BYTE flag_h; BYTE ip_l; BYTE ip_h; -} I286REG_BYTE; +} I286REG8; typedef struct { UINT16 ax; @@ -58,14 +58,21 @@ typedef struct { UINT16 ds; UINT16 flag; UINT16 ip; -} I286REG_WORD; +} I286REG16; + +typedef struct { + UINT16 limit; + UINT16 base; + BYTE base24; + BYTE reserved; +} I286DTR; -typedef union { - I286REG_BYTE b; - I286REG_WORD w; -} I286REGS; typedef struct { + union { + I286REG8 b; + I286REG16 w; + } r; UINT32 es_base; UINT32 cs_base; UINT32 ss_base; @@ -74,73 +81,66 @@ typedef struct { UINT32 ds_fix; UINT16 prefix; BYTE trap; - BYTE reserved; + BYTE cpu_type; UINT32 pf_semaphore; UINT32 repbak; UINT32 inport; BYTE prefetchque[4]; - BYTE cpu_type; -} I286STAT; - -typedef struct { - UINT16 limit; - UINT16 base; - BYTE base24; - BYTE reserved; -} I286DTR; + I286DTR GDTR; + I286DTR IDTR; + UINT16 MSW; +} I286REG; #ifdef __cplusplus extern "C" { #endif -extern I286REGS i286r; -extern I286STAT i286s; -extern I286DTR GDTR; -extern I286DTR IDTR; -extern UINT16 MSW; +extern I286REG i286reg; extern const BYTE iflags[]; + #define I286_MEM mem -#define I286_REG i286r -#define I286_SEGREG i286r.w.es +#define I286_REG i286reg.r +#define I286_SEGREG i286reg.r.w.es -#define I286_AX i286r.w.ax -#define I286_BX i286r.w.bx -#define I286_CX i286r.w.cx -#define I286_DX i286r.w.dx -#define I286_SI i286r.w.si -#define I286_DI i286r.w.di -#define I286_BP i286r.w.bp -#define I286_SP i286r.w.sp -#define I286_CS i286r.w.cs -#define I286_DS i286r.w.ds -#define I286_ES i286r.w.es -#define I286_SS i286r.w.ss -#define I286_IP i286r.w.ip - -#define SEG_BASE i286s.es_base -#define ES_BASE i286s.es_base -#define CS_BASE i286s.cs_base -#define SS_BASE i286s.ss_base -#define DS_BASE i286s.ds_base -#define SS_FIX i286s.ss_fix -#define DS_FIX i286s.ds_fix - -#define I286_AL i286r.b.al -#define I286_BL i286r.b.bl -#define I286_CL i286r.b.cl -#define I286_DL i286r.b.dl -#define I286_AH i286r.b.ah -#define I286_BH i286r.b.bh -#define I286_CH i286r.b.ch -#define I286_DH i286r.b.dh - -#define I286_FLAG i286r.w.flag -#define I286_FLAGL i286r.b.flag_l -#define I286_FLAGH i286r.b.flag_h -#define I286_TRAP i286s.trap +#define I286_AX i286reg.r.w.ax +#define I286_BX i286reg.r.w.bx +#define I286_CX i286reg.r.w.cx +#define I286_DX i286reg.r.w.dx +#define I286_SI i286reg.r.w.si +#define I286_DI i286reg.r.w.di +#define I286_BP i286reg.r.w.bp +#define I286_SP i286reg.r.w.sp +#define I286_CS i286reg.r.w.cs +#define I286_DS i286reg.r.w.ds +#define I286_ES i286reg.r.w.es +#define I286_SS i286reg.r.w.ss +#define I286_IP i286reg.r.w.ip + +#define SEG_BASE i286reg.es_base +#define ES_BASE i286reg.es_base +#define CS_BASE i286reg.cs_base +#define SS_BASE i286reg.ss_base +#define DS_BASE i286reg.ds_base +#define SS_FIX i286reg.ss_fix +#define DS_FIX i286reg.ds_fix + +#define I286_AL i286reg.r.b.al +#define I286_BL i286reg.r.b.bl +#define I286_CL i286reg.r.b.cl +#define I286_DL i286reg.r.b.dl +#define I286_AH i286reg.r.b.ah +#define I286_BH i286reg.r.b.bh +#define I286_CH i286reg.r.b.ch +#define I286_DH i286reg.r.b.dh + +#define I286_FLAG i286reg.r.w.flag +#define I286_FLAGL i286reg.r.b.flag_l +#define I286_FLAGH i286reg.r.b.flag_h +#define I286_TRAP i286reg.trap +#define I286_OV i286reg.ovflag enum { C_FLAG = 0x0001, @@ -154,12 +154,12 @@ enum { O_FLAG = 0x0800 }; -#define CPUTYPE i286s.cpu_type +#define CPUTYPE i286reg.cpu_type #define CPUTYPE_V30 0x01 // ver0.28 -#define REPPOSBAK i286s.repbak -#define PREFIX_SMP i286s.pf_semaphore +#define REPPOSBAK i286reg.repbak +#define PREFIX_SMP i286reg.pf_semaphore #define isI286DI (!(I286_FLAG & I_FLAG)) #define isI286EI (I286_FLAG & I_FLAG)