mirror of
https://github.com/holub/mame
synced 2025-07-01 00:09:18 +03:00
newbrain: WIP. (nw)
This commit is contained in:
parent
a1863b300b
commit
63bb503904
@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user