Diff for /np2/i286c/i286c_0f.c between versions 1.1.1.1 and 1.7

version 1.1.1.1, 2003/10/16 17:57:43 version 1.7, 2003/11/24 09:14:01
Line 1 Line 1
 #include        "compiler.h"  #include        "compiler.h"
 #include        "i286.h"  #include        "i286.h"
 #include        "i286c.h"  #include        "i286c.h"
 #include        "i286c.mcr"  
 #include        "memory.h"  #include        "memory.h"
 #include        "nevent.h"  #include        "i286c.mcr"
   
   
   I286_0F _sgdt(UINT op) {
   
 I286_0F _sgdt(DWORD op) {          UINT32  seg;
           UINT16  ad;
   
         I286_CLOCK(11)          I286_WORKCLOCK(11);
         if (op < 0xc0) {          if (op < 0xc0) {
                 UINT16 ad = c_get_ea[op]();                  ad = GET_EA(op, &seg);
                 i286_memorywrite_w(ad + EA_FIX, GDTR.limit);                  i286_memorywrite_w(seg + ad, i286reg.GDTR.limit);
                 ad += 2;                  ad += 2;
                 i286_memorywrite_w(ad + EA_FIX, GDTR.base);                  i286_memorywrite_w(seg + ad, i286reg.GDTR.base);
                 ad += 2;                  ad += 2;
                 i286_memorywrite_w(ad + EA_FIX, (UINT16)(0xff00 + GDTR.base24));                  i286_memorywrite_w(seg + ad,
                                                                           (UINT16)(0xff00 + i286reg.GDTR.base24));
         }          }
         else {          else {
                 INT_NUM(6, I286_IP - 2);                  INT_NUM(6, I286_IP - 2);
         }          }
 }  }
   
 I286_0F _sidt(DWORD op) {  I286_0F _sidt(UINT op) {
   
         I286_CLOCK(12)          UINT32  seg;
           UINT16  ad;
   
           I286_WORKCLOCK(12);
         if (op < 0xc0) {          if (op < 0xc0) {
                 UINT16 ad = c_get_ea[op]();                  ad = GET_EA(op, &seg);
                 i286_memorywrite_w(ad + EA_FIX, IDTR.limit);                  i286_memorywrite_w(seg + ad, i286reg.IDTR.limit);
                 ad += 2;                  ad += 2;
                 i286_memorywrite_w(ad + EA_FIX, IDTR.base);                  i286_memorywrite_w(seg + ad, i286reg.IDTR.base);
                 ad += 2;                  ad += 2;
                 i286_memorywrite_w(ad + EA_FIX, (UINT16)(0xff00 + IDTR.base24));                  i286_memorywrite_w(seg + ad,
                                                                           (UINT16)(0xff00 + i286reg.IDTR.base24));
         }          }
         else {          else {
                 INT_NUM(6, I286_IP - 2);                  INT_NUM(6, I286_IP - 2);
         }          }
 }  }
   
 I286_0F _lgdt(DWORD op) {  I286_0F _lgdt(UINT op) {
   
           UINT32  seg;
           UINT16  ad;
   
         I286_CLOCK(11)          I286_WORKCLOCK(11);
         if (op < 0xc0) {          if (op < 0xc0) {
                 WORD ad = c_get_ea[op]();                  ad = GET_EA(op, &seg);
                 GDTR.limit = i286_memoryread_w(ad + EA_FIX);                  i286reg.GDTR.limit = i286_memoryread_w(seg + ad);
                 ad += 2;                  ad += 2;
                 GDTR.base = i286_memoryread_w(ad + EA_FIX);                  i286reg.GDTR.base = i286_memoryread_w(seg + ad);
                 ad += 2;                  ad += 2;
                 GDTR.base24 = i286_memoryread(ad + EA_FIX);                  i286reg.GDTR.base24 = i286_memoryread(seg + ad);
                 ad++;                  ad++;
                 GDTR.reserved = i286_memoryread(ad + EA_FIX);                  i286reg.GDTR.reserved = i286_memoryread(seg + ad);
         }          }
         else {          else {
                 INT_NUM(6, I286_IP - 2);                  INT_NUM(6, I286_IP - 2);
         }          }
 }  }
   
 I286_0F _lidt(DWORD op) {  I286_0F _lidt(UINT op) {
   
           UINT32  seg;
           UINT16  ad;
   
         I286_CLOCK(11)          I286_WORKCLOCK(11);
         if (op < 0xc0) {          if (op < 0xc0) {
                 WORD ad = c_get_ea[op]();                  ad = GET_EA(op, &seg);
                 IDTR.limit = i286_memoryread_w(ad + EA_FIX);                  i286reg.IDTR.limit = i286_memoryread_w(seg + ad);
                 ad += 2;                  ad += 2;
                 IDTR.base = i286_memoryread_w(ad + EA_FIX);                  i286reg.IDTR.base = i286_memoryread_w(seg + ad);
                 ad += 2;                  ad += 2;
                 IDTR.base24 = i286_memoryread(ad + EA_FIX);                  i286reg.IDTR.base24 = i286_memoryread(seg + ad);
                 ad++;                  ad++;
                 IDTR.reserved = i286_memoryread(ad + EA_FIX);                  i286reg.IDTR.reserved = i286_memoryread(seg + ad);
         }          }
         else {          else {
                 INT_NUM(6, I286_IP - 2);                  INT_NUM(6, I286_IP - 2);
         }          }
 }  }
   
 I286_0F _smsw(DWORD op) {  I286_0F _smsw(UINT op) {
   
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_CLOCK(3)                  I286_WORKCLOCK(3);
                 *(reg16_b20[op]) = MSW;                  *(REG16_B20(op)) = i286reg.MSW;
         }          }
         else {          else {
                 I286_CLOCK(6)                  I286_WORKCLOCK(6);
                 i286_memorywrite_w(c_calc_ea_dst[op](), MSW);                  i286_memorywrite_w(CALC_EA(op), i286reg.MSW);
         }          }
 }  }
   
 I286_0F _lmsw(DWORD op) {  I286_0F _lmsw(UINT op) {
   
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_CLOCK(2)                  I286_WORKCLOCK(2);
                 MSW = *(reg16_b20[op]);                  i286reg.MSW = *(REG16_B20(op));
         }          }
         else {          else {
                 I286_CLOCK(3)                  I286_WORKCLOCK(3);
                 MSW = i286_memoryread_w(c_calc_ea_dst[op]());                  i286reg.MSW = i286_memoryread_w(CALC_EA(op));
         }          }
 }  }
   
