--- xmil/z80c/z80c_cb.c 2004/08/05 11:30:13 1.2 +++ xmil/z80c/z80c_cb.c 2008/06/02 20:07:32 1.7 @@ -1,11 +1,10 @@ -//---------------------------------------------------------------------------- -// -// Z80C : Z80 Engine - GENERIC -// -// Copyright by Studio Milmake 1999-2000,2004 -// -//---------------------------------------------------------------------------- - +/* ----------------------------------------------------------------------- + * + * Z80C : Z80 Engine - GENERIC + * + * Copyright by Studio Milmake 1999-2000,2004 + * + *------------------------------------------------------------------------ */ #include "compiler.h" #include "z80core.h" @@ -13,96 +12,96 @@ #include "z80c.mcr" -static BYTE CPUCALL _cb_rlc(BYTE v) { +static REG8 CPUCALL _cb_rlc(REG8 v) { - BYTE ret; + REG8 ret; R_Z80F = v >> 7; ret = (v << 1) | R_Z80F; - R_Z80F |= ZSPtable[ret]; + R_Z80F |= z80szp_flag[(UINT8)ret]; return(ret); } -static BYTE CPUCALL _cb_rrc(BYTE v) { +static REG8 CPUCALL _cb_rrc(REG8 v) { - BYTE ret; + REG8 ret; R_Z80F = v & 1; ret = (v >> 1) | (R_Z80F << 7); - R_Z80F |= ZSPtable[ret]; + R_Z80F |= z80szp_flag[(UINT8)ret]; return(ret); } -static BYTE CPUCALL _cb_rl(BYTE v) { +static REG8 CPUCALL _cb_rl(REG8 v) { - BYTE ret; + REG8 ret; ret = (v << 1) | (R_Z80F & 1); - R_Z80F = ZSPtable[ret] | (v >> 7); + R_Z80F = z80szp_flag[(UINT8)ret] | (v >> 7); return(ret); } -static BYTE CPUCALL _cb_rr(BYTE v) { +static REG8 CPUCALL _cb_rr(REG8 v) { - BYTE ret; + REG8 ret; ret = (v >> 1) | (R_Z80F << 7); - R_Z80F = ZSPtable[ret] | (v & 1); + R_Z80F = z80szp_flag[(UINT8)ret] | (v & 1); return(ret); } -static BYTE CPUCALL _cb_sla(BYTE v) { +static REG8 CPUCALL _cb_sla(REG8 v) { - BYTE ret; + REG8 ret; ret = (v << 1); - R_Z80F = ZSPtable[ret] | (v >> 7); + R_Z80F = z80szp_flag[(UINT8)ret] | (v >> 7); return(ret); } -static BYTE CPUCALL _cb_sra(BYTE v) { +static REG8 CPUCALL _cb_sra(REG8 v) { - BYTE ret; + REG8 ret; - ret = (((char)v) / 2); - R_Z80F = ZSPtable[ret] | (v & 1); + ret = (((SINT8)v) >> 1); + R_Z80F = z80szp_flag[(UINT8)ret] | (v & 1); return(ret); } -static BYTE CPUCALL _cb_sll(BYTE v) { +static REG8 CPUCALL _cb_sll(REG8 v) { - BYTE ret; + REG8 ret; ret = (v << 1) | 1; - R_Z80F = ZSPtable[ret] | (v >> 7); + R_Z80F = z80szp_flag[(UINT8)ret] | (v >> 7); return(ret); } -static BYTE CPUCALL _cb_srl(BYTE v) { +static REG8 CPUCALL _cb_srl(REG8 v) { - BYTE ret; + REG8 ret; ret = v >> 1; - R_Z80F = ZSPtable[ret] | (v & 1); + R_Z80F = z80szp_flag[ret] | (v & 1); return(ret); } -static BYTE (CPUCALL * rolsft_proc[8])(BYTE value) = { +static REG8 (CPUCALL * rolsft_proc[8])(REG8 value) = { _cb_rlc, _cb_rrc, _cb_rl, _cb_rr, _cb_sla, _cb_sra, _cb_sll, _cb_srl}; -static BYTE *cb_reg[8] = { +static UINT8 *cb_reg[8] = { &R_Z80B, &R_Z80C, &R_Z80D, &R_Z80E, &R_Z80H, &R_Z80L, NULL, &R_Z80A}; void z80c_cb(void) { - BYTE op; - BYTE *reg; - BYTE xhl; - int bit; + UINT op; + UINT8 *reg; + REG8 xhl; + UINT bit; R_Z80R++; GET_PC_BYTE(op); @@ -116,7 +115,7 @@ void z80c_cb(void) { *reg = rolsft_proc[bit](*reg); break; - case 0x40: // bit + case 0x40: /* bit */ R_Z80F &= C_FLAG; if ((*reg) & (1 << bit)) { if (bit != 7) { @@ -131,24 +130,24 @@ void z80c_cb(void) { } break; - case 0x80: // reset + case 0x80: /* reset */ (*reg) &= ~(1 << bit); break; - case 0xc0: // set + case 0xc0: /* set */ (*reg) |= 1 << bit; break; } } else { - xhl = Z80_RDMEM(R_Z80HL); + xhl = mem_read8(R_Z80HL); switch(op & 0xc0) { case 0x00: Z80_COUNT(15); xhl = rolsft_proc[bit](xhl); break; - case 0x40: // bit + case 0x40: /* bit */ Z80_COUNT(12); R_Z80F &= C_FLAG; if (xhl & (1 << bit)) { @@ -164,30 +163,30 @@ void z80c_cb(void) { } return; - case 0x80: // reset + case 0x80: /* reset */ Z80_COUNT(15); xhl &= ~(1 << bit); break; - case 0xc0: // set + case 0xc0: /* set */ Z80_COUNT(15); xhl |= 1 << bit; break; } - Z80_WRMEM(R_Z80HL, xhl); + mem_write8(R_Z80HL, xhl); } } void z80c_ixcb(void) { - BYTE op; - WORD adrs; - BYTE xi; - int bit; + UINT op; + UINT adrs; + REG8 xi; + UINT bit; R_Z80R++; - adrs = __CBW(Z80_RDMEM(R_Z80PC++)) + R_Z80IX; - xi = Z80_RDMEM(adrs); + adrs = LOW16(mem_read8s(R_Z80PC++) + R_Z80IX); + xi = mem_read8(adrs); GET_PC_BYTE(op); bit = (op >> 3) & 7; switch(op & 0xc0) { @@ -196,7 +195,7 @@ void z80c_ixcb(void) { xi = rolsft_proc[bit](xi); break; - case 0x40: // bit + case 0x40: /* bit */ Z80_COUNT(20); R_Z80F &= C_FLAG; if (xi & (1 << bit)) { @@ -212,29 +211,29 @@ void z80c_ixcb(void) { } return; - case 0x80: // reset + case 0x80: /* reset */ Z80_COUNT(23); xi &= ~(1 << bit); break; - case 0xc0: // set + case 0xc0: /* set */ Z80_COUNT(23); xi |= 1 << bit; break; } - Z80_WRMEM(adrs, xi); + mem_write8(adrs, xi); } void z80c_iycb(void) { - BYTE op; - WORD adrs; - BYTE xi; - int bit; + UINT op; + UINT adrs; + REG8 xi; + UINT bit; R_Z80R++; - adrs = __CBW(Z80_RDMEM(R_Z80PC++)) + R_Z80IY; - xi = Z80_RDMEM(adrs); + adrs = LOW16(mem_read8s(R_Z80PC++) + R_Z80IY); + xi = mem_read8(adrs); GET_PC_BYTE(op); bit = (op >> 3) & 7; switch(op & 0xc0) { @@ -243,7 +242,7 @@ void z80c_iycb(void) { xi = rolsft_proc[bit](xi); break; - case 0x40: // bit + case 0x40: /* bit */ Z80_COUNT(20); R_Z80F &= C_FLAG; if (xi & (1 << bit)) { @@ -259,16 +258,16 @@ void z80c_iycb(void) { } return; - case 0x80: // reset + case 0x80: /* reset */ Z80_COUNT(23); xi &= ~(1 << bit); break; - case 0xc0: // set + case 0xc0: /* set */ Z80_COUNT(23); xi |= 1 << bit; break; } - Z80_WRMEM(adrs, xi); + mem_write8(adrs, xi); }