summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/next.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/next.cpp')
-rw-r--r--src/mame/drivers/next.cpp119
1 files changed, 63 insertions, 56 deletions
diff --git a/src/mame/drivers/next.cpp b/src/mame/drivers/next.cpp
index d6730d13c0f..f442d0f54ce 100644
--- a/src/mame/drivers/next.cpp
+++ b/src/mame/drivers/next.cpp
@@ -892,36 +892,37 @@ WRITE_LINE_MEMBER(next_state::vblank_w)
}
}
-ADDRESS_MAP_START(next_state::next_mem)
- AM_RANGE(0x00000000, 0x0001ffff) AM_ROM AM_REGION("user1", 0)
- AM_RANGE(0x01000000, 0x0101ffff) AM_ROM AM_REGION("user1", 0)
- AM_RANGE(0x02000000, 0x020001ff) AM_MIRROR(0x300200) AM_READWRITE(dma_ctrl_r, dma_ctrl_w)
- AM_RANGE(0x02004000, 0x020041ff) AM_MIRROR(0x300200) AM_READWRITE(dma_regs_r, dma_regs_w)
- AM_RANGE(0x02006000, 0x0200600f) AM_MIRROR(0x300000) AM_DEVICE8("net", mb8795_device, map, 0xffffffff)
+void next_state::next_mem(address_map &map)
+{
+ map(0x00000000, 0x0001ffff).rom().region("user1", 0);
+ map(0x01000000, 0x0101ffff).rom().region("user1", 0);
+ map(0x02000000, 0x020001ff).mirror(0x300200).rw(this, FUNC(next_state::dma_ctrl_r), FUNC(next_state::dma_ctrl_w));
+ map(0x02004000, 0x020041ff).mirror(0x300200).rw(this, FUNC(next_state::dma_regs_r), FUNC(next_state::dma_regs_w));
+ map(0x02006000, 0x0200600f).mirror(0x300000).m(net, FUNC(mb8795_device::map));
// AM_RANGE(0x02006010, 0x02006013) AM_MIRROR(0x300000) memory timing
- AM_RANGE(0x02007000, 0x02007003) AM_MIRROR(0x300000) AM_READ(irq_status_r)
- AM_RANGE(0x02007800, 0x02007803) AM_MIRROR(0x300000) AM_READWRITE(irq_mask_r,irq_mask_w)
- AM_RANGE(0x02008000, 0x02008003) AM_MIRROR(0x300000) AM_READ(dsp_r)
- AM_RANGE(0x0200c000, 0x0200c003) AM_MIRROR(0x300000) AM_READ(scr1_r)
- AM_RANGE(0x0200c800, 0x0200c803) AM_MIRROR(0x300000) AM_READ(rom_map_r)
- AM_RANGE(0x0200d000, 0x0200d003) AM_MIRROR(0x300000) AM_READWRITE(scr2_r,scr2_w)
+ map(0x02007000, 0x02007003).mirror(0x300000).r(this, FUNC(next_state::irq_status_r));
+ map(0x02007800, 0x02007803).mirror(0x300000).rw(this, FUNC(next_state::irq_mask_r), FUNC(next_state::irq_mask_w));
+ map(0x02008000, 0x02008003).mirror(0x300000).r(this, FUNC(next_state::dsp_r));
+ map(0x0200c000, 0x0200c003).mirror(0x300000).r(this, FUNC(next_state::scr1_r));
+ map(0x0200c800, 0x0200c803).mirror(0x300000).r(this, FUNC(next_state::rom_map_r));
+ map(0x0200d000, 0x0200d003).mirror(0x300000).rw(this, FUNC(next_state::scr2_r), FUNC(next_state::scr2_w));
// AM_RANGE(0x0200d800, 0x0200d803) AM_MIRROR(0x300000) RMTINT
- AM_RANGE(0x0200e000, 0x0200e00b) AM_MIRROR(0x300000) AM_DEVICE("keyboard", nextkbd_device, amap)
+ map(0x0200e000, 0x0200e00b).mirror(0x300000).m(keyboard, FUNC(nextkbd_device::amap));
// AM_RANGE(0x0200f000, 0x0200f003) AM_MIRROR(0x300000) printer
// AM_RANGE(0x02010000, 0x02010003) AM_MIRROR(0x300000) brightness
- AM_RANGE(0x02012000, 0x0201201f) AM_MIRROR(0x300000) AM_DEVICE8("mo", nextmo_device, map, 0xffffffff)
- AM_RANGE(0x02014000, 0x0201400f) AM_MIRROR(0x300000) AM_DEVICE8("scsibus:7:ncr5390", ncr5390_device, map, 0xffffffff)
- AM_RANGE(0x02014020, 0x02014023) AM_MIRROR(0x300000) AM_READWRITE(scsictrl_r, scsictrl_w)
- AM_RANGE(0x02016000, 0x02016003) AM_MIRROR(0x300000) AM_READWRITE(timer_data_r, timer_data_w)
- AM_RANGE(0x02016004, 0x02016007) AM_MIRROR(0x300000) AM_READWRITE(timer_ctrl_r, timer_ctrl_w)
- AM_RANGE(0x02018000, 0x02018003) AM_MIRROR(0x300000) AM_DEVREADWRITE8("scc", scc8530_t, reg_r, reg_w, 0xffffffff)
+ map(0x02012000, 0x0201201f).mirror(0x300000).m(mo, FUNC(nextmo_device::map));
+ map(0x02014000, 0x0201400f).mirror(0x300000).m(scsi, FUNC(ncr5390_device::map));
+ map(0x02014020, 0x02014023).mirror(0x300000).rw(this, FUNC(next_state::scsictrl_r), FUNC(next_state::scsictrl_w));
+ map(0x02016000, 0x02016003).mirror(0x300000).rw(this, FUNC(next_state::timer_data_r), FUNC(next_state::timer_data_w));
+ map(0x02016004, 0x02016007).mirror(0x300000).rw(this, FUNC(next_state::timer_ctrl_r), FUNC(next_state::timer_ctrl_w));
+ map(0x02018000, 0x02018003).mirror(0x300000).rw(scc, FUNC(scc8530_t::reg_r), FUNC(scc8530_t::reg_w));
// AM_RANGE(0x02018004, 0x02018007) AM_MIRROR(0x300000) SCC CLK
// AM_RANGE(0x02018190, 0x02018197) AM_MIRROR(0x300000) warp 9c DRAM timing
// AM_RANGE(0x02018198, 0x0201819f) AM_MIRROR(0x300000) warp 9c VRAM timing
- AM_RANGE(0x0201a000, 0x0201a003) AM_MIRROR(0x300000) AM_READ(event_counter_r) // EVENTC
+ map(0x0201a000, 0x0201a003).mirror(0x300000).r(this, FUNC(next_state::event_counter_r)); // EVENTC
// AM_RANGE(0x020c0000, 0x020c0004) AM_MIRROR(0x300000) BMAP
- AM_RANGE(0x020c0030, 0x020c0037) AM_MIRROR(0x300000) AM_READWRITE(phy_r, phy_w)
- AM_RANGE(0x04000000, 0x07ffffff) AM_RAM //work ram
+ map(0x020c0030, 0x020c0037).mirror(0x300000).rw(this, FUNC(next_state::phy_r), FUNC(next_state::phy_w));
+ map(0x04000000, 0x07ffffff).ram(); //work ram
// AM_RANGE(0x0c000000, 0x0c03ffff) video RAM w A+B-AB function
// AM_RANGE(0x0d000000, 0x0d03ffff) video RAM w (1-A)B function
// AM_RANGE(0x0e000000, 0x0e03ffff) video RAM w ceil(A+B) function
@@ -930,40 +931,46 @@ ADDRESS_MAP_START(next_state::next_mem)
// AM_RANGE(0x14000000, 0x1403ffff) main RAM w (1-A)B function
// AM_RANGE(0x18000000, 0x1803ffff) main RAM w ceil(A+B) function
// AM_RANGE(0x1c000000, 0x1c03ffff) main RAM w AB function
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(next_state::next_0b_m_nofdc_mem)
- AM_IMPORT_FROM(next_mem)
- AM_RANGE(0x0b000000, 0x0b03ffff) AM_RAM AM_SHARE("vram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(next_state::next_fdc_mem)
- AM_IMPORT_FROM(next_mem)
- AM_RANGE(0x02014100, 0x02014107) AM_MIRROR(0x300000) AM_DEVICE8("fdc", n82077aa_device, map, 0xffffffff)
- AM_RANGE(0x02014108, 0x0201410b) AM_MIRROR(0x300000) AM_READWRITE(fdc_control_r, fdc_control_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(next_state::next_0b_m_mem)
- AM_IMPORT_FROM(next_fdc_mem)
- AM_RANGE(0x0b000000, 0x0b03ffff) AM_RAM AM_SHARE("vram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(next_state::next_0c_m_mem)
- AM_IMPORT_FROM(next_fdc_mem)
- AM_RANGE(0x0c000000, 0x0c1fffff) AM_RAM AM_SHARE("vram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(next_state::next_0c_c_mem)
- AM_IMPORT_FROM(next_fdc_mem)
- AM_RANGE(0x0c000000, 0x0c1fffff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x02018180, 0x02018183) AM_MIRROR(0x300000) AM_WRITE8(ramdac_w, 0xffffffff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(next_state::next_2c_c_mem)
- AM_IMPORT_FROM(next_fdc_mem)
- AM_RANGE(0x2c000000, 0x2c1fffff) AM_RAM AM_SHARE("vram")
- AM_RANGE(0x02018180, 0x02018183) AM_MIRROR(0x300000) AM_WRITE8(ramdac_w, 0xffffffff)
-ADDRESS_MAP_END
+}
+
+void next_state::next_0b_m_nofdc_mem(address_map &map)
+{
+ next_mem(map);
+ map(0x0b000000, 0x0b03ffff).ram().share("vram");
+}
+
+void next_state::next_fdc_mem(address_map &map)
+{
+ next_mem(map);
+ map(0x02014100, 0x02014107).mirror(0x300000).m(fdc, FUNC(n82077aa_device::map));
+ map(0x02014108, 0x0201410b).mirror(0x300000).rw(this, FUNC(next_state::fdc_control_r), FUNC(next_state::fdc_control_w));
+}
+
+void next_state::next_0b_m_mem(address_map &map)
+{
+ next_fdc_mem(map);
+ map(0x0b000000, 0x0b03ffff).ram().share("vram");
+}
+
+void next_state::next_0c_m_mem(address_map &map)
+{
+ next_fdc_mem(map);
+ map(0x0c000000, 0x0c1fffff).ram().share("vram");
+}
+
+void next_state::next_0c_c_mem(address_map &map)
+{
+ next_fdc_mem(map);
+ map(0x0c000000, 0x0c1fffff).ram().share("vram");
+ map(0x02018180, 0x02018183).mirror(0x300000).w(this, FUNC(next_state::ramdac_w));
+}
+
+void next_state::next_2c_c_mem(address_map &map)
+{
+ next_fdc_mem(map);
+ map(0x2c000000, 0x2c1fffff).ram().share("vram");
+ map(0x02018180, 0x02018183).mirror(0x300000).w(this, FUNC(next_state::ramdac_w));
+}
/* Input ports */