summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/topspeed.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/topspeed.cpp')
-rw-r--r--src/mame/drivers/topspeed.cpp93
1 files changed, 49 insertions, 44 deletions
diff --git a/src/mame/drivers/topspeed.cpp b/src/mame/drivers/topspeed.cpp
index 8fb71ca7edb..3ce9d47fc42 100644
--- a/src/mame/drivers/topspeed.cpp
+++ b/src/mame/drivers/topspeed.cpp
@@ -377,54 +377,59 @@ WRITE_LINE_MEMBER(topspeed_state::z80ctc_to0)
MEMORY STRUCTURES
***********************************************************/
-ADDRESS_MAP_START(topspeed_state::cpua_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0x500000, 0x503fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x600002, 0x600003) AM_WRITE(cpua_ctrl_w)
- AM_RANGE(0x7e0000, 0x7e0001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0x00ff)
- AM_RANGE(0x7e0002, 0x7e0003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0x00ff)
- AM_RANGE(0x800000, 0x8003ff) AM_RAM AM_SHARE("raster_ctrl")
- AM_RANGE(0x800400, 0x80ffff) AM_RAM
- AM_RANGE(0x880000, 0x880007) AM_WRITENOP // Lamps/outputs?
- AM_RANGE(0xa00000, 0xa0ffff) AM_DEVREADWRITE("pc080sn_1", pc080sn_device, word_r, word_w)
- AM_RANGE(0xa20000, 0xa20003) AM_DEVWRITE("pc080sn_1", pc080sn_device, yscroll_word_w)
- AM_RANGE(0xa40000, 0xa40003) AM_DEVWRITE("pc080sn_1", pc080sn_device, xscroll_word_w)
- AM_RANGE(0xa50000, 0xa50003) AM_DEVWRITE("pc080sn_1", pc080sn_device, ctrl_word_w)
- AM_RANGE(0xb00000, 0xb0ffff) AM_DEVREADWRITE("pc080sn_2", pc080sn_device, word_r, word_w)
- AM_RANGE(0xb20000, 0xb20003) AM_DEVWRITE("pc080sn_2", pc080sn_device, yscroll_word_w)
- AM_RANGE(0xb40000, 0xb40003) AM_DEVWRITE("pc080sn_2", pc080sn_device, xscroll_word_w)
- AM_RANGE(0xb50000, 0xb50003) AM_DEVWRITE("pc080sn_2", pc080sn_device, ctrl_word_w)
- AM_RANGE(0xd00000, 0xd00fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe00000, 0xe0ffff) AM_RAM AM_SHARE("spritemap")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(topspeed_state::cpub_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0x880000, 0x880001) AM_READ8(input_bypass_r, 0x00ff) AM_DEVWRITE8("tc0040ioc", tc0040ioc_device, portreg_w, 0x00ff)
- AM_RANGE(0x880002, 0x880003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, port_r, port_w, 0x00ff)
- AM_RANGE(0x900000, 0x9003ff) AM_READWRITE(motor_r, motor_w)
-ADDRESS_MAP_END
+void topspeed_state::cpua_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x400000, 0x40ffff).ram().share("sharedram");
+ map(0x500000, 0x503fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
+ map(0x600002, 0x600003).w(this, FUNC(topspeed_state::cpua_ctrl_w));
+ map(0x7e0000, 0x7e0001).nopr();
+ map(0x7e0001, 0x7e0001).w("ciu", FUNC(pc060ha_device::master_port_w));
+ map(0x7e0003, 0x7e0003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
+ map(0x800000, 0x8003ff).ram().share("raster_ctrl");
+ map(0x800400, 0x80ffff).ram();
+ map(0x880000, 0x880007).nopw(); // Lamps/outputs?
+ map(0xa00000, 0xa0ffff).rw(m_pc080sn_1, FUNC(pc080sn_device::word_r), FUNC(pc080sn_device::word_w));
+ map(0xa20000, 0xa20003).w(m_pc080sn_1, FUNC(pc080sn_device::yscroll_word_w));
+ map(0xa40000, 0xa40003).w(m_pc080sn_1, FUNC(pc080sn_device::xscroll_word_w));
+ map(0xa50000, 0xa50003).w(m_pc080sn_1, FUNC(pc080sn_device::ctrl_word_w));
+ map(0xb00000, 0xb0ffff).rw(m_pc080sn_2, FUNC(pc080sn_device::word_r), FUNC(pc080sn_device::word_w));
+ map(0xb20000, 0xb20003).w(m_pc080sn_2, FUNC(pc080sn_device::yscroll_word_w));
+ map(0xb40000, 0xb40003).w(m_pc080sn_2, FUNC(pc080sn_device::xscroll_word_w));
+ map(0xb50000, 0xb50003).w(m_pc080sn_2, FUNC(pc080sn_device::ctrl_word_w));
+ map(0xd00000, 0xd00fff).ram().share("spriteram");
+ map(0xe00000, 0xe0ffff).ram().share("spritemap");
+}
+
+void topspeed_state::cpub_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x400000, 0x40ffff).ram().share("sharedram");
+ map(0x880001, 0x880001).r(this, FUNC(topspeed_state::input_bypass_r)).w(m_tc0040ioc, FUNC(tc0040ioc_device::portreg_w)).umask16(0x00ff);
+ map(0x880003, 0x880003).rw(m_tc0040ioc, FUNC(tc0040ioc_device::port_r), FUNC(tc0040ioc_device::port_w));
+ map(0x900000, 0x9003ff).rw(this, FUNC(topspeed_state::motor_r), FUNC(topspeed_state::motor_w));
+}
/***************************************************************************/
-ADDRESS_MAP_START(topspeed_state::z80_prg)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("sndbank")
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ciu", pc060ha_device, slave_port_w)
- AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xb000, 0xcfff) AM_WRITE(msm5205_command_w)
- AM_RANGE(0xd000, 0xdfff) AM_WRITE(volume_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(topspeed_state::z80_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
-ADDRESS_MAP_END
+void topspeed_state::z80_prg(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("sndbank");
+ map(0x8000, 0x8fff).ram();
+ map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xa000, 0xa000).w("ciu", FUNC(pc060ha_device::slave_port_w));
+ map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w));
+ map(0xb000, 0xcfff).w(this, FUNC(topspeed_state::msm5205_command_w));
+ map(0xd000, 0xdfff).w(this, FUNC(topspeed_state::volume_w));
+}
+
+void topspeed_state::z80_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
/***********************************************************