summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/upd71071.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/upd71071.cpp')
-rw-r--r--src/devices/machine/upd71071.cpp24
1 files changed, 10 insertions, 14 deletions
diff --git a/src/devices/machine/upd71071.cpp b/src/devices/machine/upd71071.cpp
index 0a928be5361..a23b859e3c7 100644
--- a/src/devices/machine/upd71071.cpp
+++ b/src/devices/machine/upd71071.cpp
@@ -88,7 +88,7 @@
*/
#include "emu.h"
-#include "machine/upd71071.h"
+#include "upd71071.h"
DEFINE_DEVICE_TYPE(UPD71071, upd71071_device, "upd71071", "NEC uPD71071 DMA Controller")
@@ -98,7 +98,7 @@ upd71071_device::upd71071_device(const machine_config &mconfig, const char *tag,
, m_upd_clock(0)
, m_out_hreq_cb(*this)
, m_out_eop_cb(*this)
- , m_dma_read_cb(*this)
+ , m_dma_read_cb(*this, 0)
, m_dma_write_cb(*this)
, m_out_dack_cb(*this)
, m_cpu(*this, finder_base::DUMMY_TAG)
@@ -111,19 +111,16 @@ upd71071_device::upd71071_device(const machine_config &mconfig, const char *tag,
void upd71071_device::device_start()
{
- m_out_hreq_cb.resolve_safe();
- m_out_eop_cb.resolve_safe();
- m_dma_read_cb.resolve_all_safe(0);
- m_dma_write_cb.resolve_all_safe();
- m_out_dack_cb.resolve_all_safe();
for (auto &elem : m_timer)
elem = timer_alloc(FUNC(upd71071_device::dma_transfer_timer), this);
m_selected_channel = 0;
m_reg.device_control = 0;
m_reg.mask = 0x0f; // mask all channels
- for (int x = 0; x < 4; x++)
- m_reg.mode_control[x] = 0;
+
+ std::fill(std::begin(m_reg.address_current), std::end(m_reg.address_current), 0);
+ std::fill(std::begin(m_reg.count_current), std::end(m_reg.count_current), 0);
+ std::fill(std::begin(m_reg.mode_control), std::end(m_reg.mode_control), 0);
save_item(NAME(m_reg.initialise));
save_item(NAME(m_reg.channel));
@@ -166,7 +163,7 @@ TIMER_CALLBACK_MEMBER(upd71071_device::dma_transfer_timer)
case 1:
case 2:
case 3:
- if (!m_dma_read_cb[channel].isnull())
+ if (!m_dma_read_cb[channel].isunset())
data = m_dma_read_cb[channel](0);
break;
}
@@ -221,8 +218,7 @@ TIMER_CALLBACK_MEMBER(upd71071_device::dma_transfer_timer)
case 1:
case 2:
case 3:
- if (!m_dma_write_cb[channel].isnull())
- m_dma_write_cb[channel](offs_t(0), data);
+ m_dma_write_cb[channel](offs_t(0), data);
break;
}
if (m_reg.mode_control[channel] & 0x20) // Address direction
@@ -472,7 +468,7 @@ void upd71071_device::write(offs_t offset, uint8_t data)
}
}
-WRITE_LINE_MEMBER(upd71071_device::set_hreq)
+void upd71071_device::set_hreq(int state)
{
if (m_hreq != state)
{
@@ -481,7 +477,7 @@ WRITE_LINE_MEMBER(upd71071_device::set_hreq)
}
}
-WRITE_LINE_MEMBER(upd71071_device::set_eop)
+void upd71071_device::set_eop(int state)
{
if (m_eop != state)
{