From e8ce03e3268317309f303ace0dda6b7b0b38c6b7 Mon Sep 17 00:00:00 2001 From: Michael Zapf Date: Sat, 8 Jun 2013 12:32:49 +0000 Subject: [PATCH] ti99: Changed behaviour of memory cells (invert even addresses), may help with some programs that assume power-on default values. (nw) --- src/mess/machine/ti99/ti32kmem.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/mess/machine/ti99/ti32kmem.c b/src/mess/machine/ti99/ti32kmem.c index 52867e163a0..8230fe6fd12 100644 --- a/src/mess/machine/ti99/ti32kmem.c +++ b/src/mess/machine/ti99/ti32kmem.c @@ -36,40 +36,50 @@ ti_32k_expcard_device::ti_32k_expcard_device(const machine_config &mconfig, cons READ8Z_MEMBER(ti_32k_expcard_device::readz) { + UINT8 val = 0; + bool access = true; switch((offset & 0xe000)>>13) { case 1: - *value = m_ram_ptr[offset & 0x1fff]; + val = m_ram_ptr[offset & 0x1fff]; break; case 5: - *value = m_ram_ptr[(offset & 0x1fff) | 0x2000]; + val = m_ram_ptr[(offset & 0x1fff) | 0x2000]; break; case 6: - *value = m_ram_ptr[(offset & 0x1fff) | 0x4000]; + val = m_ram_ptr[(offset & 0x1fff) | 0x4000]; break; case 7: - *value = m_ram_ptr[(offset & 0x1fff) | 0x6000]; + val = m_ram_ptr[(offset & 0x1fff) | 0x6000]; break; default: + access = false; break; } + if (access) + { + if ((offset&1)!=1) *value = ~val; + else *value = val; + } } WRITE8_MEMBER(ti_32k_expcard_device::write) { + UINT8 data1 = data; + if ((offset&1)!=1) data1 = ~data; switch((offset & 0xe000)>>13) { case 1: - m_ram_ptr[offset & 0x1fff] = data; + m_ram_ptr[offset & 0x1fff] = data1; break; case 5: - m_ram_ptr[(offset & 0x1fff) | 0x2000] = data; + m_ram_ptr[(offset & 0x1fff) | 0x2000] = data1; break; case 6: - m_ram_ptr[(offset & 0x1fff) | 0x4000] = data; + m_ram_ptr[(offset & 0x1fff) | 0x4000] = data1; break; case 7: - m_ram_ptr[(offset & 0x1fff) | 0x6000] = data; + m_ram_ptr[(offset & 0x1fff) | 0x6000] = data1; break; default: break;