Diff for /np2/i286c/i286c.mcr between versions 1.9 and 1.10

version 1.9, 2003/11/28 08:01:32 version 1.10, 2003/11/29 03:38:26
Line 205  extern UINT calc_a(UINT op, UINT32 *seg) Line 205  extern UINT calc_a(UINT op, UINT32 *seg)
                 I286_FLAGL = (BYTE)(((r) ^ (d) ^ (s)) & A_FLAG);                        \                  I286_FLAGL = (BYTE)(((r) ^ (d) ^ (s)) & A_FLAG);                        \
                 I286_FLAGL |= BYTESZPCF(r);                  I286_FLAGL |= BYTESZPCF(r);
   
   
 #define ADDWORD(r, d, s)                                                                                        \  #define ADDWORD(r, d, s)                                                                                        \
                 (r) = (s) + (d);                                                                                        \                  (r) = (s) + (d);                                                                                        \
                 I286_OV = ((r) ^ (s)) & ((r) ^ (d)) & 0x8000;                           \                  I286_OV = ((r) ^ (s)) & ((r) ^ (d)) & 0x8000;                           \
Line 219  extern UINT calc_a(UINT op, UINT32 *seg) Line 218  extern UINT calc_a(UINT op, UINT32 *seg)
                 I286_OV = 0;                                                                                            \                  I286_OV = 0;                                                                                            \
                 I286_FLAGL = BYTESZPF(d);                  I286_FLAGL = BYTESZPF(d);
   
   
 #define ORWORD(d, s)                                                                                            \  #define ORWORD(d, s)                                                                                            \
                 (d) |= (s);                                                                                                     \                  (d) |= (s);                                                                                                     \
                 I286_OV = 0;                                                                                            \                  I286_OV = 0;                                                                                            \
Line 232  extern UINT calc_a(UINT op, UINT32 *seg) Line 230  extern UINT calc_a(UINT op, UINT32 *seg)
                 I286_FLAGL = (BYTE)(((r) ^ (d) ^ (s)) & A_FLAG);                        \                  I286_FLAGL = (BYTE)(((r) ^ (d) ^ (s)) & A_FLAG);                        \
                 I286_FLAGL |= BYTESZPCF(r);                  I286_FLAGL |= BYTESZPCF(r);
   
   
 #define ADCWORD(r, d, s)                                                                                        \  #define ADCWORD(r, d, s)                                                                                        \
                 (r) = (I286_FLAGL & 1) + (s) + (d);                                                     \                  (r) = (I286_FLAGL & 1) + (s) + (d);                                                     \
                 I286_OV = ((r) ^ (s)) & ((r) ^ (d)) & 0x8000;                           \                  I286_OV = ((r) ^ (s)) & ((r) ^ (d)) & 0x8000;                           \
