|
|
| version 1.2, 2003/10/17 07:17:20 | version 1.4, 2003/10/17 12:49:52 |
|---|---|
| Line 13 | Line 13 |
| #define STRING_DIR ((I286_FLAG & D_FLAG)?-1:1) | #define STRING_DIR ((I286_FLAG & D_FLAG)?-1:1) |
| #define STRING_DIRx2 ((I286_FLAG & D_FLAG)?-2:2) | #define STRING_DIRx2 ((I286_FLAG & D_FLAG)?-2:2) |
| #if defined(CPUW2TEST) | |
| #define WORDSZPF(a) ((szpcflag[(a) & 0xff] & P_FLAG) | \ | |
| (((a))?0:Z_FLAG) | (((a) >> 8) & S_FLAG)) | |
| #else | |
| #define WORDSZPF(a) szpflag_w[(a)] | |
| #endif | |
| #define SWAPBYTE(p, q) { \ | #define SWAPBYTE(p, q) { \ |
| BYTE tmp = (p); \ | BYTE tmp = (p); \ |
| Line 125 | Line 131 |
| (r) &= 0x0000ffff; \ | (r) &= 0x0000ffff; \ |
| I286_FLAGL |= C_FLAG; \ | I286_FLAGL |= C_FLAG; \ |
| } \ | } \ |
| I286_FLAGL |= szpflag_w[(r)]; | I286_FLAGL |= WORDSZPF(r); |
| // flag no check | // flag no check |
| Line 138 | Line 144 |
| #define ORWORD(d, s) \ | #define ORWORD(d, s) \ |
| (d) |= (s); \ | (d) |= (s); \ |
| I286_OV = 0; \ | I286_OV = 0; \ |
| I286_FLAGL = szpflag_w[(d)]; | I286_FLAGL = WORDSZPF(d); |
| #define ADCBYTE(r, d, s) \ | #define ADCBYTE(r, d, s) \ |
| Line 156 | Line 162 |
| (r) &= 0x0000ffff; \ | (r) &= 0x0000ffff; \ |
| I286_FLAGL |= C_FLAG; \ | I286_FLAGL |= C_FLAG; \ |
| } \ | } \ |
| I286_FLAGL |= szpflag_w[(r)]; | I286_FLAGL |= WORDSZPF(r); |
| // flag no check | // flag no check |
| Line 174 | Line 180 |
| (r) &= 0x0000ffff; \ | (r) &= 0x0000ffff; \ |
| I286_FLAGL |= C_FLAG; \ | I286_FLAGL |= C_FLAG; \ |
| } \ | } \ |
| I286_FLAGL |= szpflag_w[(r)]; | I286_FLAGL |= WORDSZPF(r); |
| // flag no check | // flag no check |
| Line 187 | Line 193 |
| #define ANDWORD(d, s) \ | #define ANDWORD(d, s) \ |
| (d) &= s; \ | (d) &= s; \ |
| I286_OV = 0; \ | I286_OV = 0; \ |
| I286_FLAGL = szpflag_w[(d)]; | I286_FLAGL = WORDSZPF(d); |
| // flag no check | // flag no check |
| Line 205 | Line 211 |
| (r) &= 0x0000ffff; \ | (r) &= 0x0000ffff; \ |
| I286_FLAGL |= C_FLAG; \ | I286_FLAGL |= C_FLAG; \ |
| } \ | } \ |
| I286_FLAGL |= szpflag_w[(r)]; | I286_FLAGL |= WORDSZPF(r); |
| // flag no check | // flag no check |
| Line 218 | Line 224 |
| #define WORD_XOR(d, s) \ | #define WORD_XOR(d, s) \ |
| (d) ^= (s); \ | (d) ^= (s); \ |
| I286_OV = 0; \ | I286_OV = 0; \ |
| I286_FLAGL = szpflag_w[(d)]; | I286_FLAGL = WORDSZPF(d); |
| #define BYTE_NEG(d, s) \ | #define BYTE_NEG(d, s) \ |
| Line 236 | Line 242 |
| (d) &= 0x0000ffff; \ | (d) &= 0x0000ffff; \ |
| I286_FLAGL |= C_FLAG; \ | I286_FLAGL |= C_FLAG; \ |
| } \ | } \ |
| I286_FLAGL |= szpflag_w[(d)]; | I286_FLAGL |= WORDSZPF(d); |
| #define BYTE_MUL(r, d, s) \ | #define BYTE_MUL(r, d, s) \ |
| Line 295 | Line 301 |
| I286_OV = b & (b ^ (s)) & 0x8000; \ | 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 |= szpflag_w[b]; \ | I286_FLAGL |= WORDSZPF(b); \ |
| (s) = b; \ | (s) = b; \ |
| } | } |
| Line 318 | Line 324 |
| 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 |= szpflag_w[b]; \ | I286_FLAGL |= WORDSZPF(b); \ |
| (s) = b; \ | (s) = b; \ |
| } | } |
| Line 331 | Line 337 |
| I286_OV = (w) & ((w) ^ bak) & 0x8000; \ | I286_OV = (w) & ((w) ^ bak) & 0x8000; \ |
| I286_FLAGL &= C_FLAG; \ | I286_FLAGL &= C_FLAG; \ |
| I286_FLAGL |= (BYTE)(((w) ^ bak) & A_FLAG); \ | I286_FLAGL |= (BYTE)(((w) ^ bak) & A_FLAG); \ |
| I286_FLAGL |= szpflag_w[(w)]; \ | I286_FLAGL |= WORDSZPF(w); \ |
| I286_CLOCK(clock); \ | I286_CLOCK(clock); \ |
| } | } |
| Line 343 | Line 349 |
| I286_OV = bak & (w ^ bak) & 0x8000; \ | I286_OV = bak & (w ^ bak) & 0x8000; \ |
| I286_FLAGL &= C_FLAG; \ | I286_FLAGL &= C_FLAG; \ |
| I286_FLAGL |= (BYTE)((w ^ bak) & A_FLAG); \ | I286_FLAGL |= (BYTE)((w ^ bak) & A_FLAG); \ |
| I286_FLAGL |= szpflag_w[w]; \ | I286_FLAGL |= WORDSZPF(w); \ |
| I286_CLOCK(clock); \ | I286_CLOCK(clock); \ |
| } | } |
| Line 361 | Line 367 |
| #define SP_PUSH(reg, clock) { \ | #define SP_PUSH(reg, clock) { \ |
| WORD sp = reg; \ | UINT16 sp = reg; \ |
| I286_SP -= 2; \ | I286_SP -= 2; \ |
| i286_memorywrite_w(I286_SP + SS_BASE, sp); \ | i286_memorywrite_w(I286_SP + SS_BASE, sp); \ |
| I286_CLOCK(clock); \ | I286_CLOCK(clock); \ |