summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/leland.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/leland.cpp')
-rw-r--r--src/mame/drivers/leland.cpp208
1 files changed, 111 insertions, 97 deletions
diff --git a/src/mame/drivers/leland.cpp b/src/mame/drivers/leland.cpp
index 66b1bcfd95b..5c961ae880e 100644
--- a/src/mame/drivers/leland.cpp
+++ b/src/mame/drivers/leland.cpp
@@ -82,49 +82,54 @@
*
*************************************/
-ADDRESS_MAP_START(leland_state::master_map_program)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x9fff) AM_ROMBANK("bank1")
- AM_RANGE(0xa000, 0xdfff) AM_ROMBANK("bank2") AM_WRITE(leland_battery_ram_w) AM_SHARE("battery")
- AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0xf000, 0xf3ff) AM_READWRITE(leland_gated_paletteram_r, leland_gated_paletteram_w) AM_SHARE("palette")
- AM_RANGE(0xf800, 0xf801) AM_WRITE(leland_master_video_addr_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(leland_state::master_map_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xf0, 0xf0) AM_WRITE(leland_master_alt_bankswitch_w)
- AM_RANGE(0xfd, 0xff) AM_READWRITE(leland_master_analog_key_r, leland_master_analog_key_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(leland_state::master_redline_map_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xf0, 0xf0) AM_WRITE(leland_master_alt_bankswitch_w)
- AM_RANGE(0xf2, 0xf2) AM_DEVREADWRITE("custom", leland_80186_sound_device, leland_80186_response_r, leland_80186_command_lo_w)
- AM_RANGE(0xf4, 0xf4) AM_DEVWRITE("custom", leland_80186_sound_device, leland_80186_command_hi_w)
- AM_RANGE(0xfd, 0xff) AM_READWRITE(leland_master_analog_key_r, leland_master_analog_key_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(leland_state::master_map_program_2)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x9fff) AM_ROMBANK("bank1")
- AM_RANGE(0xa000, 0xdfff) AM_ROMBANK("bank2") AM_WRITE(ataxx_battery_ram_w) AM_SHARE("battery")
- AM_RANGE(0xe000, 0xf7ff) AM_RAM AM_SHARE("mainram")
- AM_RANGE(0xf800, 0xffff) AM_READWRITE(ataxx_paletteram_and_misc_r, ataxx_paletteram_and_misc_w) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(leland_state::master_map_io_2)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x04, 0x04) AM_DEVREAD("custom", leland_80186_sound_device, leland_80186_response_r)
- AM_RANGE(0x05, 0x05) AM_DEVWRITE("custom", leland_80186_sound_device, leland_80186_command_hi_w)
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("custom", leland_80186_sound_device, leland_80186_command_lo_w)
- AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("custom", leland_80186_sound_device, ataxx_80186_control_w)
- AM_RANGE(0x20, 0x20) AM_READWRITE(ataxx_eeprom_r, ataxx_eeprom_w)
- AM_RANGE(0xd0, 0xef) AM_READWRITE(ataxx_mvram_port_r, ataxx_mvram_port_w)
- AM_RANGE(0xf0, 0xff) AM_READWRITE(ataxx_master_input_r, ataxx_master_output_w)
-ADDRESS_MAP_END
+void leland_state::master_map_program(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x9fff).bankr("bank1");
+ map(0xa000, 0xdfff).bankr("bank2").w(this, FUNC(leland_state::leland_battery_ram_w)).share("battery");
+ map(0xe000, 0xefff).ram().share("mainram");
+ map(0xf000, 0xf3ff).rw(this, FUNC(leland_state::leland_gated_paletteram_r), FUNC(leland_state::leland_gated_paletteram_w)).share("palette");
+ map(0xf800, 0xf801).w(this, FUNC(leland_state::leland_master_video_addr_w));
+}
+
+void leland_state::master_map_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xf0, 0xf0).w(this, FUNC(leland_state::leland_master_alt_bankswitch_w));
+ map(0xfd, 0xff).rw(this, FUNC(leland_state::leland_master_analog_key_r), FUNC(leland_state::leland_master_analog_key_w));
+}
+
+void leland_state::master_redline_map_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xf0, 0xf0).w(this, FUNC(leland_state::leland_master_alt_bankswitch_w));
+ map(0xf2, 0xf2).rw(m_sound, FUNC(leland_80186_sound_device::leland_80186_response_r), FUNC(leland_80186_sound_device::leland_80186_command_lo_w));
+ map(0xf4, 0xf4).w(m_sound, FUNC(leland_80186_sound_device::leland_80186_command_hi_w));
+ map(0xfd, 0xff).rw(this, FUNC(leland_state::leland_master_analog_key_r), FUNC(leland_state::leland_master_analog_key_w));
+}
+
+
+void leland_state::master_map_program_2(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x9fff).bankr("bank1");
+ map(0xa000, 0xdfff).bankr("bank2").w(this, FUNC(leland_state::ataxx_battery_ram_w)).share("battery");
+ map(0xe000, 0xf7ff).ram().share("mainram");
+ map(0xf800, 0xffff).rw(this, FUNC(leland_state::ataxx_paletteram_and_misc_r), FUNC(leland_state::ataxx_paletteram_and_misc_w)).share("palette");
+}
+
+
+void leland_state::master_map_io_2(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x04, 0x04).r(m_sound, FUNC(leland_80186_sound_device::leland_80186_response_r));
+ map(0x05, 0x05).w(m_sound, FUNC(leland_80186_sound_device::leland_80186_command_hi_w));
+ map(0x06, 0x06).w(m_sound, FUNC(leland_80186_sound_device::leland_80186_command_lo_w));
+ map(0x0c, 0x0c).w(m_sound, FUNC(leland_80186_sound_device::ataxx_80186_control_w));
+ map(0x20, 0x20).rw(this, FUNC(leland_state::ataxx_eeprom_r), FUNC(leland_state::ataxx_eeprom_w));
+ map(0xd0, 0xef).rw(this, FUNC(leland_state::ataxx_mvram_port_r), FUNC(leland_state::ataxx_mvram_port_w));
+ map(0xf0, 0xff).rw(this, FUNC(leland_state::ataxx_master_input_r), FUNC(leland_state::ataxx_master_output_w));
+}
@@ -134,48 +139,53 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(leland_state::slave_small_map_program)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0xdfff) AM_ROMBANK("bank3")
- AM_RANGE(0xe000, 0xefff) AM_RAM
- AM_RANGE(0xf800, 0xf801) AM_WRITE(leland_slave_video_addr_w)
- AM_RANGE(0xf802, 0xf802) AM_READ(leland_raster_r)
- AM_RANGE(0xf803, 0xf803) AM_WRITE(leland_slave_small_banksw_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(leland_state::slave_large_map_program)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0xbfff) AM_ROMBANK("bank3")
- AM_RANGE(0xc000, 0xc000) AM_WRITE(leland_slave_large_banksw_w)
- AM_RANGE(0xe000, 0xefff) AM_RAM
- AM_RANGE(0xf800, 0xf801) AM_WRITE(leland_slave_video_addr_w)
- AM_RANGE(0xf802, 0xf802) AM_READ(leland_raster_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(leland_state::slave_map_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x1f) AM_READWRITE(leland_svram_port_r, leland_svram_port_w)
- AM_RANGE(0x40, 0x5f) AM_READWRITE(leland_svram_port_r, leland_svram_port_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(leland_state::slave_map_program)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x9fff) AM_ROMBANK("bank3")
- AM_RANGE(0xa000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xefff) AM_RAM
- AM_RANGE(0xfffc, 0xfffd) AM_WRITE(leland_slave_video_addr_w)
- AM_RANGE(0xfffe, 0xfffe) AM_READ(leland_raster_r)
- AM_RANGE(0xffff, 0xffff) AM_WRITE(ataxx_slave_banksw_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(leland_state::slave_map_io_2)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x60, 0x7f) AM_READWRITE(ataxx_svram_port_r, ataxx_svram_port_w)
-ADDRESS_MAP_END
+void leland_state::slave_small_map_program(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0xdfff).bankr("bank3");
+ map(0xe000, 0xefff).ram();
+ map(0xf800, 0xf801).w(this, FUNC(leland_state::leland_slave_video_addr_w));
+ map(0xf802, 0xf802).r(this, FUNC(leland_state::leland_raster_r));
+ map(0xf803, 0xf803).w(this, FUNC(leland_state::leland_slave_small_banksw_w));
+}
+
+
+void leland_state::slave_large_map_program(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0xbfff).bankr("bank3");
+ map(0xc000, 0xc000).w(this, FUNC(leland_state::leland_slave_large_banksw_w));
+ map(0xe000, 0xefff).ram();
+ map(0xf800, 0xf801).w(this, FUNC(leland_state::leland_slave_video_addr_w));
+ map(0xf802, 0xf802).r(this, FUNC(leland_state::leland_raster_r));
+}
+
+
+void leland_state::slave_map_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x1f).rw(this, FUNC(leland_state::leland_svram_port_r), FUNC(leland_state::leland_svram_port_w));
+ map(0x40, 0x5f).rw(this, FUNC(leland_state::leland_svram_port_r), FUNC(leland_state::leland_svram_port_w));
+}
+
+
+void leland_state::slave_map_program(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x9fff).bankr("bank3");
+ map(0xa000, 0xdfff).rom();
+ map(0xe000, 0xefff).ram();
+ map(0xfffc, 0xfffd).w(this, FUNC(leland_state::leland_slave_video_addr_w));
+ map(0xfffe, 0xfffe).r(this, FUNC(leland_state::leland_raster_r));
+ map(0xffff, 0xffff).w(this, FUNC(leland_state::ataxx_slave_banksw_w));
+}
+
+
+void leland_state::slave_map_io_2(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x60, 0x7f).rw(this, FUNC(leland_state::ataxx_svram_port_r), FUNC(leland_state::ataxx_svram_port_w));
+}
/*************************************
*
@@ -183,22 +193,26 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(leland_state::leland_80186_map_program)
- AM_RANGE(0x00000, 0x03fff) AM_MIRROR(0x1c000) AM_RAM
- AM_RANGE(0x20000, 0xfffff) AM_ROM
-ADDRESS_MAP_END
+void leland_state::leland_80186_map_program(address_map &map)
+{
+ map(0x00000, 0x03fff).mirror(0x1c000).ram();
+ map(0x20000, 0xfffff).rom();
+}
-ADDRESS_MAP_START(leland_state::ataxx_80186_map_io)
-ADDRESS_MAP_END
+void leland_state::ataxx_80186_map_io(address_map &map)
+{
+}
-ADDRESS_MAP_START(leland_state::redline_80186_map_io)
- AM_RANGE(0x0000, 0xffff) AM_DEVWRITE("custom", redline_80186_sound_device, redline_dac_w)
-ADDRESS_MAP_END
+void leland_state::redline_80186_map_io(address_map &map)
+{
+ map(0x0000, 0xffff).w("custom", FUNC(redline_80186_sound_device::redline_dac_w));
+}
-ADDRESS_MAP_START(leland_state::leland_80186_map_io)
- AM_RANGE(0x0000, 0xffff) AM_DEVWRITE("custom", leland_80186_sound_device, dac_w)
-ADDRESS_MAP_END
+void leland_state::leland_80186_map_io(address_map &map)
+{
+ map(0x0000, 0xffff).w(m_sound, FUNC(leland_80186_sound_device::dac_w));
+}
/************************************************************************