summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Robbbert <Robbbert@users.noreply.github.com>2022-04-24 01:42:34 +1000
committer Robbbert <Robbbert@users.noreply.github.com>2022-04-24 01:42:34 +1000
commitc9006d7f6ed74eaae65b8a4c520724aad0a1027b (patch)
tree4720ff2070a071e62868f3edb72c056ac126a5b7
parentc9919e7dfc0cbc813617a54994ee0c2a61a9eef1 (diff)
exl100: fixed problem with some keys not autorepeating. Fixed mistake with save-state.
-rw-r--r--src/mame/drivers/exelv.cpp38
1 files 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)
{