diff options
Diffstat (limited to 'src/mame/drivers/next.cpp')
-rw-r--r-- | src/mame/drivers/next.cpp | 119 |
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 */ |