Diff for /np2/i386c/ia32/cpu_mem.c between versions 1.2 and 1.4

version 1.2, 2003/12/11 15:03:16 version 1.4, 2004/01/07 14:49:10
Line 32 Line 32
 #include "memory.h"  #include "memory.h"
   
 // あとで…  // あとで…
 extern DWORD cpumem_addrmask;  // extern DWORD cpumem_addrmask;                // -> CPU_STAT_ADRSMASK
   
 BYTE *cpumem = 0;  BYTE *cpumem = 0;
 DWORD extmem_size = 0;  DWORD extmem_size = 0;
Line 500  cpu_vmemorywrite_d(int idx, DWORD madr,  Line 500  cpu_vmemorywrite_d(int idx, DWORD madr, 
 void MEMCALL  void MEMCALL
 cpu_memorywrite_d(DWORD address, DWORD value)  cpu_memorywrite_d(DWORD address, DWORD value)
 {  {
         DWORD adr = address & cpumem_addrmask;          DWORD adr = address & CPU_STAT_ADRSMASK;
   
         if (adr < LOWMEM - 3) {          if (adr < LOWMEM - 3) {
                 __i286_memorywrite_d(adr, value);                  __i286_memorywrite_d(adr, value);
Line 511  cpu_memorywrite_d(DWORD address, DWORD v Line 511  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 520  cpu_memorywrite_d(DWORD address, DWORD v Line 521  cpu_memorywrite_d(DWORD address, DWORD v
 void MEMCALL  void MEMCALL
 cpu_memorywrite_w(DWORD address, WORD value)  cpu_memorywrite_w(DWORD address, WORD value)
 {  {
         DWORD adr = address & cpumem_addrmask;          DWORD adr = address & CPU_STAT_ADRSMASK;
   
         if (adr < LOWMEM - 1) {          if (adr < LOWMEM - 1) {
                 __i286_memorywrite_w(adr, value);                  __i286_memorywrite_w(adr, value);
Line 531  cpu_memorywrite_w(DWORD address, WORD va Line 532  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 540  cpu_memorywrite_w(DWORD address, WORD va Line 541  cpu_memorywrite_w(DWORD address, WORD va
 void MEMCALL  void MEMCALL
 cpu_memorywrite(DWORD address, BYTE value)  cpu_memorywrite(DWORD address, BYTE value)
 {  {
         DWORD adr = address & cpumem_addrmask;          DWORD adr = address & CPU_STAT_ADRSMASK;
   
         if (adr < LOWMEM) {          if (adr < LOWMEM) {
                 __i286_memorywrite(adr, value);                  __i286_memorywrite(adr, value);
Line 548  cpu_memorywrite(DWORD address, BYTE valu Line 549  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 557  cpu_memorywrite(DWORD address, BYTE valu Line 556  cpu_memorywrite(DWORD address, BYTE valu
 DWORD MEMCALL  DWORD MEMCALL
 cpu_memoryread_d(DWORD address)  cpu_memoryread_d(DWORD address)
 {  {
         DWORD adr = address & cpumem_addrmask;          DWORD adr = address & CPU_STAT_ADRSMASK;
         DWORD val;          DWORD val;
   
         if (adr < LOWMEM - 3) {          if (adr < LOWMEM - 3) {
Line 570  cpu_memoryread_d(DWORD address) Line 569  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 580  cpu_memoryread_d(DWORD address) Line 579  cpu_memoryread_d(DWORD address)
 WORD MEMCALL  WORD MEMCALL
 cpu_memoryread_w(DWORD address)  cpu_memoryread_w(DWORD address)
 {  {
         DWORD adr = address & cpumem_addrmask;          DWORD adr = address & CPU_STAT_ADRSMASK;
         WORD val;          WORD val;
   
         if (adr < LOWMEM - 1) {          if (adr < LOWMEM - 1) {
Line 592  cpu_memoryread_w(DWORD address) Line 591  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 603  cpu_memoryread_w(DWORD address) Line 603  cpu_memoryread_w(DWORD address)
 BYTE MEMCALL  BYTE MEMCALL
 cpu_memoryread(DWORD address)  cpu_memoryread(DWORD address)
 {  {
         DWORD adr = address & cpumem_addrmask;          DWORD adr = address & CPU_STAT_ADRSMASK;
         BYTE val;          BYTE val;
   
         if (adr < LOWMEM) {          if (adr < LOWMEM) {
Line 613  cpu_memoryread(DWORD address) Line 613  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;
                 }                  }
         }          }

Removed from v.1.2  
changed lines
  Added in v.1.4


RetroPC.NET-CVS <cvs@retropc.net>