From c9006d7f6ed74eaae65b8a4c520724aad0a1027b Mon Sep 17 00:00:00 2001 From: Robbbert Date: Sun, 24 Apr 2022 01:42:34 +1000 Subject: exl100: fixed problem with some keys not autorepeating. Fixed mistake with save-state. --- src/mame/drivers/exelv.cpp | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/mame/drivers/exelv.cpp b/src/mame/drivers/exelv.cpp index 3bee2177f97..b1705aa6ce9 100644 --- a/src/mame/drivers/exelv.cpp +++ b/src/mame/drivers/exelv.cpp @@ -163,6 +163,7 @@ private: DECLARE_MACHINE_START(exeltel); TIMER_DEVICE_CALLBACK_MEMBER(timer_k); void machine_reset() override; + void machine_common(); /* tms7020 i/o ports */ uint8_t m_tms7020_portb = 0; @@ -512,7 +513,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(exelv_state::timer_k) // Idling; nothing pressed, nothing to do if (k_ch_byte == 0) { - m_timer_k->adjust(attotime::from_msec(50)); + m_timer_k->adjust(attotime::from_msec(25)); return; } @@ -560,7 +561,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(exelv_state::timer_k) if (k_ch_bit == 8) { m_subcpu->set_input_line(TMS7000_INT1_LINE, CLEAR_LINE); - k_ch_bit = 1; + k_ch_bit = 0; // just finished sending key if (k_ch_byte == 1) { @@ -583,7 +584,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(exelv_state::timer_k) // clean up and go back to looking at kbd k_channels[1] = 0xff; k_ch_byte = 0; - m_timer_k->adjust(attotime::from_msec(50)); + m_timer_k->adjust(attotime::from_msec(20)); } return; } @@ -758,16 +759,26 @@ INPUT_PORTS_END /* Machine Initialization */ -MACHINE_START_MEMBER( exelv_state, exl100) +void exelv_state::machine_common() { /* register for state saving */ save_item(NAME(m_tms7020_portb)); save_item(NAME(m_tms7041_portb)); save_item(NAME(m_tms7041_portc)); save_item(NAME(m_tms7041_portd)); - save_item(NAME(m_rom_size)); save_item(NAME(m_wx318)); save_item(NAME(m_wx319)); + save_item(NAME(k_channels)); + save_item(NAME(k_ch_byte)); + save_item(NAME(k_ch_bit)); + save_item(NAME(k_bit_bit)); + save_item(NAME(k_bit_num)); +} + +MACHINE_START_MEMBER( exelv_state, exl100) +{ + machine_common(); + save_item(NAME(m_rom_size)); m_rom_size = 0; if (m_cart && m_cart->exists()) @@ -776,22 +787,11 @@ MACHINE_START_MEMBER( exelv_state, exl100) MACHINE_START_MEMBER( exelv_state, exeltel) { + machine_common(); + uint8_t *rom = memregion("user1")->base() + 0x0200; membank("bank1")->configure_entry(0, rom); membank("bank1")->set_entry(0); - - /* register for state saving */ - save_item(NAME(m_tms7020_portb)); - save_item(NAME(m_tms7041_portb)); - save_item(NAME(m_tms7041_portc)); - save_item(NAME(m_tms7041_portd)); - save_item(NAME(m_wx318)); - save_item(NAME(m_wx319)); - save_item(NAME(k_channels)); - save_item(NAME(k_ch_byte)); - save_item(NAME(k_ch_bit)); - save_item(NAME(k_bit_bit)); - save_item(NAME(k_bit_num)); } void exelv_state::machine_reset() @@ -804,7 +804,7 @@ void exelv_state::machine_reset() k_bit_num = 0; if (m_timer_k) - m_timer_k->adjust(attotime::from_seconds(3)); + m_timer_k->adjust(attotime::from_seconds(2)); if (m_subcpu) { -- cgit v1.2.3