|
|
| version 1.5, 2003/12/08 06:24:03 | version 1.11, 2004/03/25 10:41:13 |
|---|---|
| Line 2 | Line 2 |
| #include "cpucore.h" | #include "cpucore.h" |
| #include "pccore.h" | #include "pccore.h" |
| #include "iocore.h" | #include "iocore.h" |
| #include "sound.h" | |
| #include "fmboard.h" | |
| // ¸å¤ÇÄ´À° | |
| #if defined(CPUCORE_IA32) | |
| DWORD cpumem_addrmask = 0xfffff; | |
| #endif | |
| // ---- I/O | // ---- I/O |
| static void IOOUTCALL cpuio_of0(UINT port, REG8 dat) { | static void IOOUTCALL cpuio_of0(UINT port, REG8 dat) { |
| CPU_ADRSMASK = 0x0fffff; | #if defined(TRACE) |
| #if defined(CPUCORE_IA32) | if (CPU_MSW & 1) { |
| cpumem_addrmask = 0xfffff; | TRACEOUT(("80286 ProtectMode Disable")); |
| } | |
| #endif | #endif |
| epsonio.cpumode = (CPU_MSW & 1)?'P':'R'; | |
| CPU_A20EN(FALSE); | |
| CPU_RESETREQ = 1; | CPU_RESETREQ = 1; |
| CPU_INTERRUPT(0x02); | |
| nevent_forceexit(); | nevent_forceexit(); |
| (void)port; | (void)port; |
| (void)dat; | (void)dat; |
| Line 28 static void IOOUTCALL cpuio_of0(UINT por | Line 23 static void IOOUTCALL cpuio_of0(UINT por |
| static void IOOUTCALL cpuio_of2(UINT port, REG8 dat) { | static void IOOUTCALL cpuio_of2(UINT port, REG8 dat) { |
| CPU_ADRSMASK = 0x1fffff; | CPU_A20EN(TRUE); |
| #if defined(CPUCORE_IA32) | |
| cpumem_addrmask = 0xffffffff; | |
| #endif | |
| (void)port; | (void)port; |
| (void)dat; | (void)dat; |
| } | } |
| Line 40 static REG8 IOINPCALL cpuio_if0(UINT por | Line 32 static REG8 IOINPCALL cpuio_if0(UINT por |
| BYTE ret; | BYTE ret; |
| if (!(usesound & 0x80)) { | if (!(pccore.sound & 0x80)) { |
| ret = 0x00; | ret = 0x00; |
| } | } |
| else { // for AMD-98 | else { // for AMD-98 |
| Line 54 static REG8 IOINPCALL cpuio_if2(UINT por | Line 46 static REG8 IOINPCALL cpuio_if2(UINT por |
| REG8 ret; | REG8 ret; |
| #if 1 | |
| ret = 0xff; | ret = 0xff; |
| ret -= (REG8)((CPU_ADRSMASK >> 20) & 1); | ret -= (REG8)((CPU_ADRSMASK >> 20) & 1); |
| #else | |
| ret = 0xfe; | |
| if (CPU_ADRSMASK != 0x1fffff) { | |
| ret++; | |
| } | |
| #endif | |
| (void)port; | (void)port; |
| return(ret); | return(ret); |
| } | } |
| Line 73 static void IOOUTCALL cpuio_of6(UINT por | Line 58 static void IOOUTCALL cpuio_of6(UINT por |
| switch(dat) { | switch(dat) { |
| case 0x02: | case 0x02: |
| CPU_ADRSMASK = 0x1fffff; | CPU_A20EN(TRUE); |
| #if defined(CPUCORE_IA32) | |
| cpumem_addrmask = 0xffffffff; | |
| #endif | |
| break; | break; |
| case 0x03: | case 0x03: |
| CPU_ADRSMASK = 0x0fffff; | CPU_A20EN(FALSE); |
| #if defined(CPUCORE_IA32) | |
| cpumem_addrmask = 0xfffff; | |
| #endif | |
| break; | break; |
| } | } |
| (void)port; | (void)port; |
| Line 94 static REG8 IOINPCALL cpuio_if6(UINT por | Line 73 static REG8 IOINPCALL cpuio_if6(UINT por |
| REG8 ret; | REG8 ret; |
| ret = 0x00; | ret = 0x00; |
| if (CPU_ADRSMASK != 0x1fffff) { | if (!(CPU_ADRSMASK & (1 << 20))) { |
| ret |= 0x01; | ret |= 0x01; |
| } | } |
| if (nmiio.enable) { | if (nmiio.enable) { |