Line 109  I286_0F _loadall286(void) { Line 122  I286_0F _loadall286(void) {
   
         UINT16  tmp;          UINT16  tmp;
   
         I286_CLOCK(195);          I286_WORKCLOCK(195);
         MSW = LOADINTELWORD(mem + 0x804);          i286reg.MSW = LOADINTELWORD(mem + 0x804);
         tmp = LOADINTELWORD(mem + 0x818);          tmp = LOADINTELWORD(mem + 0x818);
         I286_OV = tmp & O_FLAG;          I286_OV = tmp & O_FLAG;
         I286_FLAG = tmp & (0xfff ^ O_FLAG);          I286_FLAG = tmp & (0xfff ^ O_FLAG);
Line 139  I286_0F _loadall286(void) { Line 152  I286_0F _loadall286(void) {
   
 I286EXT i286c_cts(void) {  I286EXT i286c_cts(void) {
   
         WORD    ip;          UINT16  ip;
         DWORD   op, op2;          UINT    op;
           UINT    op2;
   
         ip = I286_IP;          ip = I286_IP;
         GET_PCBYTE(op);          GET_PCBYTE(op);
Line 153  I286EXT i286c_cts(void) { Line 167  I286EXT i286c_cts(void) {
                 _loadall286();                  _loadall286();
         }          }
         else {          else {
                 I286_CLOCK(20)                  I286_WORKCLOCK(20);
                 INT_NUM(6, ip - 1);                  INT_NUM(6, ip - 1);
         }          }
 }  }

Removed from v.1.1.1.1  
changed lines
  Added in v.1.7


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