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:
AJR 2020-04-02 15:46:03 -04:00
parent 79eb449936
commit 120977e04f
7 changed files with 10 additions and 31 deletions

View File

@ -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

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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));

View File

@ -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));

View File

@ -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()