diff options
Diffstat (limited to 'src/devices/machine/mc14411.cpp')
-rw-r--r-- | src/devices/machine/mc14411.cpp | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/src/devices/machine/mc14411.cpp b/src/devices/machine/mc14411.cpp index c70041e1c6b..726964370ca 100644 --- a/src/devices/machine/mc14411.cpp +++ b/src/devices/machine/mc14411.cpp @@ -58,7 +58,7 @@ ***************************************************************************/ const int mc14411_device::s_counter_divider[16] = { - ////////// X64 /////// X16 /////// X4 //////// X1 //////// + ////////// X64 /////// X16 /////// X8 //////// X1 //////// 3, // F1: 614.4 kHz 153.6 kHz 76800 Hz 9600 Hz 4, // F2: 460.8 kHz 115.2 kHz 57600 Hz 7200 Hz 6, // F3: 307.2 kHz 76800 Hz 36400 Hz 4800 Hz @@ -164,6 +164,11 @@ void mc14411_device::timer_enable(timer_id i, bool enable) arm_timer(i); } +void mc14411_device::timer_disable_all() +{ + for (int i = TIMER_F1; i <= TIMER_F16; i++) + timer_enable((timer_id) i, false); +} //------------------------------------------------- // arm_timer - arm the timer based on selected @@ -207,6 +212,7 @@ void mc14411_device::device_reset() } } + //------------------------------------------------- // device_timer - handler timer events //------------------------------------------------- @@ -253,6 +259,38 @@ WRITE8_MEMBER(mc14411_device::rate_select_w) //------------------------------------------------ +// rsa_w - set RSA input line +//------------------------------------------------ + +WRITE_LINE_MEMBER(mc14411_device::rsa_w) +{ + LOGSETUP("%s %02x\n", FUNCNAME, state); + + if ((m_divider & RSA) != (state == ASSERT_LINE ? RSA : 0)) + { + m_divider = (m_divider & ~RSA) | (state == ASSERT_LINE ? RSA : 0); + notify_clock_changed(); + } +} + + +//------------------------------------------------ +// rsb_w - set RSB input line +//------------------------------------------------ + +WRITE_LINE_MEMBER(mc14411_device::rsb_w) +{ + LOGSETUP("%s %02x\n", FUNCNAME, state); + + if ((m_divider & RSB) != (state == ASSERT_LINE ? RSB : 0)) + { + m_divider = (m_divider & ~RSB) | (state == ASSERT_LINE ? RSB : 0); + notify_clock_changed(); + } +} + + +//------------------------------------------------ // reset_w - software controlled reset //------------------------------------------------ |