Diff for /np2/i286c/i286c_fe.c between versions 1.1 and 1.3

version 1.1, 2003/10/16 17:57:45 version 1.3, 2003/10/17 11:10:02
Line 9 Line 9
 // ------------------------------------------------------------ opecode 0xfe,f  // ------------------------------------------------------------ opecode 0xfe,f
   
 #if 0  #if 0
 I286_F6 _nop_int(DWORD op) {  I286_F6 _nop_int(UINT op) {
   
         INT_NUM(6, I286_IP - 2);          INT_NUM(6, I286_IP - 2);
 }  }
 #endif  #endif
   
 I286_F6 _inc_ea8(DWORD op) {  I286_F6 _inc_ea8(UINT op) {
   
         DWORD   madr;          UINT32  madr;
         BYTE    *out;          BYTE    *out;
   
         if (op >= 0xc0) {          if (op >= 0xc0) {
Line 38  I286_F6 _inc_ea8(DWORD op) { Line 38  I286_F6 _inc_ea8(DWORD op) {
         BYTE_INC(*out)          BYTE_INC(*out)
 }  }
   
 I286_F6 _dec_ea8(DWORD op) {  I286_F6 _dec_ea8(UINT op) {
   
         DWORD   madr;          UINT32  madr;
         BYTE    *out;          BYTE    *out;
   
         if (op >= 0xc0) {          if (op >= 0xc0) {
Line 61  I286_F6 _dec_ea8(DWORD op) { Line 61  I286_F6 _dec_ea8(DWORD op) {
         BYTE_DEC(*out)          BYTE_DEC(*out)
 }  }
   
 I286_F6 _inc_ea16(DWORD op) {  I286_F6 _inc_ea16(UINT op) {
   
         DWORD   madr;          UINT32  madr;
         WORD    *out;          UINT16  *out;
   
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_CLOCK(2)                  I286_CLOCK(2)
Line 74  I286_F6 _inc_ea16(DWORD op) { Line 74  I286_F6 _inc_ea16(DWORD op) {
                 I286_CLOCK(7)                  I286_CLOCK(7)
                 madr = c_calc_ea_dst[op]();                  madr = c_calc_ea_dst[op]();
                 if (INHIBIT_WORDP(madr)) {                  if (INHIBIT_WORDP(madr)) {
                         WORD value = i286_memoryread_w(madr);                          UINT16 value = i286_memoryread_w(madr);
                         WORD_INC(value)                          WORD_INC(value)
                         i286_memorywrite_w(madr, value);                          i286_memorywrite_w(madr, value);
                         return;                          return;
                 }                  }
                 out = (WORD *)(mem + madr);                  out = (UINT16 *)(mem + madr);
         }          }
         WORD_INC(*out)          WORD_INC(*out)
 }  }
   
 I286_F6 _dec_ea16(DWORD op) {  I286_F6 _dec_ea16(UINT op) {
   
         DWORD   madr;          UINT32  madr;
         WORD    *out;          UINT16  *out;
   
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_CLOCK(2)                  I286_CLOCK(2)
Line 97  I286_F6 _dec_ea16(DWORD op) { Line 97  I286_F6 _dec_ea16(DWORD op) {
                 I286_CLOCK(7)                  I286_CLOCK(7)
                 madr = c_calc_ea_dst[op]();                  madr = c_calc_ea_dst[op]();
                 if (INHIBIT_WORDP(madr)) {                  if (INHIBIT_WORDP(madr)) {
                         WORD value = i286_memoryread_w(madr);                          UINT16 value = i286_memoryread_w(madr);
                         WORD_DEC(value)                          WORD_DEC(value)
                         i286_memorywrite_w(madr, value);                          i286_memorywrite_w(madr, value);
                         return;                          return;
                 }                  }
                 out = (WORD *)(mem + madr);                  out = (UINT16 *)(mem + madr);
         }          }
         WORD_DEC(*out)          WORD_DEC(*out)
 }  }
   
 I286_F6 _call_ea16(DWORD op) {  I286_F6 _call_ea16(UINT op) {
   
         WORD    src;          UINT16  src;
   
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_CLOCK(7)                  I286_CLOCK(7)
Line 123  I286_F6 _call_ea16(DWORD op) { Line 123  I286_F6 _call_ea16(DWORD op) {
         I286_IP = src;          I286_IP = src;
 }  }
   
 I286_F6 _call_far_ea16(DWORD op) {  I286_F6 _call_far_ea16(UINT op) {
   
         I286_CLOCK(16)          I286_CLOCK(16)
         if (op < 0xc0) {          if (op < 0xc0) {
                 WORD ad = c_get_ea[op]();                  UINT16 ad = c_get_ea[op]();
                 REGPUSH0(I286_CS)                                                               // ToDo                  REGPUSH0(I286_CS)                                                               // ToDo
                 REGPUSH0(I286_IP)                  REGPUSH0(I286_IP)
                 I286_IP = i286_memoryread_w(ad + EA_FIX);                  I286_IP = i286_memoryread_w(ad + EA_FIX);
                 ad += 2;                  ad += 2;
                 I286_CS = i286_memoryread_w(ad + EA_FIX);                  I286_CS = i286_memoryread_w(ad + EA_FIX);
                 CS_BASE = (DWORD)I286_CS << 4;                  CS_BASE = I286_CS << 4;
         }          }
         else {          else {
                 INT_NUM(6, I286_IP - 2);                  INT_NUM(6, I286_IP - 2);
         }          }
 }  }
   
 I286_F6 _jmp_ea16(DWORD op) {  I286_F6 _jmp_ea16(UINT op) {
   
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_CLOCK(7)                  I286_CLOCK(7)
Line 152  I286_F6 _jmp_ea16(DWORD op) { Line 152  I286_F6 _jmp_ea16(DWORD op) {
         }          }
 }  }
   
 I286_F6 _jmp_far_ea16(DWORD op) {  I286_F6 _jmp_far_ea16(UINT op) {
   
         I286_CLOCK(11)          I286_CLOCK(11)
         if (op < 0xc0) {          if (op < 0xc0) {
                 WORD ad = c_get_ea[op]();                  UINT16 ad = c_get_ea[op]();
                 I286_IP = i286_memoryread_w(ad + EA_FIX);                  I286_IP = i286_memoryread_w(ad + EA_FIX);
                 ad += 2;                  ad += 2;
                 I286_CS = i286_memoryread_w(ad + EA_FIX);                  I286_CS = i286_memoryread_w(ad + EA_FIX);
                 CS_BASE = (DWORD)I286_CS << 4;                  CS_BASE = I286_CS << 4;
         }          }
         else {          else {
                 INT_NUM(6, I286_IP - 2);                  INT_NUM(6, I286_IP - 2);
         }          }
 }  }
   
 I286_F6 _push_ea16(DWORD op) {  I286_F6 _push_ea16(UINT op) {
   
         WORD    src;          UINT16  src;
   
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_CLOCK(3)                  I286_CLOCK(3)
Line 182  I286_F6 _push_ea16(DWORD op) { Line 182  I286_F6 _push_ea16(DWORD op) {
         REGPUSH0(src);          REGPUSH0(src);
 }  }
   
 I286_F6 _pop_ea16(DWORD op) {  I286_F6 _pop_ea16(UINT op) {
   
         WORD    src;          UINT16  src;
   
         REGPOP0(src);          REGPOP0(src);
         I286_CLOCK(5)          I286_CLOCK(5)

Removed from v.1.1  
changed lines
  Added in v.1.3


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