--- np2/i286x/cpucore.h 2004/01/05 14:30:34 1.9 +++ np2/i286x/cpucore.h 2005/02/07 14:46:11 1.15 @@ -163,7 +163,7 @@ typedef struct { UINT16 prefix; UINT8 trap; UINT8 resetreq; // ver0.72 - BYTE prefetchque[4]; + UINT8 prefetchque[4]; I286DTR GDTR; UINT16 MSW; I286DTR IDTR; @@ -182,8 +182,9 @@ typedef struct { } I286STAT; typedef struct { // for ver0.73 - BYTE *ext; + UINT8 *ext; UINT32 extsize; + UINT8 *ems[4]; UINT32 repbak; UINT32 inport; } I286EXT; @@ -202,11 +203,14 @@ extern I286CORE i286core; extern const UINT8 iflags[]; void i286x_initialize(void); +void i286x_deinitialize(void); void i286x_reset(void); void i286x_shut(void); void i286x_resetprefetch(void); +void i286x_setextsize(UINT32 size); +void i286x_setemm(UINT frame, UINT32 addr); -void CPUCALL i286x_interrupt(BYTE vect); +void CPUCALL i286x_interrupt(UINT8 vect); void i286x(void); void i286x_step(void); @@ -275,12 +279,18 @@ void v30x_step(void); i286core.s.trap = 0; #define CPU_STI i286core.s.r.w.flag |= I_FLAG; \ i286core.s.trap = (i286core.s.r.w.flag >> 8) & 1; +#define CPU_A20EN(en) CPU_ADRSMASK = (en)?0xfffffff:0x000fffff; -#define CPU_INITIALIZE i286x_initialize -#define CPU_RESET i286x_reset -#define CPU_CLEARPREFETCH i286x_resetprefetch -#define CPU_INTERRUPT(v) i286x_interrupt(v) -#define CPU_EXEC i286x -#define CPU_EXECV30 v30x -#define CPU_SHUT i286x_shut +#define CPU_INITIALIZE i286x_initialize +#define CPU_DEINITIALIZE i286x_deinitialize +#define CPU_RESET i286x_reset +#define CPU_CLEARPREFETCH i286x_resetprefetch +#define CPU_INTERRUPT(vect, soft) i286x_interrupt(vect) +#define CPU_EXEC i286x +#define CPU_EXECV30 v30x +#define CPU_SHUT i286x_shut +#define CPU_SETEXTSIZE(size) i286x_setextsize((UINT32)(size) << 20) +#define CPU_SETEMM(frame, addr) i286x_setemm(frame, addr) + +#define CPU_STEPEXEC i286x_step