summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatarGravatar AJR <ajrhacker@users.noreply.github.com>2019-12-22 12:46:18 -0500
committerGravatarGravatar AJR <ajrhacker@users.noreply.github.com>2019-12-22 12:46:18 -0500
commit9f745f786e645e7ac57142fbe6f28aefe844deee (patch)
tree940e3caa3f1105a268d5df7e2fb7ed18907920a6
parent3dd22962b91bbdd76b6158c9a9c59cc2040517fa (diff)
downloadmame-9f745f786e645e7ac57142fbe6f28aefe844deee.tar.xz
mame-9f745f786e645e7ac57142fbe6f28aefe844deee.zip
isa: Provisional ready line interface (nw)
-rw-r--r--src/devices/bus/isa/isa.cpp7
-rw-r--r--src/devices/bus/isa/isa.h3
2 files changed, 10 insertions, 0 deletions
diff --git a/src/devices/bus/isa/isa.cpp b/src/devices/bus/isa/isa.cpp
index 5d56e949380..303ffb289ae 100644
--- a/src/devices/bus/isa/isa.cpp
+++ b/src/devices/bus/isa/isa.cpp
@@ -125,6 +125,7 @@ isa8_device::isa8_device(const machine_config &mconfig, device_type type, const
m_out_drq1_cb(*this),
m_out_drq2_cb(*this),
m_out_drq3_cb(*this),
+ m_write_iochrdy(*this),
m_write_iochck(*this)
{
std::fill(std::begin(m_dma_device), std::end(m_dma_device), nullptr);
@@ -223,6 +224,7 @@ void isa8_device::device_config_complete()
void isa8_device::device_resolve_objects()
{
// resolve callbacks
+ m_write_iochrdy.resolve_safe();
m_write_iochck.resolve_safe();
m_out_irq2_cb.resolve_safe();
@@ -407,6 +409,11 @@ void isa8_device::eop_w(int channel, int state)
m_dma_device[channel]->eop_w(state);
}
+void isa8_device::set_ready(bool ready)
+{
+ m_write_iochrdy(ready);
+}
+
void isa8_device::nmi()
{
// active low pulse
diff --git a/src/devices/bus/isa/isa.h b/src/devices/bus/isa/isa.h
index 7994f4c892a..0da8b483be8 100644
--- a/src/devices/bus/isa/isa.h
+++ b/src/devices/bus/isa/isa.h
@@ -125,6 +125,7 @@ public:
// inline configuration
template <typename T> void set_memspace(T &&tag, int spacenum) { m_memspace.set_tag(std::forward<T>(tag), spacenum); }
template <typename T> void set_iospace(T &&tag, int spacenum) { m_iospace.set_tag(std::forward<T>(tag), spacenum); }
+ auto iochrdy_callback() { return m_write_iochrdy.bind(); }
auto iochck_callback() { return m_write_iochck.bind(); }
auto irq2_callback() { return m_out_irq2_cb.bind(); }
auto irq3_callback() { return m_out_irq3_cb.bind(); }
@@ -181,6 +182,7 @@ public:
void dack_line_w(int line, int state);
void eop_w(int channels, int state);
+ void set_ready(bool ready);
void nmi();
virtual void set_dma_channel(uint8_t channel, device_isa8_card_interface *dev, bool do_eop);
@@ -222,6 +224,7 @@ protected:
std::forward_list<device_slot_interface *> m_slot_list;
private:
+ devcb_write_line m_write_iochrdy;
devcb_write_line m_write_iochck;
};