summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/spectrum/melodik.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/spectrum/melodik.cpp')
-rw-r--r--src/devices/bus/spectrum/melodik.cpp55
1 files changed, 20 insertions, 35 deletions
diff --git a/src/devices/bus/spectrum/melodik.cpp b/src/devices/bus/spectrum/melodik.cpp
index f6abc0f98d6..8303d4c436c 100644
--- a/src/devices/bus/spectrum/melodik.cpp
+++ b/src/devices/bus/spectrum/melodik.cpp
@@ -60,6 +60,18 @@ void spectrum_melodik_device::device_start()
}
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void spectrum_melodik_device::device_reset()
+{
+ m_exp->set_io_space(&io_space());
+
+ io_space().install_write_handler(0x8000, 0x8000, 0, 0x3ffd, 0, write8_delegate(FUNC(ay8910_device::address_w), m_psg.target()));
+ io_space().install_readwrite_handler(0xc000, 0xc000, 0, 0x3ffd, 0, read8_delegate(FUNC(ay8910_device::data_r), m_psg.target()), write8_delegate(FUNC(ay8910_device::data_w), m_psg.target()));
+}
+
//**************************************************************************
// IMPLEMENTATION
//**************************************************************************
@@ -69,50 +81,23 @@ READ_LINE_MEMBER(spectrum_melodik_device::romcs)
return m_exp->romcs();
}
-void spectrum_melodik_device::opcode_fetch(offs_t offset)
+READ8_MEMBER(spectrum_melodik_device::mreq_r)
{
- m_exp->opcode_fetch(offset);
+ return m_exp->mreq_r(space, offset);
}
-uint8_t spectrum_melodik_device::mreq_r(offs_t offset)
+WRITE8_MEMBER(spectrum_melodik_device::mreq_w)
{
- uint8_t data = 0xff;
-
if (m_exp->romcs())
- data &= m_exp->mreq_r(offset);
-
- return data;
+ m_exp->mreq_w(space, offset, data);
}
-void spectrum_melodik_device::mreq_w(offs_t offset, uint8_t data)
+READ8_MEMBER(spectrum_melodik_device::port_fe_r)
{
+ uint8_t data = 0xff;
+
if (m_exp->romcs())
- m_exp->mreq_w(offset, data);
-}
+ data &= m_exp->port_fe_r(space, offset);
-uint8_t spectrum_melodik_device::iorq_r(offs_t offset)
-{
- uint8_t data = m_exp->iorq_r(offset);
-
- switch (offset & 0xc002)
- {
- case 0xc000:
- data &= m_psg->data_r();
- break;
- }
return data;
}
-
-void spectrum_melodik_device::iorq_w(offs_t offset, uint8_t data)
-{
- switch (offset & 0xc002)
- {
- case 0x8000:
- m_psg->address_w(data);
- break;
- case 0xc000:
- m_psg->data_w(data);
- break;
- }
- m_exp->iorq_w(offset, data);
-}