Line 260  extern UINT calc_a(UINT op, UINT32 *seg) Line 257  extern UINT calc_a(UINT op, UINT32 *seg)
                 I286_OV = 0;                                                                                            \                  I286_OV = 0;                                                                                            \
                 I286_FLAGL = BYTESZPF(d);                  I286_FLAGL = BYTESZPF(d);
   
   
 #define ANDWORD(d, s)                                                                                           \  #define ANDWORD(d, s)                                                                                           \
                 (d) &= s;                                                                                                       \                  (d) &= (s);                                                                                                     \
                 I286_OV = 0;                                                                                            \                  I286_OV = 0;                                                                                            \
                 I286_FLAGL = WORDSZPF(d);                  I286_FLAGL = WORDSZPF(d);
   
   
 // flag no check  // flag no check
 #define BYTE_SUB(r, d, s)                                                                                       \  #define SUBBYTE(r, d, s)                                                                                        \
                 (r) = (d) - (s);                                                                                        \                  (r) = (d) - (s);                                                                                        \
                 I286_OV = ((d) ^ (r)) & ((d) ^ (s)) & 0x80;                                     \                  I286_OV = ((d) ^ (r)) & ((d) ^ (s)) & 0x80;                                     \
                 I286_FLAGL = (BYTE)(((r) ^ (d) ^ (s)) & A_FLAG);                        \                  I286_FLAGL = (BYTE)(((r) ^ (d) ^ (s)) & A_FLAG);                        \
                 I286_FLAGL |= BYTESZPCF2(r);                  I286_FLAGL |= BYTESZPCF2(r);
   
 #define WORD_SUB(r, d, s)                                                                                       \  #define SUBWORD(r, d, s)                                                                                        \
                 (r) = (d) - (s);                                                                                        \                  (r) = (d) - (s);                                                                                        \
                 I286_OV = ((d) ^ (r)) & ((d) ^ (s)) & 0x8000;                           \                  I286_OV = ((d) ^ (r)) & ((d) ^ (s)) & 0x8000;                           \
                 I286_FLAGL = (BYTE)(((r) ^ (d) ^ (s)) & A_FLAG);                        \                  I286_FLAGL = ((r) ^ (d) ^ (s)) & A_FLAG;                                        \
                 I286_FLAGL |= WORDSZPCF(r);                  I286_FLAGL |= WORDSZPCF(r);
   
   
 // flag no check  // flag no check
 #define BYTE_XOR(d, s)                                                                                          \  #define XORBYTE(d, s)                                                                                           \
                 (d) ^= s;                                                                                                       \                  (d) ^= s;                                                                                                       \
                 I286_OV = 0;                                                                                            \                  I286_OV = 0;                                                                                            \
                 I286_FLAGL = BYTESZPF(d);                  I286_FLAGL = BYTESZPF(d);
   
   #define XORWORD(d, s)                                                                                           \
 #define WORD_XOR(d, s)                                                                                          \  
                 (d) ^= (s);                                                                                                     \                  (d) ^= (s);                                                                                                     \
                 I286_OV = 0;                                                                                            \                  I286_OV = 0;                                                                                            \
                 I286_FLAGL = WORDSZPF(d);                  I286_FLAGL = WORDSZPF(d);
   
   
 #define BYTE_NEG(d, s)                                                                                          \  #define NEGBYTE(d, s)                                                                                           \
                 (d) = 0 - (s);                                                                                          \                  (d) = 0 - (s);                                                                                          \
                 I286_OV = ((d) & (s)) & 0x80;                                                           \                  I286_OV = ((d) & (s)) & 0x80;                                                           \
                 I286_FLAGL = (BYTE)(((d) ^ (s)) & A_FLAG);                                      \                  I286_FLAGL = (BYTE)(((d) ^ (s)) & A_FLAG);                                      \
                 I286_FLAGL |= BYTESZPCF2(d);                  I286_FLAGL |= BYTESZPCF2(d);
   
   #define NEGWORD(d, s)                                                                                           \
 #define WORD_NEG(d, s)                                                                                          \  
                 (d) = 0 - (s);                                                                                          \                  (d) = 0 - (s);                                                                                          \
                 I286_OV = ((d) & (s)) & 0x8000;                                                         \                  I286_OV = ((d) & (s)) & 0x8000;                                                         \
                 I286_FLAGL = (BYTE)(((d) ^ (s)) & A_FLAG);                                      \                  I286_FLAGL = (BYTE)(((d) ^ (s)) & A_FLAG);                                      \
Line 316  extern UINT calc_a(UINT op, UINT32 *seg) Line 310  extern UINT calc_a(UINT op, UINT32 *seg)
                         I286_FLAGL |= C_FLAG;                                                                   \                          I286_FLAGL |= C_FLAG;                                                                   \
                 }                  }
   
   
 #define WORD_MUL(r, d, s)                                                                                       \  #define WORD_MUL(r, d, s)                                                                                       \
                 I286_FLAGL &= (Z_FLAG | S_FLAG | A_FLAG | P_FLAG);                      \                  I286_FLAGL &= (Z_FLAG | S_FLAG | A_FLAG | P_FLAG);                      \
                 (r) = (UINT16)(d) * (UINT16)(s);                                                        \                  (r) = (UINT16)(d) * (UINT16)(s);                                                        \
