summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/saitek_leonardo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/saitek_leonardo.cpp')
-rw-r--r--src/mame/drivers/saitek_leonardo.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/mame/drivers/saitek_leonardo.cpp b/src/mame/drivers/saitek_leonardo.cpp
index 95009b8cd0c..09cef526c7f 100644
--- a/src/mame/drivers/saitek_leonardo.cpp
+++ b/src/mame/drivers/saitek_leonardo.cpp
@@ -53,6 +53,7 @@ TODO:
#include "bus/saitek_osa/expansion.h"
#include "cpu/m6800/m6801.h"
+#include "machine/input_merger.h"
#include "machine/sensorboard.h"
#include "sound/spkrdev.h"
#include "video/pwm.h"
@@ -73,6 +74,7 @@ public:
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_expansion(*this, "exp"),
+ m_stb(*this, "stb"),
m_board(*this, "board"),
m_display(*this, "display"),
m_dac(*this, "dac"),
@@ -90,6 +92,7 @@ private:
// devices/pointers
required_device<hd6303y_cpu_device> m_maincpu;
required_device<saitekosa_expansion_device> m_expansion;
+ required_device<input_merger_device> m_stb;
required_device<sensorboard_device> m_board;
required_device<pwm_display_device> m_display;
optional_device<speaker_sound_device> m_dac;
@@ -102,7 +105,6 @@ private:
void leds_w(u8 data);
u8 unk_r();
void unk_w(u8 data);
- void exp_stb_w(int state);
void exp_rts_w(int state);
u8 p2_r();
@@ -166,15 +168,9 @@ void leo_state::unk_w(u8 data)
// ?
}
-void leo_state::exp_stb_w(int state)
-{
- // STB-P to P5 IS
- m_maincpu->set_input_line(M6801_IS_LINE, state ? CLEAR_LINE : ASSERT_LINE);
-}
-
void leo_state::exp_rts_w(int state)
{
- // NAND with ACK-P? (not used by module)
+ // NAND with ACK-P (not used by module)
}
@@ -213,7 +209,8 @@ void leo_state::p5_w(u8 data)
// d2: expansion NMI-P
m_expansion->nmi_w(BIT(data, 2));
- // d3: NAND with STB-P?
+ // d3: NAND with STB-P
+ m_stb->in_w<1>(BIT(data, 3));
// d5: expansion ACK-P
m_expansion->ack_w(BIT(data, 5));
@@ -364,6 +361,9 @@ void leo_state::leonardo(machine_config &config)
m_maincpu->in_p6_cb().set(FUNC(leo_state::p6_r));
m_maincpu->out_p6_cb().set(FUNC(leo_state::p6_w));
+ INPUT_MERGER_ANY_LOW(config, m_stb);
+ m_stb->output_handler().set_inputline(m_maincpu, M6801_IS_LINE);
+
config.set_maximum_quantum(attotime::from_hz(6000));
SENSORBOARD(config, m_board).set_type(sensorboard_device::MAGNETS);
@@ -380,7 +380,7 @@ void leo_state::leonardo(machine_config &config)
// expansion module
SAITEKOSA_EXPANSION(config, m_expansion, saitekosa_expansion_modules);
- m_expansion->stb_handler().set(FUNC(leo_state::exp_stb_w));
+ m_expansion->stb_handler().set(m_stb, FUNC(input_merger_device::in_w<0>));
m_expansion->rts_handler().set(FUNC(leo_state::exp_rts_w));
}