mirror of
https://github.com/holub/mame
synced 2025-07-05 09:57:47 +03:00
leonardo/renaissance: use input_merger for stb
This commit is contained in:
parent
b410116212
commit
a80392678a
@ -53,6 +53,7 @@ TODO:
|
|||||||
|
|
||||||
#include "bus/saitek_osa/expansion.h"
|
#include "bus/saitek_osa/expansion.h"
|
||||||
#include "cpu/m6800/m6801.h"
|
#include "cpu/m6800/m6801.h"
|
||||||
|
#include "machine/input_merger.h"
|
||||||
#include "machine/sensorboard.h"
|
#include "machine/sensorboard.h"
|
||||||
#include "sound/spkrdev.h"
|
#include "sound/spkrdev.h"
|
||||||
#include "video/pwm.h"
|
#include "video/pwm.h"
|
||||||
@ -73,6 +74,7 @@ public:
|
|||||||
driver_device(mconfig, type, tag),
|
driver_device(mconfig, type, tag),
|
||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
m_expansion(*this, "exp"),
|
m_expansion(*this, "exp"),
|
||||||
|
m_stb(*this, "stb"),
|
||||||
m_board(*this, "board"),
|
m_board(*this, "board"),
|
||||||
m_display(*this, "display"),
|
m_display(*this, "display"),
|
||||||
m_dac(*this, "dac"),
|
m_dac(*this, "dac"),
|
||||||
@ -90,6 +92,7 @@ private:
|
|||||||
// devices/pointers
|
// devices/pointers
|
||||||
required_device<hd6303y_cpu_device> m_maincpu;
|
required_device<hd6303y_cpu_device> m_maincpu;
|
||||||
required_device<saitekosa_expansion_device> m_expansion;
|
required_device<saitekosa_expansion_device> m_expansion;
|
||||||
|
required_device<input_merger_device> m_stb;
|
||||||
required_device<sensorboard_device> m_board;
|
required_device<sensorboard_device> m_board;
|
||||||
required_device<pwm_display_device> m_display;
|
required_device<pwm_display_device> m_display;
|
||||||
optional_device<speaker_sound_device> m_dac;
|
optional_device<speaker_sound_device> m_dac;
|
||||||
@ -102,7 +105,6 @@ private:
|
|||||||
void leds_w(u8 data);
|
void leds_w(u8 data);
|
||||||
u8 unk_r();
|
u8 unk_r();
|
||||||
void unk_w(u8 data);
|
void unk_w(u8 data);
|
||||||
void exp_stb_w(int state);
|
|
||||||
void exp_rts_w(int state);
|
void exp_rts_w(int state);
|
||||||
|
|
||||||
u8 p2_r();
|
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)
|
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
|
// d2: expansion NMI-P
|
||||||
m_expansion->nmi_w(BIT(data, 2));
|
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
|
// d5: expansion ACK-P
|
||||||
m_expansion->ack_w(BIT(data, 5));
|
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->in_p6_cb().set(FUNC(leo_state::p6_r));
|
||||||
m_maincpu->out_p6_cb().set(FUNC(leo_state::p6_w));
|
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));
|
config.set_maximum_quantum(attotime::from_hz(6000));
|
||||||
|
|
||||||
SENSORBOARD(config, m_board).set_type(sensorboard_device::MAGNETS);
|
SENSORBOARD(config, m_board).set_type(sensorboard_device::MAGNETS);
|
||||||
@ -380,7 +380,7 @@ void leo_state::leonardo(machine_config &config)
|
|||||||
|
|
||||||
// expansion module
|
// expansion module
|
||||||
SAITEKOSA_EXPANSION(config, m_expansion, saitekosa_expansion_modules);
|
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));
|
m_expansion->rts_handler().set(FUNC(leo_state::exp_rts_w));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,6 +33,7 @@ TODO:
|
|||||||
|
|
||||||
#include "bus/saitek_osa/expansion.h"
|
#include "bus/saitek_osa/expansion.h"
|
||||||
#include "cpu/m6800/m6801.h"
|
#include "cpu/m6800/m6801.h"
|
||||||
|
#include "machine/input_merger.h"
|
||||||
#include "machine/sensorboard.h"
|
#include "machine/sensorboard.h"
|
||||||
#include "sound/spkrdev.h"
|
#include "sound/spkrdev.h"
|
||||||
#include "video/pwm.h"
|
#include "video/pwm.h"
|
||||||
@ -55,6 +56,7 @@ public:
|
|||||||
driver_device(mconfig, type, tag),
|
driver_device(mconfig, type, tag),
|
||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
m_expansion(*this, "exp"),
|
m_expansion(*this, "exp"),
|
||||||
|
m_stb(*this, "stb"),
|
||||||
m_board(*this, "board"),
|
m_board(*this, "board"),
|
||||||
m_display(*this, "display"),
|
m_display(*this, "display"),
|
||||||
m_lcd_pwm(*this, "lcd_pwm"),
|
m_lcd_pwm(*this, "lcd_pwm"),
|
||||||
@ -76,6 +78,7 @@ private:
|
|||||||
// devices/pointers
|
// devices/pointers
|
||||||
required_device<hd6303y_cpu_device> m_maincpu;
|
required_device<hd6303y_cpu_device> m_maincpu;
|
||||||
required_device<saitekosa_expansion_device> m_expansion;
|
required_device<saitekosa_expansion_device> m_expansion;
|
||||||
|
required_device<input_merger_device> m_stb;
|
||||||
required_device<sensorboard_device> m_board;
|
required_device<sensorboard_device> m_board;
|
||||||
required_device<pwm_display_device> m_display;
|
required_device<pwm_display_device> m_display;
|
||||||
required_device<pwm_display_device> m_lcd_pwm;
|
required_device<pwm_display_device> m_lcd_pwm;
|
||||||
@ -94,7 +97,6 @@ private:
|
|||||||
void leds_w(u8 data);
|
void leds_w(u8 data);
|
||||||
void control_w(u8 data);
|
void control_w(u8 data);
|
||||||
u8 control_r();
|
u8 control_r();
|
||||||
void exp_stb_w(int state);
|
|
||||||
void exp_rts_w(int state);
|
void exp_rts_w(int state);
|
||||||
|
|
||||||
u8 p2_r();
|
u8 p2_r();
|
||||||
@ -189,15 +191,9 @@ u8 ren_state::control_r()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ren_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 ren_state::exp_rts_w(int state)
|
void ren_state::exp_rts_w(int state)
|
||||||
{
|
{
|
||||||
// NAND with ACK-P? (not used by module)
|
// NAND with ACK-P (not used by module)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -237,7 +233,8 @@ void ren_state::p5_w(u8 data)
|
|||||||
// d1: expansion NMI-P
|
// d1: expansion NMI-P
|
||||||
m_expansion->nmi_w(BIT(data, 1));
|
m_expansion->nmi_w(BIT(data, 1));
|
||||||
|
|
||||||
// d3: NAND with STB-P?
|
// d3: NAND with STB-P
|
||||||
|
m_stb->in_w<1>(BIT(data, 3));
|
||||||
|
|
||||||
// d5: expansion ACK-P
|
// d5: expansion ACK-P
|
||||||
m_expansion->ack_w(BIT(data, 5));
|
m_expansion->ack_w(BIT(data, 5));
|
||||||
@ -354,6 +351,9 @@ void ren_state::ren(machine_config &config)
|
|||||||
m_maincpu->in_p6_cb().set(FUNC(ren_state::p6_r));
|
m_maincpu->in_p6_cb().set(FUNC(ren_state::p6_r));
|
||||||
m_maincpu->out_p6_cb().set(FUNC(ren_state::p6_w));
|
m_maincpu->out_p6_cb().set(FUNC(ren_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));
|
config.set_maximum_quantum(attotime::from_hz(6000));
|
||||||
|
|
||||||
SENSORBOARD(config, m_board).set_type(sensorboard_device::MAGNETS);
|
SENSORBOARD(config, m_board).set_type(sensorboard_device::MAGNETS);
|
||||||
@ -380,7 +380,7 @@ void ren_state::ren(machine_config &config)
|
|||||||
|
|
||||||
// expansion module
|
// expansion module
|
||||||
SAITEKOSA_EXPANSION(config, m_expansion, saitekosa_expansion_modules);
|
SAITEKOSA_EXPANSION(config, m_expansion, saitekosa_expansion_modules);
|
||||||
m_expansion->stb_handler().set(FUNC(ren_state::exp_stb_w));
|
m_expansion->stb_handler().set(m_stb, FUNC(input_merger_device::in_w<0>));
|
||||||
m_expansion->rts_handler().set(FUNC(ren_state::exp_rts_w));
|
m_expansion->rts_handler().set(FUNC(ren_state::exp_rts_w));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user