diff options
author | 2012-04-30 19:37:30 +0000 | |
---|---|---|
committer | 2012-04-30 19:37:30 +0000 | |
commit | 8c8b37b75af76ef7f413d1df896a632deaf1909c (patch) | |
tree | b2558cf2edcf8e2fe76c4cc15a2fe2f2e2dad82f /src/emu/machine/i8155.c | |
parent | a91bbaade81e2a62cf1ee193eab6ab3b830ab1f8 (diff) |
simplified read_port + make sure portc is 6 bits wide (meyc8088.c expects d6,7 to be set on read)
Diffstat (limited to 'src/emu/machine/i8155.c')
-rw-r--r-- | src/emu/machine/i8155.c | 39 |
1 files changed, 11 insertions, 28 deletions
diff --git a/src/emu/machine/i8155.c b/src/emu/machine/i8155.c index 53798b1a3b9..5f7a230b3f6 100644 --- a/src/emu/machine/i8155.c +++ b/src/emu/machine/i8155.c @@ -159,36 +159,19 @@ inline UINT8 i8155_device::read_port(int port) { UINT8 data = 0; - switch (port) + switch (get_port_mode(port)) { - case PORT_A: - case PORT_B: - switch (get_port_mode(port)) - { - case PORT_MODE_INPUT: - data = m_in_port_func[port](0); - break; - - case PORT_MODE_OUTPUT: - data = m_output[port]; - break; - } + case PORT_MODE_INPUT: + data = m_in_port_func[port](0); break; - case PORT_C: - switch (get_port_mode(PORT_C)) - { - case PORT_MODE_INPUT: - data = m_in_port_func[port](0) & 0x3f; - break; - - case PORT_MODE_OUTPUT: - data = m_output[port] & 0x3f; - break; + case PORT_MODE_OUTPUT: + data = m_output[port]; + break; - default: - logerror("8155 '%s' Unsupported Port C mode!\n", tag()); - } + default: + // strobed mode not implemented yet + logerror("8155 '%s' Unsupported Port C mode!\n", tag()); break; } @@ -404,7 +387,7 @@ READ8_MEMBER( i8155_device::io_r ) break; case REGISTER_PORT_C: - data = read_port(PORT_C); + data = read_port(PORT_C) | 0xc0; break; case REGISTER_TIMER_LOW: @@ -501,7 +484,7 @@ void i8155_device::register_w(int offset, UINT8 data) break; case REGISTER_PORT_C: - write_port(PORT_C, data); + write_port(PORT_C, data & 0x3f); break; case REGISTER_TIMER_LOW: |