summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/cpc/symbfac2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/cpc/symbfac2.cpp')
-rw-r--r--src/devices/bus/cpc/symbfac2.cpp46
1 files changed, 19 insertions, 27 deletions
diff --git a/src/devices/bus/cpc/symbfac2.cpp b/src/devices/bus/cpc/symbfac2.cpp
index 8710717de6c..8b18c94aab3 100644
--- a/src/devices/bus/cpc/symbfac2.cpp
+++ b/src/devices/bus/cpc/symbfac2.cpp
@@ -90,11 +90,12 @@ void cpc_symbiface2_device::device_start()
{
m_slot = dynamic_cast<cpc_expansion_slot_device *>(owner());
address_space &space = m_slot->cpu().space(AS_IO);
- space.install_readwrite_handler(0xfd00,0xfd07, read8_delegate(*this, FUNC(cpc_symbiface2_device::ide_cs1_r)), write8_delegate(*this, FUNC(cpc_symbiface2_device::ide_cs1_w)));
- space.install_readwrite_handler(0xfd08,0xfd0f, read8_delegate(*this, FUNC(cpc_symbiface2_device::ide_cs0_r)), write8_delegate(*this, FUNC(cpc_symbiface2_device::ide_cs0_w)));
- space.install_read_handler(0xfd10,0xfd10, read8_delegate(*this, FUNC(cpc_symbiface2_device::mouse_r)));
- space.install_readwrite_handler(0xfd14,0xfd15, read8_delegate(*this, FUNC(cpc_symbiface2_device::rtc_r)), write8_delegate(*this, FUNC(cpc_symbiface2_device::rtc_w)));
- space.install_readwrite_handler(0xfd17,0xfd17, read8_delegate(*this, FUNC(cpc_symbiface2_device::rom_rewrite_r)), write8_delegate(*this, FUNC(cpc_symbiface2_device::rom_rewrite_w)));
+ space.install_readwrite_handler(0xfd00,0xfd07, read8sm_delegate(*this, FUNC(cpc_symbiface2_device::ide_cs1_r)), write8sm_delegate(*this, FUNC(cpc_symbiface2_device::ide_cs1_w)));
+ space.install_readwrite_handler(0xfd08,0xfd0f, read8sm_delegate(*this, FUNC(cpc_symbiface2_device::ide_cs0_r)), write8sm_delegate(*this, FUNC(cpc_symbiface2_device::ide_cs0_w)));
+ space.install_read_handler(0xfd10,0xfd10, read8smo_delegate(*this, FUNC(cpc_symbiface2_device::mouse_r)));
+ space.install_readwrite_handler(0xfd14,0xfd14, read8smo_delegate(m_rtc, FUNC(mc146818_device::data_r)), write8smo_delegate(m_rtc, FUNC(mc146818_device::data_w)));
+ space.install_write_handler(0xfd15,0xfd15, write8smo_delegate(m_rtc, FUNC(mc146818_device::address_w)));
+ space.install_readwrite_handler(0xfd17,0xfd17, read8smo_delegate(*this, FUNC(cpc_symbiface2_device::rom_rewrite_r)), write8smo_delegate(*this, FUNC(cpc_symbiface2_device::rom_rewrite_w)));
// set up ROM space (these can be writable, when mapped to &4000, or completely disabled, allowing the built-in ROMs to be visible)
// 32 banks of 16kB (512kB)
@@ -120,7 +121,7 @@ void cpc_symbiface2_device::device_reset()
// IDE controller (custom)
// #FD00-07 - CS1
// #FD08-0F - CS0
-READ8_MEMBER(cpc_symbiface2_device::ide_cs0_r)
+uint8_t cpc_symbiface2_device::ide_cs0_r(offs_t offset)
{
// data is returned in words, so it must be buffered
if(offset == 0x00) // data register
@@ -133,41 +134,32 @@ READ8_MEMBER(cpc_symbiface2_device::ide_cs0_r)
else
{
m_iohigh = true;
- m_ide_data = m_ide->read_cs0(offset);
+ m_ide_data = m_ide->cs0_r(offset);
return m_ide_data & 0xff;
}
}
else
- return m_ide->read_cs0(offset);
+ return m_ide->cs0_r(offset);
}
-WRITE8_MEMBER(cpc_symbiface2_device::ide_cs0_w)
+void cpc_symbiface2_device::ide_cs0_w(offs_t offset, uint8_t data)
{
- m_ide->write_cs0(offset, data);
+ m_ide->cs0_w(offset, data);
}
-READ8_MEMBER(cpc_symbiface2_device::ide_cs1_r)
+uint8_t cpc_symbiface2_device::ide_cs1_r(offs_t offset)
{
- return m_ide->read_cs1(offset);
+ return m_ide->cs1_r(offset);
}
-WRITE8_MEMBER(cpc_symbiface2_device::ide_cs1_w)
+void cpc_symbiface2_device::ide_cs1_w(offs_t offset, uint8_t data)
{
- m_ide->write_cs1(offset, data);
+ m_ide->cs1_w(offset, data);
}
// RTC (Dallas DS1287A)
// #FD15 (write only) register select
// #FD14 (read/write) read from or write into selected register
-READ8_MEMBER(cpc_symbiface2_device::rtc_r)
-{
- return m_rtc->read(~offset & 0x01);
-}
-
-WRITE8_MEMBER(cpc_symbiface2_device::rtc_w)
-{
- m_rtc->write(~offset & 0x01, data);
-}
// PS/2 Mouse connector
// #FD10 (read only) read mouse status
@@ -193,7 +185,7 @@ WRITE8_MEMBER(cpc_symbiface2_device::rtc_w)
D[bit4] = backward button
D[bit5] = 1 -> D[bit0-4] = scroll wheel offset (signed)
*/
-READ8_MEMBER(cpc_symbiface2_device::mouse_r)
+uint8_t cpc_symbiface2_device::mouse_r()
{
uint8_t ret = 0;
int input;
@@ -247,11 +239,11 @@ INPUT_CHANGED_MEMBER(cpc_symbiface2_device::mouse_change_buttons)
}
// #FD17 (read) - map currently selected ROM to 0x4000 for read/write
-READ8_MEMBER(cpc_symbiface2_device::rom_rewrite_r)
+uint8_t cpc_symbiface2_device::rom_rewrite_r()
{
uint8_t bank = get_rom_bank();
- if(bank >= 32)
+ if(bank >= 32 || machine().side_effects_disabled())
return 0xff;
m_4xxx_ptr_r = (uint8_t*)machine().root_device().membank("bank3")->base();
@@ -267,7 +259,7 @@ READ8_MEMBER(cpc_symbiface2_device::rom_rewrite_r)
}
// #FD17 (write) - unmap selected ROM at 0x4000
-WRITE8_MEMBER(cpc_symbiface2_device::rom_rewrite_w)
+void cpc_symbiface2_device::rom_rewrite_w(uint8_t data)
{
machine().root_device().membank("bank3")->set_base(m_4xxx_ptr_r);
machine().root_device().membank("bank4")->set_base(m_6xxx_ptr_r);