Diff for /np2/i286c/i286c_sf.mcr between versions 1.2 and 1.5

version 1.2, 2003/10/17 11:10:02 version 1.5, 2003/11/28 08:01:32
Line 32 Line 32
 #define BYTE_SHL1(d, s)                                                                                         \  #define BYTE_SHL1(d, s)                                                                                         \
                 (d) = (s) << 1;                                                                                         \                  (d) = (s) << 1;                                                                                         \
                 I286_OV = ((s) ^ (d)) & 0x80;                                                           \                  I286_OV = ((s) ^ (d)) & 0x80;                                                           \
                 I286_FLAGL = szpcflag[(d)] | A_FLAG;                  I286_FLAGL = BYTESZPCF(d) | A_FLAG;
   
 #define BYTE_SHR1(d, s)                                                                                         \  #define BYTE_SHR1(d, s)                                                                                         \
                 (d) = (s) >> 1;                                                                                         \                  (d) = (s) >> 1;                                                                                         \
                 I286_OV = (s) & 0x80;                                                                           \                  I286_OV = (s) & 0x80;                                                                           \
                 I286_FLAGL = (BYTE)(szpcflag[(d)] | A_FLAG | ((s) & 1));                  I286_FLAGL = (BYTE)(BYTESZPF(d) | A_FLAG | ((s) & 1));
   
 #define BYTE_SAR1(d, s)                                                                                         \  #define BYTE_SAR1(d, s)                                                                                         \
                 (d) = (BYTE)(((char)s) >> 1);                                                           \                  (d) = (BYTE)(((char)s) >> 1);                                                           \
                 I286_OV = 0;                                                                                            \                  I286_OV = 0;                                                                                            \
                 I286_FLAGL = (BYTE)(szpcflag[(d)] | A_FLAG | ((s) & 1));                  I286_FLAGL = (BYTE)(BYTESZPF(d) | A_FLAG | ((s) & 1));
   
   
   
Line 77 Line 77
 #define WORD_SHL1(d, s)                                                                                         \  #define WORD_SHL1(d, s)                                                                                         \
                 (d) = (s) << 1;                                                                                         \                  (d) = (s) << 1;                                                                                         \
                 I286_OV = ((s) ^ (d)) & 0x8000;                                                         \                  I286_OV = ((s) ^ (d)) & 0x8000;                                                         \
                 I286_FLAGL = (BYTE)(szpflag_w[(d) & 0xffff] | A_FLAG | ((d) >> 16));                  I286_FLAGL = WORDSZPCF(d) + A_FLAG;
   
 #define WORD_SHR1(d, s)                                                                                         \  #define WORD_SHR1(d, s)                                                                                         \
                 (d) = (s) >> 1;                                                                                         \                  (d) = (s) >> 1;                                                                                         \
                 I286_OV = (s) & 0x8000;                                                                         \                  I286_OV = (s) & 0x8000;                                                                         \
                 I286_FLAGL = (BYTE)(szpflag_w[(d)] | A_FLAG | ((s) & 1));                  I286_FLAGL = (BYTE)(WORDSZPF(d) | A_FLAG | ((s) & 1));
   
 #define WORD_SAR1(d, s)                                                                                         \  #define WORD_SAR1(d, s)                                                                                         \
                 (d) = (UINT16)(((SINT16)s) >> 1);                                                       \                  (d) = (UINT16)(((SINT16)s) >> 1);                                                       \
                 I286_OV = 0;                                                                                            \                  I286_OV = 0;                                                                                            \
                 I286_FLAGL = (BYTE)(szpflag_w[(d)] | A_FLAG | ((s) & 1));                  I286_FLAGL = (BYTE)(WORDSZPF(d) | A_FLAG | ((s) & 1));
   
   
   
Line 160 Line 160
                         }                                                                                                               \                          }                                                                                                               \
                         (s) <<= (c);                                                                                    \                          (s) <<= (c);                                                                                    \
                         (s) &= 0x1ff;                                                                                   \                          (s) &= 0x1ff;                                                                                   \
                         I286_FLAGL = szpcflag[(s)] | A_FLAG;                                    \                          I286_FLAGL = BYTESZPCF(s) + A_FLAG;                                             \
                         I286_OV = ((s) ^ ((s) >> 1)) & 0x80;                                    \                          I286_OV = ((s) ^ ((s) >> 1)) & 0x80;                                    \
                 }                                                                                                                       \                  }                                                                                                                       \
                 (d) = (s);                  (d) = (s);
Line 176 Line 176
                         I286_FLAGL = (BYTE)((s) & 1);                                                   \                          I286_FLAGL = (BYTE)((s) & 1);                                                   \
                         (s) >>= 1;                                                                                              \                          (s) >>= 1;                                                                                              \
                         I286_OV = ((s) ^ ((s) >> 1)) & 0x40;                                    \                          I286_OV = ((s) ^ ((s) >> 1)) & 0x40;                                    \
                         I286_FLAGL |= szpcflag[(s)] | A_FLAG;                                   \                          I286_FLAGL |= BYTESZPF(s) + A_FLAG;                                             \
                 }                                                                                                                       \                  }                                                                                                                       \
                 (d) = (s);                  (d) = (s);
   
Line 187 Line 187
                         I286_FLAGL = (BYTE)((s) & 1);                                                   \                          I286_FLAGL = (BYTE)((s) & 1);                                                   \
                         (s) = (BYTE)(((char)s) >> 1);                                                   \                          (s) = (BYTE)(((char)s) >> 1);                                                   \
                         I286_OV = 0;                                                                                    \                          I286_OV = 0;                                                                                    \
                         I286_FLAGL |= szpcflag[(s)] | A_FLAG;                                   \                          I286_FLAGL |= BYTESZPF(s) | A_FLAG;                                             \
                 }                                                                                                                       \                  }                                                                                                                       \
                 (d) = (s);                  (d) = (s);
   
