summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/cmi.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/cmi.cpp')
-rw-r--r--src/mame/drivers/cmi.cpp86
1 files changed, 46 insertions, 40 deletions
diff --git a/src/mame/drivers/cmi.cpp b/src/mame/drivers/cmi.cpp
index 424e910cdf6..446b235c0c6 100644
--- a/src/mame/drivers/cmi.cpp
+++ b/src/mame/drivers/cmi.cpp
@@ -1070,49 +1070,55 @@ READ16_MEMBER( cmi_state::midi_dma_r )
}
/* The maps are dynamically populated */
-ADDRESS_MAP_START(cmi_state::maincpu1_map)
- AM_RANGE(0xfffe, 0xffff) AM_READ(vector_r<0>)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cmi_state::maincpu2_map)
- AM_RANGE(0xfffe, 0xffff) AM_READ(vector_r<1>)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cmi_state::muskeys_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x007f) AM_RAM
- AM_RANGE(0x0080, 0x0083) AM_DEVREADWRITE("cmi10_pia_u21", pia6821_device, read, write)
- AM_RANGE(0x0090, 0x0093) AM_DEVREADWRITE("cmi10_pia_u20", pia6821_device, read, write)
- AM_RANGE(0x00a0, 0x00a1) AM_DEVREADWRITE("acia_mkbd_kbd", acia6850_device, read, write)
- AM_RANGE(0x00b0, 0x00b1) AM_DEVREADWRITE("acia_mkbd_cmi", acia6850_device, read, write)
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0xb000, 0xb400) AM_ROM
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cmi_state::alphakeys_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x007f) AM_RAM
- AM_RANGE(0x4000, 0x7fff) AM_READ_PORT("ANK_OPTIONS")
- AM_RANGE(0x8000, 0xbfff) AM_DEVREADWRITE("ank_pia", pia6821_device, read, write)
- AM_RANGE(0xc000, 0xc3ff) AM_ROM AM_MIRROR(0x3c00)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cmi_state::midicpu_map)
- AM_RANGE(0x000000, 0x003fff) AM_ROM
- AM_RANGE(0x040000, 0x05ffff) AM_READWRITE(midi_dma_r, midi_dma_w)
+void cmi_state::maincpu1_map(address_map &map)
+{
+ map(0xfffe, 0xffff).r(this, FUNC(cmi_state::vector_r<0>));
+}
+
+void cmi_state::maincpu2_map(address_map &map)
+{
+ map(0xfffe, 0xffff).r(this, FUNC(cmi_state::vector_r<1>));
+}
+
+void cmi_state::muskeys_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x007f).ram();
+ map(0x0080, 0x0083).rw(m_cmi10_pia_u21, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0090, 0x0093).rw(m_cmi10_pia_u20, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x00a0, 0x00a1).rw(m_acia_mkbd_kbd, FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0x00b0, 0x00b1).rw(m_acia_mkbd_cmi, FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0x4000, 0x47ff).ram();
+ map(0xb000, 0xb400).rom();
+ map(0xf000, 0xffff).rom();
+}
+
+void cmi_state::alphakeys_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x007f).ram();
+ map(0x4000, 0x7fff).portr("ANK_OPTIONS");
+ map(0x8000, 0xbfff).rw(m_ank_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0xc000, 0xc3ff).rom().mirror(0x3c00);
+}
+
+void cmi_state::midicpu_map(address_map &map)
+{
+ map(0x000000, 0x003fff).rom();
+ map(0x040000, 0x05ffff).rw(this, FUNC(cmi_state::midi_dma_r), FUNC(cmi_state::midi_dma_w));
// AM_RANGE(0x060000, 0x06001f) TIMERS
// AM_RANGE(0x060050, 0x06005f) ACIA
// AM_RANGE(0x060070, 0x06007f) SMPTE
- AM_RANGE(0x080000, 0x083fff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cmi_state::cmi07cpu_map)
- AM_RANGE(0x0000, 0x3fff) AM_NOP // TODO
- AM_RANGE(0x4000, 0x4fff) AM_NOP // TODO
- AM_RANGE(0x8000, 0x8fff) AM_DEVREADWRITE("cmi07_ptm", ptm6840_device, read, write)
- AM_RANGE(0xc000, 0xffff) AM_RAM AM_SHARE("cmi07_ram")
-ADDRESS_MAP_END
+ map(0x080000, 0x083fff).ram();
+}
+
+void cmi_state::cmi07cpu_map(address_map &map)
+{
+ map(0x0000, 0x3fff).noprw(); // TODO
+ map(0x4000, 0x4fff).noprw(); // TODO
+ map(0x8000, 0x8fff).rw(m_cmi07_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write));
+ map(0xc000, 0xffff).ram().share("cmi07_ram");
+}
/* Input ports */
static INPUT_PORTS_START( cmi2x )