--- np2/i286c/cpucore.h 2004/01/23 15:05:05 1.14 +++ np2/i286c/cpucore.h 2005/02/04 05:32:23 1.19 @@ -12,7 +12,7 @@ #error : not support CPUCORE_IA32 #endif -#if !defined(CPUDEBUG) +#if 1 // !defined(CPUDEBUG) enum { I286_MEMREADMAX = 0xa4000, I286_MEMWRITEMAX = 0xa0000 @@ -179,6 +179,7 @@ typedef struct { typedef struct { // for ver0.73 BYTE *ext; UINT32 extsize; + BYTE *ems[4]; UINT32 inport; #if defined(CPUSTRUC_MEMWAIT) UINT8 tramwait; @@ -202,8 +203,11 @@ extern I286CORE i286core; extern const UINT8 iflags[]; void i286c_initialize(void); +void i286c_deinitialize(void); void i286c_reset(void); void i286c_shut(void); +void i286c_setextsize(UINT32 size); +void i286c_setemm(UINT frame, UINT32 addr); void CPUCALL i286c_interrupt(REG8 vect); @@ -265,6 +269,7 @@ void v30c_step(void); #define CPU_EXTMEM i286core.e.ext #define CPU_EXTMEMSIZE i286core.e.extsize #define CPU_INPADRS i286core.e.inport +#define CPU_EMSPTR i286core.e.ems #define CPU_TYPE i286core.s.cpu_type @@ -281,14 +286,18 @@ void v30c_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 i286c_initialize -#define CPU_DEINITIALIZE() -#define CPU_RESET i286c_reset -#define CPU_CLEARPREFETCH() -#define CPU_INTERRUPT(v) i286c_interrupt(v) -#define CPU_EXEC i286c -#define CPU_EXECV30 v30c -#define CPU_SHUT i286c_shut -#define CPU_SETEXTMEM(s) +#define CPU_INITIALIZE i286c_initialize +#define CPU_DEINITIALIZE i286c_deinitialize +#define CPU_RESET i286c_reset +#define CPU_CLEARPREFETCH() +#define CPU_INTERRUPT(vect, soft) i286c_interrupt(vect) +#define CPU_EXEC i286c +#define CPU_EXECV30 v30c +#define CPU_SHUT i286c_shut +#define CPU_SETEXTSIZE(size) i286c_setextsize((UINT32)(size) << 20) +#define CPU_SETEMM(frame, addr) i286c_setemm(frame, addr) + +#define CPU_STEPEXEC i286c_step