summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Michaël Banaan Ananas <happppp@users.noreply.github.com>2012-04-30 19:37:30 +0000
committer Michaël Banaan Ananas <happppp@users.noreply.github.com>2012-04-30 19:37:30 +0000
commit8c8b37b75af76ef7f413d1df896a632deaf1909c (patch)
treeb2558cf2edcf8e2fe76c4cc15a2fe2f2e2dad82f /src
parenta91bbaade81e2a62cf1ee193eab6ab3b830ab1f8 (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')
-rw-r--r--src/emu/machine/i8155.c39
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: