diff options
-rw-r--r-- | src/mame/drivers/newbrain.cpp | 52 | ||||
-rw-r--r-- | src/mame/includes/newbrain.h | 11 |
2 files changed, 30 insertions, 33 deletions
diff --git a/src/mame/drivers/newbrain.cpp b/src/mame/drivers/newbrain.cpp index c48a77c7997..55f366c7444 100644 --- a/src/mame/drivers/newbrain.cpp +++ b/src/mame/drivers/newbrain.cpp @@ -35,7 +35,6 @@ - only key 7 is recognized - escape key mapping - VFD - - reset/powerup time constants - bitmapped video - accurate video timing - cassette @@ -375,7 +374,7 @@ READ8_MEMBER( newbrain_state::cop_in_r ) uint8_t data = 0xe; // keyboard - data |= BIT(m_keydata, 2); + data |= BIT(m_403_q, 2); if (LOG_COP) logerror("%s %s IN %01x\n", machine().time().as_string(), machine().describe_context(), data); @@ -403,9 +402,9 @@ READ8_MEMBER( newbrain_state::cop_g_r ) uint8_t data = 0x1; // keyboard - data |= BIT(m_keydata, 1) << 1; - data |= BIT(m_keydata, 0) << 2; - data |= BIT(m_keydata, 3) << 3; + data |= BIT(m_403_q, 1) << 1; + data |= BIT(m_403_q, 0) << 2; + data |= BIT(m_403_q, 3) << 3; if (LOG_COP) logerror("%s %s G %01x\n", machine().time().as_string(), machine().describe_context(), data); @@ -476,32 +475,29 @@ WRITE8_MEMBER( newbrain_state::cop_d_w ) m_cassette2->output(m_cop_tdo ? -1.0 : +1.0); if (k4) { - // CD4024 RST - m_keylatch = 0; + m_405_q = 0; if (LOG_COP) logerror("%s %s keylatch reset\n", machine().time().as_string(), machine().describe_context()); } else if (m_cop_k6 && !k6) { - // CD4024 CLK - m_keylatch++; - m_keylatch &= 0x0f; + m_405_q++; + m_405_q &= 0x7f; - if (LOG_COP) logerror("%s %s keylatch %u\n", machine().time().as_string(), machine().describe_context(), m_keylatch); + if (LOG_COP) logerror("%s %s keylatch %u\n", machine().time().as_string(), machine().describe_context(), m_405_q); } if (!m_cop_k6 && k6) { - //CD4076 CLK - m_keydata = m_y[m_keylatch]->read(); - - if (LOG_COP) logerror("%s %s keydata %01x\n", machine().time().as_string(), machine().describe_context(), m_keydata); - } else if (m_cop_k6 && k6) { - m_keydata = 0; - } else if (!k6) { - m_keydata = 0x0f; - - if (LOG_COP) logerror("%s %s keydata disabled\n", machine().time().as_string(), machine().describe_context()); + m_403_d = m_y[m_405_q & 0x0f]->read() & 0x0f; + + if (LOG_COP) logerror("%s %s keydata %01x\n", machine().time().as_string(), machine().describe_context(), m_403_d); + } - output().set_digit_value(m_keylatch, m_segment_data); + if (k6) { + m_403_q = m_403_d; } else { + m_403_q = 0xf; + output().set_digit_value(m_405_q & 0x0f, m_402_q); + + if (LOG_COP) logerror("%s %s keydata disabled\n", machine().time().as_string(), machine().describe_context()); } m_cop_k6 = k6; @@ -531,10 +527,10 @@ WRITE_LINE_MEMBER( newbrain_state::k2_w ) if (state) { - m_segment_data >>= 1; - m_segment_data = (m_cop_so << 15) | (m_segment_data & 0x7fff); + m_402_q >>= 1; + m_402_q = (m_cop_so << 15) | (m_402_q & 0x7fff); - if (LOG_VFD) logerror("%s %s SEGMENT %04x\n", machine().time().as_string(), machine().describe_context(), m_segment_data); + if (LOG_VFD) logerror("%s %s SEGMENT %04x\n", machine().time().as_string(), machine().describe_context(), m_402_q); } } @@ -732,9 +728,9 @@ void newbrain_state::machine_start() save_item(NAME(m_cop_g1)); save_item(NAME(m_cop_g3)); save_item(NAME(m_cop_k6)); - save_item(NAME(m_keylatch)); - save_item(NAME(m_keydata)); - save_item(NAME(m_segment_data)); + save_item(NAME(m_405_q)); + save_item(NAME(m_403_q)); + save_item(NAME(m_402_q)); } diff --git a/src/mame/includes/newbrain.h b/src/mame/includes/newbrain.h index d876ceb270a..d7d09428b70 100644 --- a/src/mame/includes/newbrain.h +++ b/src/mame/includes/newbrain.h @@ -45,8 +45,8 @@ public: m_userint(1), m_clkint(1), m_copint(1), - m_keylatch(0), - m_keydata(0xf) + m_405_q(0), + m_403_q(0xf) { } @@ -122,9 +122,10 @@ protected: int m_cop_g3; int m_cop_k6; - int m_keylatch; - int m_keydata; - uint16_t m_segment_data; + int m_405_q; + uint8_t m_403_q; + uint8_t m_403_d; + uint16_t m_402_q; int m_rv; int m_fs; |