summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/mame/drivers/abc80x.cpp51
-rw-r--r--src/mame/drivers/amiga.cpp55
-rw-r--r--src/mame/drivers/atlantis.cpp50
-rw-r--r--src/mame/drivers/bfm_sc2.cpp15
-rw-r--r--src/mame/drivers/eolith.cpp13
-rw-r--r--src/mame/drivers/fmtowns.cpp171
-rw-r--r--src/mame/drivers/goldstar.cpp272
-rw-r--r--src/mame/drivers/intellec4.cpp64
-rw-r--r--src/mame/drivers/ngen.cpp51
-rw-r--r--src/mame/drivers/norautp.cpp16
-rw-r--r--src/mame/drivers/notetaker.cpp74
-rw-r--r--src/mame/drivers/pc8401a.cpp57
-rw-r--r--src/mame/drivers/pc88va.cpp24
-rw-r--r--src/mame/drivers/seattle.cpp85
-rw-r--r--src/mame/drivers/segas32.cpp137
-rw-r--r--src/mame/drivers/segaxbd.cpp99
-rw-r--r--src/mame/drivers/sg1000.cpp14
-rw-r--r--src/mame/drivers/superqix.cpp17
-rw-r--r--src/mame/drivers/trs80m2.cpp5
-rw-r--r--src/mame/drivers/vegas.cpp79
-rw-r--r--src/mame/drivers/williams.cpp9
-rw-r--r--src/mame/drivers/x1twin.cpp30
22 files changed, 734 insertions, 654 deletions
diff --git a/src/mame/drivers/abc80x.cpp b/src/mame/drivers/abc80x.cpp
index f0fb206c4bb..e2f39912a4b 100644
--- a/src/mame/drivers/abc80x.cpp
+++ b/src/mame/drivers/abc80x.cpp
@@ -514,47 +514,50 @@ void abc800c_state::abc800c_mem(address_map &map)
// ADDRESS_MAP( abc800c_io )
//-------------------------------------------------
-ADDRESS_MAP_START(abc800_state::abc800c_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_MIRROR(0x18) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_device, inp_r, out_w)
- AM_RANGE(0x01, 0x01) AM_MIRROR(0x18) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_device, stat_r, cs_w)
- AM_RANGE(0x02, 0x02) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c1_w)
- AM_RANGE(0x03, 0x03) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c2_w)
- AM_RANGE(0x04, 0x04) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c3_w)
- AM_RANGE(0x05, 0x05) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c4_w)
- AM_RANGE(0x05, 0x05) AM_MIRROR(0x18) AM_READ(pling_r)
- AM_RANGE(0x06, 0x06) AM_MIRROR(0x18) AM_WRITE(hrs_w)
- AM_RANGE(0x07, 0x07) AM_MIRROR(0x18) AM_DEVREAD(ABCBUS_TAG, abcbus_slot_device, rst_r) AM_WRITE(hrc_w)
- AM_RANGE(0x20, 0x23) AM_MIRROR(0x0c) AM_DEVREADWRITE(Z80DART_TAG, z80dart_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x40, 0x43) AM_MIRROR(0x1c) AM_DEVREADWRITE(Z80SIO_TAG, z80sio2_device, ba_cd_r, ba_cd_w)
- AM_RANGE(0x60, 0x63) AM_MIRROR(0x1c) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write)
-ADDRESS_MAP_END
+void abc800_state::abc800c_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x00).mirror(0x18).rw(ABCBUS_TAG, FUNC(abcbus_slot_device::inp_r), FUNC(abcbus_slot_device::out_w));
+ map(0x01, 0x01).mirror(0x18).rw(ABCBUS_TAG, FUNC(abcbus_slot_device::stat_r), FUNC(abcbus_slot_device::cs_w));
+ map(0x02, 0x02).mirror(0x18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c1_w));
+ map(0x03, 0x03).mirror(0x18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c2_w));
+ map(0x04, 0x04).mirror(0x18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c3_w));
+ map(0x05, 0x05).mirror(0x18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c4_w));
+ map(0x05, 0x05).mirror(0x18).r(this, FUNC(abc800_state::pling_r));
+ map(0x06, 0x06).mirror(0x18).w(this, FUNC(abc800_state::hrs_w));
+ map(0x07, 0x07).mirror(0x18).r(ABCBUS_TAG, FUNC(abcbus_slot_device::rst_r)).w(this, FUNC(abc800_state::hrc_w));
+ map(0x20, 0x23).mirror(0x0c).rw(m_dart, FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w));
+ map(0x40, 0x43).mirror(0x1c).rw(m_sio, FUNC(z80sio2_device::ba_cd_r), FUNC(z80sio2_device::ba_cd_w));
+ map(0x60, 0x63).mirror(0x1c).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
+}
//-------------------------------------------------
// ADDRESS_MAP( abc800m_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(abc800_state::abc800m_mem)
+void abc800_state::abc800m_mem(address_map &map)
+{
map.unmap_value_high();
map(0x0000, 0x3fff).ram().share("video_ram");
map(0x4000, 0x77ff).rom();
map(0x7800, 0x7fff).ram().share("char_ram");
map(0x8000, 0xffff).ram();
-ADDRESS_MAP_END
+}
//-------------------------------------------------
// ADDRESS_MAP( abc800m_io )
//-------------------------------------------------
-ADDRESS_MAP_START(abc800_state::abc800m_io)
- AM_IMPORT_FROM( abc800c_io )
- AM_RANGE(0x31, 0x31) AM_MIRROR(0x06) AM_DEVREAD(MC6845_TAG, mc6845_device, register_r)
- AM_RANGE(0x38, 0x38) AM_MIRROR(0x06) AM_DEVWRITE(MC6845_TAG, mc6845_device, address_w)
- AM_RANGE(0x39, 0x39) AM_MIRROR(0x06) AM_DEVWRITE(MC6845_TAG, mc6845_device, register_w)
-ADDRESS_MAP_END
+void abc800_state::abc800m_io(address_map &map)
+{
+ abc800c_io(map);
+ map(0x31, 0x31).mirror(0x06).r(MC6845_TAG, FUNC(mc6845_device::register_r));
+ map(0x38, 0x38).mirror(0x06).w(MC6845_TAG, FUNC(mc6845_device::address_w));
+ map(0x39, 0x39).mirror(0x06).w(MC6845_TAG, FUNC(mc6845_device::register_w));
+}
//-------------------------------------------------
diff --git a/src/mame/drivers/amiga.cpp b/src/mame/drivers/amiga.cpp
index e16fe40c0db..9409ca59563 100644
--- a/src/mame/drivers/amiga.cpp
+++ b/src/mame/drivers/amiga.cpp
@@ -1018,39 +1018,44 @@ void a1000_state::a1000_mem(address_map &map)
}
// Gary/Super Gary/Gayle with 512KB chip RAM
-ADDRESS_MAP_START(amiga_state::overlay_512kb_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x07ffff) AM_MIRROR(0x180000) AM_RAM AM_SHARE("chip_ram")
- AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
+void amiga_state::overlay_512kb_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x07ffff).mirror(0x180000).ram().share("chip_ram");
+ map(0x200000, 0x27ffff).rom().region("kickstart", 0);
+}
// Gary/Super Gary/Gayle with 1MB chip RAM
-ADDRESS_MAP_START(amiga_state::overlay_1mb_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x0fffff) AM_MIRROR(0x100000) AM_RAM AM_SHARE("chip_ram")
- AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
+void amiga_state::overlay_1mb_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x0fffff).mirror(0x100000).ram().share("chip_ram");
+ map(0x200000, 0x27ffff).rom().region("kickstart", 0);
+}
// Gary/Super Gary/Gayle with 1MB chip RAM (32 bit system)
-ADDRESS_MAP_START(amiga_state::overlay_1mb_map32)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x0fffff) AM_MIRROR(0x100000) AM_RAM AM_SHARE("chip_ram")
- AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
+void amiga_state::overlay_1mb_map32(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x0fffff).mirror(0x100000).ram().share("chip_ram");
+ map(0x200000, 0x27ffff).rom().region("kickstart", 0);
+}
// Gary/Super Gary/Gayle with 2MB chip RAM (32 bit system)
-ADDRESS_MAP_START(amiga_state::overlay_2mb_map16)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x1fffff) AM_RAM AM_SHARE("chip_ram")
- AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
+void amiga_state::overlay_2mb_map16(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x1fffff).ram().share("chip_ram");
+ map(0x200000, 0x27ffff).rom().region("kickstart", 0);
+}
// Gary/Super Gary/Gayle with 2MB chip RAM (32 bit system)
-ADDRESS_MAP_START(amiga_state::overlay_2mb_map32)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x1fffff) AM_RAM AM_SHARE("chip_ram")
- AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
+void amiga_state::overlay_2mb_map32(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x000000, 0x1fffff).ram().share("chip_ram");
+ map(0x200000, 0x27ffff).rom().region("kickstart", 0);
+}
// 512KB chip RAM, 512KB slow RAM, RTC
void a2000_state::a2000_mem(address_map &map)
diff --git a/src/mame/drivers/atlantis.cpp b/src/mame/drivers/atlantis.cpp
index 293f61a2f1f..5954dd949ce 100644
--- a/src/mame/drivers/atlantis.cpp
+++ b/src/mame/drivers/atlantis.cpp
@@ -665,43 +665,47 @@ void atlantis_state::device_timer(emu_timer &timer, device_timer_id id, int para
/*************************************
* Address Maps
*************************************/
-ADDRESS_MAP_START(atlantis_state::map0)
- AM_RANGE(0x00000000, 0x0001ffff) AM_READWRITE8(cmos_r, cmos_w, 0xff)
+void atlantis_state::map0(address_map &map)
+{
+ map(0x00000000, 0x0001ffff).rw(this, FUNC(atlantis_state::cmos_r), FUNC(atlantis_state::cmos_w)).umask32(0x000000ff);
//AM_RANGE(0x00080000, 0x000?0000) AM_READWRITE8(zeus debug)
- AM_RANGE(0x00100000, 0x0010001f) AM_DEVREADWRITE8("uart1", ns16550_device, ins8250_r, ins8250_w, 0xff) // Serial UART1 (TL16C552 CS0)
- AM_RANGE(0x00180000, 0x0018001f) AM_DEVREADWRITE8("uart2", ns16550_device, ins8250_r, ins8250_w, 0xff) // Serial UART2 (TL16C552 CS1)
- AM_RANGE(0x00200000, 0x0020001f) AM_READWRITE8(parallel_r, parallel_w, 0xff) // Parallel UART (TL16C552 CS2)
- AM_RANGE(0x00400000, 0x007fffff) AM_READWRITE8(exprom_r, exprom_w, 0xff) // EXPROM
- AM_RANGE(0x00800000, 0x00f00003) AM_READWRITE(board_ctrl_r, board_ctrl_w)
+ map(0x00100000, 0x0010001f).rw(m_uart1, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)).umask32(0x000000ff); // Serial UART1 (TL16C552 CS0)
+ map(0x00180000, 0x0018001f).rw(m_uart2, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)).umask32(0x000000ff); // Serial UART2 (TL16C552 CS1)
+ map(0x00200000, 0x0020001f).rw(this, FUNC(atlantis_state::parallel_r), FUNC(atlantis_state::parallel_w)).umask32(0x000000ff); // Parallel UART (TL16C552 CS2)
+ map(0x00400000, 0x007fffff).rw(this, FUNC(atlantis_state::exprom_r), FUNC(atlantis_state::exprom_w)).umask32(0x000000ff); // EXPROM
+ map(0x00800000, 0x00f00003).rw(this, FUNC(atlantis_state::board_ctrl_r), FUNC(atlantis_state::board_ctrl_w));
//AM_RANGE(0x00d80000, 0x00d80003) AM_READWRITE(status_leds_r, status_leds_w)
//AM_RANGE(0x00e00000, 0x00e00003) AM_READWRITE(cmos_protect_r, cmos_protect_w)
//AM_RANGE(0x00e80000, 0x00e80003) AM_NOP // Watchdog
//AM_RANGE(0x00f00000, 0x00f00003) AM_NOP // Trackball ctrl
- ADDRESS_MAP_END
-
-ADDRESS_MAP_START(atlantis_state::map1)
- AM_RANGE(0x00000000, 0x0000003f) AM_DEVREADWRITE("ioasic", midway_ioasic_device, read, write)
- AM_RANGE(0x00200000, 0x00200003) AM_WRITE(dcs3_fifo_full_w)
- AM_RANGE(0x00400000, 0x00400003) AM_DEVWRITE("dcs", dcs_audio_device, dsio_idma_addr_w)
- AM_RANGE(0x00600000, 0x00600003) AM_DEVREADWRITE("dcs", dcs_audio_device, dsio_idma_data_r, dsio_idma_data_w)
- AM_RANGE(0x00800000, 0x00900003) AM_READWRITE16(port_ctrl_r, port_ctrl_w, 0xffff)
+ }
+
+void atlantis_state::map1(address_map &map)
+{
+ map(0x00000000, 0x0000003f).rw(m_ioasic, FUNC(midway_ioasic_device::read), FUNC(midway_ioasic_device::write));
+ map(0x00200000, 0x00200003).w(this, FUNC(atlantis_state::dcs3_fifo_full_w));
+ map(0x00400000, 0x00400003).w(m_dcs, FUNC(dcs_audio_device::dsio_idma_addr_w));
+ map(0x00600000, 0x00600003).rw(m_dcs, FUNC(dcs_audio_device::dsio_idma_data_r), FUNC(dcs_audio_device::dsio_idma_data_w));
+ map(0x00800000, 0x00900003).rw(this, FUNC(atlantis_state::port_ctrl_r), FUNC(atlantis_state::port_ctrl_w)).umask32(0x0000ffff);
//AM_RANGE(0x00880000, 0x00880003) // AUX Output Initial write 0000fff0, follow by sequence ffef, ffdf, ffbf, fff7. Row Select?
//AM_RANGE(0x00900000, 0x00900003) // AUX Input Read once before each sequence write to 0x00880000. Code checks bits 0,1,2. Keypad?
- AM_RANGE(0x00980000, 0x00980003) AM_READWRITE16(a2d_ctrl_r, a2d_ctrl_w, 0xffff) // A2D Control Read / Write. Bytes written 0x8f, 0xcf. Code if read 0x1 then read 00a00000.
- AM_RANGE(0x00a00000, 0x00a00003) AM_READWRITE16(a2d_data_r, a2d_data_w, 0xffff) // A2D Data
+ map(0x00980000, 0x00980001).rw(this, FUNC(atlantis_state::a2d_ctrl_r), FUNC(atlantis_state::a2d_ctrl_w)); // A2D Control Read / Write. Bytes written 0x8f, 0xcf. Code if read 0x1 then read 00a00000.
+ map(0x00a00000, 0x00a00001).rw(this, FUNC(atlantis_state::a2d_data_r), FUNC(atlantis_state::a2d_data_w)); // A2D Data
//AM_RANGE(0x00a80000, 0x00a80003) // Trackball Chan 0 16 bits
//AM_RANGE(0x00b00000, 0x00b00003) // Trackball Chan 1 16 bits
//AM_RANGE(0x00b80000, 0x00b80003) // Trackball Error 16 bits
//AM_RANGE(0x00c00000, 0x00c00003) // Trackball Pins 16 bits
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(atlantis_state::map2)
- AM_RANGE(0x00000000, 0x000001ff) AM_DEVREADWRITE("zeus2", zeus2_device, zeus2_r, zeus2_w)
-ADDRESS_MAP_END
+void atlantis_state::map2(address_map &map)
+{
+ map(0x00000000, 0x000001ff).rw(m_zeus, FUNC(zeus2_device::zeus2_r), FUNC(zeus2_device::zeus2_w));
+}
-ADDRESS_MAP_START(atlantis_state::map3)
+void atlantis_state::map3(address_map &map)
+{
//AM_RANGE(0x000000, 0xffffff) ROMBUS
-ADDRESS_MAP_END
+}
/*************************************
*
diff --git a/src/mame/drivers/bfm_sc2.cpp b/src/mame/drivers/bfm_sc2.cpp
index 3ceb99f0e97..48b809f7684 100644
--- a/src/mame/drivers/bfm_sc2.cpp
+++ b/src/mame/drivers/bfm_sc2.cpp
@@ -1575,13 +1575,14 @@ void bfm_sc2_state::sc2_basemap(address_map &map)
map(0x8000, 0xFFFF).rom();
}
-ADDRESS_MAP_START(bfm_sc2_novid_state::memmap_no_vid)
- AM_IMPORT_FROM( sc2_basemap )
- AM_RANGE(0x2000, 0x2000) AM_READ(vfd_status_r)
- AM_RANGE(0x2000, 0x20FF) AM_WRITE(reel12_w)
- AM_RANGE(0x2100, 0x21FF) AM_WRITE(reel34_w)
- AM_RANGE(0x2200, 0x22FF) AM_WRITE(reel56_w)
-ADDRESS_MAP_END
+void bfm_sc2_novid_state::memmap_no_vid(address_map &map)
+{
+ sc2_basemap(map);
+ map(0x2000, 0x2000).r(this, FUNC(bfm_sc2_novid_state::vfd_status_r));
+ map(0x2000, 0x20FF).w(this, FUNC(bfm_sc2_novid_state::reel12_w));
+ map(0x2100, 0x21FF).w(this, FUNC(bfm_sc2_novid_state::reel34_w));
+ map(0x2200, 0x22FF).w(this, FUNC(bfm_sc2_novid_state::reel56_w));
+}
// memory map for scorpion2 board video addon /////////////////////////////
diff --git a/src/mame/drivers/eolith.cpp b/src/mame/drivers/eolith.cpp
index 90f0f4020e5..32ba147b82f 100644
--- a/src/mame/drivers/eolith.cpp
+++ b/src/mame/drivers/eolith.cpp
@@ -231,13 +231,14 @@ void eolith_state::eolith_map(address_map &map)
map(0xfff80000, 0xffffffff).rom().region("maincpu", 0);
}
-ADDRESS_MAP_START(eolith_state::hidctch3_map)
- AM_IMPORT_FROM(eolith_map)
- AM_RANGE(0xfc200000, 0xfc200003) AM_WRITENOP // this generates pens vibration
+void eolith_state::hidctch3_map(address_map &map)
+{
+ eolith_map(map);
+ map(0xfc200000, 0xfc200003).nopw(); // this generates pens vibration
// It is not clear why the first reads are needed too
- AM_RANGE(0xfce00000, 0xfce00003) AM_MIRROR(0x00080000) AM_READ(hidctch3_pen_r<0>)
- AM_RANGE(0xfcf00000, 0xfcf00003) AM_MIRROR(0x00080000) AM_READ(hidctch3_pen_r<1>)
-ADDRESS_MAP_END
+ map(0xfce00000, 0xfce00003).mirror(0x00080000).r(this, FUNC(eolith_state::hidctch3_pen_r<0>));
+ map(0xfcf00000, 0xfcf00003).mirror(0x00080000).r(this, FUNC(eolith_state::hidctch3_pen_r<1>));
+}
/*************************************
diff --git a/src/mame/drivers/fmtowns.cpp b/src/mame/drivers/fmtowns.cpp
index c8c606722a5..b1567692ea2 100644
--- a/src/mame/drivers/fmtowns.cpp
+++ b/src/mame/drivers/fmtowns.cpp
@@ -2220,54 +2220,56 @@ void towns_state::towns_mem(address_map &map)
map(0xfffc0000, 0xffffffff).rom().region("user", 0x200000); // SYSTEM ROM
}
-ADDRESS_MAP_START(towns_state::marty_mem)
- AM_RANGE(0x00000000, 0x000bffff) AM_RAM
- AM_RANGE(0x000c0000, 0x000c7fff) AM_READWRITE8(towns_gfx_r,towns_gfx_w,0xffff)
- AM_RANGE(0x000c8000, 0x000cafff) AM_READWRITE8(towns_spriteram_low_r,towns_spriteram_low_w,0xffff)
- AM_RANGE(0x000cb000, 0x000cbfff) AM_READ_BANK("bank6") AM_WRITE_BANK("bank7")
- AM_RANGE(0x000cc000, 0x000cff7f) AM_RAM
- AM_RANGE(0x000cff80, 0x000cffff) AM_READWRITE8(towns_video_cff80_mem_r,towns_video_cff80_mem_w,0xffff)
- AM_RANGE(0x000d0000, 0x000d7fff) AM_RAM
- AM_RANGE(0x000d8000, 0x000d9fff) AM_READWRITE8(towns_cmos_low_r,towns_cmos_low_w,0xffff) AM_SHARE("nvram16") // CMOS? RAM
- AM_RANGE(0x000da000, 0x000effff) AM_RAM //READWRITE(SMH_BANK(11),SMH_BANK(11))
- AM_RANGE(0x000f0000, 0x000f7fff) AM_RAM //READWRITE(SMH_BANK(12),SMH_BANK(12))
- AM_RANGE(0x000f8000, 0x000fffff) AM_READ_BANK("bank11") AM_WRITE_BANK("bank12")
+void towns_state::marty_mem(address_map &map)
+{
+ map(0x00000000, 0x000bffff).ram();
+ map(0x000c0000, 0x000c7fff).rw(this, FUNC(towns_state::towns_gfx_r), FUNC(towns_state::towns_gfx_w));
+ map(0x000c8000, 0x000cafff).rw(this, FUNC(towns_state::towns_spriteram_low_r), FUNC(towns_state::towns_spriteram_low_w));
+ map(0x000cb000, 0x000cbfff).bankr("bank6").bankw("bank7");
+ map(0x000cc000, 0x000cff7f).ram();
+ map(0x000cff80, 0x000cffff).rw(this, FUNC(towns_state::towns_video_cff80_mem_r), FUNC(towns_state::towns_video_cff80_mem_w));
+ map(0x000d0000, 0x000d7fff).ram();
+ map(0x000d8000, 0x000d9fff).rw(this, FUNC(towns_state::towns_cmos_low_r), FUNC(towns_state::towns_cmos_low_w)).share("nvram16"); // CMOS? RAM
+ map(0x000da000, 0x000effff).ram(); //READWRITE(SMH_BANK(11),SMH_BANK(11))
+ map(0x000f0000, 0x000f7fff).ram(); //READWRITE(SMH_BANK(12),SMH_BANK(12))
+ map(0x000f8000, 0x000fffff).bankr("bank11").bankw("bank12");
// AM_RANGE(0x00100000, 0x005fffff) AM_RAM // some extra RAM - the Marty has 6MB RAM (not upgradable)
- AM_RANGE(0x00600000, 0x0067ffff) AM_ROM AM_REGION("user",0x000000) // OS
- AM_RANGE(0x00680000, 0x0087ffff) AM_ROM AM_REGION("user",0x280000) // EX ROM
- AM_RANGE(0x00a00000, 0x00a7ffff) AM_READWRITE8(towns_gfx_high_r,towns_gfx_high_w,0xffff) AM_MIRROR(0x180000) // VRAM
- AM_RANGE(0x00b00000, 0x00b7ffff) AM_ROM AM_REGION("user",0x180000) // FONT
- AM_RANGE(0x00c00000, 0x00c1ffff) AM_READWRITE8(towns_spriteram_r,towns_spriteram_w,0xffff) // Sprite RAM
- AM_RANGE(0x00d00000, 0x00dfffff) AM_DEVREADWRITE8("icmemcard", fmt_icmem_device, mem_read, mem_write, 0xffff)
- AM_RANGE(0x00e80000, 0x00efffff) AM_ROM AM_REGION("user",0x100000) // DIC ROM
- AM_RANGE(0x00f00000, 0x00f7ffff) AM_ROM AM_REGION("user",0x180000) // FONT
- AM_RANGE(0x00f80000, 0x00f80fff) AM_DEVREADWRITE8("pcm", rf5c68_device, rf5c68_mem_r, rf5c68_mem_w, 0xffff) // WAVE RAM
- AM_RANGE(0x00fc0000, 0x00ffffff) AM_ROM AM_REGION("user",0x200000) // SYSTEM ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(towns_state::ux_mem)
- AM_RANGE(0x00000000, 0x000bffff) AM_RAM
- AM_RANGE(0x000c0000, 0x000c7fff) AM_READWRITE8(towns_gfx_r,towns_gfx_w,0xffff)
- AM_RANGE(0x000c8000, 0x000cafff) AM_READWRITE8(towns_spriteram_low_r,towns_spriteram_low_w,0xffff)
- AM_RANGE(0x000cb000, 0x000cbfff) AM_READ_BANK("bank6") AM_WRITE_BANK("bank7")
- AM_RANGE(0x000cc000, 0x000cff7f) AM_RAM
- AM_RANGE(0x000cff80, 0x000cffff) AM_READWRITE8(towns_video_cff80_mem_r,towns_video_cff80_mem_w,0xffff)
- AM_RANGE(0x000d0000, 0x000d7fff) AM_RAM
- AM_RANGE(0x000d8000, 0x000d9fff) AM_READWRITE8(towns_cmos_low_r,towns_cmos_low_w,0xffff) AM_SHARE("nvram16") // CMOS? RAM
- AM_RANGE(0x000da000, 0x000effff) AM_RAM //READWRITE(SMH_BANK(11),SMH_BANK(11))
- AM_RANGE(0x000f0000, 0x000f7fff) AM_RAM //READWRITE(SMH_BANK(12),SMH_BANK(12))
- AM_RANGE(0x000f8000, 0x000fffff) AM_READ_BANK("bank11") AM_WRITE_BANK("bank12")
+ map(0x00600000, 0x0067ffff).rom().region("user", 0x000000); // OS
+ map(0x00680000, 0x0087ffff).rom().region("user", 0x280000); // EX ROM
+ map(0x00a00000, 0x00a7ffff).rw(this, FUNC(towns_state::towns_gfx_high_r), FUNC(towns_state::towns_gfx_high_w)).mirror(0x180000); // VRAM
+ map(0x00b00000, 0x00b7ffff).rom().region("user", 0x180000); // FONT
+ map(0x00c00000, 0x00c1ffff).rw(this, FUNC(towns_state::towns_spriteram_r), FUNC(towns_state::towns_spriteram_w)); // Sprite RAM
+ map(0x00d00000, 0x00dfffff).rw(m_icmemcard, FUNC(fmt_icmem_device::mem_read), FUNC(fmt_icmem_device::mem_write));
+ map(0x00e80000, 0x00efffff).rom().region("user", 0x100000); // DIC ROM
+ map(0x00f00000, 0x00f7ffff).rom().region("user", 0x180000); // FONT
+ map(0x00f80000, 0x00f80fff).rw("pcm", FUNC(rf5c68_device::rf5c68_mem_r), FUNC(rf5c68_device::rf5c68_mem_w)); // WAVE RAM
+ map(0x00fc0000, 0x00ffffff).rom().region("user", 0x200000); // SYSTEM ROM
+}
+
+void towns_state::ux_mem(address_map &map)
+{
+ map(0x00000000, 0x000bffff).ram();
+ map(0x000c0000, 0x000c7fff).rw(this, FUNC(towns_state::towns_gfx_r), FUNC(towns_state::towns_gfx_w));
+ map(0x000c8000, 0x000cafff).rw(this, FUNC(towns_state::towns_spriteram_low_r), FUNC(towns_state::towns_spriteram_low_w));
+ map(0x000cb000, 0x000cbfff).bankr("bank6").bankw("bank7");
+ map(0x000cc000, 0x000cff7f).ram();
+ map(0x000cff80, 0x000cffff).rw(this, FUNC(towns_state::towns_video_cff80_mem_r), FUNC(towns_state::towns_video_cff80_mem_w));
+ map(0x000d0000, 0x000d7fff).ram();
+ map(0x000d8000, 0x000d9fff).rw(this, FUNC(towns_state::towns_cmos_low_r), FUNC(towns_state::towns_cmos_low_w)).share("nvram16"); // CMOS? RAM
+ map(0x000da000, 0x000effff).ram(); //READWRITE(SMH_BANK(11),SMH_BANK(11))
+ map(0x000f0000, 0x000f7fff).ram(); //READWRITE(SMH_BANK(12),SMH_BANK(12))
+ map(0x000f8000, 0x000fffff).bankr("bank11").bankw("bank12");
// AM_RANGE(0x00680000, 0x0087ffff) AM_ROM AM_REGION("user",0x280000) // EX ROM
- AM_RANGE(0x00a00000, 0x00a7ffff) AM_READWRITE8(towns_gfx_high_r,towns_gfx_high_w,0xffff) AM_MIRROR(0x180000) // VRAM
- AM_RANGE(0x00b00000, 0x00b7ffff) AM_ROM AM_REGION("user",0x180000) // FONT
- AM_RANGE(0x00c00000, 0x00c1ffff) AM_READWRITE8(towns_spriteram_r,towns_spriteram_w,0xffff) // Sprite RAM
- AM_RANGE(0x00d00000, 0x00dfffff) AM_DEVREADWRITE8("icmemcard", fmt_icmem_device, mem_read, mem_write, 0xffff)
- AM_RANGE(0x00e00000, 0x00e7ffff) AM_ROM AM_REGION("user",0x000000) // OS
- AM_RANGE(0x00e80000, 0x00efffff) AM_ROM AM_REGION("user",0x100000) // DIC ROM
- AM_RANGE(0x00f00000, 0x00f7ffff) AM_ROM AM_REGION("user",0x180000) // FONT
- AM_RANGE(0x00f80000, 0x00f80fff) AM_DEVREADWRITE8("pcm", rf5c68_device, rf5c68_mem_r, rf5c68_mem_w, 0xffff) // WAVE RAM
- AM_RANGE(0x00fc0000, 0x00ffffff) AM_ROM AM_REGION("user",0x200000) // SYSTEM ROM
-ADDRESS_MAP_END
+ map(0x00a00000, 0x00a7ffff).rw(this, FUNC(towns_state::towns_gfx_high_r), FUNC(towns_state::towns_gfx_high_w)).mirror(0x180000); // VRAM
+ map(0x00b00000, 0x00b7ffff).rom().region("user", 0x180000); // FONT
+ map(0x00c00000, 0x00c1ffff).rw(this, FUNC(towns_state::towns_spriteram_r), FUNC(towns_state::towns_spriteram_w)); // Sprite RAM
+ map(0x00d00000, 0x00dfffff).rw(m_icmemcard, FUNC(fmt_icmem_device::mem_read), FUNC(fmt_icmem_device::mem_write));
+ map(0x00e00000, 0x00e7ffff).rom().region("user", 0x000000); // OS
+ map(0x00e80000, 0x00efffff).rom().region("user", 0x100000); // DIC ROM
+ map(0x00f00000, 0x00f7ffff).rom().region("user", 0x180000); // FONT
+ map(0x00f80000, 0x00f80fff).rw("pcm", FUNC(rf5c68_device::rf5c68_mem_r), FUNC(rf5c68_device::rf5c68_mem_w)); // WAVE RAM
+ map(0x00fc0000, 0x00ffffff).rom().region("user", 0x200000); // SYSTEM ROM
+}
void towns_state::towns_io(address_map &map)
{
@@ -2329,63 +2331,64 @@ void towns_state::towns_io(address_map &map)
map(0xff80, 0xffff).rw(this, FUNC(towns_state::towns_video_cff80_r), FUNC(towns_state::towns_video_cff80_w));
}
-ADDRESS_MAP_START(towns_state::towns16_io) // for the 386SX based systems
+void towns_state::towns16_io(address_map &map)
+{ // for the 386SX based systems
// System ports
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000,0x0003) AM_DEVREADWRITE8("pic8259_master", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x0010,0x0013) AM_DEVREADWRITE8("pic8259_slave", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x0020,0x0033) AM_READWRITE8(towns_system_r,towns_system_w, 0xffff)
- AM_RANGE(0x0040,0x0047) AM_DEVREADWRITE8("pit", pit8253_device, read, write, 0x00ff)
- AM_RANGE(0x0050,0x0057) AM_DEVREADWRITE8("pit2", pit8253_device, read, write, 0x00ff)
- AM_RANGE(0x0060,0x0061) AM_READWRITE8(towns_port60_r, towns_port60_w, 0x00ff)
- AM_RANGE(0x0068,0x006b) AM_READWRITE8(towns_intervaltimer2_r, towns_intervaltimer2_w, 0xffff)
- AM_RANGE(0x006c,0x006d) AM_READWRITE8(towns_sys6c_r,towns_sys6c_w, 0x00ff)
+ map.unmap_value_high();
+ map(0x0000, 0x0003).rw(m_pic_master, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x0010, 0x0013).rw(m_pic_slave, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x0020, 0x0033).rw(this, FUNC(towns_state::towns_system_r), FUNC(towns_state::towns_system_w));
+ map(0x0040, 0x0047).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);
+ map(0x0050, 0x0057).rw("pit2", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);
+ map(0x0060, 0x0060).rw(this, FUNC(towns_state::towns_port60_r), FUNC(towns_state::towns_port60_w));
+ map(0x0068, 0x006b).rw(this, FUNC(towns_state::towns_intervaltimer2_r), FUNC(towns_state::towns_intervaltimer2_w));
+ map(0x006c, 0x006c).rw(this, FUNC(towns_state::towns_sys6c_r), FUNC(towns_state::towns_sys6c_w));
// 0x0070/0x0080 - CMOS RTC
- AM_RANGE(0x0070,0x0071) AM_READWRITE8(towns_rtc_r,towns_rtc_w,0x00ff)
- AM_RANGE(0x0080,0x0081) AM_WRITE8(towns_rtc_select_w,0x00ff)
+ map(0x0070, 0x0070).rw(this, FUNC(towns_state::towns_rtc_r), FUNC(towns_state::towns_rtc_w));
+ map(0x0080, 0x0080).w(this, FUNC(towns_state::towns_rtc_select_w));
// DMA controllers (uPD71071)
- AM_RANGE(0x00a0,0x00af) AM_READWRITE8(towns_dma1_r, towns_dma1_w, 0xffff)
- AM_RANGE(0x00b0,0x00bf) AM_READWRITE8(towns_dma2_r, towns_dma2_w, 0xffff)
+ map(0x00a0, 0x00af).rw(this, FUNC(towns_state::towns_dma1_r), FUNC(towns_state::towns_dma1_w));
+ map(0x00b0, 0x00bf).rw(this, FUNC(towns_state::towns_dma2_r), FUNC(towns_state::towns_dma2_w));
// Floppy controller
- AM_RANGE(0x0200,0x020f) AM_READWRITE8(towns_floppy_r, towns_floppy_w, 0xffff)
+ map(0x0200, 0x020f).rw(this, FUNC(towns_state::towns_floppy_r), FUNC(towns_state::towns_floppy_w));
// CRTC / Video
- AM_RANGE(0x0400,0x0401) AM_READ8(towns_video_unknown_r, 0x00ff) // R/O (0x400)
- AM_RANGE(0x0404,0x0407) AM_READWRITE8(towns_video_404_r, towns_video_404_w, 0xffff) // R/W (0x404)
- AM_RANGE(0x0440,0x045f) AM_READWRITE8(towns_video_440_r, towns_video_440_w, 0xffff)
+ map(0x0400, 0x0400).r(this, FUNC(towns_state::towns_video_unknown_r)); // R/O (0x400)
+ map(0x0404, 0x0407).rw(this, FUNC(towns_state::towns_video_404_r), FUNC(towns_state::towns_video_404_w)); // R/W (0x404)
+ map(0x0440, 0x045f).rw(this, FUNC(towns_state::towns_video_440_r), FUNC(towns_state::towns_video_440_w));
// System port
- AM_RANGE(0x0480,0x0481) AM_READWRITE8(towns_sys480_r,towns_sys480_w,0x00ff) // R/W (0x480)
+ map(0x0480, 0x0480).rw(this, FUNC(towns_state::towns_sys480_r), FUNC(towns_state::towns_sys480_w)); // R/W (0x480)
// IC Memory Card
- AM_RANGE(0x048a,0x048b) AM_DEVREAD8("icmemcard",fmt_icmem_device,status_r,0x00ff)
- AM_RANGE(0x0490,0x0491) AM_DEVREADWRITE8("icmemcard",fmt_icmem_device,bank_r,bank_w,0xffff)
+ map(0x048a, 0x048a).r(m_icmemcard, FUNC(fmt_icmem_device::status_r));
+ map(0x0490, 0x0491).rw(m_icmemcard, FUNC(fmt_icmem_device::bank_r), FUNC(fmt_icmem_device::bank_w));
// CD-ROM
- AM_RANGE(0x04c0,0x04cf) AM_READWRITE8(towns_cdrom_r,towns_cdrom_w,0x00ff)
+ map(0x04c0, 0x04cf).rw(this, FUNC(towns_state::towns_cdrom_r), FUNC(towns_state::towns_cdrom_w)).umask16(0x00ff);
// Joystick / Mouse ports
- AM_RANGE(0x04d0,0x04d3) AM_READ8(towns_padport_r, 0x00ff)
- AM_RANGE(0x04d6,0x04d7) AM_WRITE8(towns_pad_mask_w, 0x00ff)
+ map(0x04d0, 0x04d3).r(this, FUNC(towns_state::towns_padport_r)).umask16(0x00ff);
+ map(0x04d6, 0x04d6).w(this, FUNC(towns_state::towns_pad_mask_w));
// Sound (YM3438 [FM], RF5c68 [PCM])
- AM_RANGE(0x04d8,0x04df) AM_DEVREADWRITE8("fm", ym3438_device, read, write, 0x00ff)
- AM_RANGE(0x04e0,0x04e3) AM_READWRITE8(towns_volume_r,towns_volume_w,0xffff) // R/W -- volume ports
- AM_RANGE(0x04e4,0x04e7) AM_READ8(unksnd_r, 0xffff)
- AM_RANGE(0x04e8,0x04ef) AM_READWRITE8(towns_sound_ctrl_r,towns_sound_ctrl_w,0xffff)
- AM_RANGE(0x04f0,0x04fb) AM_DEVWRITE8("pcm", rf5c68_device, rf5c68_w, 0xffff)
+ map(0x04d8, 0x04df).rw("fm", FUNC(ym3438_device::read), FUNC(ym3438_device::write)).umask16(0x00ff);
+ map(0x04e0, 0x04e3).rw(this, FUNC(towns_state::towns_volume_r), FUNC(towns_state::towns_volume_w)); // R/W -- volume ports
+ map(0x04e4, 0x04e7).r(this, FUNC(towns_state::unksnd_r));
+ map(0x04e8, 0x04ef).rw(this, FUNC(towns_state::towns_sound_ctrl_r), FUNC(towns_state::towns_sound_ctrl_w));
+ map(0x04f0, 0x04fb).w("pcm", FUNC(rf5c68_device::rf5c68_w));
// CRTC / Video
- AM_RANGE(0x05c8,0x05cb) AM_READWRITE8(towns_video_5c8_r, towns_video_5c8_w, 0xffff)
+ map(0x05c8, 0x05cb).rw(this, FUNC(towns_state::towns_video_5c8_r), FUNC(towns_state::towns_video_5c8_w));
// System ports
- AM_RANGE(0x05e8,0x05ef) AM_READWRITE8(towns_sys5e8_r, towns_sys5e8_w, 0x00ff)
+ map(0x05e8, 0x05ef).rw(this, FUNC(towns_state::towns_sys5e8_r), FUNC(towns_state::towns_sys5e8_w)).umask16(0x00ff);
// Keyboard (8042 MCU)
- AM_RANGE(0x0600,0x0607) AM_READWRITE8(towns_keyboard_r, towns_keyboard_w,0x00ff)
+ map(0x0600, 0x0607).rw(this, FUNC(towns_state::towns_keyboard_r), FUNC(towns_state::towns_keyboard_w)).umask16(0x00ff);
// RS-232C interface
- AM_RANGE(0x0a00,0x0a0b) AM_READWRITE8(towns_serial_r, towns_serial_w, 0x00ff)
+ map(0x0a00, 0x0a0b).rw(this, FUNC(towns_state::towns_serial_r), FUNC(towns_state::towns_serial_w)).umask16(0x00ff);
// SCSI controller
- AM_RANGE(0x0c30,0x0c37) AM_DEVREADWRITE8("fmscsi",fmscsi_device,fmscsi_r,fmscsi_w,0x00ff)
+ map(0x0c30, 0x0c37).rw("fmscsi", FUNC(fmscsi_device::fmscsi_r), FUNC(fmscsi_device::fmscsi_w)).umask16(0x00ff);
// CMOS
- AM_RANGE(0x3000,0x4fff) AM_READWRITE8(towns_cmos_r, towns_cmos_w,0x00ff)
+ map(0x3000, 0x4fff).rw(this, FUNC(towns_state::towns_cmos_r), FUNC(towns_state::towns_cmos_w)).umask16(0x00ff);
// Something (MS-DOS wants this 0x41ff to be 1)
//AM_RANGE(0x41fc,0x41ff) AM_READ8(towns_41ff_r,0xff000000)
// CRTC / Video (again)
- AM_RANGE(0xfd90,0xfda3) AM_READWRITE8(towns_video_fd90_r, towns_video_fd90_w, 0xffff)
- AM_RANGE(0xff80,0xffff) AM_READWRITE8(towns_video_cff80_r,towns_video_cff80_w,0xffff)
-ADDRESS_MAP_END
+ map(0xfd90, 0xfda3).rw(this, FUNC(towns_state::towns_video_fd90_r), FUNC(towns_state::towns_video_fd90_w));
+ map(0xff80, 0xffff).rw(this, FUNC(towns_state::towns_video_cff80_r), FUNC(towns_state::towns_video_cff80_w));
+}
/* Input ports */
static INPUT_PORTS_START( towns )
diff --git a/src/mame/drivers/goldstar.cpp b/src/mame/drivers/goldstar.cpp
index d6124e9072a..6356fc567e9 100644
--- a/src/mame/drivers/goldstar.cpp
+++ b/src/mame/drivers/goldstar.cpp
@@ -632,16 +632,17 @@ void cb3_state::ncb3_map(address_map &map)
map(0xf870, 0xf870).w("snsnd", FUNC(sn76489_device::write)); /* guess... device is initialized, but doesn't seems to be used.*/
}
-ADDRESS_MAP_START(goldstar_state::ncb3_readwriteport)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
+void goldstar_state::ncb3_readwriteport(address_map &map)
+{
+ map.global_mask(0xff);
// AM_RANGE(0x00, 0x00) AM_READ(ncb3_unkread_r) // read from 0x00 when controls set 1 is used...
// AM_RANGE(0x02, 0x02) AM_READ(ncb3_unkread_r) // read from 0x02 when controls set 2 is used...
// AM_RANGE(0x06, 0x06) AM_READ(ncb3_unkread_r) // unknown...
// AM_RANGE(0x08, 0x08) AM_READ(ncb3_unkread_r) // unknown...
- AM_RANGE(0x10, 0x10) AM_READ_PORT("DSW5") /* confirmed for ncb3 */
- AM_RANGE(0x81, 0x81) AM_WRITE(ncb3_port81_w) // ---> large writes.
+ map(0x10, 0x10).portr("DSW5"); /* confirmed for ncb3 */
+ map(0x81, 0x81).w(this, FUNC(goldstar_state::ncb3_port81_w)); // ---> large writes.
-ADDRESS_MAP_END
+}
/* ncb3 findings...
@@ -755,26 +756,27 @@ void goldstar_state::cm_map(address_map &map)
}
-ADDRESS_MAP_START(goldstar_state::nfm_map)
- AM_RANGE(0x0000, 0xd7ff) AM_ROM AM_WRITENOP
+void goldstar_state::nfm_map(address_map &map)
+{
+ map(0x0000, 0xd7ff).rom().nopw();
- AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("nvram")
+ map(0xd800, 0xdfff).ram().share("nvram");
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram")
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(goldstar_state::goldstar_fg_vidram_w)).share("fg_vidram");
+ map(0xe800, 0xefff).ram().w(this, FUNC(goldstar_state::goldstar_fg_atrram_w)).share("fg_atrram");
- AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(goldstar_reel1_ram_w ) AM_SHARE("reel1_ram")
- AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(goldstar_reel2_ram_w ) AM_SHARE("reel2_ram")
- AM_RANGE(0xf400, 0xf5ff) AM_RAM_WRITE(goldstar_reel3_ram_w ) AM_SHARE("reel3_ram")
- AM_RANGE(0xf600, 0xf7ff) AM_RAM
+ map(0xf000, 0xf1ff).ram().w(this, FUNC(goldstar_state::goldstar_reel1_ram_w)).share("reel1_ram");
+ map(0xf200, 0xf3ff).ram().w(this, FUNC(goldstar_state::goldstar_reel2_ram_w)).share("reel2_ram");
+ map(0xf400, 0xf5ff).ram().w(this, FUNC(goldstar_state::goldstar_reel3_ram_w)).share("reel3_ram");
+ map(0xf600, 0xf7ff).ram();
- AM_RANGE(0xf800, 0xf87f) AM_RAM AM_SHARE("reel1_scroll")
- AM_RANGE(0xf880, 0xf9ff) AM_RAM
- AM_RANGE(0xfa00, 0xfa7f) AM_RAM AM_SHARE("reel2_scroll")
- AM_RANGE(0xfa80, 0xfbff) AM_RAM
- AM_RANGE(0xfc00, 0xfc7f) AM_RAM AM_SHARE("reel3_scroll")
- AM_RANGE(0xfc80, 0xffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xf800, 0xf87f).ram().share("reel1_scroll");
+ map(0xf880, 0xf9ff).ram();
+ map(0xfa00, 0xfa7f).ram().share("reel2_scroll");
+ map(0xfa80, 0xfbff).ram();
+ map(0xfc00, 0xfc7f).ram().share("reel3_scroll");
+ map(0xfc80, 0xffff).ram();
+}
@@ -879,61 +881,63 @@ void cmaster_state::amcoe2_portmap(address_map &map)
}
-ADDRESS_MAP_START(goldstar_state::lucky8_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram")
- AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram")
- AM_RANGE(0x9800, 0x99ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram")
- AM_RANGE(0xa000, 0xa1ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram")
- AM_RANGE(0xa800, 0xa9ff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram")
- AM_RANGE(0xb040, 0xb07f) AM_RAM AM_SHARE("reel1_scroll")
- AM_RANGE(0xb080, 0xb0bf) AM_RAM AM_SHARE("reel2_scroll")
- AM_RANGE(0xb100, 0xb17f) AM_RAM AM_SHARE("reel3_scroll")
-
- AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */
- AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports */
- AM_RANGE(0xb820, 0xb823) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* Input/Output Ports */
- AM_RANGE(0xb830, 0xb830) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
- AM_RANGE(0xb840, 0xb840) AM_DEVWRITE("aysnd", ay8910_device, address_w) /* no sound... only use both ports for DSWs */
- AM_RANGE(0xb850, 0xb850) AM_WRITE(p1_lamps_w)
- AM_RANGE(0xb860, 0xb860) AM_WRITE(p2_lamps_w)
- AM_RANGE(0xb870, 0xb870) AM_DEVWRITE("snsnd", sn76489_device, write) /* sound */
- AM_RANGE(0xc000, 0xf7ff) AM_ROM // could be used by some sets like super972.
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(goldstar_state::flaming7_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram")
- AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram")
-
- AM_RANGE(0x9800, 0x99ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram")
+void goldstar_state::lucky8_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().share("nvram");
+ map(0x8800, 0x8fff).ram().w(this, FUNC(goldstar_state::goldstar_fg_vidram_w)).share("fg_vidram");
+ map(0x9000, 0x97ff).ram().w(this, FUNC(goldstar_state::goldstar_fg_atrram_w)).share("fg_atrram");
+ map(0x9800, 0x99ff).ram().w(this, FUNC(goldstar_state::goldstar_reel1_ram_w)).share("reel1_ram");
+ map(0xa000, 0xa1ff).ram().w(this, FUNC(goldstar_state::goldstar_reel2_ram_w)).share("reel2_ram");
+ map(0xa800, 0xa9ff).ram().w(this, FUNC(goldstar_state::goldstar_reel3_ram_w)).share("reel3_ram");
+ map(0xb040, 0xb07f).ram().share("reel1_scroll");
+ map(0xb080, 0xb0bf).ram().share("reel2_scroll");
+ map(0xb100, 0xb17f).ram().share("reel3_scroll");
+
+ map(0xb800, 0xb803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0xb810, 0xb813).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0xb820, 0xb823).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input/Output Ports */
+ map(0xb830, 0xb830).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0xb840, 0xb840).w("aysnd", FUNC(ay8910_device::address_w)); /* no sound... only use both ports for DSWs */
+ map(0xb850, 0xb850).w(this, FUNC(goldstar_state::p1_lamps_w));
+ map(0xb860, 0xb860).w(this, FUNC(goldstar_state::p2_lamps_w));
+ map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::write)); /* sound */
+ map(0xc000, 0xf7ff).rom(); // could be used by some sets like super972.
+ map(0xf800, 0xffff).ram();
+}
+
+void goldstar_state::flaming7_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().share("nvram");
+ map(0x8800, 0x8fff).ram().w(this, FUNC(goldstar_state::goldstar_fg_vidram_w)).share("fg_vidram");
+ map(0x9000, 0x97ff).ram().w(this, FUNC(goldstar_state::goldstar_fg_atrram_w)).share("fg_atrram");
+
+ map(0x9800, 0x99ff).ram().w(this, FUNC(goldstar_state::goldstar_reel1_ram_w)).share("reel1_ram");
// AM_RANGE(0x9a00, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xa1ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram")
+ map(0xa000, 0xa1ff).ram().w(this, FUNC(goldstar_state::goldstar_reel2_ram_w)).share("reel2_ram");
// AM_RANGE(0xa200, 0xa7ff) AM_RAM
- AM_RANGE(0xa800, 0xa9ff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram")
+ map(0xa800, 0xa9ff).ram().w(this, FUNC(goldstar_state::goldstar_reel3_ram_w)).share("reel3_ram");
// AM_RANGE(0xaa00, 0xafff) AM_RAM
// AM_RANGE(0xb000, 0xb03f) AM_RAM
- AM_RANGE(0xb040, 0xb07f) AM_RAM AM_SHARE("reel1_scroll")
- AM_RANGE(0xb080, 0xb0bf) AM_RAM AM_SHARE("reel2_scroll")
+ map(0xb040, 0xb07f).ram().share("reel1_scroll");
+ map(0xb080, 0xb0bf).ram().share("reel2_scroll");
// AM_RANGE(0xb0c0, 0xb0ff) AM_RAM
- AM_RANGE(0xb100, 0xb17f) AM_RAM AM_SHARE("reel3_scroll")
- AM_RANGE(0xb180, 0xb7ff) AM_RAM
-
- AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports (92) */
- AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports (9B) */
- AM_RANGE(0xb820, 0xb823) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* Input/Output Ports (90) */
- AM_RANGE(0xb830, 0xb830) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
- AM_RANGE(0xb840, 0xb840) AM_DEVWRITE("aysnd", ay8910_device, address_w) /* no sound... only use both ports for DSWs */
- AM_RANGE(0xb850, 0xb850) AM_WRITE(p1_lamps_w)
- AM_RANGE(0xb860, 0xb860) AM_WRITE(p2_lamps_w)
- AM_RANGE(0xb870, 0xb870) AM_DEVWRITE("snsnd", sn76489_device, write) /* sound */
+ map(0xb100, 0xb17f).ram().share("reel3_scroll");
+ map(0xb180, 0xb7ff).ram();
+
+ map(0xb800, 0xb803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports (92) */
+ map(0xb810, 0xb813).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports (9B) */
+ map(0xb820, 0xb823).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input/Output Ports (90) */
+ map(0xb830, 0xb830).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0xb840, 0xb840).w("aysnd", FUNC(ay8910_device::address_w)); /* no sound... only use both ports for DSWs */
+ map(0xb850, 0xb850).w(this, FUNC(goldstar_state::p1_lamps_w));
+ map(0xb860, 0xb860).w(this, FUNC(goldstar_state::p2_lamps_w));
+ map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::write)); /* sound */
// AM_RANGE(0xc000, 0xd3ff) AM_RAM
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xf800, 0xffff).ram();
+}
/*
W 9A00-B7FF FF
RW B000-B7FF 00
@@ -962,29 +966,30 @@ ADDRESS_MAP_END
AY8910 ports are OK.
*/
-ADDRESS_MAP_START(goldstar_state::mbstar_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram")
- AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram")
- AM_RANGE(0x9800, 0x99ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram")
- AM_RANGE(0xa000, 0xa1ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram")
- AM_RANGE(0xa800, 0xa9ff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram")
- AM_RANGE(0xb040, 0xb07f) AM_RAM AM_SHARE("reel1_scroll")
- AM_RANGE(0xb080, 0xb0bf) AM_RAM AM_SHARE("reel2_scroll")
- AM_RANGE(0xb100, 0xb17f) AM_RAM AM_SHARE("reel3_scroll")
-
- AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */
- AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports */
- AM_RANGE(0xb820, 0xb823) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* Input/Output Ports */
- AM_RANGE(0xb830, 0xb830) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
- AM_RANGE(0xb840, 0xb840) AM_DEVWRITE("aysnd", ay8910_device, address_w) /* no sound... only use both ports for DSWs */
- AM_RANGE(0xb850, 0xb850) AM_WRITE(p1_lamps_w)
- AM_RANGE(0xb860, 0xb860) AM_WRITE(p2_lamps_w)
- AM_RANGE(0xb870, 0xb870) AM_DEVWRITE("snsnd", sn76489_device, write) /* sound */
- AM_RANGE(0xc000, 0xf7ff) AM_ROM
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void goldstar_state::mbstar_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().share("nvram");
+ map(0x8800, 0x8fff).ram().w(this, FUNC(goldstar_state::goldstar_fg_vidram_w)).share("fg_vidram");
+ map(0x9000, 0x97ff).ram().w(this, FUNC(goldstar_state::goldstar_fg_atrram_w)).share("fg_atrram");
+ map(0x9800, 0x99ff).ram().w(this, FUNC(goldstar_state::goldstar_reel1_ram_w)).share("reel1_ram");
+ map(0xa000, 0xa1ff).ram().w(this, FUNC(goldstar_state::goldstar_reel2_ram_w)).share("reel2_ram");
+ map(0xa800, 0xa9ff).ram().w(this, FUNC(goldstar_state::goldstar_reel3_ram_w)).share("reel3_ram");
+ map(0xb040, 0xb07f).ram().share("reel1_scroll");
+ map(0xb080, 0xb0bf).ram().share("reel2_scroll");
+ map(0xb100, 0xb17f).ram().share("reel3_scroll");
+
+ map(0xb800, 0xb803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0xb810, 0xb813).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0xb820, 0xb823).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input/Output Ports */
+ map(0xb830, 0xb830).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0xb840, 0xb840).w("aysnd", FUNC(ay8910_device::address_w)); /* no sound... only use both ports for DSWs */
+ map(0xb850, 0xb850).w(this, FUNC(goldstar_state::p1_lamps_w));
+ map(0xb860, 0xb860).w(this, FUNC(goldstar_state::p2_lamps_w));
+ map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::write)); /* sound */
+ map(0xc000, 0xf7ff).rom();
+ map(0xf800, 0xffff).ram();
+}
WRITE8_MEMBER(wingco_state::magodds_outb850_w)
@@ -1100,29 +1105,30 @@ void goldstar_state::ladylinr_map(address_map &map)
map(0xf800, 0xffff).ram();
}
-ADDRESS_MAP_START(goldstar_state::wcat3_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram")
- AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram")
- AM_RANGE(0x9800, 0x99ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram")
- AM_RANGE(0xa000, 0xa1ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram")
- AM_RANGE(0xa800, 0xa9ff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram")
- AM_RANGE(0xb040, 0xb07f) AM_RAM AM_SHARE("reel1_scroll")
- AM_RANGE(0xb080, 0xb0bf) AM_RAM AM_SHARE("reel2_scroll")
- AM_RANGE(0xb100, 0xb17f) AM_RAM AM_SHARE("reel3_scroll")
-
- AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */
- AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports */
- AM_RANGE(0xb820, 0xb823) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* Input/Output Ports */
- AM_RANGE(0xb830, 0xb830) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
- AM_RANGE(0xb840, 0xb840) AM_DEVWRITE("aysnd", ay8910_device, address_w) /* no sound... only use both ports for DSWs */
- AM_RANGE(0xb850, 0xb850) AM_WRITE(p1_lamps_w)
- AM_RANGE(0xb870, 0xb870) AM_DEVWRITE("snsnd", sn76489_device, write) /* sound */
+void goldstar_state::wcat3_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().share("nvram");
+ map(0x8800, 0x8fff).ram().w(this, FUNC(goldstar_state::goldstar_fg_vidram_w)).share("fg_vidram");
+ map(0x9000, 0x97ff).ram().w(this, FUNC(goldstar_state::goldstar_fg_atrram_w)).share("fg_atrram");
+ map(0x9800, 0x99ff).ram().w(this, FUNC(goldstar_state::goldstar_reel1_ram_w)).share("reel1_ram");
+ map(0xa000, 0xa1ff).ram().w(this, FUNC(goldstar_state::goldstar_reel2_ram_w)).share("reel2_ram");
+ map(0xa800, 0xa9ff).ram().w(this, FUNC(goldstar_state::goldstar_reel3_ram_w)).share("reel3_ram");
+ map(0xb040, 0xb07f).ram().share("reel1_scroll");
+ map(0xb080, 0xb0bf).ram().share("reel2_scroll");
+ map(0xb100, 0xb17f).ram().share("reel3_scroll");
+
+ map(0xb800, 0xb803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0xb810, 0xb813).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
+ map(0xb820, 0xb823).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input/Output Ports */
+ map(0xb830, 0xb830).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0xb840, 0xb840).w("aysnd", FUNC(ay8910_device::address_w)); /* no sound... only use both ports for DSWs */
+ map(0xb850, 0xb850).w(this, FUNC(goldstar_state::p1_lamps_w));
+ map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::write)); /* sound */
// AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE("ppi8255_3", i8255_device, read, write) /* Other PPI initialized? */
- AM_RANGE(0xd000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xd000, 0xefff).rom();
+ map(0xf000, 0xffff).ram();
+}
/* newer / more capable hw */
@@ -1265,16 +1271,17 @@ void unkch_state::megaline_map(address_map &map)
AY8910?: 60 - 80
*/
-ADDRESS_MAP_START(goldstar_state::megaline_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xa0, 0xa0) AM_DEVWRITE("sn1", sn76489_device, write) /* SN76489 #1 */
- AM_RANGE(0xc0, 0xc0) AM_DEVWRITE("sn2", sn76489_device, write) /* SN76489 #2 */
- AM_RANGE(0xe0, 0xe0) AM_DEVWRITE("sn3", sn76489_device, write) /* SN76489 #3 */
- AM_RANGE(0x60, 0x60) AM_DEVWRITE("aysnd", ay8910_device, address_w) /* AY8910 control? */
- AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) /* AY8910 Input? */
+void goldstar_state::megaline_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xa0, 0xa0).w("sn1", FUNC(sn76489_device::write)); /* SN76489 #1 */
+ map(0xc0, 0xc0).w("sn2", FUNC(sn76489_device::write)); /* SN76489 #2 */
+ map(0xe0, 0xe0).w("sn3", FUNC(sn76489_device::write)); /* SN76489 #3 */
+ map(0x60, 0x60).w("aysnd", FUNC(ay8910_device::address_w)); /* AY8910 control? */
+ map(0x80, 0x80).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); /* AY8910 Input? */
// AM_RANGE(0x01, 0x01) AM_DEVREAD("aysnd", ay8910_device, data_r)
// AM_RANGE(0x02, 0x03) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
-ADDRESS_MAP_END
+}
void unkch_state::bonusch_map(address_map &map)
@@ -1319,16 +1326,17 @@ void unkch_state::bonusch_map(address_map &map)
60h = R
*/
-ADDRESS_MAP_START(goldstar_state::bonusch_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x10, 0x10) AM_READ_PORT("IN0")
- AM_RANGE(0x20, 0x20) AM_READ_PORT("IN1")
- AM_RANGE(0x50, 0x50) AM_DEVWRITE("sn1", sn76489_device, write) /* SN76489 #1 */
- AM_RANGE(0x51, 0x51) AM_DEVWRITE("sn2", sn76489_device, write) /* SN76489 #2 */
- AM_RANGE(0x52, 0x52) AM_DEVWRITE("sn3", sn76489_device, write) /* SN76489 #3 */
- AM_RANGE(0x53, 0x53) AM_DEVWRITE("sn4", sn76489_device, write) /* SN76489 #4 */
- AM_RANGE(0x60, 0x60) AM_READ_PORT("IN3")
-ADDRESS_MAP_END
+void goldstar_state::bonusch_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x10, 0x10).portr("IN0");
+ map(0x20, 0x20).portr("IN1");
+ map(0x50, 0x50).w("sn1", FUNC(sn76489_device::write)); /* SN76489 #1 */
+ map(0x51, 0x51).w("sn2", FUNC(sn76489_device::write)); /* SN76489 #2 */
+ map(0x52, 0x52).w("sn3", FUNC(sn76489_device::write)); /* SN76489 #3 */
+ map(0x53, 0x53).w("sn4", FUNC(sn76489_device::write)); /* SN76489 #4 */
+ map(0x60, 0x60).portr("IN3");
+}
static INPUT_PORTS_START( cmv4_player )
diff --git a/src/mame/drivers/intellec4.cpp b/src/mame/drivers/intellec4.cpp
index 47d6b441f50..a5bb14e76cb 100644
--- a/src/mame/drivers/intellec4.cpp
+++ b/src/mame/drivers/intellec4.cpp
@@ -765,35 +765,41 @@ void intellec4_state::intellec4_rom_port_banks(address_map &map)
CPU views of address spaces
---------------------------------*/
-ADDRESS_MAP_START(intellec4_state::intellec4_rom)
- ADDRESS_MAP_UNMAP_LOW
- AM_RANGE(0x0000, 0x0fff) AM_DEVICE("prgbank", address_map_bank_device, amap8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(intellec4_state::intellec4_ram_memory)
- ADDRESS_MAP_UNMAP_LOW
- AM_RANGE(0x0000, 0x00ff) AM_RAM AM_SHARE("memory") // 4 * 4002
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(intellec4_state::intellec4_rom_ports)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x07ff) AM_DEVICE("rpbank", address_map_bank_device, amap8)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(intellec4_state::intellec4_ram_status)
- ADDRESS_MAP_UNMAP_LOW
- AM_RANGE(0x0000, 0x003f) AM_RAM AM_SHARE("status") // 4 * 4002
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(intellec4_state::intellec4_ram_ports)
- AM_RANGE(0x00, 0x00) AM_WRITE(ram0_out)
- AM_RANGE(0x01, 0x01) AM_WRITE(ram1_out)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(intellec4_state::intellec4_program_memory)
- ADDRESS_MAP_UNMAP_LOW
- AM_RANGE(0x0000, 0x01ff) AM_READWRITE(pm_read, pm_write)
-ADDRESS_MAP_END
+void intellec4_state::intellec4_rom(address_map &map)
+{
+ map.unmap_value_low();
+ map(0x0000, 0x0fff).m(m_program_banks, FUNC(address_map_bank_device::amap8));
+}
+
+void intellec4_state::intellec4_ram_memory(address_map &map)
+{
+ map.unmap_value_low();
+ map(0x0000, 0x00ff).ram().share("memory"); // 4 * 4002
+}
+
+void intellec4_state::intellec4_rom_ports(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x07ff).m("rpbank", FUNC(address_map_bank_device::amap8));
+}
+
+void intellec4_state::intellec4_ram_status(address_map &map)
+{
+ map.unmap_value_low();
+ map(0x0000, 0x003f).ram().share("status"); // 4 * 4002
+}
+
+void intellec4_state::intellec4_ram_ports(address_map &map)
+{
+ map(0x00, 0x00).w(this, FUNC(intellec4_state::ram0_out));
+ map(0x01, 0x01).w(this, FUNC(intellec4_state::ram1_out));
+}
+
+void intellec4_state::intellec4_program_memory(address_map &map)
+{
+ map.unmap_value_low();
+ map(0x0000, 0x01ff).rw(this, FUNC(intellec4_state::pm_read), FUNC(intellec4_state::pm_write));
+}
/*----------------------------------
diff --git a/src/mame/drivers/ngen.cpp b/src/mame/drivers/ngen.cpp
index e07a7f27967..766e49e98c8 100644
--- a/src/mame/drivers/ngen.cpp
+++ b/src/mame/drivers/ngen.cpp
@@ -884,31 +884,34 @@ void ngen_state::ngen_io(address_map &map)
}
-ADDRESS_MAP_START(ngen_state::ngen386_mem)
- AM_RANGE(0x00000000, 0x000f7fff) AM_RAM
- AM_RANGE(0x000f8000, 0x000f9fff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x000fa000, 0x000fbfff) AM_RAM AM_SHARE("fontram")
- AM_RANGE(0x000fc000, 0x000fcfff) AM_RAM
- AM_RANGE(0x000fe000, 0x000fffff) AM_ROM AM_REGION("bios",0)
- AM_RANGE(0x00100000, 0x00ffffff) AM_RAM // some extra RAM
- AM_RANGE(0xffffe000, 0xffffffff) AM_ROM AM_REGION("bios",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ngen_state::ngen386i_mem)
- AM_RANGE(0x00000000, 0x000f7fff) AM_RAM
- AM_RANGE(0x000f8000, 0x000f9fff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x000fa000, 0x000fbfff) AM_RAM AM_SHARE("fontram")
- AM_RANGE(0x000fc000, 0x000fffff) AM_ROM AM_REGION("bios",0)
- AM_RANGE(0x00100000, 0x00ffffff) AM_RAM // some extra RAM
- AM_RANGE(0xffffc000, 0xffffffff) AM_ROM AM_REGION("bios",0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(ngen_state::ngen386_io)
- AM_RANGE(0x0000, 0x0003) AM_READWRITE16(xbus_r, xbus_w, 0x0000ffff)
+void ngen_state::ngen386_mem(address_map &map)
+{
+ map(0x00000000, 0x000f7fff).ram();
+ map(0x000f8000, 0x000f9fff).ram().share("vram");
+ map(0x000fa000, 0x000fbfff).ram().share("fontram");
+ map(0x000fc000, 0x000fcfff).ram();
+ map(0x000fe000, 0x000fffff).rom().region("bios", 0);
+ map(0x00100000, 0x00ffffff).ram(); // some extra RAM
+ map(0xffffe000, 0xffffffff).rom().region("bios", 0);
+}
+
+void ngen_state::ngen386i_mem(address_map &map)
+{
+ map(0x00000000, 0x000f7fff).ram();
+ map(0x000f8000, 0x000f9fff).ram().share("vram");
+ map(0x000fa000, 0x000fbfff).ram().share("fontram");
+ map(0x000fc000, 0x000fffff).rom().region("bios", 0);
+ map(0x00100000, 0x00ffffff).ram(); // some extra RAM
+ map(0xffffc000, 0xffffffff).rom().region("bios", 0);
+}
+
+void ngen_state::ngen386_io(address_map &map)
+{
+ map(0x0000, 0x0001).rw(this, FUNC(ngen_state::xbus_r), FUNC(ngen_state::xbus_w));
// AM_RANGE(0xf800, 0xfeff) AM_READWRITE16(peripheral_r, peripheral_w,0xffffffff)
- AM_RANGE(0xfd08, 0xfd0b) AM_READWRITE16(b38_crtc_r, b38_crtc_w,0xffffffff)
- AM_RANGE(0xfd0c, 0xfd0f) AM_READWRITE16(b38_keyboard_r, b38_keyboard_w,0xffffffff)
-ADDRESS_MAP_END
+ map(0xfd08, 0xfd0b).rw(this, FUNC(ngen_state::b38_crtc_r), FUNC(ngen_state::b38_crtc_w));
+ map(0xfd0c, 0xfd0f).rw(this, FUNC(ngen_state::b38_keyboard_r), FUNC(ngen_state::b38_keyboard_w));
+}
static INPUT_PORTS_START( ngen )
INPUT_PORTS_END
diff --git a/src/mame/drivers/norautp.cpp b/src/mame/drivers/norautp.cpp
index c2ad642bbb5..bbbaca9eb41 100644
--- a/src/mame/drivers/norautp.cpp
+++ b/src/mame/drivers/norautp.cpp
@@ -884,10 +884,11 @@ void norautp_state::norautx4_map(address_map &map)
}
#ifdef UNUSED_CODE
-ADDRESS_MAP_START(norautp_state::norautx8_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM /* need to be checked */
- AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("nvram") /* 6116 */
-ADDRESS_MAP_END
+void norautp_state::norautx8_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom(); /* need to be checked */
+ map(0xc000, 0xc7ff).ram().share("nvram"); /* 6116 */
+}
#endif
void norautp_state::kimble_map(address_map &map)
@@ -898,9 +899,10 @@ void norautp_state::kimble_map(address_map &map)
}
#ifdef UNUSED_CODE
-ADDRESS_MAP_START(norautp_state::norautxp_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+void norautp_state::norautxp_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+}
#endif
void norautp_state::newhilop_map(address_map &map)
diff --git a/src/mame/drivers/notetaker.cpp b/src/mame/drivers/notetaker.cpp
index 5c6fd9d0bcd..2e9fe92a731 100644
--- a/src/mame/drivers/notetaker.cpp
+++ b/src/mame/drivers/notetaker.cpp
@@ -538,7 +538,8 @@ BootSeqDone is 1, DisableROM is 0, mem map is 0x00000-0x00fff reading is t
BootSeqDone is 1, DisableROM is 1, mem map is entirely RAM or open bus for both reading and writing.
*/
-ADDRESS_MAP_START(notetaker_state::iop_mem)
+void notetaker_state::iop_mem(address_map &map)
+{
/*
AM_RANGE(0x00000, 0x00fff) AM_ROM AM_REGION("iop", 0xff000) // rom is here if either BootSeqDone OR DisableROM are zero. the 1.5 source code and the schematics implies writes here are ignored while rom is enabled; if disablerom is 1 this goes to mainram
AM_RANGE(0x01000, 0x3ffff) AM_RAM AM_REGION("mainram", 0) // 256k of ram (less 8k), shared between both processors. rom goes here if bootseqdone is 0
@@ -549,8 +550,8 @@ ADDRESS_MAP_START(notetaker_state::iop_mem)
//AM_RANGE(0xfffee, 0xfffef) AM_READ(parityErrLo_r);
AM_RANGE(0xffff0, 0xfffff) AM_ROM AM_REGION("iop", 0xffff0)
*/
- AM_RANGE(0x00000, 0xfffff) AM_READWRITE(iop_r, iop_w) // bypass MAME's memory map system as we need finer grained control
-ADDRESS_MAP_END
+ map(0x00000, 0xfffff).rw(this, FUNC(notetaker_state::iop_r), FUNC(notetaker_state::iop_w)); // bypass MAME's memory map system as we need finer grained control
+}
/* iop memory map comes from http://bitsavers.informatik.uni-stuttgart.de/pdf/xerox/notetaker/memos/19790605_Definition_of_8086_Ports.pdf
and from the schematic at http://bitsavers.informatik.uni-stuttgart.de/pdf/xerox/notetaker/schematics/19790423_Notetaker_IO_Processor.pdf
@@ -586,32 +587,33 @@ x x x x 0 x x x x x x 1 1 0 1 x 1 1 1
x x x x 0 x x x x x x 1 1 1 0 x x x x . R SelADCHi
x x x x 0 x x x x x x 1 1 1 1 x x x x . W CRTSwitch
*/
-ADDRESS_MAP_START(notetaker_state::iop_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00, 0x03) AM_MIRROR(0x7e1c) AM_DEVREADWRITE8("iop_pic8259", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x20, 0x21) AM_MIRROR(0x7e1e) AM_WRITE(IPConReg_w) // I/O processor (rom mapping, etc) control register
- AM_RANGE(0x42, 0x43) AM_MIRROR(0x7e10) AM_DEVREAD8("kbduart", ay31015_device, receive, 0x00ff) // read keyboard data
- AM_RANGE(0x44, 0x45) AM_MIRROR(0x7e10) AM_READ(ReadOPStatus_r) // read keyboard fifo state
- AM_RANGE(0x48, 0x49) AM_MIRROR(0x7e10) AM_WRITE(LoadKeyCtlReg_w) // kbd uart control register
- AM_RANGE(0x4a, 0x4b) AM_MIRROR(0x7e10) AM_DEVWRITE8("kbduart", ay31015_device, transmit, 0x00ff) // kbd uart data register
- AM_RANGE(0x4c, 0x4d) AM_MIRROR(0x7e10) AM_WRITE(KeyDataReset_w) // kbd uart ddr switch (data reset)
- AM_RANGE(0x4e, 0x4f) AM_MIRROR(0x7e10) AM_WRITE(KeyChipReset_w) // kbd uart reset
- AM_RANGE(0x60, 0x61) AM_MIRROR(0x7e1e) AM_WRITE(FIFOReg_w) // DAC sample and hold and frequency setup
+void notetaker_state::iop_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00, 0x03).mirror(0x7e1c).rw(m_iop_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x20, 0x21).mirror(0x7e1e).w(this, FUNC(notetaker_state::IPConReg_w)); // I/O processor (rom mapping, etc) control register
+ map(0x42, 0x42).mirror(0x7e10).r(m_kbduart, FUNC(ay31015_device::receive)); // read keyboard data
+ map(0x44, 0x45).mirror(0x7e10).r(this, FUNC(notetaker_state::ReadOPStatus_r)); // read keyboard fifo state
+ map(0x48, 0x49).mirror(0x7e10).w(this, FUNC(notetaker_state::LoadKeyCtlReg_w)); // kbd uart control register
+ map(0x4a, 0x4a).mirror(0x7e10).w(m_kbduart, FUNC(ay31015_device::transmit)); // kbd uart data register
+ map(0x4c, 0x4d).mirror(0x7e10).w(this, FUNC(notetaker_state::KeyDataReset_w)); // kbd uart ddr switch (data reset)
+ map(0x4e, 0x4f).mirror(0x7e10).w(this, FUNC(notetaker_state::KeyChipReset_w)); // kbd uart reset
+ map(0x60, 0x61).mirror(0x7e1e).w(this, FUNC(notetaker_state::FIFOReg_w)); // DAC sample and hold and frequency setup
//AM_RANGE(0xa0, 0xa1) AM_MIRROR(0x7e18) AM_DEVREADWRITE("debug8255", 8255_device, read, write) // debugger board 8255
- AM_RANGE(0xc0, 0xc1) AM_MIRROR(0x7e1e) AM_WRITE(FIFOBus_w) // DAC data write to FIFO
- AM_RANGE(0x100, 0x101) AM_MIRROR(0x7e1e) AM_WRITE(DiskReg_w) // I/O register (adc speed, crtc pixel clock and clock enable, +5 and +12v relays for floppy, etc)
- AM_RANGE(0x120, 0x127) AM_MIRROR(0x7e18) AM_DEVREADWRITE8("wd1791", fd1791_device, read, write, 0x00FF) // floppy controller
- AM_RANGE(0x140, 0x15f) AM_MIRROR(0x7e00) AM_DEVREADWRITE8("crt5027", crt5027_device, read, write, 0x00FF) // crt controller
- AM_RANGE(0x160, 0x161) AM_MIRROR(0x7e1e) AM_WRITE(LoadDispAddr_w) // loads the start address for the display framebuffer
- AM_RANGE(0x1a0, 0x1a1) AM_MIRROR(0x7e10) AM_READ(ReadEIAStatus_r) // read eia fifo state
- AM_RANGE(0x1a2, 0x1a3) AM_MIRROR(0x7e10) AM_DEVREAD8("eiauart", ay31015_device, receive, 0x00ff) // read eia data
- AM_RANGE(0x1a8, 0x1a9) AM_MIRROR(0x7e10) AM_WRITE(LoadEIACtlReg_w) // eia uart control register
- AM_RANGE(0x1aa, 0x1ab) AM_MIRROR(0x7e10) AM_DEVWRITE8("eiauart", ay31015_device, transmit, 0x00ff) // eia uart data register
- AM_RANGE(0x1ac, 0x1ad) AM_MIRROR(0x7e10) AM_WRITE(EIADataReset_w) // eia uart ddr switch (data reset)
- AM_RANGE(0x1ae, 0x1af) AM_MIRROR(0x7e10) AM_WRITE(EIAChipReset_w) // eia uart reset
+ map(0xc0, 0xc1).mirror(0x7e1e).w(this, FUNC(notetaker_state::FIFOBus_w)); // DAC data write to FIFO
+ map(0x100, 0x101).mirror(0x7e1e).w(this, FUNC(notetaker_state::DiskReg_w)); // I/O register (adc speed, crtc pixel clock and clock enable, +5 and +12v relays for floppy, etc)
+ map(0x120, 0x127).mirror(0x7e18).rw(m_fdc, FUNC(fd1791_device::read), FUNC(fd1791_device::write)).umask16(0x00ff); // floppy controller
+ map(0x140, 0x15f).mirror(0x7e00).rw(m_crtc, FUNC(crt5027_device::read), FUNC(crt5027_device::write)).umask16(0x00ff); // crt controller
+ map(0x160, 0x161).mirror(0x7e1e).w(this, FUNC(notetaker_state::LoadDispAddr_w)); // loads the start address for the display framebuffer
+ map(0x1a0, 0x1a1).mirror(0x7e10).r(this, FUNC(notetaker_state::ReadEIAStatus_r)); // read eia fifo state
+ map(0x1a2, 0x1a2).mirror(0x7e10).r(m_eiauart, FUNC(ay31015_device::receive)); // read eia data
+ map(0x1a8, 0x1a9).mirror(0x7e10).w(this, FUNC(notetaker_state::LoadEIACtlReg_w)); // eia uart control register
+ map(0x1aa, 0x1aa).mirror(0x7e10).w(m_eiauart, FUNC(ay31015_device::transmit)); // eia uart data register
+ map(0x1ac, 0x1ad).mirror(0x7e10).w(this, FUNC(notetaker_state::EIADataReset_w)); // eia uart ddr switch (data reset)
+ map(0x1ae, 0x1af).mirror(0x7e10).w(this, FUNC(notetaker_state::EIAChipReset_w)); // eia uart reset
//AM_RANGE(0x1c0, 0x1c1) AM_MIRROR(0x7e1e) AM_READ(SelADCHi_r) // ADC read
//AM_RANGE(0x1e0, 0x1e1) AM_MIRROR(0x7e1e) AM_READ(CRTSwitch_w) // CRT power enable?
-ADDRESS_MAP_END
+}
/* iop_pic8259 interrupts:
irq0 parity error (parity error syndrome data will be in fffdx/fffex) - currently ignored
@@ -697,12 +699,13 @@ x x 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0
x x 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 x x R FFFEE (Parity Error Address: row bits 15-8, column bits 7-0; reading this also acknowledges a parity interrupt)
*/
-ADDRESS_MAP_START(notetaker_state::ep_mem)
- AM_RANGE(0x00000, 0x01fff) AM_MIRROR(0xc0000) AM_RAM // actually a banked block of ram, 8kb (4kw)
- AM_RANGE(0x02000, 0x3ffff) AM_MIRROR(0xc0000) AM_RAM AM_REGION("mainram", 0x2000) // 256k of ram (less 8k), shared between both processors, mirrored 4 times
+void notetaker_state::ep_mem(address_map &map)
+{
+ map(0x00000, 0x01fff).mirror(0xc0000).ram(); // actually a banked block of ram, 8kb (4kw)
+ map(0x02000, 0x3ffff).mirror(0xc0000).ram().region("mainram", 0x2000); // 256k of ram (less 8k), shared between both processors, mirrored 4 times
//AM_RANGE(0xfffc0, 0xfffdf) AM_MIRROR(0xc0000) AM_READWRITE(proc_illinst_r, proc_illinst_w)
//AM_RANGE(0xfffe0, 0xfffef) AM_MIRROR(0xc0000) AM_READWRITE(proc_control_r, proc_control_w)
-ADDRESS_MAP_END
+}
/* note everything in the emulatorcpu's io range is incompletely decoded; so if
0x1800 is accessed it will write to both the debug 8255 AND the pic8259!
@@ -717,13 +720,14 @@ x x x x x x 1 x x x x x x x x x x x x
x x x x x 1 x x x x x x x x x x x x x x x W Writing anything here clears the parity error latch
*/
-ADDRESS_MAP_START(notetaker_state::ep_io)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x800, 0x803) AM_MIRROR(0x07fc) AM_DEVREADWRITE8("ep_pic8259", pic8259_device, read, write, 0x00ff)
+void notetaker_state::ep_io(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x800, 0x803).mirror(0x07fc).rw(m_ep_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
//AM_RANGE(0x1000, 0x1001) AM_MIRROR(0x07fe) AM_DEVREADWRITE("debug8255", 8255_device, read, write) // debugger board 8255, is this the same one as the iop accesses? or are these two 8255s on separate cards?
- AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x07fe) AM_WRITE(EPConReg_w) // emu processor control reg & leds
+ map(0x2000, 0x2001).mirror(0x07fe).w(this, FUNC(notetaker_state::EPConReg_w)); // emu processor control reg & leds
//AM_RANGE(0x4000, 0x4001) AM_MIRROR(0x07fe) AM_WRITE(EmuClearParity_w) // writes here clear the local 8k-ram parity error register
-ADDRESS_MAP_END
+}
/* Input ports */
diff --git a/src/mame/drivers/pc8401a.cpp b/src/mame/drivers/pc8401a.cpp
index 00ac3813e60..af4db125222 100644
--- a/src/mame/drivers/pc8401a.cpp
+++ b/src/mame/drivers/pc8401a.cpp
@@ -346,42 +346,43 @@ void pc8401a_state::pc8401a_io(address_map &map)
map.global_mask(0xff);
}
-ADDRESS_MAP_START(pc8401a_state::pc8500_io)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("Y.0")
- AM_RANGE(0x01, 0x01) AM_READ_PORT("Y.1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("Y.2")
- AM_RANGE(0x03, 0x03) AM_READ_PORT("Y.3")
- AM_RANGE(0x04, 0x04) AM_READ_PORT("Y.4")
- AM_RANGE(0x05, 0x05) AM_READ_PORT("Y.5")
- AM_RANGE(0x06, 0x06) AM_READ_PORT("Y.6")
- AM_RANGE(0x07, 0x07) AM_READ_PORT("Y.7")
- AM_RANGE(0x08, 0x08) AM_READ_PORT("Y.8")
- AM_RANGE(0x09, 0x09) AM_READ_PORT("Y.9")
- AM_RANGE(0x10, 0x10) AM_WRITE(rtc_cmd_w)
- AM_RANGE(0x20, 0x20) AM_DEVREADWRITE(I8251_TAG, i8251_device, data_r, data_w)
- AM_RANGE(0x21, 0x21) AM_DEVREADWRITE(I8251_TAG, i8251_device, status_r, control_w)
- AM_RANGE(0x30, 0x30) AM_READWRITE(mmr_r, mmr_w)
+void pc8401a_state::pc8500_io(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("Y.0");
+ map(0x01, 0x01).portr("Y.1");
+ map(0x02, 0x02).portr("Y.2");
+ map(0x03, 0x03).portr("Y.3");
+ map(0x04, 0x04).portr("Y.4");
+ map(0x05, 0x05).portr("Y.5");
+ map(0x06, 0x06).portr("Y.6");
+ map(0x07, 0x07).portr("Y.7");
+ map(0x08, 0x08).portr("Y.8");
+ map(0x09, 0x09).portr("Y.9");
+ map(0x10, 0x10).w(this, FUNC(pc8401a_state::rtc_cmd_w));
+ map(0x20, 0x20).rw(I8251_TAG, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x21, 0x21).rw(I8251_TAG, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+ map(0x30, 0x30).rw(this, FUNC(pc8401a_state::mmr_r), FUNC(pc8401a_state::mmr_w));
// AM_RANGE(0x31, 0x31)
- AM_RANGE(0x40, 0x40) AM_READWRITE(rtc_r, rtc_ctrl_w)
+ map(0x40, 0x40).rw(this, FUNC(pc8401a_state::rtc_r), FUNC(pc8401a_state::rtc_ctrl_w));
// AM_RANGE(0x41, 0x41)
// AM_RANGE(0x50, 0x51)
- AM_RANGE(0x60, 0x60) AM_DEVREADWRITE(SED1330_TAG, sed1330_device, status_r, data_w)
- AM_RANGE(0x61, 0x61) AM_DEVREADWRITE(SED1330_TAG, sed1330_device, data_r, command_w)
- AM_RANGE(0x70, 0x70) AM_READWRITE(port70_r, port70_w)
- AM_RANGE(0x71, 0x71) AM_READWRITE(port71_r, port71_w)
+ map(0x60, 0x60).rw(m_lcdc, FUNC(sed1330_device::status_r), FUNC(sed1330_device::data_w));
+ map(0x61, 0x61).rw(m_lcdc, FUNC(sed1330_device::data_r), FUNC(sed1330_device::command_w));
+ map(0x70, 0x70).rw(this, FUNC(pc8401a_state::port70_r), FUNC(pc8401a_state::port70_w));
+ map(0x71, 0x71).rw(this, FUNC(pc8401a_state::port71_r), FUNC(pc8401a_state::port71_w));
// AM_RANGE(0x80, 0x80) modem status, set to 0xff to boot
// AM_RANGE(0x8b, 0x8b)
// AM_RANGE(0x90, 0x93)
// AM_RANGE(0xa0, 0xa1)
- AM_RANGE(0x98, 0x98) AM_DEVWRITE(MC6845_TAG, mc6845_device, address_w)
- AM_RANGE(0x99, 0x99) AM_DEVREADWRITE(MC6845_TAG, mc6845_device, register_r, register_w)
- AM_RANGE(0xb0, 0xb3) AM_WRITE(io_rom_addr_w)
- AM_RANGE(0xb3, 0xb3) AM_READ(io_rom_data_r)
+ map(0x98, 0x98).w(m_crtc, FUNC(mc6845_device::address_w));
+ map(0x99, 0x99).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0xb0, 0xb3).w(this, FUNC(pc8401a_state::io_rom_addr_w));
+ map(0xb3, 0xb3).r(this, FUNC(pc8401a_state::io_rom_data_r));
// AM_RANGE(0xc8, 0xc8)
- AM_RANGE(0xfc, 0xff) AM_DEVREADWRITE(I8255A_TAG, i8255_device, read, write)
-ADDRESS_MAP_END
+ map(0xfc, 0xff).rw(I8255A_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
/* Input Ports */
diff --git a/src/mame/drivers/pc88va.cpp b/src/mame/drivers/pc88va.cpp
index 7cddd40f074..ea0e60d7d62 100644
--- a/src/mame/drivers/pc88va.cpp
+++ b/src/mame/drivers/pc88va.cpp
@@ -1334,10 +1334,11 @@ TIMER_CALLBACK_MEMBER(pc88va_state::pc8801fd_upd765_tc_to_zero)
/* FDC subsytem CPU */
#if TEST_SUBFDC
-ADDRESS_MAP_START(pc88va_state::pc88va_z80_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_RAM
-ADDRESS_MAP_END
+void pc88va_state::pc88va_z80_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x7fff).ram();
+}
READ8_MEMBER(pc88va_state::upd765_tc_r)
{
@@ -1357,14 +1358,15 @@ WRITE8_MEMBER(pc88va_state::upd765_mc_w)
machine().device<floppy_connector>("upd765:1")->get_device()->mon_w(!(data & 2));
}
-ADDRESS_MAP_START(pc88va_state::pc88va_z80_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0xf0, 0xf0) AM_WRITE(fdc_irq_vector_w) // Interrupt Opcode Port
+void pc88va_state::pc88va_z80_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0xf0, 0xf0).w(this, FUNC(pc88va_state::fdc_irq_vector_w)); // Interrupt Opcode Port
// AM_RANGE(0xf4, 0xf4) // Drive Control Port
- AM_RANGE(0xf8, 0xf8) AM_READWRITE(upd765_tc_r,upd765_mc_w) // (R) Terminal Count Port (W) Motor Control Port
- AM_RANGE(0xfa, 0xfb) AM_DEVICE("upd765", upd765a_device, map )
- AM_RANGE(0xfc, 0xff) AM_DEVREADWRITE("d8255_2s", i8255_device, read, write)
-ADDRESS_MAP_END
+ map(0xf8, 0xf8).rw(this, FUNC(pc88va_state::upd765_tc_r), FUNC(pc88va_state::upd765_mc_w)); // (R) Terminal Count Port (W) Motor Control Port
+ map(0xfa, 0xfb).m(m_fdc, FUNC(upd765a_device::map));
+ map(0xfc, 0xff).rw("d8255_2s", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
#endif
/* TODO: active low or active high? */
diff --git a/src/mame/drivers/seattle.cpp b/src/mame/drivers/seattle.cpp
index 3ef3b0879b9..d53f4c9994c 100644
--- a/src/mame/drivers/seattle.cpp
+++ b/src/mame/drivers/seattle.cpp
@@ -1103,50 +1103,55 @@ PCI Mem = 08000000-09FFFFFF
*/
-ADDRESS_MAP_START(seattle_state::seattle_cs0_map)
-ADDRESS_MAP_END
+void seattle_state::seattle_cs0_map(address_map &map)
+{
+}
-ADDRESS_MAP_START(seattle_state::seattle_cs1_map)
- AM_RANGE(0x01000000, 0x01000003) AM_WRITE(asic_fifo_w)
-ADDRESS_MAP_END
+void seattle_state::seattle_cs1_map(address_map &map)
+{
+ map(0x01000000, 0x01000003).w(this, FUNC(seattle_state::asic_fifo_w));
+}
-ADDRESS_MAP_START(seattle_state::seattle_cs2_map)
- AM_RANGE(0x00000000, 0x00000003) AM_READWRITE(analog_port_r, analog_port_w) // Flagstaff only
-ADDRESS_MAP_END
+void seattle_state::seattle_cs2_map(address_map &map)
+{
+ map(0x00000000, 0x00000003).rw(this, FUNC(seattle_state::analog_port_r), FUNC(seattle_state::analog_port_w)); // Flagstaff only
+}
// This map shares the PHOENIX, SEATTLE, and SEATTLE_WIDGET calls
-ADDRESS_MAP_START(seattle_state::seattle_cs3_map)
- AM_RANGE(0x00000000, 0x0000003f) AM_DEVREADWRITE("ioasic", midway_ioasic_device, read, write)
- AM_RANGE(0x00100000, 0x0011ffff) AM_READWRITE(cmos_r, cmos_w)
- AM_RANGE(0x00800000, 0x0080001f) AM_READWRITE(carnevil_gun_r, carnevil_gun_w) // Carnevil driver only
- AM_RANGE(0x00c00000, 0x00c0001f) AM_READWRITE(widget_r, widget_w); // Seattle widget only
- AM_RANGE(0x01000000, 0x01000003) AM_READWRITE(cmos_protect_r, cmos_protect_w)
- AM_RANGE(0x01100000, 0x01100003) AM_WRITE(seattle_watchdog_w)
- AM_RANGE(0x01300000, 0x01300003) AM_READWRITE(seattle_interrupt_enable_r, seattle_interrupt_enable_w)
- AM_RANGE(0x01400000, 0x01400003) AM_READWRITE(interrupt_config_r, interrupt_config_w)
- AM_RANGE(0x01500000, 0x01500003) AM_READ(interrupt_state_r)
- AM_RANGE(0x01600000, 0x01600003) AM_READ(interrupt_state2_r)
- AM_RANGE(0x01700000, 0x01700003) AM_WRITE(vblank_clear_w)
- AM_RANGE(0x01800000, 0x01800003) AM_NOP
- AM_RANGE(0x01900000, 0x01900003) AM_READWRITE(status_leds_r, status_leds_w)
- AM_RANGE(0x01f00000, 0x01f00003) AM_READWRITE(asic_reset_r, asic_reset_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(seattle_state::seattle_flagstaff_cs3_map)
- AM_RANGE(0x00000000, 0x0000003f) AM_DEVREADWRITE("ioasic", midway_ioasic_device, read, write)
- AM_RANGE(0x00100000, 0x0011ffff) AM_READWRITE(cmos_r, cmos_w)
- AM_RANGE(0x00c00000, 0x00c0003f) AM_READWRITE(ethernet_r, ethernet_w);
- AM_RANGE(0x01000000, 0x01000003) AM_READWRITE(cmos_protect_r, cmos_protect_w)
- AM_RANGE(0x01100000, 0x01100003) AM_WRITE(seattle_watchdog_w)
- AM_RANGE(0x01300000, 0x01300003) AM_READWRITE(seattle_interrupt_enable_r, seattle_interrupt_enable_w)
- AM_RANGE(0x01400000, 0x01400003) AM_READWRITE(interrupt_config_r, interrupt_config_w)
- AM_RANGE(0x01500000, 0x01500003) AM_READ(interrupt_state_r)
- AM_RANGE(0x01600000, 0x01600003) AM_READ(interrupt_state2_r)
- AM_RANGE(0x01700000, 0x01700003) AM_WRITE(vblank_clear_w)
- AM_RANGE(0x01800000, 0x01800003) AM_NOP
- AM_RANGE(0x01900000, 0x01900003) AM_READWRITE(status_leds_r, status_leds_w)
- AM_RANGE(0x01f00000, 0x01f00003) AM_READWRITE(asic_reset_r, asic_reset_w)
-ADDRESS_MAP_END
+void seattle_state::seattle_cs3_map(address_map &map)
+{
+ map(0x00000000, 0x0000003f).rw(m_ioasic, FUNC(midway_ioasic_device::read), FUNC(midway_ioasic_device::write));
+ map(0x00100000, 0x0011ffff).rw(this, FUNC(seattle_state::cmos_r), FUNC(seattle_state::cmos_w));
+ map(0x00800000, 0x0080001f).rw(this, FUNC(seattle_state::carnevil_gun_r), FUNC(seattle_state::carnevil_gun_w)); // Carnevil driver only
+ map(0x00c00000, 0x00c0001f).rw(this, FUNC(seattle_state::widget_r), FUNC(seattle_state::widget_w)); // Seattle widget only
+ map(0x01000000, 0x01000003).rw(this, FUNC(seattle_state::cmos_protect_r), FUNC(seattle_state::cmos_protect_w));
+ map(0x01100000, 0x01100003).w(this, FUNC(seattle_state::seattle_watchdog_w));
+ map(0x01300000, 0x01300003).rw(this, FUNC(seattle_state::seattle_interrupt_enable_r), FUNC(seattle_state::seattle_interrupt_enable_w));
+ map(0x01400000, 0x01400003).rw(this, FUNC(seattle_state::interrupt_config_r), FUNC(seattle_state::interrupt_config_w));
+ map(0x01500000, 0x01500003).r(this, FUNC(seattle_state::interrupt_state_r));
+ map(0x01600000, 0x01600003).r(this, FUNC(seattle_state::interrupt_state2_r));
+ map(0x01700000, 0x01700003).w(this, FUNC(seattle_state::vblank_clear_w));
+ map(0x01800000, 0x01800003).noprw();
+ map(0x01900000, 0x01900003).rw(this, FUNC(seattle_state::status_leds_r), FUNC(seattle_state::status_leds_w));
+ map(0x01f00000, 0x01f00003).rw(this, FUNC(seattle_state::asic_reset_r), FUNC(seattle_state::asic_reset_w));
+}
+
+void seattle_state::seattle_flagstaff_cs3_map(address_map &map)
+{
+ map(0x00000000, 0x0000003f).rw(m_ioasic, FUNC(midway_ioasic_device::read), FUNC(midway_ioasic_device::write));
+ map(0x00100000, 0x0011ffff).rw(this, FUNC(seattle_state::cmos_r), FUNC(seattle_state::cmos_w));
+ map(0x00c00000, 0x00c0003f).rw(this, FUNC(seattle_state::ethernet_r), FUNC(seattle_state::ethernet_w));
+ map(0x01000000, 0x01000003).rw(this, FUNC(seattle_state::cmos_protect_r), FUNC(seattle_state::cmos_protect_w));
+ map(0x01100000, 0x01100003).w(this, FUNC(seattle_state::seattle_watchdog_w));
+ map(0x01300000, 0x01300003).rw(this, FUNC(seattle_state::seattle_interrupt_enable_r), FUNC(seattle_state::seattle_interrupt_enable_w));
+ map(0x01400000, 0x01400003).rw(this, FUNC(seattle_state::interrupt_config_r), FUNC(seattle_state::interrupt_config_w));
+ map(0x01500000, 0x01500003).r(this, FUNC(seattle_state::interrupt_state_r));
+ map(0x01600000, 0x01600003).r(this, FUNC(seattle_state::interrupt_state2_r));
+ map(0x01700000, 0x01700003).w(this, FUNC(seattle_state::vblank_clear_w));
+ map(0x01800000, 0x01800003).noprw();
+ map(0x01900000, 0x01900003).rw(this, FUNC(seattle_state::status_leds_r), FUNC(seattle_state::status_leds_w));
+ map(0x01f00000, 0x01f00003).rw(this, FUNC(seattle_state::asic_reset_r), FUNC(seattle_state::asic_reset_w));
+}
/*************************************
*
diff --git a/src/mame/drivers/segas32.cpp b/src/mame/drivers/segas32.cpp
index b82f70568e7..1b95ee7b3e9 100644
--- a/src/mame/drivers/segas32.cpp
+++ b/src/mame/drivers/segas32.cpp
@@ -1129,30 +1129,33 @@ void segas32_state::system32_sound_portmap(address_map &map)
}
-ADDRESS_MAP_START(segas32_state::multi32_sound_map)
- AM_RANGE(0x0000, 0x9fff) AM_ROM AM_REGION("soundcpu", 0)
- AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xdfff) AM_DEVREADWRITE("sega", multipcm_device, read, write)
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("z80_shared_ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segas32_state::multi32_sound_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x80, 0x83) AM_MIRROR(0x0c) AM_DEVREADWRITE("ymsnd", ym3438_device, read, write)
- AM_RANGE(0xa0, 0xaf) AM_WRITE(sound_bank_lo_w)
- AM_RANGE(0xb0, 0xbf) AM_WRITE(multipcm_bank_w)
- AM_RANGE(0xc0, 0xcf) AM_WRITE(sound_int_control_lo_w)
- AM_RANGE(0xd0, 0xd3) AM_MIRROR(0x04) AM_WRITE(sound_int_control_hi_w)
- AM_RANGE(0xf1, 0xf1) AM_READWRITE(sound_dummy_r, sound_dummy_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(segas32_state::multipcm_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x17ffff) AM_ROMBANK("multipcmbanklo")
- AM_RANGE(0x180000, 0x1fffff) AM_ROMBANK("multipcmbankhi")
-ADDRESS_MAP_END
+void segas32_state::multi32_sound_map(address_map &map)
+{
+ map(0x0000, 0x9fff).rom().region("soundcpu", 0);
+ map(0xa000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xdfff).rw("sega", FUNC(multipcm_device::read), FUNC(multipcm_device::write));
+ map(0xe000, 0xffff).ram().share("z80_shared_ram");
+}
+
+void segas32_state::multi32_sound_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x80, 0x83).mirror(0x0c).rw("ymsnd", FUNC(ym3438_device::read), FUNC(ym3438_device::write));
+ map(0xa0, 0xaf).w(this, FUNC(segas32_state::sound_bank_lo_w));
+ map(0xb0, 0xbf).w(this, FUNC(segas32_state::multipcm_bank_w));
+ map(0xc0, 0xcf).w(this, FUNC(segas32_state::sound_int_control_lo_w));
+ map(0xd0, 0xd3).mirror(0x04).w(this, FUNC(segas32_state::sound_int_control_hi_w));
+ map(0xf1, 0xf1).rw(this, FUNC(segas32_state::sound_dummy_r), FUNC(segas32_state::sound_dummy_w));
+}
+
+
+void segas32_state::multipcm_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x17ffff).bankr("multipcmbanklo");
+ map(0x180000, 0x1fffff).bankr("multipcmbankhi");
+}
/*************************************
*
@@ -1160,11 +1163,12 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(segas32_state::v25_map)
- AM_RANGE(0x00000, 0x0ffff) AM_ROM AM_REGION("mcu", 0)
- AM_RANGE(0x10000, 0x1ffff) AM_DEVREADWRITE("dpram", mb8421_device, left_r, left_w)
- AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("mcu", 0)
-ADDRESS_MAP_END
+void segas32_state::v25_map(address_map &map)
+{
+ map(0x00000, 0x0ffff).rom().region("mcu", 0);
+ map(0x10000, 0x1ffff).rw("dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w));
+ map(0xf0000, 0xfffff).rom().region("mcu", 0);
+}
/*************************************
@@ -1173,13 +1177,15 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(segas32_state::upd7725_prg_map)
- AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION("dspprg", 0)
-ADDRESS_MAP_END
+void segas32_state::upd7725_prg_map(address_map &map)
+{
+ map(0x0000, 0x07ff).rom().region("dspprg", 0);
+}
-ADDRESS_MAP_START(segas32_state::upd7725_data_map)
- AM_RANGE(0x0000, 0x03ff) AM_ROM AM_REGION("dspdata", 0)
-ADDRESS_MAP_END
+void segas32_state::upd7725_data_map(address_map &map)
+{
+ map(0x0000, 0x03ff).rom().region("dspdata", 0);
+}
/*************************************
@@ -2254,11 +2260,12 @@ segas32_regular_state::segas32_regular_state(const machine_config &mconfig, cons
-ADDRESS_MAP_START(segas32_state::system32_analog_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_IMPORT_FROM(system32_map)
- AM_RANGE(0xc00050, 0xc00057) AM_MIRROR(0x0fff80) AM_DEVREADWRITE8("adc", msm6253_device, d7_r, address_w, 0x00ff)
-ADDRESS_MAP_END
+void segas32_state::system32_analog_map(address_map &map)
+{
+ map.unmap_value_high();
+ system32_map(map);
+ map(0xc00050, 0xc00057).mirror(0x0fff80).rw("adc", FUNC(msm6253_device::d7_r), FUNC(msm6253_device::address_w)).umask16(0x00ff);
+}
MACHINE_CONFIG_START(segas32_analog_state::device_add_mconfig)
segas32_state::device_add_mconfig(config);
@@ -2331,11 +2338,12 @@ segas32_trackball_state::segas32_trackball_state(const machine_config &mconfig,
-ADDRESS_MAP_START(segas32_state::system32_4player_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_IMPORT_FROM(system32_map)
- AM_RANGE(0xc00060, 0xc00067) AM_MIRROR(0x0fff80) AM_DEVREADWRITE8("ppi", i8255_device, read, write, 0x00ff)
-ADDRESS_MAP_END
+void segas32_state::system32_4player_map(address_map &map)
+{
+ map.unmap_value_high();
+ system32_map(map);
+ map(0xc00060, 0xc00067).mirror(0x0fff80).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
+}
MACHINE_CONFIG_START(segas32_4player_state::device_add_mconfig)
segas32_state::device_add_mconfig(config);
@@ -2365,11 +2373,12 @@ segas32_4player_state::segas32_4player_state(const machine_config &mconfig, devi
-ADDRESS_MAP_START(segas32_state::ga2_main_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_IMPORT_FROM(system32_4player_map)
- AM_RANGE(0xa00000, 0xa00fff) AM_DEVREADWRITE8("dpram", mb8421_device, right_r, right_w, 0x00ff)
-ADDRESS_MAP_END
+void segas32_state::ga2_main_map(address_map &map)
+{
+ map.unmap_value_high();
+ system32_4player_map(map);
+ map(0xa00000, 0xa00fff).rw("dpram", FUNC(mb8421_device::right_r), FUNC(mb8421_device::right_w)).umask16(0x00ff);
+}
MACHINE_CONFIG_START(segas32_v25_state::device_add_mconfig)
segas32_4player_state::device_add_mconfig(config);
@@ -2442,16 +2451,17 @@ WRITE_LINE_MEMBER(segas32_cd_state::scsi_drq_w)
printf("%02x DRQ\n",state);
}
-ADDRESS_MAP_START(segas32_state::system32_cd_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_IMPORT_FROM(system32_map)
+void segas32_state::system32_cd_map(address_map &map)
+{
+ map.unmap_value_high();
+ system32_map(map);
#if S32_KOKOROJI_TEST_CD
- AM_RANGE(0xc00040, 0xc0005f) AM_MIRROR(0x0fff80) AM_DEVREADWRITE8("mb89352", mb89352_device, mb89352_r, mb89352_w, 0x00ff)
+ map(0xc00040, 0xc0005f).mirror(0x0fff80).rw("mb89352", FUNC(mb89352_device::mb89352_r), FUNC(mb89352_device::mb89352_w)).umask16(0x00ff);
#else
- AM_RANGE(0xc00040, 0xc0005f) AM_MIRROR(0x0fff80) AM_NOP
+ map(0xc00040, 0xc0005f).mirror(0x0fff80).noprw();
#endif
- AM_RANGE(0xc00060, 0xc0006f) AM_MIRROR(0x0fff80) AM_DEVREADWRITE8("cxdio", cxd1095_device, read, write, 0x00ff)
-ADDRESS_MAP_END
+ map(0xc00060, 0xc0006f).mirror(0x0fff80).rw("cxdio", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)).umask16(0x00ff);
+}
void segas32_cd_state::cdrom_config(device_t *device)
{
@@ -2623,12 +2633,13 @@ sega_multi32_analog_state::sega_multi32_analog_state(const machine_config &mconf
}
-ADDRESS_MAP_START(segas32_state::multi32_6player_map)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xffffff)
- AM_IMPORT_FROM(multi32_map)
- AM_RANGE(0xc00060, 0xc00067) AM_MIRROR(0x07ff80) AM_DEVREADWRITE8("ppi", i8255_device, read, write, 0x00ff00ff)
-ADDRESS_MAP_END
+void segas32_state::multi32_6player_map(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xffffff);
+ multi32_map(map);
+ map(0xc00060, 0xc00067).mirror(0x07ff80).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask32(0x00ff00ff);
+}
MACHINE_CONFIG_START(sega_multi32_6player_state::device_add_mconfig)
sega_multi32_state::device_add_mconfig(config);
diff --git a/src/mame/drivers/segaxbd.cpp b/src/mame/drivers/segaxbd.cpp
index 3b855b2865e..ad075b7f811 100644
--- a/src/mame/drivers/segaxbd.cpp
+++ b/src/mame/drivers/segaxbd.cpp
@@ -990,9 +990,10 @@ void segaxbd_state::main_map(address_map &map)
map(0x3fc000, 0x3fffff).ram().share("backup2");
}
-ADDRESS_MAP_START(segaxbd_state::decrypted_opcodes_map)
- AM_RANGE(0x00000, 0xfffff) AM_ROMBANK("fd1094_decrypted_opcodes")
-ADDRESS_MAP_END
+void segaxbd_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x00000, 0xfffff).bankr("fd1094_decrypted_opcodes");
+}
//**************************************************************************
// SUB CPU ADDRESS MAPS
@@ -1044,18 +1045,20 @@ void segaxbd_state::sound_portmap(address_map &map)
// Sound Board
// The extra sound is used when the cabinet is Deluxe(Air Drive), or Cockpit. The soundlatch is
// shared with the main board sound.
-ADDRESS_MAP_START(segaxbd_state::smgp_sound2_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf0ff) AM_MIRROR(0x0700) AM_DEVREADWRITE("pcm2", segapcm_device, sega_pcm_r, sega_pcm_w)
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
+void segaxbd_state::smgp_sound2_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf0ff).mirror(0x0700).rw("pcm2", FUNC(segapcm_device::sega_pcm_r), FUNC(segapcm_device::sega_pcm_w));
+ map(0xf800, 0xffff).ram();
+}
-ADDRESS_MAP_START(segaxbd_state::smgp_sound2_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r)
-ADDRESS_MAP_END
+void segaxbd_state::smgp_sound2_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x40, 0x40).mirror(0x3f).r(this, FUNC(segaxbd_state::sound_data_r));
+}
@@ -1064,18 +1067,20 @@ ADDRESS_MAP_END
//**************************************************************************
// Motor Board, not yet emulated
-ADDRESS_MAP_START(segaxbd_state::smgp_airdrive_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xafff) AM_RAM
-ADDRESS_MAP_END
+void segaxbd_state::smgp_airdrive_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xafff).ram();
+}
-ADDRESS_MAP_START(segaxbd_state::smgp_airdrive_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x01, 0x01) AM_READNOP
- AM_RANGE(0x02, 0x03) AM_NOP
-ADDRESS_MAP_END
+void segaxbd_state::smgp_airdrive_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+ map(0x01, 0x01).nopr();
+ map(0x02, 0x03).noprw();
+}
@@ -1084,17 +1089,19 @@ ADDRESS_MAP_END
//**************************************************************************
// Link Board, not yet emulated
-ADDRESS_MAP_START(segaxbd_state::smgp_comm_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_RAM
- AM_RANGE(0x4000, 0x47ff) AM_RAM // MB8421 Dual-Port SRAM
-ADDRESS_MAP_END
+void segaxbd_state::smgp_comm_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x3fff).ram();
+ map(0x4000, 0x47ff).ram(); // MB8421 Dual-Port SRAM
+}
-ADDRESS_MAP_START(segaxbd_state::smgp_comm_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+void segaxbd_state::smgp_comm_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+}
@@ -1103,16 +1110,18 @@ ADDRESS_MAP_END
//**************************************************************************
// Z80, unknown function
-ADDRESS_MAP_START(segaxbd_state::rascot_z80_map)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xafff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(segaxbd_state::rascot_z80_portmap)
- ADDRESS_MAP_UNMAP_HIGH
- ADDRESS_MAP_GLOBAL_MASK(0xff)
-ADDRESS_MAP_END
+void segaxbd_state::rascot_z80_map(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xafff).ram();
+}
+
+void segaxbd_state::rascot_z80_portmap(address_map &map)
+{
+ map.unmap_value_high();
+ map.global_mask(0xff);
+}
diff --git a/src/mame/drivers/sg1000.cpp b/src/mame/drivers/sg1000.cpp
index c9ce4f770fc..984a5bf6d80 100644
--- a/src/mame/drivers/sg1000.cpp
+++ b/src/mame/drivers/sg1000.cpp
@@ -194,13 +194,13 @@ void sg1000_state::sc3000_io_map(address_map &map)
}
/* This is how the I/O ports are really mapped, but MAME does not support overlapping ranges
-ADDRESS_MAP_START(sg1000_state::sc3000_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- map(0x00, 0x00) AM_MIRROR(0xdf) AM_DEVREADWRITE(UPD9255_TAG, i8255_device, read, write)
- map(0x00, 0x00) AM_MIRROR(0x7f) AM_DEVWRITE(SN76489AN_TAG, sn76489a_device, write)
- map(0x00, 0x00) AM_MIRROR(0xae) AM_DEVREADWRITE(TMS9918A_TAG, tms9918a_device, vram_read, vram_write)
- map(0x01, 0x01) AM_MIRROR(0xae) AM_DEVREADWRITE(TMS9918A_TAG, tms9918a_device, register_read, register_write)
- map(0x60, 0x60) AM_MIRROR(0x9f) AM_READ(sc3000_r_r)
+void sg1000_state::sc3000_io_map(address_map &map)
+ map.global_mask(0xff);
+ map(0x00, 0x00).mirror(0xdf).rw(UPD9255_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0x00, 0x00).mirror(0x7f).w(SN76489AN_TAG, FUNC(sn76489a_device::write));
+ map(0x00, 0x00).mirror(0xae).rw(TMS9918A_TAG, FUNC(tms9918a_device::vram_read), FUNC(tms9918a_device::vram_write));
+ map(0x01, 0x01).mirror(0xae).rw(TMS9918A_TAG, FUNC(tms9918a_device::register_read), FUNC(tms9918a_device::register_write));
+ map(0x60, 0x60).mirror(0x9f).r(this, FUNC(sg1000_state::sc3000_r_r));
ADDRESS_MAP_END
*/
diff --git a/src/mame/drivers/superqix.cpp b/src/mame/drivers/superqix.cpp
index 5dc13ec5743..9e4634545b9 100644
--- a/src/mame/drivers/superqix.cpp
+++ b/src/mame/drivers/superqix.cpp
@@ -979,15 +979,16 @@ MACHINE_START_MEMBER(hotsmash_state, pbillian)
}
-ADDRESS_MAP_START(superqix_state_base::main_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
+void superqix_state_base::main_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
// the following four ranges are part of a single 6264 64Kibit SRAM chip, called 'VRAM' in POST
- AM_RANGE(0xe000, 0xe0ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe100, 0xe7ff) AM_RAM
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(superqix_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xf000, 0xffff) AM_RAM
-ADDRESS_MAP_END
+ map(0xe000, 0xe0ff).ram().share("spriteram");
+ map(0xe100, 0xe7ff).ram();
+ map(0xe800, 0xefff).ram().w(this, FUNC(superqix_state_base::superqix_videoram_w)).share("videoram");
+ map(0xf000, 0xffff).ram();
+}
void hotsmash_state::pbillian_port_map(address_map &map)
{ // used by both pbillian and hotsmash
diff --git a/src/mame/drivers/trs80m2.cpp b/src/mame/drivers/trs80m2.cpp
index 8d90f060809..da546f91e3b 100644
--- a/src/mame/drivers/trs80m2.cpp
+++ b/src/mame/drivers/trs80m2.cpp
@@ -362,12 +362,13 @@ void trs80m16_state::m16_z80_io(address_map &map)
// ADDRESS_MAP( m68000_mem )
//-------------------------------------------------
-ADDRESS_MAP_START(trs80m2_state::m68000_mem)
+void trs80m2_state::m68000_mem(address_map &map)
+{
// AM_RANGE(0x7800d0, 0x7800d1) 9519A (C/D = UDS)
// AM_RANGE(0x7800d2, 0x7800d3) limit/offset 2
// AM_RANGE(0x7800d4, 0x7800d5) limit/offset 1
// AM_RANGE(0x7800d6, 0x7800d7) Z80 IRQ
-ADDRESS_MAP_END
+}
diff --git a/src/mame/drivers/vegas.cpp b/src/mame/drivers/vegas.cpp
index 82c2e91d22e..365ce816a1a 100644
--- a/src/mame/drivers/vegas.cpp
+++ b/src/mame/drivers/vegas.cpp
@@ -1666,45 +1666,52 @@ INPUT_PORTS_END
* Memory maps
*
*************************************/
-ADDRESS_MAP_START(vegas_state::vegas_cs2_map)
- AM_RANGE(0x00000000, 0x00007003) AM_READWRITE8(sio_r, sio_w, 0xffffffff)
-ADDRESS_MAP_END
+void vegas_state::vegas_cs2_map(address_map &map)
+{
+ map(0x00000000, 0x00007003).rw(this, FUNC(vegas_state::sio_r), FUNC(vegas_state::sio_w));
+}
-ADDRESS_MAP_START(vegas_state::vegas_cs3_map)
- AM_RANGE(0x00000000, 0x00000003) AM_READWRITE(analog_port_r, analog_port_w)
+void vegas_state::vegas_cs3_map(address_map &map)
+{
+ map(0x00000000, 0x00000003).rw(this, FUNC(vegas_state::analog_port_r), FUNC(vegas_state::analog_port_w));
//AM_RANGE(0x00001000, 0x00001003) AM_READWRITE(lcd_r, lcd_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vegas_state::vegas_cs4_map)
- AM_RANGE(0x00000000, 0x00007fff) AM_READWRITE(timekeeper_r, timekeeper_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vegas_state::vegas_cs5_map)
- AM_RANGE(0x00000000, 0x00000003) AM_READWRITE8(cpu_io_r, cpu_io_w, 0xffffffff)
- AM_RANGE(0x00100000, 0x001fffff) AM_READ(unknown_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vegas_state::vegas_cs6_map)
- AM_RANGE(0x00000000, 0x0000003f) AM_DEVREADWRITE("ioasic", midway_ioasic_device, packed_r, packed_w)
- AM_RANGE(0x00001000, 0x00001003) AM_WRITE(asic_fifo_w)
- AM_RANGE(0x00003000, 0x00003003) AM_WRITE(dcs3_fifo_full_w) // if (m_dcs_idma_cs != 0)
- AM_RANGE(0x00005000, 0x00005003) AM_DEVWRITE("dcs", dcs_audio_device, dsio_idma_addr_w) // if (m_dcs_idma_cs == 6)
- AM_RANGE(0x00007000, 0x00007003) AM_DEVREADWRITE("dcs", dcs_audio_device, dsio_idma_data_r, dsio_idma_data_w) // if (m_dcs_idma_cs == 6)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vegas_state::vegas_cs7_map)
+}
+
+void vegas_state::vegas_cs4_map(address_map &map)
+{
+ map(0x00000000, 0x00007fff).rw(this, FUNC(vegas_state::timekeeper_r), FUNC(vegas_state::timekeeper_w));
+}
+
+void vegas_state::vegas_cs5_map(address_map &map)
+{
+ map(0x00000000, 0x00000003).rw(this, FUNC(vegas_state::cpu_io_r), FUNC(vegas_state::cpu_io_w));
+ map(0x00100000, 0x001fffff).r(this, FUNC(vegas_state::unknown_r));
+}
+
+void vegas_state::vegas_cs6_map(address_map &map)
+{
+ map(0x00000000, 0x0000003f).rw(m_ioasic, FUNC(midway_ioasic_device::packed_r), FUNC(midway_ioasic_device::packed_w));
+ map(0x00001000, 0x00001003).w(this, FUNC(vegas_state::asic_fifo_w));
+ map(0x00003000, 0x00003003).w(this, FUNC(vegas_state::dcs3_fifo_full_w)); // if (m_dcs_idma_cs != 0)
+ map(0x00005000, 0x00005003).w(m_dcs, FUNC(dcs_audio_device::dsio_idma_addr_w)); // if (m_dcs_idma_cs == 6)
+ map(0x00007000, 0x00007003).rw(m_dcs, FUNC(dcs_audio_device::dsio_idma_data_r), FUNC(dcs_audio_device::dsio_idma_data_w)); // if (m_dcs_idma_cs == 6)
+}
+
+void vegas_state::vegas_cs7_map(address_map &map)
+{
//AM_RANGE(0x00000000, 0x00000003) AM_READWRITE8(nss_r, nss_w, 0xffffffff)
- AM_RANGE(0x00001000, 0x0000100f) AM_READWRITE(ethernet_r, ethernet_w)
- AM_RANGE(0x00005000, 0x00005003) AM_DEVWRITE("dcs", dcs_audio_device, dsio_idma_addr_w) // if (m_dcs_idma_cs == 7)
- AM_RANGE(0x00007000, 0x00007003) AM_DEVREADWRITE("dcs", dcs_audio_device, dsio_idma_data_r, dsio_idma_data_w) // if (m_dcs_idma_cs == 7)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vegas_state::vegas_cs8_map)
- AM_RANGE(0x01000000, 0x0100001f) AM_DEVREADWRITE8("uart1", ns16550_device, ins8250_r, ins8250_w, 0xff) // Serial ttyS01 (TL16C552 CS0)
- AM_RANGE(0x01400000, 0x0140001f) AM_DEVREADWRITE8("uart2", ns16550_device, ins8250_r, ins8250_w, 0xff) // Serial ttyS02 (TL16C552 CS1)
- AM_RANGE(0x01800000, 0x0180001f) AM_READWRITE8(parallel_r, parallel_w, 0xff) // Parallel UART (TL16C552 CS2)
- AM_RANGE(0x01c00000, 0x01c00003) AM_WRITE8(mpsreset_w, 0xff) // MPS Reset
-ADDRESS_MAP_END
+ map(0x00001000, 0x0000100f).rw(this, FUNC(vegas_state::ethernet_r), FUNC(vegas_state::ethernet_w));
+ map(0x00005000, 0x00005003).w(m_dcs, FUNC(dcs_audio_device::dsio_idma_addr_w)); // if (m_dcs_idma_cs == 7)
+ map(0x00007000, 0x00007003).rw(m_dcs, FUNC(dcs_audio_device::dsio_idma_data_r), FUNC(dcs_audio_device::dsio_idma_data_w)); // if (m_dcs_idma_cs == 7)
+}
+
+void vegas_state::vegas_cs8_map(address_map &map)
+{
+ map(0x01000000, 0x0100001f).rw(m_uart1, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)).umask32(0x000000ff); // Serial ttyS01 (TL16C552 CS0)
+ map(0x01400000, 0x0140001f).rw(m_uart2, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)).umask32(0x000000ff); // Serial ttyS02 (TL16C552 CS1)
+ map(0x01800000, 0x0180001f).rw(this, FUNC(vegas_state::parallel_r), FUNC(vegas_state::parallel_w)).umask32(0x000000ff); // Parallel UART (TL16C552 CS2)
+ map(0x01c00000, 0x01c00000).w(this, FUNC(vegas_state::mpsreset_w)); // MPS Reset
+}
/*************************************
*
diff --git a/src/mame/drivers/williams.cpp b/src/mame/drivers/williams.cpp
index 922f9394606..c8f16936117 100644
--- a/src/mame/drivers/williams.cpp
+++ b/src/mame/drivers/williams.cpp
@@ -667,10 +667,11 @@ void williams2_state::williams2_d000_ram_map(address_map &map)
/* tshoot and joust2: D000-DFFF is ROM */
-ADDRESS_MAP_START(williams2_state::williams2_d000_rom_map)
- AM_IMPORT_FROM(williams2_common_map)
- AM_RANGE(0xd000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void williams2_state::williams2_d000_rom_map(address_map &map)
+{
+ williams2_common_map(map);
+ map(0xd000, 0xffff).rom();
+}
diff --git a/src/mame/drivers/x1twin.cpp b/src/mame/drivers/x1twin.cpp
index 5f0e3f2af72..6a7f5f1a5e2 100644
--- a/src/mame/drivers/x1twin.cpp
+++ b/src/mame/drivers/x1twin.cpp
@@ -65,20 +65,22 @@ void x1twin_state::x1_io(address_map &map)
}
#if 0
-ADDRESS_MAP_START(x1twin_state::pce_mem)
- AM_RANGE( 0x000000, 0x09FFFF) AM_ROM
- AM_RANGE( 0x1F0000, 0x1F1FFF) AM_RAM AM_MIRROR(0x6000)
- AM_RANGE( 0x1FE000, 0x1FE3FF) AM_READWRITE( vdc_r, vdc_w )
- AM_RANGE( 0x1FE400, 0x1FE7FF) AM_READWRITE( vce_r, vce_w )
- AM_RANGE( 0x1FE800, 0x1FEBFF) AM_DEVREADWRITE( "c6280", c6280_device, c6280_r, c6280_w )
- AM_RANGE( 0x1FEC00, 0x1FEFFF) AM_READWRITE( h6280_timer_r, h6280_timer_w )
- AM_RANGE( 0x1FF000, 0x1FF3FF) AM_READWRITE( pce_joystick_r, pce_joystick_w )
- AM_RANGE( 0x1FF400, 0x1FF7FF) AM_DEVREADWRITE( "maincpu", h6280_device, irq_status_r, irq_status_w )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(x1twin_state::pce_io)
- AM_RANGE( 0x00, 0x03) AM_READWRITE( vdc_r, vdc_w )
-ADDRESS_MAP_END
+void x1twin_state::pce_mem(address_map &map)
+{
+ map(0x000000, 0x09FFFF).rom();
+ map(0x1F0000, 0x1F1FFF).ram().mirror(0x6000);
+ map(0x1FE000, 0x1FE3FF).rw(this, FUNC(x1twin_state::vdc_r), FUNC(x1twin_state::vdc_w));
+ map(0x1FE400, 0x1FE7FF).rw(this, FUNC(x1twin_state::vce_r), FUNC(x1twin_state::vce_w));
+ map(0x1FE800, 0x1FEBFF).rw("c6280", FUNC(c6280_device::c6280_r), FUNC(c6280_device::c6280_w));
+ map(0x1FEC00, 0x1FEFFF).rw(this, FUNC(x1twin_state::h6280_timer_r), FUNC(x1twin_state::h6280_timer_w));
+ map(0x1FF000, 0x1FF3FF).rw(this, FUNC(x1twin_state::pce_joystick_r), FUNC(x1twin_state::pce_joystick_w));
+ map(0x1FF400, 0x1FF7FF).rw("maincpu", FUNC(h6280_device::irq_status_r), FUNC(h6280_device::irq_status_w));
+}
+
+void x1twin_state::pce_io(address_map &map)
+{
+ map(0x00, 0x03).rw(this, FUNC(x1twin_state::vdc_r), FUNC(x1twin_state::vdc_w));
+}
#endif
/*************************************