diff options
Diffstat (limited to 'src/mame/drivers/fidel_vsc.cpp')
-rw-r--r-- | src/mame/drivers/fidel_vsc.cpp | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/src/mame/drivers/fidel_vsc.cpp b/src/mame/drivers/fidel_vsc.cpp index 07dacd2b342..70a83866a1b 100644 --- a/src/mame/drivers/fidel_vsc.cpp +++ b/src/mame/drivers/fidel_vsc.cpp @@ -148,13 +148,15 @@ IFP: Impact Printer - also compatible with C64 apparently. ******************************************************************************/ #include "emu.h" + #include "cpu/z80/z80.h" #include "machine/i8255.h" +#include "machine/clock.h" #include "machine/sensorboard.h" #include "machine/z80pio.h" -#include "machine/timer.h" #include "sound/s14001a.h" #include "video/pwm.h" + #include "speaker.h" // internal artwork @@ -169,7 +171,6 @@ public: vsc_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), - m_nmi_on(*this, "nmi_on"), m_z80pio(*this, "z80pio"), m_ppi8255(*this, "ppi8255"), m_board(*this, "board"), @@ -189,7 +190,6 @@ protected: private: // devices/pointers required_device<cpu_device> m_maincpu; - required_device<timer_device> m_nmi_on; required_device<z80pio_device> m_z80pio; required_device<i8255_device> m_ppi8255; required_device<sensorboard_device> m_board; @@ -205,10 +205,6 @@ private: u8 main_io_trampoline_r(offs_t offset); void main_io_trampoline_w(offs_t offset, u8 data); - // periodic interrupts - template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(nmi_on) { m_maincpu->set_input_line(Line, ASSERT_LINE); } - template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(nmi_off) { m_maincpu->set_input_line(Line, CLEAR_LINE); } - // I/O handlers void update_display(); u8 speech_r(offs_t offset); @@ -426,10 +422,9 @@ void vsc_state::vsc(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &vsc_state::main_map); m_maincpu->set_addrmap(AS_IO, &vsc_state::main_io); - const attotime nmi_period = attotime::from_hz(600); // 555 timer, ideal frequency is 600Hz (measurement was 587Hz) - TIMER(config, m_nmi_on).configure_periodic(FUNC(vsc_state::nmi_on<INPUT_LINE_NMI>), nmi_period); - m_nmi_on->set_start_delay(nmi_period - attotime::from_usec(845)); // active for 0.845ms (approx half) - TIMER(config, "nmi_off").configure_periodic(FUNC(vsc_state::nmi_off<INPUT_LINE_NMI>), nmi_period); + auto &nmi_clock(CLOCK(config, "nmi_clock", 600)); // 555 timer, ideal frequency is 600Hz (measurement was 587Hz) + nmi_clock.set_pulse_width(attotime::from_usec(845)); // active for 0.845ms (approx half) + nmi_clock.signal_handler().set_inputline(m_maincpu, INPUT_LINE_NMI); I8255(config, m_ppi8255); m_ppi8255->out_pa_callback().set(FUNC(vsc_state::ppi_porta_w)); |