|
|
| 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); \ |
| } | } |