|
|
| version 1.3, 2003/10/17 12:49:52 | version 1.11, 2005/02/07 14:46:11 |
|---|---|
| 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 = (UINT8)(BYTESZPF(d) | A_FLAG | ((s) & 1)); |
| #if 1 | |
| #define BYTE_SAR1(d, s) \ | #define BYTE_SAR1(d, s) \ |
| (d) = (BYTE)(((char)s) >> 1); \ | (d) = ((s) & 0x80) + ((s) >> 1); \ |
| I286_OV = 0; \ | I286_OV = 0; \ |
| I286_FLAGL = (BYTE)(szpcflag[(d)] | A_FLAG | ((s) & 1)); | I286_FLAGL = (UINT8)(BYTESZPF(d) | A_FLAG | ((s) & 1)); |
| #else // eVC3/4 compiler bug | |
| #define BYTE_SAR1(d, s) \ | |
| (d) = (UINT8)(((SINT8)(s)) >> 1); \ | |
| I286_OV = 0; \ | |
| I286_FLAGL = (UINT8)(BYTESZPF(d) | A_FLAG | ((s) & 1)); | |
| #endif | |
| #define WORD_ROL1(d, s) { \ | #define WORD_ROL1(d, s) { \ |
| Line 77 | Line 83 |
| #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)(WORDSZPF((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)(WORDSZPF(d) | A_FLAG | ((s) & 1)); | I286_FLAGL = (UINT8)(WORDSZPF(d) | A_FLAG | ((s) & 1)); |
| #if 1 | |
| #define WORD_SAR1(d, s) \ | #define WORD_SAR1(d, s) \ |
| (d) = (UINT16)(((SINT16)s) >> 1); \ | (d) = ((s) & 0x8000) + ((s) >> 1); \ |
| I286_OV = 0; \ | I286_OV = 0; \ |
| I286_FLAGL = (BYTE)(WORDSZPF(d) | A_FLAG | ((s) & 1)); | I286_FLAGL = (UINT8)(WORDSZPF(d) | A_FLAG | ((s) & 1)); |
| #else // eVC3/4 compiler bug | |
| #define WORD_SAR1(d, s) \ | |
| (d) = (UINT16)(((SINT16)(s)) >> 1); \ | |
| I286_OV = 0; \ | |
| I286_FLAGL = (UINT8)(WORDSZPF(d) | A_FLAG | ((s) & 1)); | |
| #endif | |
| Line 154 | Line 166 |
| #define BYTE_SHLCL(d, s, c) \ | #define BYTE_SHLCL(d, s, c) \ |
| (c) &= 0x1f; \ | (c) &= 0x1f; \ |
| if (c) { \ | if (c) { \ |
| if ((c) >= 0x10) { \ | if ((c) > 10) { \ |
| (c) &= 7; \ | (c) = 10; \ |
| (c) |= 8; \ | |
| } \ | } \ |
| (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 168 | Line 179 |
| #define BYTE_SHRCL(d, s, c) \ | #define BYTE_SHRCL(d, s, c) \ |
| (c) &= 0x1f; \ | (c) &= 0x1f; \ |
| if (c) { \ | if (c) { \ |
| if ((c) >= 0x10) { \ | if ((c) >= 10) { \ |
| (c) &= 7; \ | (c) = 10; \ |
| (c) |= 8; \ | |
| } \ | } \ |
| (s) >>= ((c) - 1); \ | (s) >>= ((c) - 1); \ |
| I286_FLAGL = (BYTE)((s) & 1); \ | I286_FLAGL = (UINT8)((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); |
| #if !defined(_WIN32_WCE) || (_WIN32_WCE < 300) | |
| #define BYTE_SARCL(d, s, c) \ | #define BYTE_SARCL(d, s, c) \ |
| (c) &= 0x1f; \ | (c) &= 0x1f; \ |
| if (c) { \ | if (c) { \ |
| (s) = ((char)(s)) >> ((c) - 1); \ | (s) = ((SINT8)(s)) >> ((c) - 1); \ |
| I286_FLAGL = (BYTE)((s) & 1); \ | I286_FLAGL = (UINT8)((s) & 1); \ |
| (s) = (BYTE)(((char)s) >> 1); \ | (s) = (UINT8)(((SINT8)s) >> 1); \ |
| I286_OV = 0; \ | I286_OV = 0; \ |
| I286_FLAGL |= szpcflag[(s)] | A_FLAG; \ | I286_FLAGL |= BYTESZPF(s) | A_FLAG; \ |
| } \ | } \ |
| (d) = (s); | (d) = (s); |
| #else | |
| #define BYTE_SARCL(d, s, c) \ | |
| (c) &= 0x1f; \ | |
| if (c) { \ | |
| SINT32 t; \ | |
| t = (s) << 24; \ | |
| t = t >> ((c) - 1); \ | |
| I286_FLAGL = (UINT8)((t >> 24) & 1); \ | |
| (s) = (t >> 25) & 0xff; \ | |
| I286_OV = 0; \ | |
| I286_FLAGL |= BYTESZPF(s) | A_FLAG; \ | |
| } \ | |
| (d) = (s); | |
| #endif | |
| #define WORD_ROLCL(d, s, c) \ | #define WORD_ROLCL(d, s, c) \ |
| (c) &= 0x1f; \ | (c) &= 0x1f; \ |
| Line 201 | Line 225 |
| (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 245 |
| (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 262 |
| 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 279 |
| 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 300 |
| } \ | } \ |
| (s) <<= (c); \ | (s) <<= (c); \ |
| (s) &= 0x1ffff; \ | (s) &= 0x1ffff; \ |
| I286_FLAGL = WORDSZPF((s) & 0xffff); \ | I286_FLAGL = WORDSZPCF(s); \ |
| I286_FLAGL |= (BYTE)((s) >> 16); \ | |
| } \ | } \ |
| (d) = (s); | (d) = (s); |
| Line 296 | Line 315 |
| else { \ | else { \ |
| I286_OV = (s) & 0x8000; \ | I286_OV = (s) & 0x8000; \ |
| } \ | } \ |
| I286_FLAGL = (BYTE)((s) & 1); \ | I286_FLAGL = (UINT8)((s) & 1); \ |
| (s) >>= 1; \ | (s) >>= 1; \ |
| I286_FLAGL |= WORDSZPF(s); \ | I286_FLAGL |= WORDSZPF(s); \ |
| } \ | } \ |
| (d) = (s); | (d) = (s); |
| #if !defined(_WIN32_WCE) || (_WIN32_WCE < 300) | |
| #define WORD_SARCL(d, s, c) \ | #define WORD_SARCL(d, s, c) \ |
| (c) &= 0x1f; \ | (c) &= 0x1f; \ |
| if (c) { \ | if (c) { \ |
| (s) = ((SINT16)(s)) >> ((c) - 1); \ | (s) = ((SINT16)(s)) >> ((c) - 1); \ |
| I286_FLAGL = (BYTE)((s) & 1); \ | I286_FLAGL = (UINT8)((s) & 1); \ |
| (s) = (UINT16)(((SINT16)s) >> 1); \ | (s) = (UINT16)(((SINT16)s) >> 1); \ |
| I286_OV = 0; \ | I286_OV = 0; \ |
| I286_FLAGL |= WORDSZPF(s); \ | I286_FLAGL |= WORDSZPF(s); \ |
| } \ | } \ |
| (d) = (s); | (d) = (s); |
| #else // eVC¡Á | |
| #define WORD_SARCL(d, s, c) \ | |
| (c) &= 0x1f; \ | |
| if (c) { \ | |
| SINT32 tmp; \ | |
| tmp = (s) << 16; \ | |
| tmp = tmp >> (16 + (c) - 1); \ | |
| I286_FLAGL = (UINT8)(tmp & 1); \ | |
| (s) = (UINT16)(tmp >> 1); \ | |
| I286_OV = 0; \ | |
| I286_FLAGL |= WORDSZPF(s); \ | |
| } \ | |
| (d) = (s); | |
| #endif | |