|
|
| version 1.22, 2004/01/08 16:29:56 | version 1.25, 2005/02/07 14:46:10 |
|---|---|
| Line 145 void i286c_initialize(void) { | Line 145 void i286c_initialize(void) { |
| i286cea_initialize(); | i286cea_initialize(); |
| #endif | #endif |
| v30cinit(); | v30cinit(); |
| ZeroMemory(&i286core, sizeof(i286core)); | |
| } | |
| void i286c_deinitialize(void) { | |
| if (CPU_EXTMEM) { | |
| _MFREE(CPU_EXTMEM); | |
| CPU_EXTMEM = NULL; | |
| CPU_EXTMEMSIZE = 0; | |
| } | |
| } | } |
| static void i286c_initreg(void) { | static void i286c_initreg(void) { |
| Line 167 void i286c_shut(void) { | Line 177 void i286c_shut(void) { |
| i286c_initreg(); | i286c_initreg(); |
| } | } |
| void i286c_setextsize(UINT32 size) { | |
| if (CPU_EXTMEMSIZE != size) { | |
| if (CPU_EXTMEM) { | |
| _MFREE(CPU_EXTMEM); | |
| CPU_EXTMEM = NULL; | |
| } | |
| if (size) { | |
| CPU_EXTMEM = (UINT8 *)_MALLOC(size + 16, "EXTMEM"); | |
| if (CPU_EXTMEM == NULL) { | |
| size = 0; | |
| } | |
| } | |
| CPU_EXTMEMSIZE = size; | |
| } | |
| i286core.e.ems[0] = mem + 0xc0000; | |
| i286core.e.ems[1] = mem + 0xc4000; | |
| i286core.e.ems[2] = mem + 0xc8000; | |
| i286core.e.ems[3] = mem + 0xcc000; | |
| } | |
| void i286c_setemm(UINT frame, UINT32 addr) { | |
| UINT8 *ptr; | |
| frame &= 3; | |
| if (addr < USE_HIMEM) { | |
| ptr = mem + addr; | |
| } | |
| else if ((addr - 0x100000 + 0x4000) <= CPU_EXTMEMSIZE) { | |
| ptr = CPU_EXTMEM + (addr - 0x100000); | |
| } | |
| else { | |
| ptr = mem + 0xc0000 + (frame << 14); | |
| } | |
| i286core.e.ems[frame] = ptr; | |
| } | |
| void CPUCALL i286c_intnum(UINT vect, REG16 IP) { | void CPUCALL i286c_intnum(UINT vect, REG16 IP) { |
| const BYTE *ptr; | const UINT8 *ptr; |
| REGPUSH0(REAL_FLAGREG) | REGPUSH0(REAL_FLAGREG) |
| REGPUSH0(I286_CS) | REGPUSH0(I286_CS) |
| Line 188 const BYTE *ptr; | Line 237 const BYTE *ptr; |
| void CPUCALL i286c_interrupt(REG8 vect) { | void CPUCALL i286c_interrupt(REG8 vect) { |
| UINT op; | UINT op; |
| const BYTE *ptr; | const UINT8 *ptr; |
| op = i286_memoryread(I286_IP + CS_BASE); | op = i286_memoryread(I286_IP + CS_BASE); |
| if (op == 0xf4) { // hlt | if (op == 0xf4) { // hlt |
| Line 258 void i286c_step(void) { | Line 307 void i286c_step(void) { |
| // ---- test | // ---- test |
| #if defined(I286C_TEST) | #if defined(I286C_TEST) |
| BYTE BYTESZPF(UINT r) { | UINT8 BYTESZPF(UINT r) { |
| if (r & (~0xff)) { | if (r & (~0xff)) { |
| TRACEOUT(("BYTESZPF bound error: %x", r)); | TRACEOUT(("BYTESZPF bound error: %x", r)); |
| Line 266 BYTE BYTESZPF(UINT r) { | Line 315 BYTE BYTESZPF(UINT r) { |
| return(iflags[r & 0xff]); | return(iflags[r & 0xff]); |
| } | } |
| BYTE BYTESZPCF(UINT r) { | UINT8 BYTESZPCF(UINT r) { |
| if (r & (~0x1ff)) { | if (r & (~0x1ff)) { |
| TRACEOUT(("BYTESZPCF bound error: %x", r)); | TRACEOUT(("BYTESZPCF bound error: %x", r)); |
| Line 274 BYTE BYTESZPCF(UINT r) { | Line 323 BYTE BYTESZPCF(UINT r) { |
| return(iflags[r & 0x1ff]); | return(iflags[r & 0x1ff]); |
| } | } |
| BYTE WORDSZPF(UINT32 r) { | UINT8 WORDSZPF(UINT32 r) { |
| BYTE f1; | UINT8 f1; |
| BYTE f2; | UINT8 f2; |
| if (r & (~0xffff)) { | if (r & (~0xffff)) { |
| TRACEOUT(("WORDSZPF bound error: %x", r)); | TRACEOUT(("WORDSZPF bound error: %x", r)); |
| Line 292 BYTE WORDSZPF(UINT32 r) { | Line 341 BYTE WORDSZPF(UINT32 r) { |
| return(f1); | return(f1); |
| } | } |
| BYTE WORDSZPCF(UINT32 r) { | UINT8 WORDSZPCF(UINT32 r) { |
| BYTE f1; | UINT8 f1; |
| BYTE f2; | UINT8 f2; |
| if ((r & 0xffff0000) && (!(r & 0x00010000))) { | if ((r & 0xffff0000) && (!(r & 0x00010000))) { |
| TRACEOUT(("WORDSZPCF bound error: %x", r)); | TRACEOUT(("WORDSZPCF bound error: %x", r)); |