Diff for /np2/i286c/i286c.c between versions 1.21 and 1.23

version 1.21, 2004/01/05 15:47:18 version 1.23, 2004/01/25 05:41:28
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) {
                   _MFREE(CPU_EXTMEM);
                   if (size) {
                           CPU_EXTMEM = (BYTE *)_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) {
   
           BYTE    *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 BYTE      *ptr;
Line 255  void i286c_step(void) { Line 301  void i286c_step(void) {
 }  }
   
   
 UINT32 i286c_selector(UINT sel) {  
   
         I286DTR *dtr;  
         UINT32  addr;  
         UINT32  ret;  
   
         dtr = (sel & 4)?&I286_LDTRC:&I286_GDTR;  
         addr = (dtr->base24 << 16) + dtr->base + (sel & (~7));  
         ret = i286_memoryread_w(addr+2);  
         ret += i286_memoryread(addr+4) << 16;  
         TRACEOUT(("selector idx=%x %s rpl=%d - real addr = %.6x",  
                                         (sel >> 3), (sel & 4)?"LDT":"GDT", sel & 3, ret));  
         return(ret);  
 }  
   
   
 // ---- test  // ---- test
   
 #if defined(I286C_TEST)  #if defined(I286C_TEST)

Removed from v.1.21  
changed lines
  Added in v.1.23


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