From 120977e04f0b1a2cdc45fd43c88997320d449e09 Mon Sep 17 00:00:00 2001 From: AJR Date: Thu, 2 Apr 2020 15:46:03 -0400 Subject: diexec: Eliminate pulse_input_line_and_vector (nw) Not the best way to accomplish this, admittedly, but the most convenient for now. --- src/emu/diexec.cpp | 27 --------------------------- src/emu/diexec.h | 1 - src/mame/drivers/cvs.cpp | 3 ++- src/mame/drivers/galaxold.cpp | 3 +++ src/mame/drivers/scramble.cpp | 1 + src/mame/drivers/zac_2.cpp | 4 +++- src/mame/machine/galaxold.cpp | 2 +- 7 files changed, 10 insertions(+), 31 deletions(-) diff --git a/src/emu/diexec.cpp b/src/emu/diexec.cpp index 2fa82809c78..da2758dc7d5 100644 --- a/src/emu/diexec.cpp +++ b/src/emu/diexec.cpp @@ -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 diff --git a/src/emu/diexec.h b/src/emu/diexec.h index 8745b15ae03..75bdca5b229 100644 --- a/src/emu/diexec.h +++ b/src/emu/diexec.h @@ -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); diff --git a/src/mame/drivers/cvs.cpp b/src/mame/drivers/cvs.cpp index 60f78e8710d..5a7004a47bb 100644 --- a/src/mame/drivers/cvs.cpp +++ b/src/mame/drivers/cvs.cpp @@ -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); diff --git a/src/mame/drivers/galaxold.cpp b/src/mame/drivers/galaxold.cpp index 550a56d96ea..679a72b2a81 100644 --- a/src/mame/drivers/galaxold.cpp +++ b/src/mame/drivers/galaxold.cpp @@ -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); diff --git a/src/mame/drivers/scramble.cpp b/src/mame/drivers/scramble.cpp index 64c8b504994..6f28b4f99bf 100644 --- a/src/mame/drivers/scramble.cpp +++ b/src/mame/drivers/scramble.cpp @@ -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)); diff --git a/src/mame/drivers/zac_2.cpp b/src/mame/drivers/zac_2.cpp index 867b108feb4..0b3ea675771 100644 --- a/src/mame/drivers/zac_2.cpp +++ b/src/mame/drivers/zac_2.cpp @@ -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)); diff --git a/src/mame/machine/galaxold.cpp b/src/mame/machine/galaxold.cpp index c94628c1427..06256aaf30c 100644 --- a/src/mame/machine/galaxold.cpp +++ b/src/mame/machine/galaxold.cpp @@ -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() -- cgit v1.2.3