Diff for /np2/i386c/memory.c between versions 1.16 and 1.17

version 1.16, 2004/03/04 17:36:05 version 1.17, 2004/03/09 16:31:18
Line 1107  retdummy: Line 1107  retdummy:
         return(0x01000000);             // てきとーにメモリが存在しない場所          return(0x01000000);             // てきとーにメモリが存在しない場所
 }  }
   
   
   REG8 MEMCALL meml_read8(UINT seg, UINT off) {
   
           UINT32  addr;
   
           addr = (seg << 4) + LOW16(off);
           if (CPU_STAT_PAGING) {
                   addr = physicaladdr(addr);
           }
           return(i286_memoryread(addr));
   }
   
   REG16 MEMCALL meml_read16(UINT seg, UINT off) {
   
           UINT32  addr;
   
           addr = (seg << 4) + LOW16(off);
           if (!CPU_STAT_PAGING) {
                   return(i286_memoryread_w(addr));
           }
           else if ((addr + 1) & 0xfff) {
                   return(i286_memoryread_w(physicaladdr(addr)));
           }
           return(meml_read8(seg, off) + (meml_read8(seg, off + 1) << 8));
   }
   
   void MEMCALL meml_write8(UINT seg, UINT off, REG8 dat) {
   
           UINT32  addr;
   
           addr = (seg << 4) + LOW16(off);
           if (CPU_STAT_PAGING) {
                   addr = physicaladdr(addr);
           }
           i286_memorywrite(addr, dat);
   }
   
   void MEMCALL meml_write16(UINT seg, UINT off, REG16 dat) {
   
           UINT32  addr;
   
           addr = (seg << 4) + LOW16(off);
           if (!CPU_STAT_PAGING) {
                   i286_memorywrite_w(addr, dat);
           }
           else if ((addr + 1) & 0xfff) {
                   i286_memorywrite_w(physicaladdr(addr), dat);
           }
           else {
                   meml_write8(seg, off, (REG8)dat);
                   meml_write8(seg, off + 1, (REG8)(dat >> 8));
           }
   }
   
 void MEMCALL meml_readstr(UINT seg, UINT off, void *dat, UINT leng) {  void MEMCALL meml_readstr(UINT seg, UINT off, void *dat, UINT leng) {
   
         UINT32  adrs;          UINT32  adrs;
Line 1147  void MEMCALL meml_read(UINT32 address, v Line 1201  void MEMCALL meml_read(UINT32 address, v
   
         UINT    size;          UINT    size;
   
         while(leng) {          if (!CPU_STAT_PAGING) {
                 size = 0x1000 - (address & 0xfff);                  memp_read(address, dat, leng);
                 size = min(size, leng);          }
                 memp_read(physicaladdr(address), dat, size);          else {
                 address += size;                  while(leng) {
                 dat = ((BYTE *)dat) + size;                          size = 0x1000 - (address & 0xfff);
                 leng -= size;                          size = min(size, leng);
                           memp_read(physicaladdr(address), dat, size);
                           address += size;
                           dat = ((BYTE *)dat) + size;
                           leng -= size;
                   }
         }          }
 }  }
   
Line 1161  void MEMCALL meml_write(UINT32 address,  Line 1220  void MEMCALL meml_write(UINT32 address, 
   
         UINT    size;          UINT    size;
   
         while(leng) {          if (!CPU_STAT_PAGING) {
                 size = 0x1000 - (address & 0xfff);                  memp_write(address, dat, leng);
                 size = min(size, leng);          }
                 memp_write(physicaladdr(address), dat, size);          else {
                 address += size;                  while(leng) {
                 dat = ((BYTE *)dat) + size;                          size = 0x1000 - (address & 0xfff);
                 leng -= size;                          size = min(size, leng);
                           memp_write(physicaladdr(address), dat, size);
                           address += size;
                           dat = ((BYTE *)dat) + size;
                           leng -= size;
                   }
         }          }
 }  }
   
 #endif  #endif
   

Removed from v.1.16  
changed lines
  Added in v.1.17


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