diff options
Diffstat (limited to 'src/emu/machine/r10696.c')
-rw-r--r-- | src/emu/machine/r10696.c | 202 |
1 files changed, 101 insertions, 101 deletions
diff --git a/src/emu/machine/r10696.c b/src/emu/machine/r10696.c index 50191c0ede7..7dca19866f6 100644 --- a/src/emu/machine/r10696.c +++ b/src/emu/machine/r10696.c @@ -34,7 +34,7 @@ #include "emu.h" #include "machine/r10696.h" -#define VERBOSE 1 +#define VERBOSE 1 #if VERBOSE #define LOG(x) logerror x #else @@ -50,9 +50,9 @@ const device_type R10696 = &device_creator<r10696_device>; r10696_device::r10696_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : device_t(mconfig, R10696, "Rockwell 10696", tag, owner, clock, "r10696", __FILE__), - m_io_a(0), m_io_b(0), m_io_c(0), - m_iord(*this), m_iowr(*this) + : device_t(mconfig, R10696, "Rockwell 10696", tag, owner, clock, "r10696", __FILE__), + m_io_a(0), m_io_b(0), m_io_c(0), + m_iord(*this), m_iowr(*this) { } @@ -61,12 +61,12 @@ r10696_device::r10696_device(const machine_config &mconfig, const char *tag, dev */ void r10696_device::device_start() { - m_iord.resolve(); - m_iowr.resolve(); + m_iord.resolve(); + m_iowr.resolve(); - save_item(NAME(m_io_a)); - save_item(NAME(m_io_b)); - save_item(NAME(m_io_c)); + save_item(NAME(m_io_a)); + save_item(NAME(m_io_b)); + save_item(NAME(m_io_c)); } /** @@ -87,101 +87,101 @@ void r10696_device::device_reset() WRITE8_MEMBER( r10696_device::io_w ) { - assert(offset < 16); - const UINT8 io_a = m_io_a; - const UINT8 io_b = m_io_b; - const UINT8 io_c = m_io_c; - switch (offset) - { - case 0x0A: // Read Group A - case 0x09: // Read Group B - case 0x03: // Read Group C - case 0x00: // Read Groups A | B | C - case 0x01: // Read Groups B | C - case 0x02: // Read Groups A | C - case 0x08: // Read Groups A | B - break; - - case 0x0E: // Set Group A - m_io_a = data & 0x0f; - break; - case 0x0D: // Set Group B - m_io_b = data & 0x0f; - break; - case 0x07: // Set Group C - m_io_c = data & 0x0f; - break; - case 0x04: // Set Groups A, B and C - m_io_a = m_io_b = m_io_c = data & 0x0f; - break; - case 0x05: // Set Groups B and C - m_io_b = m_io_c = data & 0x0f; - break; - case 0x06: // Set Groups A and C - m_io_a = m_io_c = data & 0x0f; - break; - case 0x0C: // Set Groups A and B - m_io_a = m_io_b = data & 0x0f; - break; - } - if (io_a != m_io_a) - m_iowr(0, m_io_a, 0x0f); - if (io_b != m_io_b) - m_iowr(1, m_io_b, 0x0f); - if (io_c != m_io_c) - m_iowr(2, m_io_c, 0x0f); + assert(offset < 16); + const UINT8 io_a = m_io_a; + const UINT8 io_b = m_io_b; + const UINT8 io_c = m_io_c; + switch (offset) + { + case 0x0A: // Read Group A + case 0x09: // Read Group B + case 0x03: // Read Group C + case 0x00: // Read Groups A | B | C + case 0x01: // Read Groups B | C + case 0x02: // Read Groups A | C + case 0x08: // Read Groups A | B + break; + + case 0x0E: // Set Group A + m_io_a = data & 0x0f; + break; + case 0x0D: // Set Group B + m_io_b = data & 0x0f; + break; + case 0x07: // Set Group C + m_io_c = data & 0x0f; + break; + case 0x04: // Set Groups A, B and C + m_io_a = m_io_b = m_io_c = data & 0x0f; + break; + case 0x05: // Set Groups B and C + m_io_b = m_io_c = data & 0x0f; + break; + case 0x06: // Set Groups A and C + m_io_a = m_io_c = data & 0x0f; + break; + case 0x0C: // Set Groups A and B + m_io_a = m_io_b = data & 0x0f; + break; + } + if (io_a != m_io_a) + m_iowr(0, m_io_a, 0x0f); + if (io_b != m_io_b) + m_iowr(1, m_io_b, 0x0f); + if (io_c != m_io_c) + m_iowr(2, m_io_c, 0x0f); } READ8_MEMBER( r10696_device::io_r ) { - assert(offset < 16); - UINT8 io_a, io_b, io_c; - UINT8 data = 0xf; - switch (offset) - { - case 0x0A: // Read Group A - io_a = m_iord(0); - data = io_a & 0x0f; - break; - case 0x09: // Read Group B - io_b = m_iord(1); - data = io_b & 0x0f; - break; - case 0x03: // Read Group C - io_c = m_iord(2); - data = io_c & 0x0f; - break; - case 0x00: // Read Groups A | B | C - io_a = m_iord(0); - io_b = m_iord(1); - io_c = m_iord(2); - data = (io_a | io_b | io_a) & 0x0f; - break; - case 0x01: // Read Groups B | C - io_b = m_iord(1); - io_c = m_iord(2); - data = (io_b | io_c) & 0x0f; - break; - case 0x02: // Read Groups A | C - io_a = m_iord(0); - io_c = m_iord(2); - data = (io_a | io_c) & 0x0f; - break; - case 0x08: // Read Groups A | B - io_a = m_iord(0); - io_b = m_iord(1); - data = (io_a | io_b) & 0x0f; - break; - - case 0x0E: // Set Group A - case 0x0D: // Set Group B - case 0x07: // Set Group C - case 0x04: // Set Groups A, B and C - case 0x05: // Set Groups B and C - case 0x06: // Set Groups A and C - case 0x0C: // Set Groups A and B - break; - } - return data; + assert(offset < 16); + UINT8 io_a, io_b, io_c; + UINT8 data = 0xf; + switch (offset) + { + case 0x0A: // Read Group A + io_a = m_iord(0); + data = io_a & 0x0f; + break; + case 0x09: // Read Group B + io_b = m_iord(1); + data = io_b & 0x0f; + break; + case 0x03: // Read Group C + io_c = m_iord(2); + data = io_c & 0x0f; + break; + case 0x00: // Read Groups A | B | C + io_a = m_iord(0); + io_b = m_iord(1); + io_c = m_iord(2); + data = (io_a | io_b | io_a) & 0x0f; + break; + case 0x01: // Read Groups B | C + io_b = m_iord(1); + io_c = m_iord(2); + data = (io_b | io_c) & 0x0f; + break; + case 0x02: // Read Groups A | C + io_a = m_iord(0); + io_c = m_iord(2); + data = (io_a | io_c) & 0x0f; + break; + case 0x08: // Read Groups A | B + io_a = m_iord(0); + io_b = m_iord(1); + data = (io_a | io_b) & 0x0f; + break; + + case 0x0E: // Set Group A + case 0x0D: // Set Group B + case 0x07: // Set Group C + case 0x04: // Set Groups A, B and C + case 0x05: // Set Groups B and C + case 0x06: // Set Groups A and C + case 0x0C: // Set Groups A and B + break; + } + return data; } |