From 0234bc52f4f1ad7aebf54f7450bf6a23c06411a4 Mon Sep 17 00:00:00 2001 From: Olivier Galibert Date: Thu, 19 Apr 2018 23:04:02 +0200 Subject: maps: Finish mame/drivers (nw) --- src/mame/drivers/abc80x.cpp | 51 ++++---- src/mame/drivers/amiga.cpp | 55 +++++---- src/mame/drivers/atlantis.cpp | 50 ++++---- src/mame/drivers/bfm_sc2.cpp | 15 +-- src/mame/drivers/eolith.cpp | 13 +- src/mame/drivers/fmtowns.cpp | 171 +++++++++++++------------- src/mame/drivers/goldstar.cpp | 272 +++++++++++++++++++++-------------------- src/mame/drivers/intellec4.cpp | 64 +++++----- src/mame/drivers/ngen.cpp | 51 ++++---- src/mame/drivers/norautp.cpp | 16 +-- src/mame/drivers/notetaker.cpp | 74 +++++------ src/mame/drivers/pc8401a.cpp | 57 ++++----- src/mame/drivers/pc88va.cpp | 24 ++-- src/mame/drivers/seattle.cpp | 85 +++++++------ src/mame/drivers/segas32.cpp | 137 +++++++++++---------- src/mame/drivers/segaxbd.cpp | 99 ++++++++------- src/mame/drivers/sg1000.cpp | 14 +-- src/mame/drivers/superqix.cpp | 17 +-- src/mame/drivers/trs80m2.cpp | 5 +- src/mame/drivers/vegas.cpp | 79 ++++++------ src/mame/drivers/williams.cpp | 9 +- src/mame/drivers/x1twin.cpp | 30 ++--- 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("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 /************************************* -- cgit v1.2.3