|
|
| version 1.3, 2004/01/05 06:50:15 | version 1.5, 2004/01/13 16:32:16 |
|---|---|
| Line 31 | Line 31 |
| #include "cpu.h" | #include "cpu.h" |
| #include "memory.h" | #include "memory.h" |
| // ¤¢¤È¤Ç¡Ä | |
| // extern DWORD cpumem_addrmask; // -> CPU_STAT_ADRSMASK | |
| BYTE *cpumem = 0; | BYTE *cpumem = 0; |
| DWORD extmem_size = 0; | DWORD extmem_size = 0; |
| BYTE protectmem_size = 0; | BYTE protectmem_size = 0; |
| /* | /* |
| * initialize 1MB-16MB memory | * initialize 1MB-16MB memory |
| */ | */ |
| Line 511 cpu_memorywrite_d(DWORD address, DWORD v | Line 509 cpu_memorywrite_d(DWORD address, DWORD v |
| adr -= LOWMEM; | adr -= LOWMEM; |
| if (adr < extmem_size - 3) { | if (adr < extmem_size - 3) { |
| STOREINTELDWORD(cpumem + adr, value); | STOREINTELDWORD(cpumem + adr, value); |
| } else { | } else if (adr < extmem_size) { |
| ia32_panic("cpu_memorywrite_d: out of universe."); | cpu_memorywrite_w(adr, value & 0xffff); |
| cpu_memorywrite_w(adr + 2, (value >> 16) & 0xffff); | |
| } | } |
| } | } |
| } | } |
| Line 531 cpu_memorywrite_w(DWORD address, WORD va | Line 530 cpu_memorywrite_w(DWORD address, WORD va |
| adr -= LOWMEM; | adr -= LOWMEM; |
| if (adr < extmem_size - 1) { | if (adr < extmem_size - 1) { |
| STOREINTELWORD(cpumem + adr, value); | STOREINTELWORD(cpumem + adr, value); |
| } else { | } else if (adr == extmem_size - 1) { |
| ia32_panic("cpu_memorywrite_w: out of universe."); | cpumem[adr] = value & 0xff; |
| } | } |
| } | } |
| } | } |
| Line 548 cpu_memorywrite(DWORD address, BYTE valu | Line 547 cpu_memorywrite(DWORD address, BYTE valu |
| adr -= LOWMEM; | adr -= LOWMEM; |
| if (adr < extmem_size) { | if (adr < extmem_size) { |
| cpumem[adr] = value; | cpumem[adr] = value; |
| } else { | |
| ia32_panic("cpu_memorywrite: out of universe."); | |
| } | } |
| } | } |
| } | } |
| Line 570 cpu_memoryread_d(DWORD address) | Line 567 cpu_memoryread_d(DWORD address) |
| if (adr < extmem_size - 3) { | if (adr < extmem_size - 3) { |
| val = LOADINTELDWORD(cpumem + adr); | val = LOADINTELDWORD(cpumem + adr); |
| } else { | } else { |
| ia32_panic("cpu_memoryread_d: out of universe."); | val = cpu_memoryread_w(adr); |
| val = (DWORD)-1; | val |= (DWORD)cpu_memoryread_w(adr + 2) << 16; |
| } | } |
| } | } |
| return val; | return val; |
| Line 592 cpu_memoryread_w(DWORD address) | Line 589 cpu_memoryread_w(DWORD address) |
| adr -= LOWMEM; | adr -= LOWMEM; |
| if (adr < extmem_size - 1) { | if (adr < extmem_size - 1) { |
| val = LOADINTELWORD(cpumem + adr); | val = LOADINTELWORD(cpumem + adr); |
| } else if (adr == extmem_size - 1) { | |
| val = 0xff00 | cpumem[adr]; | |
| } else { | } else { |
| ia32_panic("cpu_memoryread_w: out of universe."); | |
| val = (WORD)-1; | val = (WORD)-1; |
| } | } |
| } | } |
| Line 613 cpu_memoryread(DWORD address) | Line 611 cpu_memoryread(DWORD address) |
| if (adr < extmem_size) { | if (adr < extmem_size) { |
| val = cpumem[adr]; | val = cpumem[adr]; |
| } else { | } else { |
| ia32_panic("cpu_memoryread: out of universe."); | |
| val = (BYTE)-1; | val = (BYTE)-1; |
| } | } |
| } | } |