From e9fe7ca8f10dade35e55d2132060c0122b776f59 Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 15 Aug 2018 07:26:44 -0400 Subject: act5a: Protected attribute detection (nw) --- src/mame/drivers/microterm_f8.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/mame/drivers/microterm_f8.cpp b/src/mame/drivers/microterm_f8.cpp index d3a2acffa70..19884279266 100644 --- a/src/mame/drivers/microterm_f8.cpp +++ b/src/mame/drivers/microterm_f8.cpp @@ -85,7 +85,6 @@ private: void microterm_f8_state::machine_start() { - m_port00 = 0; m_keylatch = 0; m_vram = make_unique_clear(0x800); // 6x MM2114 with weird addressing @@ -101,6 +100,7 @@ void microterm_f8_state::machine_start() void microterm_f8_state::machine_reset() { m_scroll = 0; + m_port00 = 0xff; // UART parameters ioport_value dsw3 = m_dsw[2]->read(); @@ -190,15 +190,23 @@ READ8_MEMBER(microterm_f8_state::vram_r) { offs_t vaddr = (offset >> 8) * 80 + (offset & 0x007f); assert(vaddr < 0x800); + + u16 vdata = m_vram[vaddr]; if ((m_port00 & 0x05) == 0 && !machine().side_effects_disabled()) - m_port00 = (m_port00 & 0x0f) | ((m_vram[vaddr] >> 4) & 0xf0); - return m_vram[vaddr] & 0xff; + m_port00 = (m_port00 & 0x0f) | (vdata & 0xf00) >> 4; + + // Bit 7 indicates protected attribute + if ((~vdata & (~m_jumpers->read() >> 1) & 0xf00) != 0) + return vdata | 0x80; + else + return vdata & 0x7f; } WRITE8_MEMBER(microterm_f8_state::vram_w) { offs_t vaddr = (offset >> 8) * 80 + (offset & 0x007f); assert(vaddr < 0x800); + m_vram[vaddr] = data | (m_port00 & 0xf0) << 4; } -- cgit v1.2.3