From 2c35e09c66e8009784b40e1d5751ca40df3f15d6 Mon Sep 17 00:00:00 2001 From: hap Date: Fri, 10 Sep 2021 13:32:05 +0200 Subject: cking_master: use clock device for irq signal --- src/devices/machine/clock.h | 2 +- src/mame/drivers/cking_master.cpp | 15 ++++----------- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/src/devices/machine/clock.h b/src/devices/machine/clock.h index 7e2fe1925a6..176f823d738 100644 --- a/src/devices/machine/clock.h +++ b/src/devices/machine/clock.h @@ -19,7 +19,7 @@ public: auto signal_handler() { return m_signal_handler.bind(); } auto &set_period(attotime period) { m_period = period; reinit(); return *this; } auto &set_pulse_width(attotime pw) { assert(!pw.is_never()); m_pw = pw; reinit(); return *this; } - auto &set_duty_cycle(double duty) { assert(duty > 0.0 && duty < 1.0); m_duty = duty; m_pw = attotime::never; reinit(); return *this; } + auto &set_duty_cycle(double duty) { assert(duty >= 0.0 && duty <= 1.0); m_duty = duty; m_pw = attotime::never; reinit(); return *this; } DECLARE_READ_LINE_MEMBER(signal_r) { return m_signal; } diff --git a/src/mame/drivers/cking_master.cpp b/src/mame/drivers/cking_master.cpp index 5cefa52ef89..ce7b3391022 100644 --- a/src/mame/drivers/cking_master.cpp +++ b/src/mame/drivers/cking_master.cpp @@ -24,7 +24,7 @@ TODO: #include "cpu/z80/z80.h" #include "machine/sensorboard.h" #include "machine/bankdev.h" -#include "machine/timer.h" +#include "machine/clock.h" #include "sound/dac.h" #include "video/pwm.h" @@ -42,7 +42,6 @@ public: master_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_display(*this, "display"), m_board(*this, "board"), m_dac(*this, "dac"), @@ -61,17 +60,12 @@ protected: private: // devices/pointers required_device m_maincpu; - required_device m_irq_on; required_device m_display; required_device m_board; required_device m_dac; required_device m_mainmap; required_ioport_array<2> m_inputs; - // periodic interrupts - template TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(Line, ASSERT_LINE); } - template TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(Line, CLEAR_LINE); } - // address maps void main_map(address_map &map); void main_trampoline(address_map &map); @@ -226,10 +220,9 @@ void master_state::master(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &master_state::main_trampoline); ADDRESS_MAP_BANK(config, "mainmap").set_map(&master_state::main_map).set_options(ENDIANNESS_LITTLE, 8, 16); - const attotime irq_period = attotime::from_hz(418); // 555 timer (22nF, 150K, 1K5), measured 418Hz - TIMER(config, m_irq_on).configure_periodic(FUNC(master_state::irq_on), irq_period); - m_irq_on->set_start_delay(irq_period - attotime::from_nsec(22870)); // active for 22.87us - TIMER(config, "irq_off").configure_periodic(FUNC(master_state::irq_off), irq_period); + auto &irq_clock(CLOCK(config, "irq_clock", 418)); // 555 timer (22nF, 150K, 1K5), measured 418Hz + irq_clock.set_pulse_width(attotime::from_nsec(22870)); // active for 22.87us + irq_clock.signal_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0); SENSORBOARD(config, m_board).set_type(sensorboard_device::BUTTONS); m_board->init_cb().set(m_board, FUNC(sensorboard_device::preset_chess)); -- cgit v1.2.3