mirror of
https://github.com/holub/mame
synced 2025-04-24 09:20:02 +03:00
diexec: Eliminate pulse_input_line_and_vector (nw)
Not the best way to accomplish this, admittedly, but the most convenient for now.
This commit is contained in:
parent
79eb449936
commit
120977e04f
@ -620,33 +620,6 @@ void device_execute_interface::pulse_input_line(int irqline, const attotime &dur
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// pulse_input_line_and_vector - "pulse" an
|
||||
// input line by asserting it and then clearing it
|
||||
// later, specifying a vector
|
||||
//-------------------------------------------------
|
||||
|
||||
void device_execute_interface::pulse_input_line_and_vector(int irqline, int vector, const attotime &duration)
|
||||
{
|
||||
// treat instantaneous pulses as ASSERT+CLEAR
|
||||
if (duration == attotime::zero)
|
||||
{
|
||||
if (irqline != INPUT_LINE_RESET && !input_edge_triggered(irqline))
|
||||
throw emu_fatalerror("device '%s': zero-width pulse is not allowed for input line %d\n", device().tag(), irqline);
|
||||
|
||||
set_input_line_and_vector(irqline, ASSERT_LINE, vector);
|
||||
set_input_line_and_vector(irqline, CLEAR_LINE, vector);
|
||||
}
|
||||
else
|
||||
{
|
||||
set_input_line_and_vector(irqline, ASSERT_LINE, vector);
|
||||
|
||||
attotime target_time = local_time() + duration;
|
||||
m_scheduler->timer_set(target_time - m_scheduler->time(), timer_expired_delegate(FUNC(device_execute_interface::irq_pulse_clear), this), irqline);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// DEVICE INPUT
|
||||
|
@ -165,7 +165,6 @@ public:
|
||||
void set_input_line_and_vector(int linenum, int state, int vector) { m_input[linenum].set_state_synced(state, vector); }
|
||||
int input_state(int linenum) const { return m_input[linenum].m_curstate; }
|
||||
void pulse_input_line(int irqline, const attotime &duration);
|
||||
void pulse_input_line_and_vector(int irqline, int vector, const attotime &duration);
|
||||
|
||||
// suspend/resume
|
||||
void suspend(u32 reason, bool eatcycles);
|
||||
|
@ -226,7 +226,7 @@ WRITE8_MEMBER(cvs_state::cvs_s2636_2_or_character_ram_w)
|
||||
|
||||
INTERRUPT_GEN_MEMBER(cvs_state::cvs_main_cpu_interrupt)
|
||||
{
|
||||
device.execute().pulse_input_line_and_vector(0, 0x03, device.execute().minimum_quantum_time());
|
||||
m_maincpu->pulse_input_line(0, m_maincpu->minimum_quantum_time());
|
||||
|
||||
cvs_scroll_stars();
|
||||
}
|
||||
@ -973,6 +973,7 @@ void cvs_state::cvs(machine_config &config)
|
||||
m_maincpu->set_vblank_int("screen", FUNC(cvs_state::cvs_main_cpu_interrupt));
|
||||
m_maincpu->sense_handler().set("screen", FUNC(screen_device::vblank));
|
||||
m_maincpu->flag_handler().set(FUNC(cvs_state::write_s2650_flag));
|
||||
m_maincpu->intack_handler().set_constant(0x03);
|
||||
|
||||
S2650(config, m_audiocpu, XTAL(14'318'181)/16);
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &cvs_state::cvs_dac_cpu_map);
|
||||
|
@ -2588,6 +2588,7 @@ void galaxold_state::drivfrcg(machine_config &config)
|
||||
maincpu.set_addrmap(AS_IO, &galaxold_state::drivfrcg_io);
|
||||
maincpu.set_vblank_int("screen", FUNC(galaxold_state::hunchbks_vh_interrupt));
|
||||
maincpu.sense_handler().set("screen", FUNC(screen_device::vblank)); // ???
|
||||
maincpu.intack_handler().set_constant(0x03);
|
||||
|
||||
/* video hardware */
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
@ -2677,6 +2678,7 @@ void galaxold_state::racknrol(machine_config &config)
|
||||
maincpu.sense_handler().set(m_screen, FUNC(screen_device::vblank)).invert(); // ???
|
||||
// FIXME: kill the following line - convert to a screen vblank callback
|
||||
maincpu.set_vblank_int("screen", FUNC(galaxold_state::hunchbks_vh_interrupt));
|
||||
maincpu.intack_handler().set_constant(0x03);
|
||||
|
||||
/* video hardware */
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_galaxian);
|
||||
@ -2705,6 +2707,7 @@ void galaxold_state::hexpoola(machine_config &config)
|
||||
maincpu.sense_handler().set(m_screen, FUNC(screen_device::vblank)).invert(); // ???
|
||||
// FIXME: kill the following line - convert to a screen vblank callback
|
||||
maincpu.set_vblank_int("screen", FUNC(galaxold_state::hunchbks_vh_interrupt));
|
||||
maincpu.intack_handler().set_constant(0x03);
|
||||
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_galaxian);
|
||||
PALETTE(config, m_palette, FUNC(galaxold_state::rockclim_palette), 32);
|
||||
|
@ -1538,6 +1538,7 @@ void scramble_state::hunchbks(machine_config &config)
|
||||
maincpu.set_addrmap(AS_PROGRAM, &scramble_state::hunchbks_map);
|
||||
maincpu.set_addrmap(AS_IO, &scramble_state::hunchbks_readport);
|
||||
maincpu.sense_handler().set("screen", FUNC(screen_device::vblank));
|
||||
maincpu.intack_handler().set_constant(0x03);
|
||||
maincpu.set_vblank_int("screen", FUNC(scramble_state::hunchbks_vh_interrupt));
|
||||
|
||||
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500));
|
||||
|
@ -192,7 +192,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(zac_2_state::zac_2_inttimer)
|
||||
{
|
||||
// a pulse is sent via a capacitor (similar to what one finds at a reset pin)
|
||||
if (m_t_c > 0x80)
|
||||
m_maincpu->pulse_input_line_and_vector(INPUT_LINE_IRQ0, 0xbf, 2 * m_maincpu->minimum_quantum_time());
|
||||
m_maincpu->pulse_input_line(INPUT_LINE_IRQ0, 2 * m_maincpu->minimum_quantum_time());
|
||||
else
|
||||
m_t_c++;
|
||||
}
|
||||
@ -220,6 +220,8 @@ void zac_2_state::zac_2(machine_config &config)
|
||||
m_maincpu->set_addrmap(AS_DATA, &zac_2_state::zac_2_data);
|
||||
m_maincpu->sense_handler().set(FUNC(zac_2_state::serial_r));
|
||||
m_maincpu->flag_handler().set(FUNC(zac_2_state::serial_w));
|
||||
m_maincpu->intack_handler().set_constant(0xbf);
|
||||
|
||||
NVRAM(config, "ram", nvram_device::DEFAULT_ALL_0);
|
||||
|
||||
TIMER(config, "zac_2_inttimer").configure_periodic(FUNC(zac_2_state::zac_2_inttimer), attotime::from_hz(200));
|
||||
|
@ -162,7 +162,7 @@ void galaxold_state::init_4in1()
|
||||
|
||||
INTERRUPT_GEN_MEMBER(galaxold_state::hunchbks_vh_interrupt)
|
||||
{
|
||||
device.execute().pulse_input_line_and_vector(0, 0x03, device.execute().minimum_quantum_time());
|
||||
m_maincpu->pulse_input_line(0, m_maincpu->minimum_quantum_time());
|
||||
}
|
||||
|
||||
void galaxold_state::init_bullsdrtg()
|
||||
|
Loading…
Reference in New Issue
Block a user