--- np2/i286c/i286c.c 2003/12/19 23:33:49 1.15 +++ np2/i286c/i286c.c 2004/01/08 16:29:56 1.22 @@ -94,9 +94,9 @@ const UINT8 iflags[512] = { // Z_FLA void i286c_initialize(void) { +#if !defined(MEMOPTIMIZE) || (MEMOPTIMIZE < 2) UINT i; - UINT bit; - REG8 f; +#endif #if !defined(MEMOPTIMIZE) || (MEMOPTIMIZE < 2) for (i=0; i<0x100; i++) { @@ -124,6 +124,8 @@ void i286c_initialize(void) { #if !defined(MEMOPTIMIZE) for (i=0; i<0x10000; i++) { + REG8 f; + UINT bit; f = P_FLAG; for (bit=0x80; bit; bit>>=1) { if (i & bit) { @@ -145,14 +147,26 @@ void i286c_initialize(void) { v30cinit(); } -void i286c_reset(void) { +static void i286c_initreg(void) { - ZeroMemory(&I286_STAT, sizeof(I286_STAT)); - I286_CS = 0x1fc0; - CS_BASE = 0x1fc00; + I286_CS = 0xf000; + CS_BASE = 0xf0000; + I286_IP = 0xfff0; I286_ADRSMASK = 0xfffff; } +void i286c_reset(void) { + + ZeroMemory(&i286core.s, sizeof(i286core.s)); + i286c_initreg(); +} + +void i286c_shut(void) { + + ZeroMemory(&i286core.s, offsetof(I286STAT, cpu_type)); + i286c_initreg(); +} + void CPUCALL i286c_intnum(UINT vect, REG16 IP) { const BYTE *ptr;