summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/pcd.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/pcd.cpp')
-rw-r--r--src/mame/drivers/pcd.cpp67
1 files changed, 35 insertions, 32 deletions
diff --git a/src/mame/drivers/pcd.cpp b/src/mame/drivers/pcd.cpp
index 90b28f5130a..28c20a8e38c 100644
--- a/src/mame/drivers/pcd.cpp
+++ b/src/mame/drivers/pcd.cpp
@@ -437,39 +437,42 @@ READ16_MEMBER(pcd_state::mem_r)
// ADDRESS MAPS
//**************************************************************************
-ADDRESS_MAP_START(pcd_state::pcd_map)
- AM_RANGE(0x00000, 0xfffff) AM_READWRITE8(nmi_io_r, nmi_io_w, 0xffff)
- AM_RANGE(0x00000, 0x7ffff) AM_READWRITE(mem_r, mem_w)
- AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("bios", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pcd_state::pcd_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xefff) AM_READWRITE8(nmi_io_r, nmi_io_w, 0xffff)
- AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE8("pic1", pic8259_device, read, write, 0xffff)
- AM_RANGE(0xf820, 0xf821) AM_DEVREADWRITE8("pic2", pic8259_device, read, write, 0xffff)
- AM_RANGE(0xf840, 0xf841) AM_READWRITE8(stat_r, stat_w, 0x00ff)
- AM_RANGE(0xf840, 0xf841) AM_READWRITE8(led_r, led_w, 0xff00)
- AM_RANGE(0xf880, 0xf8bf) AM_READWRITE8(rtc_r, rtc_w, 0xffff)
- AM_RANGE(0xf900, 0xf903) AM_DEVREADWRITE8("fdc", wd2793_device, read, write, 0xffff)
- AM_RANGE(0xf904, 0xf905) AM_READWRITE(dskctl_r, dskctl_w)
- AM_RANGE(0xf940, 0xf943) AM_READWRITE8(scsi_r, scsi_w, 0xffff)
- AM_RANGE(0xf980, 0xf9bf) AM_DEVICE("video", pcdx_video_device, map)
- AM_RANGE(0xf9c0, 0xf9c3) AM_DEVREADWRITE8("usart1",mc2661_device,read,write,0xffff) // UARTs
- AM_RANGE(0xf9d0, 0xf9d3) AM_DEVREADWRITE8("usart2",mc2661_device,read,write,0xffff)
- AM_RANGE(0xf9e0, 0xf9e3) AM_DEVREADWRITE8("usart3",mc2661_device,read,write,0xffff)
+void pcd_state::pcd_map(address_map &map)
+{
+ map(0x00000, 0xfffff).rw(this, FUNC(pcd_state::nmi_io_r), FUNC(pcd_state::nmi_io_w));
+ map(0x00000, 0x7ffff).rw(this, FUNC(pcd_state::mem_r), FUNC(pcd_state::mem_w));
+ map(0xfc000, 0xfffff).rom().region("bios", 0);
+}
+
+void pcd_state::pcd_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xefff).rw(this, FUNC(pcd_state::nmi_io_r), FUNC(pcd_state::nmi_io_w));
+ map(0xf000, 0xf7ff).ram().share("nvram");
+ map(0xf800, 0xf801).rw(m_pic1, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0xf820, 0xf821).rw(m_pic2, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0xf840, 0xf840).rw(this, FUNC(pcd_state::stat_r), FUNC(pcd_state::stat_w));
+ map(0xf841, 0xf841).rw(this, FUNC(pcd_state::led_r), FUNC(pcd_state::led_w));
+ map(0xf880, 0xf8bf).rw(this, FUNC(pcd_state::rtc_r), FUNC(pcd_state::rtc_w));
+ map(0xf900, 0xf903).rw(m_fdc, FUNC(wd2793_device::read), FUNC(wd2793_device::write));
+ map(0xf904, 0xf905).rw(this, FUNC(pcd_state::dskctl_r), FUNC(pcd_state::dskctl_w));
+ map(0xf940, 0xf943).rw(this, FUNC(pcd_state::scsi_r), FUNC(pcd_state::scsi_w));
+ map(0xf980, 0xf9bf).m("video", FUNC(pcdx_video_device::map));
+ map(0xf9c0, 0xf9c3).rw("usart1", FUNC(mc2661_device::read), FUNC(mc2661_device::write)); // UARTs
+ map(0xf9d0, 0xf9d3).rw("usart2", FUNC(mc2661_device::read), FUNC(mc2661_device::write));
+ map(0xf9e0, 0xf9e3).rw("usart3", FUNC(mc2661_device::read), FUNC(mc2661_device::write));
// AM_RANGE(0xfa00, 0xfa7f) // pcs4-n (peripheral chip select)
- AM_RANGE(0xfb00, 0xfb01) AM_READWRITE8(nmi_io_r, nmi_io_w, 0x00ff)
- AM_RANGE(0xfb02, 0xffff) AM_READWRITE8(nmi_io_r, nmi_io_w, 0xffff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(pcd_state::pcx_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_IMPORT_FROM(pcd_io)
- AM_RANGE(0x8000, 0x8fff) AM_READWRITE(mmu_r, mmu_w)
- AM_RANGE(0xfb00, 0xfb01) AM_READWRITE8(nmi_io_r, nmi_io_w, 0xff00)
-ADDRESS_MAP_END
+ map(0xfb00, 0xfb00).rw(this, FUNC(pcd_state::nmi_io_r), FUNC(pcd_state::nmi_io_w));
+ map(0xfb02, 0xffff).rw(this, FUNC(pcd_state::nmi_io_r), FUNC(pcd_state::nmi_io_w));
+}
+
+void pcd_state::pcx_io(address_map &map)
+{
+ map.unmap_value_high();
+ pcd_io(map);
+ map(0x8000, 0x8fff).rw(this, FUNC(pcd_state::mmu_r), FUNC(pcd_state::mmu_w));
+ map(0xfb01, 0xfb01).rw(this, FUNC(pcd_state::nmi_io_r), FUNC(pcd_state::nmi_io_w));
+}
//**************************************************************************
// MACHINE DRIVERS