newbrain: WIP. (nw)

This commit is contained in:
Curt Coder 2017-01-08 20:42:09 +02:00
parent a1863b300b
commit 63bb503904
2 changed files with 30 additions and 33 deletions

View File

@ -35,7 +35,6 @@
- only key 7 is recognized - only key 7 is recognized
- escape key mapping - escape key mapping
- VFD - VFD
- reset/powerup time constants
- bitmapped video - bitmapped video
- accurate video timing - accurate video timing
- cassette - cassette
@ -375,7 +374,7 @@ READ8_MEMBER( newbrain_state::cop_in_r )
uint8_t data = 0xe; uint8_t data = 0xe;
// keyboard // 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); 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; uint8_t data = 0x1;
// keyboard // keyboard
data |= BIT(m_keydata, 1) << 1; data |= BIT(m_403_q, 1) << 1;
data |= BIT(m_keydata, 0) << 2; data |= BIT(m_403_q, 0) << 2;
data |= BIT(m_keydata, 3) << 3; data |= BIT(m_403_q, 3) << 3;
if (LOG_COP) logerror("%s %s G %01x\n", machine().time().as_string(), machine().describe_context(), data); 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); m_cassette2->output(m_cop_tdo ? -1.0 : +1.0);
if (k4) { if (k4) {
// CD4024 RST m_405_q = 0;
m_keylatch = 0;
if (LOG_COP) logerror("%s %s keylatch reset\n", machine().time().as_string(), machine().describe_context()); if (LOG_COP) logerror("%s %s keylatch reset\n", machine().time().as_string(), machine().describe_context());
} else if (m_cop_k6 && !k6) { } else if (m_cop_k6 && !k6) {
// CD4024 CLK m_405_q++;
m_keylatch++; m_405_q &= 0x7f;
m_keylatch &= 0x0f;
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) { if (!m_cop_k6 && k6) {
//CD4076 CLK m_403_d = m_y[m_405_q & 0x0f]->read() & 0x0f;
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); if (LOG_COP) logerror("%s %s keydata %01x\n", machine().time().as_string(), machine().describe_context(), m_403_d);
} else if (m_cop_k6 && k6) { }
m_keydata = 0;
} else if (!k6) { if (k6) {
m_keydata = 0x0f; 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()); if (LOG_COP) logerror("%s %s keydata disabled\n", machine().time().as_string(), machine().describe_context());
output().set_digit_value(m_keylatch, m_segment_data);
} else {
} }
m_cop_k6 = k6; m_cop_k6 = k6;
@ -531,10 +527,10 @@ WRITE_LINE_MEMBER( newbrain_state::k2_w )
if (state) if (state)
{ {
m_segment_data >>= 1; m_402_q >>= 1;
m_segment_data = (m_cop_so << 15) | (m_segment_data & 0x7fff); 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_g1));
save_item(NAME(m_cop_g3)); save_item(NAME(m_cop_g3));
save_item(NAME(m_cop_k6)); save_item(NAME(m_cop_k6));
save_item(NAME(m_keylatch)); save_item(NAME(m_405_q));
save_item(NAME(m_keydata)); save_item(NAME(m_403_q));
save_item(NAME(m_segment_data)); save_item(NAME(m_402_q));
} }

View File

@ -45,8 +45,8 @@ public:
m_userint(1), m_userint(1),
m_clkint(1), m_clkint(1),
m_copint(1), m_copint(1),
m_keylatch(0), m_405_q(0),
m_keydata(0xf) m_403_q(0xf)
{ {
} }
@ -122,9 +122,10 @@ protected:
int m_cop_g3; int m_cop_g3;
int m_cop_k6; int m_cop_k6;
int m_keylatch; int m_405_q;
int m_keydata; uint8_t m_403_q;
uint16_t m_segment_data; uint8_t m_403_d;
uint16_t m_402_q;
int m_rv; int m_rv;
int m_fs; int m_fs;