Line 334  extern UINT calc_a(UINT op, UINT32 *seg) Line 327  extern UINT calc_a(UINT op, UINT32 *seg)
                         I286_FLAGL |= C_FLAG;                                                                   \                          I286_FLAGL |= C_FLAG;                                                                   \
                 }                  }
   
   
 #define WORD_IMUL(r, d, s)                                                                                      \  #define WORD_IMUL(r, d, s)                                                                                      \
                 I286_FLAGL &= (Z_FLAG | S_FLAG | A_FLAG | P_FLAG);                      \                  I286_FLAGL &= (Z_FLAG | S_FLAG | A_FLAG | P_FLAG);                      \
                 (r) = (short)(d) * (short)(s);                                                          \                  (r) = (short)(d) * (short)(s);                                                          \
Line 345  extern UINT calc_a(UINT op, UINT32 *seg) Line 337  extern UINT calc_a(UINT op, UINT32 *seg)
   
   
 // flag no check  // flag no check
 #define BYTE_INC(s) {                                                                                           \  #define INCBYTE(s) {                                                                                            \
                 BYTE    b;                                                                                                      \                  UINT b = (s);                                                                                           \
                 b = (s);                                                                                                        \                  (s)++;                                                                                                          \
                 b++;                                                                                                            \                  I286_OV = (s) & (b ^ (s)) & 0x80;                                                       \
                 I286_OV = b & (b ^ (s)) & 0x80;                                                         \  
                 I286_FLAGL &= C_FLAG;                                                                           \                  I286_FLAGL &= C_FLAG;                                                                           \
                 I286_FLAGL |= (BYTE)((b ^ (s)) & A_FLAG);                                       \                  I286_FLAGL |= (BYTE)((b ^ (s)) & A_FLAG);                                       \
                 I286_FLAGL |= BYTESZPF(b);                                                                      \                  I286_FLAGL |= BYTESZPF((BYTE)(s));                                                      \
                 (s) = b;                                                                                                        \  
         }          }
   
   #define INCWORD(s) {                                                                                            \
 #define WORD_INC(s) {                                                                                           \                  UINT32 b = (s);                                                                                         \
                 UINT16 b;                                                                                                       \                  (s)++;                                                                                                          \
                 b = (s);                                                                                                        \                  I286_OV = (s) & (b ^ (s)) & 0x8000;                                                     \
                 b++;                                                                                                            \  
                 I286_OV = b & (b ^ (s)) & 0x8000;                                                       \  
                 I286_FLAGL &= C_FLAG;                                                                           \                  I286_FLAGL &= C_FLAG;                                                                           \
                 I286_FLAGL |= (BYTE)((b ^ (s)) & A_FLAG);                                       \                  I286_FLAGL |= (BYTE)((b ^ (s)) & A_FLAG);                                       \
                 I286_FLAGL |= WORDSZPF(b);                                                                      \                  I286_FLAGL |= WORDSZPF((UINT16)(s));                                            \
                 (s) = b;                                                                                                        \  
         }          }
   
   
 // flag no check  // flag no check
 #define BYTE_DEC(s) {                                                                                           \  #define DECBYTE(s) {                                                                                            \
                 BYTE b = (s);                                                                                           \                  UINT b = (s);                                                                                           \
                 b--;                                                                                                            \                  b--;                                                                                                            \
                 I286_OV = (s) & (b ^ (s)) & 0x80;                                                       \                  I286_OV = (s) & (b ^ (s)) & 0x80;                                                       \
                 I286_FLAGL &= C_FLAG;                                                                           \                  I286_FLAGL &= C_FLAG;                                                                           \
                 I286_FLAGL |= (BYTE)((b ^ (s)) & A_FLAG);                                       \                  I286_FLAGL |= (BYTE)((b ^ (s)) & A_FLAG);                                       \
                 I286_FLAGL |= BYTESZPF(b);                                                                      \                  I286_FLAGL |= BYTESZPF((BYTE)b);                                                        \
                 (s) = b;                                                                                                        \                  (s) = b;                                                                                                        \
         }          }
   
   #define DECWORD(s) {                                                                                            \
 #define WORD_DEC(s) {                                                                                           \                  UINT32 b = (s);                                                                                         \
                 UINT16 b = (s);                                                                                         \  
                 b--;                                                                                                            \                  b--;                                                                                                            \
                 I286_OV = (s) & (b ^ (s)) & 0x8000;                                                     \                  I286_OV = (s) & (b ^ (s)) & 0x8000;                                                     \
                 I286_FLAGL &= C_FLAG;                                                                           \                  I286_FLAGL &= C_FLAG;                                                                           \
                 I286_FLAGL |= (BYTE)((b ^ (s)) & A_FLAG);                                       \                  I286_FLAGL |= (BYTE)((b ^ (s)) & A_FLAG);                                       \
                 I286_FLAGL |= WORDSZPF(b);                                                                      \                  I286_FLAGL |= WORDSZPF((UINT16)b);                                                      \
                 (s) = b;                                                                                                        \                  (s) = b;                                                                                                        \
         }          }
   
   
 // flag no check  // flag no check
 #define INCWORD(w, clock) {                                                                                     \  #define INCWORD2(r, clock) {                                                                            \
                 UINT16 bak;                                                                                                     \                  REG16 s = (r);                                                                                          \
                 bak = (w);                                                                                                      \                  REG16 d = (r);                                                                                          \
                 (w)++;                                                                                                          \                  d++;                                                                                                            \
                 I286_OV = (w) & ((w) ^ bak) & 0x8000;                                           \                  (r) = (UINT16)d;                                                                                        \
                   I286_OV = d & (d ^ s) & 0x8000;                                                         \
                 I286_FLAGL &= C_FLAG;                                                                           \                  I286_FLAGL &= C_FLAG;                                                                           \
                 I286_FLAGL |= (BYTE)(((w) ^ bak) & A_FLAG);                                     \                  I286_FLAGL |= (BYTE)((d ^ s) & A_FLAG);                                         \
                 I286_FLAGL |= WORDSZPF(w);                                                                      \                  I286_FLAGL |= WORDSZPF((UINT16)d);                                                      \
                 I286_WORKCLOCK(clock);                                                                          \                  I286_WORKCLOCK(clock);                                                                          \
         }          }
   
   #define DECWORD2(r, clock) {                                                                            \
 #define DECWORD(w, clock) {                                                                                     \                  REG16 s = (r);                                                                                          \
                 UINT16 bak;                                                                                                     \                  REG16 d = (r);                                                                                          \
                 bak = (w);                                                                                                      \                  d--;                                                                                                            \
                 w--;                                                                                                            \                  (r) = (UINT16)d;                                                                                        \
                 I286_OV = bak & (w ^ bak) & 0x8000;                                                     \                  I286_OV = s & (d ^ s) & 0x8000;                                                         \
                 I286_FLAGL &= C_FLAG;                                                                           \                  I286_FLAGL &= C_FLAG;                                                                           \
                 I286_FLAGL |= (BYTE)((w ^ bak) & A_FLAG);                                       \                  I286_FLAGL |= (BYTE)((d ^ s) & A_FLAG);                                         \
                 I286_FLAGL |= WORDSZPF(w);                                                                      \                  I286_FLAGL |= WORDSZPF((UINT16)d);                                                      \
                 I286_WORKCLOCK(clock);                                                                          \                  I286_WORKCLOCK(clock);                                                                          \
         }          }
   

Removed from v.1.9  
changed lines
  Added in v.1.10


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