summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/machine/tmp68301.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/machine/tmp68301.c')
-rw-r--r--src/emu/machine/tmp68301.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/emu/machine/tmp68301.c b/src/emu/machine/tmp68301.c
index 26a4d2fea70..955a10c463b 100644
--- a/src/emu/machine/tmp68301.c
+++ b/src/emu/machine/tmp68301.c
@@ -82,17 +82,20 @@ READ16_MEMBER(tmp68301_device::pdir_r)
WRITE16_MEMBER(tmp68301_device::pdir_w)
{
- m_pdir = data;
+ COMBINE_DATA(&m_pdir);
}
READ16_MEMBER(tmp68301_device::pdr_r)
{
- return m_in_parallel_cb(0) & ~m_pdir;
+ return (m_in_parallel_cb(0) & ~m_pdir) | (m_pdr & m_pdir);
}
WRITE16_MEMBER(tmp68301_device::pdr_w)
{
- m_out_parallel_cb(0, data & m_pdir, mem_mask);
+ UINT16 old = m_pdr;
+ COMBINE_DATA(&m_pdr);
+ m_pdr = (old & ~m_pdir) | (m_pdr & m_pdir);
+ m_out_parallel_cb(0, m_pdr, mem_mask);
}
@@ -105,6 +108,7 @@ tmp68301_device::tmp68301_device(const machine_config &mconfig, const char *tag,
m_iisr(0),
m_scr(0),
m_pdir(0),
+ m_pdr(0),
m_space_config("regs", ENDIANNESS_LITTLE, 16, 10, 0, NULL, *ADDRESS_MAP_NAME(tmp68301_regs))
{
memset(m_regs, 0, sizeof(m_regs));
@@ -133,6 +137,7 @@ void tmp68301_device::device_start()
save_item(NAME(m_iisr));
save_item(NAME(m_scr));
save_item(NAME(m_pdir));
+ save_item(NAME(m_pdr));
}
//-------------------------------------------------