|
|
| version 1.4, 2003/10/17 12:49:52 | version 1.5, 2003/10/19 14:56:15 |
|---|---|
| Line 36 | Line 36 |
| #define I286IRQCHECKTERM \ | #define I286IRQCHECKTERM \ |
| if (nevent.remainclock > 0) { \ | if (I286_REMCLOCK > 0) { \ |
| nevent.baseclock -= nevent.remainclock; \ | I286_BASECLOCK -= I286_REMCLOCK; \ |
| nevent.remainclock = 0; \ | I286_REMCLOCK = 0; \ |
| } | } |
| Line 47 | Line 47 |
| DS_FIX = DS_BASE; | DS_FIX = DS_BASE; |
| #define I286_CLOCK(clock) nevent.remainclock -= (clock); | #define I286_WORKCLOCK(c) I286_REMCLOCK -= (c) |
| #define GET_PCBYTE(b) \ | #define GET_PCBYTE(b) \ |
| Line 93 | Line 93 |
| #define PREPART_REG8_EA(b, s, d, regclk, memclk) \ | #define PREPART_REG8_EA(b, s, d, regclk, memclk) \ |
| GET_PCBYTE((b)) \ | GET_PCBYTE((b)) \ |
| if ((b) >= 0xc0) { \ | if ((b) >= 0xc0) { \ |
| I286_CLOCK(regclk) \ | I286_WORKCLOCK(regclk); \ |
| (s) = *(reg8_b20[b]); \ | (s) = *(reg8_b20[b]); \ |
| } \ | } \ |
| else { \ | else { \ |
| I286_CLOCK(memclk) \ | I286_WORKCLOCK(memclk); \ |
| (s) = i286_memoryread(c_calc_ea_dst[(b)]()); \ | (s) = i286_memoryread(c_calc_ea_dst[(b)]()); \ |
| } \ | } \ |
| (d) = reg8_b53[(b)]; | (d) = reg8_b53[(b)]; |
| Line 106 | Line 106 |
| #define PREPART_REG16_EA(b, s, d, regclk, memclk) \ | #define PREPART_REG16_EA(b, s, d, regclk, memclk) \ |
| GET_PCBYTE(b) \ | GET_PCBYTE(b) \ |
| if (b >= 0xc0) { \ | if (b >= 0xc0) { \ |
| I286_CLOCK(regclk) \ | I286_WORKCLOCK(regclk); \ |
| s = *(reg16_b20[b]); \ | s = *(reg16_b20[b]); \ |
| } \ | } \ |
| else { \ | else { \ |
| I286_CLOCK(memclk) \ | I286_WORKCLOCK(memclk); \ |
| s = i286_memoryread_w(c_calc_ea_dst[b]()); \ | s = i286_memoryread_w(c_calc_ea_dst[b]()); \ |
| } \ | } \ |
| d = reg16_b53[b]; | d = reg16_b53[b]; |
| Line 338 | Line 338 |
| I286_FLAGL &= C_FLAG; \ | I286_FLAGL &= C_FLAG; \ |
| I286_FLAGL |= (BYTE)(((w) ^ bak) & A_FLAG); \ | I286_FLAGL |= (BYTE)(((w) ^ bak) & A_FLAG); \ |
| I286_FLAGL |= WORDSZPF(w); \ | I286_FLAGL |= WORDSZPF(w); \ |
| I286_CLOCK(clock); \ | I286_WORKCLOCK(clock); \ |
| } | } |
| Line 350 | Line 350 |
| I286_FLAGL &= C_FLAG; \ | I286_FLAGL &= C_FLAG; \ |
| I286_FLAGL |= (BYTE)((w ^ bak) & A_FLAG); \ | I286_FLAGL |= (BYTE)((w ^ bak) & A_FLAG); \ |
| I286_FLAGL |= WORDSZPF(w); \ | I286_FLAGL |= WORDSZPF(w); \ |
| I286_CLOCK(clock); \ | I286_WORKCLOCK(clock); \ |
| } | } |
| #define REGPUSH(reg, clock) { \ | #define REGPUSH(reg, clock) { \ |
| I286_CLOCK(clock); \ | I286_WORKCLOCK(clock); \ |
| I286_SP -= 2; \ | I286_SP -= 2; \ |
| i286_memorywrite_w(I286_SP + SS_BASE, reg); \ | i286_memorywrite_w(I286_SP + SS_BASE, reg); \ |
| } | } |
| Line 370 | Line 370 |
| UINT16 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_WORKCLOCK(clock); \ |
| } | } |
| #define REGPOP(reg, clock) { \ | #define REGPOP(reg, clock) { \ |
| I286_CLOCK(clock); \ | I286_WORKCLOCK(clock); \ |
| reg = i286_memoryread_w(I286_SP + SS_BASE); \ | reg = i286_memoryread_w(I286_SP + SS_BASE); \ |
| I286_SP += 2; \ | I286_SP += 2; \ |
| } | } |
| Line 388 | Line 388 |
| #define JMPSHORT(clock) { \ | #define JMPSHORT(clock) { \ |
| I286_CLOCK(clock); \ | I286_WORKCLOCK(clock); \ |
| I286_IP += __CBW(i286_memoryread(CS_BASE + I286_IP)); \ | I286_IP += __CBW(i286_memoryread(CS_BASE + I286_IP)); \ |
| I286_IP++; \ | I286_IP++; \ |
| } | } |
| #define JMPNOP(clock) { \ | #define JMPNOP(clock) { \ |
| I286_CLOCK(clock); \ | I286_WORKCLOCK(clock); \ |
| I286_IP++; \ | I286_IP++; \ |
| } | } |
| #define MOVIMM8(reg) { \ | #define MOVIMM8(reg) { \ |
| I286_CLOCK(2) \ | I286_WORKCLOCK(2); \ |
| GET_PCBYTE(reg) \ | GET_PCBYTE(reg) \ |
| } | } |
| #define MOVIMM16(reg) { \ | #define MOVIMM16(reg) { \ |
| I286_CLOCK(2) \ | I286_WORKCLOCK(2); \ |
| GET_PCWORD(reg) \ | GET_PCWORD(reg) \ |
| } | } |