From 1259ee5648b68639fd9042d612bb8567167db9c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Banaan=20Ananas?= Date: Wed, 26 Feb 2014 20:46:23 +0000 Subject: [PATCH] simplify masks --- src/emu/machine/rp5c01.c | 34 +++++++++++++++++---------------- src/emu/machine/rp5c15.c | 41 ++++++++++++++++++++-------------------- 2 files changed, 38 insertions(+), 37 deletions(-) diff --git a/src/emu/machine/rp5c01.c b/src/emu/machine/rp5c01.c index d543e1fcbaf..6f7c54e43af 100644 --- a/src/emu/machine/rp5c01.c +++ b/src/emu/machine/rp5c01.c @@ -59,7 +59,7 @@ enum // register write mask -static const int REGISTER_WRITE_MASK[2][16] = +static const int register_write_mask[2][16] = { { 0xf, 0x7, 0xf, 0x7, 0xf, 0x3, 0x7, 0xf, 0x3, 0xf, 0x1, 0xf, 0xf, 0xf, 0xf, 0xf }, { 0x0, 0x0, 0xf, 0x7, 0xf, 0x3, 0x7, 0xf, 0x3, 0x0, 0x1, 0x3, 0x0, 0xf, 0xf, 0xf } @@ -347,8 +347,9 @@ WRITE_LINE_MEMBER( rp5c01_device::adj_w ) READ8_MEMBER( rp5c01_device::read ) { UINT8 data = 0; + offset &= 0x0f; - switch (offset & 0x0f) + switch (offset) { case REGISTER_MODE: data = m_mode; @@ -364,21 +365,21 @@ READ8_MEMBER( rp5c01_device::read ) { case MODE00: case MODE01: - data = m_reg[m_mode & MODE_MASK][offset & 0x0f]; + data = m_reg[m_mode & MODE_MASK][offset]; break; case BLOCK10: - data = m_ram[offset & 0x0f]; + data = m_ram[offset]; break; case BLOCK11: - data = m_ram[offset & 0x0f] >> 4; + data = m_ram[offset] >> 4; break; } break; } - if (LOG) logerror("RP5C01 '%s' Register %u Read %02x\n", tag(), offset & 0x0f, data); + if (LOG) logerror("RP5C01 '%s' Register %u Read %02x\n", tag(), offset, data); return data & 0x0f; } @@ -390,10 +391,13 @@ READ8_MEMBER( rp5c01_device::read ) WRITE8_MEMBER( rp5c01_device::write ) { - switch (offset & 0x0f) + data &= 0x0f; + offset &= 0x0f; + + switch (offset) { case REGISTER_MODE: - m_mode = data & 0x0f; + m_mode = data; if (LOG) { @@ -408,14 +412,12 @@ WRITE8_MEMBER( rp5c01_device::write ) break; case REGISTER_RESET: - m_reset = data & 0x0f; + m_reset = data; if (data & RESET_ALARM) { - int i; - // reset alarm registers - for (i = REGISTER_1_MINUTE; i < REGISTER_1_MONTH; i++) + for (int i = REGISTER_1_MINUTE; i < REGISTER_1_MONTH; i++) { m_reg[MODE01][i] = 0; } @@ -435,22 +437,22 @@ WRITE8_MEMBER( rp5c01_device::write ) { case MODE00: case MODE01: - m_reg[m_mode & MODE_MASK][offset & 0x0f] = data & REGISTER_WRITE_MASK[m_mode & MODE_MASK][offset & 0x0f]; + m_reg[m_mode & MODE_MASK][offset] = data & register_write_mask[m_mode & MODE_MASK][offset]; set_time(false, read_counter(REGISTER_1_YEAR), read_counter(REGISTER_1_MONTH), read_counter(REGISTER_1_DAY), m_reg[MODE00][REGISTER_DAY_OF_THE_WEEK], read_counter(REGISTER_1_HOUR), read_counter(REGISTER_1_MINUTE), read_counter(REGISTER_1_SECOND)); break; case BLOCK10: - m_ram[offset & 0x0f] = (m_ram[offset & 0x0f] & 0xf0) | (data & 0x0f); + m_ram[offset] = (m_ram[offset] & 0xf0) | data; break; case BLOCK11: - m_ram[offset & 0x0f] = (data << 4) | (m_ram[offset & 0x0f] & 0x0f); + m_ram[offset] = (data << 4) | (m_ram[offset] & 0x0f); break; } - if (LOG) logerror("RP5C01 '%s' Register %u Write %02x\n", tag(), offset & 0x0f, data); + if (LOG) logerror("RP5C01 '%s' Register %u Write %02x\n", tag(), offset, data); break; } } diff --git a/src/emu/machine/rp5c15.c b/src/emu/machine/rp5c15.c index 9218429b392..1f83325cb26 100644 --- a/src/emu/machine/rp5c15.c +++ b/src/emu/machine/rp5c15.c @@ -67,7 +67,7 @@ enum // register write mask -static const int REGISTER_WRITE_MASK[2][16] = +static const int register_write_mask[2][16] = { { 0xf, 0x7, 0xf, 0x7, 0xf, 0x3, 0x7, 0xf, 0x3, 0xf, 0x1, 0xf, 0xf, 0xf, 0xf, 0xf }, { 0x3, 0x1, 0xf, 0x7, 0xf, 0x3, 0x7, 0xf, 0x3, 0x0, 0x1, 0x3, 0x0, 0xf, 0xf, 0xf } @@ -329,8 +329,9 @@ void rp5c15_device::rtc_clock_updated(int year, int month, int day, int day_of_w READ8_MEMBER( rp5c15_device::read ) { UINT8 data = 0; + offset &= 0x0f; - switch (offset & 0x0f) + switch (offset) { case REGISTER_MODE: data = m_mode; @@ -342,11 +343,11 @@ READ8_MEMBER( rp5c15_device::read ) break; default: - data = m_reg[m_mode & MODE_MASK][offset & 0x0f]; + data = m_reg[m_mode & MODE_MASK][offset]; break; } - if (LOG) logerror("RP5C15 '%s' Register %u Read %02x\n", tag(), offset & 0x0f, data); + if (LOG) logerror("RP5C15 '%s' Register %u Read %02x\n", tag(), offset, data); return data & 0x0f; } @@ -358,10 +359,13 @@ READ8_MEMBER( rp5c15_device::read ) WRITE8_MEMBER( rp5c15_device::write ) { - switch (offset & 0x0f) + data &= 0x0f; + offset &= 0x0f; + + switch (offset) { case REGISTER_MODE: - m_mode = data & 0x0f; + m_mode = data; if (LOG) { @@ -376,14 +380,12 @@ WRITE8_MEMBER( rp5c15_device::write ) break; case REGISTER_RESET: - m_reset = data & 0x0f; + m_reset = data; if (data & RESET_ALARM) { - int i; - // reset alarm registers - for (i = REGISTER_1_MINUTE; i < REGISTER_1_MONTH; i++) + for (int i = REGISTER_1_MINUTE; i < REGISTER_1_MONTH; i++) { m_reg[MODE01][i] = 0; } @@ -399,19 +401,17 @@ WRITE8_MEMBER( rp5c15_device::write ) break; default: - { - int mode = m_mode & MODE_MASK; - switch (mode) + switch (m_mode & MODE_MASK) { case MODE00: - m_reg[mode][offset & 0x0f] = data & REGISTER_WRITE_MASK[mode][offset & 0x0f]; + m_reg[MODE00][offset] = data & register_write_mask[MODE00][offset]; set_time(false, read_counter(REGISTER_1_YEAR), read_counter(REGISTER_1_MONTH), read_counter(REGISTER_1_DAY), m_reg[MODE00][REGISTER_DAY_OF_THE_WEEK], read_counter(REGISTER_1_HOUR), read_counter(REGISTER_1_MINUTE), read_counter(REGISTER_1_SECOND)); break; case MODE01: - switch (offset & 0x0f) + switch (offset) { case REGISTER_CLOCK_OUTPUT: switch (data & 0x07) @@ -447,26 +447,25 @@ WRITE8_MEMBER( rp5c15_device::write ) break; } - m_reg[mode][offset & 0x0f] = data & REGISTER_WRITE_MASK[mode][offset & 0x0f]; + m_reg[MODE01][offset] = data & register_write_mask[MODE01][offset]; break; case REGISTER_ADJUST: - if (BIT(data, 0)) + if (data & 0x01) { adjust_seconds(); } - m_reg[mode][offset & 0x0f] = data & REGISTER_WRITE_MASK[mode][offset & 0x0f]; + m_reg[MODE01][offset] = data & register_write_mask[MODE01][offset]; break; default: - m_reg[mode][offset & 0x0f] = data & REGISTER_WRITE_MASK[mode][offset & 0x0f]; + m_reg[MODE01][offset] = data & register_write_mask[MODE01][offset]; break; } break; } - if (LOG) logerror("RP5C15 '%s' Register %u Write %02x\n", tag(), offset & 0x0f, data); + if (LOG) logerror("RP5C15 '%s' Register %u Write %02x\n", tag(), offset, data); break; } - } }