--- np2/i286c/i286c.c 2004/01/25 05:41:28 1.23 +++ np2/i286c/i286c.c 2005/03/05 06:02:29 1.27 @@ -4,8 +4,11 @@ #include "v30patch.h" #include "pccore.h" #include "iocore.h" -#include "dmap.h" +#include "dmax86.h" #include "i286c.mcr" +#if defined(ENABLE_TRAP) +#include "steptrap.h" +#endif I286CORE i286core; @@ -180,9 +183,12 @@ void i286c_shut(void) { void i286c_setextsize(UINT32 size) { if (CPU_EXTMEMSIZE != size) { - _MFREE(CPU_EXTMEM); + if (CPU_EXTMEM) { + _MFREE(CPU_EXTMEM); + CPU_EXTMEM = NULL; + } if (size) { - CPU_EXTMEM = (BYTE *)_MALLOC(size + 16, "EXTMEM"); + CPU_EXTMEM = (UINT8 *)_MALLOC(size + 16, "EXTMEM"); if (CPU_EXTMEM == NULL) { size = 0; } @@ -197,7 +203,7 @@ void i286c_setextsize(UINT32 size) { void i286c_setemm(UINT frame, UINT32 addr) { - BYTE *ptr; + UINT8 *ptr; frame &= 3; if (addr < USE_HIMEM) { @@ -215,7 +221,7 @@ void i286c_setemm(UINT frame, UINT32 add void CPUCALL i286c_intnum(UINT vect, REG16 IP) { -const BYTE *ptr; +const UINT8 *ptr; REGPUSH0(REAL_FLAGREG) REGPUSH0(I286_CS) @@ -234,7 +240,7 @@ const BYTE *ptr; void CPUCALL i286c_interrupt(REG8 vect) { UINT op; -const BYTE *ptr; +const UINT8 *ptr; op = i286_memoryread(I286_IP + CS_BASE); if (op == 0xf4) { // hlt @@ -260,23 +266,32 @@ void i286c(void) { if (I286_TRAP) { do { +#if defined(ENABLE_TRAP) + steptrap(CPU_CS, CPU_IP); +#endif GET_PCBYTE(opcode); i286op[opcode](); if (I286_TRAP) { i286c_interrupt(1); } - dmap_i286(); + dmax86(); } while(I286_REMCLOCK > 0); } else if (dmac.working) { do { +#if defined(ENABLE_TRAP) + steptrap(CPU_CS, CPU_IP); +#endif GET_PCBYTE(opcode); i286op[opcode](); - dmap_i286(); + dmax86(); } while(I286_REMCLOCK > 0); } else { do { +#if defined(ENABLE_TRAP) + steptrap(CPU_CS, CPU_IP); +#endif GET_PCBYTE(opcode); i286op[opcode](); } while(I286_REMCLOCK > 0); @@ -297,14 +312,14 @@ void i286c_step(void) { if (I286_OV) { I286_FLAG |= (O_FLAG); } - dmap_i286(); + dmax86(); } // ---- test #if defined(I286C_TEST) -BYTE BYTESZPF(UINT r) { +UINT8 BYTESZPF(UINT r) { if (r & (~0xff)) { TRACEOUT(("BYTESZPF bound error: %x", r)); @@ -312,7 +327,7 @@ BYTE BYTESZPF(UINT r) { return(iflags[r & 0xff]); } -BYTE BYTESZPCF(UINT r) { +UINT8 BYTESZPCF(UINT r) { if (r & (~0x1ff)) { TRACEOUT(("BYTESZPCF bound error: %x", r)); @@ -320,10 +335,10 @@ BYTE BYTESZPCF(UINT r) { return(iflags[r & 0x1ff]); } -BYTE WORDSZPF(UINT32 r) { +UINT8 WORDSZPF(UINT32 r) { - BYTE f1; - BYTE f2; + UINT8 f1; + UINT8 f2; if (r & (~0xffff)) { TRACEOUT(("WORDSZPF bound error: %x", r)); @@ -338,10 +353,10 @@ BYTE WORDSZPF(UINT32 r) { return(f1); } -BYTE WORDSZPCF(UINT32 r) { +UINT8 WORDSZPCF(UINT32 r) { - BYTE f1; - BYTE f2; + UINT8 f1; + UINT8 f2; if ((r & 0xffff0000) && (!(r & 0x00010000))) { TRACEOUT(("WORDSZPCF bound error: %x", r));