Line 201 Line 201
                                 (c) &= 0x0f;                                                                            \                                  (c) &= 0x0f;                                                                            \
                                 (s) = ((s) << (c)) | ((s) >> (16 - (c)));                       \                                  (s) = ((s) << (c)) | ((s) >> (16 - (c)));                       \
                                 (s) &= 0xffff;                                                                          \                                  (s) &= 0xffff;                                                                          \
                                 I286_OV = 0;                                                                            \  
                         }                                                                                                               \                          }                                                                                                               \
                         else {                                                                                                  \                          else {                                                                                                  \
                                 I286_OV = ((s) + 0x4000) & 0x8000;                                      \                                  I286_OV = ((s) + 0x4000) & 0x8000;                                      \
Line 222 Line 221
                                 (c) &= 0x0f;                                                                            \                                  (c) &= 0x0f;                                                                            \
                                 (s) = ((s) >> (c)) | ((s) << (16 - (c)));                       \                                  (s) = ((s) >> (c)) | ((s) << (16 - (c)));                       \
                                 (s) &= 0xffff;                                                                          \                                  (s) &= 0xffff;                                                                          \
                                 I286_OV = 0;                                                                            \  
                         }                                                                                                               \                          }                                                                                                               \
                         else {                                                                                                  \                          else {                                                                                                  \
                                 I286_OV = ((s) >> 15) ^ ((s) & 1);                                      \                                  I286_OV = ((s) >> 15) ^ ((s) & 1);                                      \
                         }                                                                                                               \                          }                                                                                                               \
                         tmp = ((s) & 1);                                                                                \                          tmp = (s) & 1;                                                                                  \
                         (s) = ((tmp << 16) + (s)) >> 1;                                                 \                          (s) = ((tmp << 16) + (s)) >> 1;                                                 \
                         I286_FLAGL &= ~C_FLAG;                                                                  \                          I286_FLAGL &= ~C_FLAG;                                                                  \
                         I286_FLAGL |= tmp;                                                                              \                          I286_FLAGL |= tmp;                                                                              \
Line 240 Line 238
                         UINT tmp;                                                                                               \                          UINT tmp;                                                                                               \
                         tmp = I286_FLAGL & C_FLAG;                                                              \                          tmp = I286_FLAGL & C_FLAG;                                                              \
                         I286_FLAGL &= ~C_FLAG;                                                                  \                          I286_FLAGL &= ~C_FLAG;                                                                  \
                         I286_OV = 0;                                                                                    \                          if ((c) == 1) {                                                                                 \
                         if (((c) == 1) || ((c) == 1+17)) {                                              \  
                                 I286_OV = ((s) + 0x4000) & 0x8000;                                      \                                  I286_OV = ((s) + 0x4000) & 0x8000;                                      \
                         }                                                                                                               \                          }                                                                                                               \
                         while((c)--) {                                                                                  \                          while((c)--) {                                                                                  \
Line 258 Line 255
                         UINT32 tmp;                                                                                             \                          UINT32 tmp;                                                                                             \
                         tmp = I286_FLAGL & C_FLAG;                                                              \                          tmp = I286_FLAGL & C_FLAG;                                                              \
                         I286_FLAGL &= ~C_FLAG;                                                                  \                          I286_FLAGL &= ~C_FLAG;                                                                  \
                         I286_OV = 0;                                                                                    \                          if ((c) == 1) {                                                                                 \
                         if (((c) == 1) || ((c) == 1+17)) {                                              \  
                                 I286_OV = ((s) >> 15) ^ tmp;                                            \                                  I286_OV = ((s) >> 15) ^ tmp;                                            \
                         }                                                                                                               \                          }                                                                                                               \
                         while((c)--) {                                                                                  \                          while((c)--) {                                                                                  \
Line 280 Line 276
                         }                                                                                                               \                          }                                                                                                               \
                         (s) <<= (c);                                                                                    \                          (s) <<= (c);                                                                                    \
                         (s) &= 0x1ffff;                                                                                 \                          (s) &= 0x1ffff;                                                                                 \
                         I286_FLAGL = szpflag_w[(s) & 0xffff];                                   \                          I286_FLAGL = WORDSZPCF(s);                                                              \
                         I286_FLAGL |= (BYTE)((s) >> 16);                                                \  
                 }                                                                                                                       \                  }                                                                                                                       \
                 (d) = (s);                  (d) = (s);
   
Line 298 Line 293
                         }                                                                                                               \                          }                                                                                                               \
                         I286_FLAGL = (BYTE)((s) & 1);                                                   \                          I286_FLAGL = (BYTE)((s) & 1);                                                   \
                         (s) >>= 1;                                                                                              \                          (s) >>= 1;                                                                                              \
                         I286_FLAGL |= szpflag_w[(s)];                                                   \                          I286_FLAGL |= WORDSZPF(s);                                                              \
                 }                                                                                                                       \                  }                                                                                                                       \
                 (d) = (s);                  (d) = (s);
   
Line 309 Line 304
                         I286_FLAGL = (BYTE)((s) & 1);                                                   \                          I286_FLAGL = (BYTE)((s) & 1);                                                   \
                         (s) = (UINT16)(((SINT16)s) >> 1);                                               \                          (s) = (UINT16)(((SINT16)s) >> 1);                                               \
                         I286_OV = 0;                                                                                    \                          I286_OV = 0;                                                                                    \
                         I286_FLAGL |= szpflag_w[(s)];                                                   \                          I286_FLAGL |= WORDSZPF(s);                                                              \
                 }                                                                                                                       \                  }                                                                                                                       \
                 (d) = (s);                  (d) = (s);
   

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


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