diff options
author | smf- <smf-@users.noreply.github.com> | 2013-11-05 01:42:25 +0000 |
---|---|---|
committer | smf- <smf-@users.noreply.github.com> | 2013-11-05 01:42:25 +0000 |
commit | a53724ce6351bd6e83e80a4c208083daac10027c (patch) | |
tree | a12d3b62bad53a8539ae7b1cc73d864d0849779e | |
parent | 7641349eb130be64eba7d86258b0922a44e99d00 (diff) |
Fixed mametesters 05353 [smf]
-rw-r--r-- | src/mess/machine/southbridge.c | 28 | ||||
-rw-r--r-- | src/mess/machine/southbridge.h | 6 |
2 files changed, 30 insertions, 4 deletions
diff --git a/src/mess/machine/southbridge.c b/src/mess/machine/southbridge.c index ce00eb027c3..b5501146c63 100644 --- a/src/mess/machine/southbridge.c +++ b/src/mess/machine/southbridge.c @@ -176,6 +176,27 @@ IRQ_CALLBACK_MEMBER(southbridge_device::at_irq_callback) return m_pic8259_master->inta_r(); } +/// HACK: the memory system cannot cope with mixing the 8 bit device map from the fdc with a 32 bit handler +READ8_MEMBER(southbridge_device::ide_read_cs1_r) +{ + return m_ide->read_cs1(space, 1, (UINT32) 0xff0000) >> 16; +} + +WRITE8_MEMBER(southbridge_device::ide_write_cs1_w) +{ + m_ide->write_cs1(space, 1, (UINT32) data << 16, (UINT32) 0xff0000); +} + +READ8_MEMBER(southbridge_device::ide2_read_cs1_r) +{ + return m_ide2->read_cs1(space, 1, (UINT32) 0xff0000) >> 16; +} + +WRITE8_MEMBER(southbridge_device::ide2_write_cs1_w) +{ + m_ide2->write_cs1(space, 1, (UINT32) data << 16, (UINT32) 0xff0000); +} + //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -195,8 +216,11 @@ void southbridge_device::device_start() spaceio.install_readwrite_handler(0x00c0, 0x00df, read8_delegate(FUNC(southbridge_device::at_dma8237_2_r),this), write8_delegate(FUNC(southbridge_device::at_dma8237_2_w),this), 0xffffffff); spaceio.install_readwrite_handler(0x0170, 0x0177, read32_delegate(FUNC(bus_master_ide_controller_device::read_cs0),&(*m_ide2)), write32_delegate(FUNC(bus_master_ide_controller_device::write_cs0), &(*m_ide2)),0xffffffff); spaceio.install_readwrite_handler(0x01f0, 0x01f7, read32_delegate(FUNC(bus_master_ide_controller_device::read_cs0),&(*m_ide)), write32_delegate(FUNC(bus_master_ide_controller_device::write_cs0), &(*m_ide)),0xffffffff); - spaceio.install_readwrite_handler(0x0370, 0x0377, read32_delegate(FUNC(bus_master_ide_controller_device::read_cs1),&(*m_ide2)), write32_delegate(FUNC(bus_master_ide_controller_device::write_cs1), &(*m_ide2)),0xffffffff); - spaceio.install_readwrite_handler(0x03f0, 0x03f7, read32_delegate(FUNC(bus_master_ide_controller_device::read_cs1),&(*m_ide)), write32_delegate(FUNC(bus_master_ide_controller_device::write_cs1), &(*m_ide)),0xffffffff); +// HACK: this works if you take out the (non working) fdc +// spaceio.install_readwrite_handler(0x0370, 0x0377, read32_delegate(FUNC(bus_master_ide_controller_device::read_cs1),&(*m_ide2)), write32_delegate(FUNC(bus_master_ide_controller_device::write_cs1), &(*m_ide2)),0xffffffff); +// spaceio.install_readwrite_handler(0x03f0, 0x03f7, read32_delegate(FUNC(bus_master_ide_controller_device::read_cs1),&(*m_ide)), write32_delegate(FUNC(bus_master_ide_controller_device::write_cs1), &(*m_ide)),0xffffffff); + spaceio.install_readwrite_handler(0x0374, 0x0377, read8_delegate(FUNC(southbridge_device::ide2_read_cs1_r),this), write8_delegate(FUNC(southbridge_device::ide2_write_cs1_w), this),0xff0000); + spaceio.install_readwrite_handler(0x03f4, 0x03f7, read8_delegate(FUNC(southbridge_device::ide_read_cs1_r),this), write8_delegate(FUNC(southbridge_device::ide_write_cs1_w), this),0xff0000); spaceio.nop_readwrite(0x00e0, 0x00ef); diff --git a/src/mess/machine/southbridge.h b/src/mess/machine/southbridge.h index 3475109b5bb..c41e82b3585 100644 --- a/src/mess/machine/southbridge.h +++ b/src/mess/machine/southbridge.h @@ -96,8 +96,10 @@ public: DECLARE_WRITE_LINE_MEMBER(pc_dack5_w); DECLARE_WRITE_LINE_MEMBER(pc_dack6_w); DECLARE_WRITE_LINE_MEMBER(pc_dack7_w); - DECLARE_READ32_MEMBER(ide_r); - DECLARE_WRITE32_MEMBER(ide_w); + DECLARE_READ8_MEMBER(ide_read_cs1_r); + DECLARE_WRITE8_MEMBER(ide_write_cs1_w); + DECLARE_READ8_MEMBER(ide2_read_cs1_r); + DECLARE_WRITE8_MEMBER(ide2_write_cs1_w); DECLARE_READ8_MEMBER(at_dma8237_2_r); DECLARE_WRITE8_MEMBER(at_dma8237_2_w); DECLARE_READ8_MEMBER(at_keybc_r); |