diff options
Diffstat (limited to 'src/mame/drivers/fidel_desdis.cpp')
-rw-r--r-- | src/mame/drivers/fidel_desdis.cpp | 24 |
1 files changed, 9 insertions, 15 deletions
diff --git a/src/mame/drivers/fidel_desdis.cpp b/src/mame/drivers/fidel_desdis.cpp index e3757df229b..0e72d323be2 100644 --- a/src/mame/drivers/fidel_desdis.cpp +++ b/src/mame/drivers/fidel_desdis.cpp @@ -36,13 +36,15 @@ Designer Mach IV Master 2325 (model 6129) overview: ******************************************************************************/ #include "emu.h" + #include "cpu/m6502/r65c02.h" #include "cpu/m6502/m65sc02.h" #include "cpu/m68000/m68000.h" +#include "machine/clock.h" #include "machine/sensorboard.h" -#include "machine/timer.h" #include "sound/dac.h" #include "video/pwm.h" + #include "speaker.h" // internal artwork @@ -61,7 +63,6 @@ public: desdis_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), - m_irq_on(*this, "irq_on"), m_rombank(*this, "rombank"), m_board(*this, "board"), m_display(*this, "display"), @@ -80,7 +81,6 @@ protected: // devices/pointers required_device<cpu_device> m_maincpu; - required_device<timer_device> m_irq_on; optional_memory_bank m_rombank; required_device<sensorboard_device> m_board; required_device<pwm_display_device> m_display; @@ -90,10 +90,6 @@ protected: // address maps void fdes2100d_map(address_map &map); - // periodic interrupts - template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(Line, ASSERT_LINE); } - template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(Line, CLEAR_LINE); } - // I/O handlers void update_lcd(); virtual void control_w(offs_t offset, u8 data); @@ -293,10 +289,9 @@ void desdis_state::fdes2100d(machine_config &config) M65C02(config, m_maincpu, 6_MHz_XTAL); // W65C02P-6 m_maincpu->set_addrmap(AS_PROGRAM, &desdis_state::fdes2100d_map); - const attotime irq_period = attotime::from_hz(600); // from 556 timer (22nF, 102K, 1K), ideal frequency is 600Hz - TIMER(config, m_irq_on).configure_periodic(FUNC(desdis_state::irq_on<M6502_IRQ_LINE>), irq_period); - m_irq_on->set_start_delay(irq_period - attotime::from_nsec(15250)); // active for 15.25us - TIMER(config, "irq_off").configure_periodic(FUNC(desdis_state::irq_off<M6502_IRQ_LINE>), irq_period); + auto &irq_clock(CLOCK(config, "irq_clock", 600)); // from 556 timer (22nF, 102K, 1K), ideal frequency is 600Hz + irq_clock.set_pulse_width(attotime::from_nsec(15250)); // active for 15.25us + irq_clock.signal_handler().set_inputline(m_maincpu, M6502_IRQ_LINE); SENSORBOARD(config, m_board).set_type(sensorboard_device::BUTTONS); m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess)); @@ -329,10 +324,9 @@ void desmas_state::fdes2265(machine_config &config) M68000(config.replace(), m_maincpu, 16_MHz_XTAL); // MC68HC000P12F m_maincpu->set_addrmap(AS_PROGRAM, &desmas_state::fdes2265_map); - const attotime irq_period = attotime::from_hz(600); // from 555 timer, ideal frequency is 600Hz (measured 597Hz) - TIMER(config.replace(), m_irq_on).configure_periodic(FUNC(desmas_state::irq_on<M68K_IRQ_4>), irq_period); - m_irq_on->set_start_delay(irq_period - attotime::from_usec(6)); // active for 6us - TIMER(config.replace(), "irq_off").configure_periodic(FUNC(desmas_state::irq_off<M68K_IRQ_4>), irq_period); + auto &irq_clock(CLOCK(config.replace(), "irq_clock", 600)); // from 555 timer, ideal frequency is 600Hz (measured 597Hz) + irq_clock.set_pulse_width(attotime::from_usec(6)); // active for 6us + irq_clock.signal_handler().set_inputline(m_maincpu, M68K_IRQ_4); config.set_default_layout(layout_fidel_desdis_68kr); } |