From da3bcbde9b733b4dae6d0665d52f306e2686a376 Mon Sep 17 00:00:00 2001 From: Robbbert Date: Thu, 12 Apr 2018 00:24:24 +1000 Subject: (nw) address map modernisation for a2600, asst128, osborne1, atom, cbm2, deco32, konblands, qtsbc --- src/mame/drivers/a2600.cpp | 13 ++++---- src/mame/drivers/asst128.cpp | 13 ++++---- src/mame/drivers/atom.cpp | 28 ++++++++--------- src/mame/drivers/cbm2.cpp | 20 ++++++------ src/mame/drivers/deco32.cpp | 20 ++++++------ src/mame/drivers/konblands.cpp | 70 ++++++++++++++++++++++-------------------- src/mame/drivers/osborne1.cpp | 15 ++++----- src/mame/drivers/qtsbc.cpp | 34 ++++++++++---------- 8 files changed, 112 insertions(+), 101 deletions(-) diff --git a/src/mame/drivers/a2600.cpp b/src/mame/drivers/a2600.cpp index 15b1cd559ae..dda836baec3 100644 --- a/src/mame/drivers/a2600.cpp +++ b/src/mame/drivers/a2600.cpp @@ -29,15 +29,16 @@ TODO: static const uint16_t supported_screen_heights[4] = { 262, 312, 328, 342 }; -ADDRESS_MAP_START(a2600_base_state::a2600_mem) // 6507 has 13-bit address space, 0x0000 - 0x1fff - AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x0f00) AM_DEVREADWRITE("tia_video", tia_video_device, read, write) - AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x0d00) AM_RAM AM_SHARE("riot_ram") +void a2600_base_state::a2600_mem(address_map &map) // 6507 has 13-bit address space, 0x0000 - 0x1fff +{ + map(0x0000, 0x007f).mirror(0x0f00).rw("tia_video", FUNC(tia_video_device::read), FUNC(tia_video_device::write)); + map(0x0080, 0x00ff).mirror(0x0d00).ram().share("riot_ram"); #if USE_NEW_RIOT - AM_RANGE(0x0280, 0x029f) AM_MIRROR(0x0d00) AM_DEVICE("riot", mos6532_t, io_map) + map(0x0280, 0x029f).mirror(0x0d00).m("riot", FUNC(mos6532_t::io_map)); #else - AM_RANGE(0x0280, 0x029f) AM_MIRROR(0x0d00) AM_DEVREADWRITE("riot", riot6532_device, read, write) + map(0x0280, 0x029f).mirror(0x0d00).rw("riot", FUNC(riot6532_device::read), FUNC(riot6532_device::write)); #endif - // AM_RANGE(0x1000, 0x1fff) is cart data and it is configured at reset time, depending on the mounted cart! + // map(0x1000, 0x1fff) is cart data and it is configured at reset time, depending on the mounted cart! ADDRESS_MAP_END diff --git a/src/mame/drivers/asst128.cpp b/src/mame/drivers/asst128.cpp index f7375798c13..7ef75c25160 100644 --- a/src/mame/drivers/asst128.cpp +++ b/src/mame/drivers/asst128.cpp @@ -25,12 +25,13 @@ public: void map(address_map &map); }; -ADDRESS_MAP_START(asst128_mb_device::map) - AM_RANGE(0x0020, 0x002f) AM_DEVREADWRITE("pic8259", pic8259_device, read, write) - AM_RANGE(0x0040, 0x004f) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) - AM_RANGE(0x0060, 0x006f) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) - AM_RANGE(0x0080, 0x008f) AM_WRITE(pc_page_w) - AM_RANGE(0x00a0, 0x00a1) AM_WRITE(nmi_enable_w) +void asst128_mb_device::map(address_map &map) +{ + map(0x0020, 0x002f).rw("pic8259", FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x0040, 0x004f).rw("pit8253", FUNC(pit8253_device::read), FUNC(pit8253_device::write)); + map(0x0060, 0x006f).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0x0080, 0x008f).w(this, FUNC(asst128_mb_device::pc_page_w)); + map(0x00a0, 0x00a1).w(this, FUNC(asst128_mb_device::nmi_enable_w)); ADDRESS_MAP_END DEFINE_DEVICE_TYPE(ASST128_MOTHERBOARD, asst128_mb_device, "asst128_mb", "ASST128_MOTHERBOARD") diff --git a/src/mame/drivers/atom.cpp b/src/mame/drivers/atom.cpp index 18f025907b0..c1237b8bc80 100644 --- a/src/mame/drivers/atom.cpp +++ b/src/mame/drivers/atom.cpp @@ -256,10 +256,10 @@ void atom_state::atom_mem(address_map &map) map(0x0a05, 0x7fff).ram(); map(0x8000, 0x97ff).ram().share("video_ram"); map(0x9800, 0x9fff).ram(); -// AM_RANGE(0xa000, 0xafff) // mapped by the cartslot +// map(0xa000, 0xafff) // mapped by the cartslot map(0xb000, 0xb003).mirror(0x3fc).rw(INS8255_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write)); -// AM_RANGE(0xb400, 0xb403) AM_DEVREADWRITE(MC6854_TAG, mc6854_device, read, write) -// AM_RANGE(0xb404, 0xb404) AM_READ_PORT("ECONET") +// map(0xb400, 0xb403) AM_DEVREADWRITE(MC6854_TAG, mc6854_device, read, write) +// map(0xb404, 0xb404) AM_READ_PORT("ECONET") map(0xb800, 0xb80f).mirror(0x3f0).rw(R6522_TAG, FUNC(via6522_device::read), FUNC(via6522_device::write)); map(0xc000, 0xffff).rom().region(SY6502_TAG, 0); } @@ -284,7 +284,6 @@ void atom_state::atombb_mem(address_map &map) { map(0x0000, 0x3fff).ram(); map(0x4000, 0x57ff).ram().share("video_ram"); - map(0x7000, 0x7003).mirror(0x3fc).rw(INS8255_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write)); map(0x7800, 0x780f).mirror(0x3f0).rw(R6522_TAG, FUNC(via6522_device::read), FUNC(via6522_device::write)); map(0x8000, 0xbfff).rom().region("basic", 0); @@ -295,16 +294,17 @@ void atom_state::atombb_mem(address_map &map) ADDRESS_MAP( prophet_mem ) -------------------------------------------------*/ -ADDRESS_MAP_START(atom_state::prophet_mem) - AM_RANGE(0x0000, 0x09ff) AM_RAM - AM_RANGE(0x0a00, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0x97ff) AM_RAM AM_SHARE("video_ram") - AM_RANGE(0x9800, 0x9fff) AM_RAM - AM_RANGE(0xa000, 0xafff) AM_ROM AM_REGION("ic24", 0) - AM_RANGE(0xb000, 0xb003) AM_MIRROR(0x3fc) AM_DEVREADWRITE(INS8255_TAG, i8255_device, read, write) - AM_RANGE(0xb800, 0xb80f) AM_MIRROR(0x3f0) AM_DEVREADWRITE(R6522_TAG, via6522_device, read, write) - AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION(SY6502_TAG, 0) -ADDRESS_MAP_END +void atom_state::prophet_mem(address_map &map) +{ + map(0x0000, 0x09ff).ram(); + map(0x0a00, 0x7fff).ram(); + map(0x8000, 0x97ff).ram().share("video_ram"); + map(0x9800, 0x9fff).ram(); + map(0xa000, 0xafff).rom().region("ic24", 0); + map(0xb000, 0xb003).mirror(0x3fc).rw(INS8255_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xb800, 0xb80f).mirror(0x3f0).rw(R6522_TAG, FUNC(via6522_device::read), FUNC(via6522_device::write)); + map(0xc000, 0xffff).rom().region(SY6502_TAG, 0); +} /*************************************************************************** INPUT PORTS diff --git a/src/mame/drivers/cbm2.cpp b/src/mame/drivers/cbm2.cpp index 9b228d76d37..b8a61292605 100644 --- a/src/mame/drivers/cbm2.cpp +++ b/src/mame/drivers/cbm2.cpp @@ -1167,21 +1167,23 @@ void cbm2_state::cbm2_mem(address_map &map) // ADDRESS_MAP( ext_mem ) //------------------------------------------------- -ADDRESS_MAP_START(cbm2_state::ext_mem) - AM_RANGE(0x00000, 0xeffff) AM_READWRITE(ext_read, ext_write) - AM_RANGE(0xf0000, 0xf0fff) AM_MIRROR(0xf000) AM_ROM AM_REGION(EXT_I8088_TAG, 0) -ADDRESS_MAP_END +void cbm2_state::ext_mem(address_map &map) +{ + map(0x00000, 0xeffff).r(this, FUNC(cbm2_state::ext_read)).w(this, FUNC(cbm2_state::ext_write)); + map(0xf0000, 0xf0fff).mirror(0xf000).rom().region(EXT_I8088_TAG, 0); +} //------------------------------------------------- // ADDRESS_MAP( ext_io ) //------------------------------------------------- -ADDRESS_MAP_START(cbm2_state::ext_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x0000, 0x0001) AM_MIRROR(0x1e) AM_DEVREADWRITE(EXT_I8259A_TAG, pic8259_device, read, write) - AM_RANGE(0x0020, 0x0027) AM_MIRROR(0x18) AM_DEVREADWRITE(EXT_MOS6525_TAG, tpi6525_device, read, write) -ADDRESS_MAP_END +void cbm2_state::ext_io(address_map &map) +{ + map.global_mask(0xff); + map(0x0000, 0x0001).mirror(0x1e).rw(EXT_I8259A_TAG, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x0020, 0x0027).mirror(0x18).rw(EXT_MOS6525_TAG, FUNC(tpi6525_device::read), FUNC(tpi6525_device::write)); +} //------------------------------------------------- diff --git a/src/mame/drivers/deco32.cpp b/src/mame/drivers/deco32.cpp index e325f51e388..38a6ff5bd0b 100644 --- a/src/mame/drivers/deco32.cpp +++ b/src/mame/drivers/deco32.cpp @@ -415,7 +415,7 @@ void captaven_state::captaven_map(address_map &map) void fghthist_state::fghthist_map(address_map &map) { map.unmap_value_high(); -// AM_RANGE(0x000000, 0x001fff) AM_ROM AM_WRITE(pf1_data_w) // wtf?? +// map(0x000000, 0x001fff) AM_ROM AM_WRITE(pf1_data_w) // wtf?? map(0x000000, 0x0fffff).rom(); map(0x100000, 0x11ffff).ram(); map(0x120020, 0x120021).r(this, FUNC(fghthist_state::fghthist_in0_r)); @@ -478,7 +478,7 @@ void dragngun_state::dragngun_map(address_map &map) map(0x0000000, 0x00fffff).rom(); map(0x0100000, 0x011ffff).ram(); map(0x0120000, 0x0127fff).rw(this, FUNC(dragngun_state::ioprot_r), FUNC(dragngun_state::ioprot_w)).umask32(0x0000ffff); -// AM_RANGE(0x01204c0, 0x01204c3) AM_WRITE(sound_w) +// map(0x01204c0, 0x01204c3) AM_WRITE(sound_w) map(0x0128000, 0x012800f).m(m_deco_irq, FUNC(deco_irq_device::map)).umask32(0x000000ff); map(0x0130000, 0x0131fff).ram().w(this, FUNC(dragngun_state::buffered_palette_w)).share("paletteram"); map(0x0138000, 0x0138003).noprw(); /* Palette dma complete in bit 0x8? ack? return 0 else tight loop */ @@ -654,10 +654,11 @@ void deco32_state::h6280_sound_map(address_map &map) map(0x1ff400, 0x1ff403).w("audiocpu", FUNC(h6280_device::irq_status_w)); } -ADDRESS_MAP_START(deco32_state::h6280_sound_custom_latch_map) - AM_IMPORT_FROM(h6280_sound_map) - AM_RANGE(0x140000, 0x140000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void deco32_state::h6280_sound_custom_latch_map(address_map &map) +{ + h6280_sound_map(map); + map(0x140000, 0x140000).r("soundlatch", FUNC(generic_latch_8_device::read)); +} // Z80 based sound void deco32_state::z80_sound_map(address_map &map) @@ -670,9 +671,10 @@ void deco32_state::z80_sound_map(address_map &map) map(0xd000, 0xd000).r(m_ioprot, FUNC(deco_146_base_device::soundlatch_r)); } -ADDRESS_MAP_START(deco32_state::z80_sound_io) - AM_RANGE(0x0000, 0xffff) AM_ROM AM_REGION("audiocpu", 0) -ADDRESS_MAP_END +void deco32_state::z80_sound_io(address_map &map) +{ + map(0x0000, 0xffff).rom().region("audiocpu", 0); +} // lockload needs hi bits of OKI2 bankswitching void dragngun_state::lockload_sound_map(address_map &map) diff --git a/src/mame/drivers/konblands.cpp b/src/mame/drivers/konblands.cpp index 1f7fcf7b25a..657cc362699 100644 --- a/src/mame/drivers/konblands.cpp +++ b/src/mame/drivers/konblands.cpp @@ -147,40 +147,42 @@ WRITE8_MEMBER(konblands_state::firq_enable_w) m_firq_enable = bool(BIT(data,0)); } -ADDRESS_MAP_START(konblands_state::konblands_map) - AM_RANGE(0x0000, 0x0000) AM_READ_PORT("DSW1") AM_WRITENOP // sn latch - AM_RANGE(0x0800, 0x0800) AM_READ_PORT("DSW2") AM_WRITE(ldp_w) - AM_RANGE(0x1000, 0x1000) AM_READ(ldp_r) AM_WRITENOP // led - AM_RANGE(0x1001, 0x1001) AM_WRITENOP // coin counter 2 - AM_RANGE(0x1002, 0x1002) AM_WRITENOP // coin counter 1 - AM_RANGE(0x1003, 0x1003) AM_WRITENOP // enable overlay transparency - AM_RANGE(0x1004, 0x1004) AM_WRITE(nmi_enable_w) - AM_RANGE(0x1005, 0x1005) AM_WRITENOP // enable audio - AM_RANGE(0x1006, 0x1006) AM_WRITE(irq_enable_w) - AM_RANGE(0x1007, 0x1007) AM_WRITE(firq_enable_w) - AM_RANGE(0x1800, 0x1800) AM_READ_PORT("INPUTS") AM_DEVWRITE("sn", sn76496_device, write) - AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x4800, 0x4bff) AM_RAM - AM_RANGE(0x5800, 0x5800) AM_WRITENOP // watchdog - AM_RANGE(0x8000, 0x9fff) AM_READNOP // diagnostic ROM? - AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("ipl",0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(konblands_state::konblandsh_map) - AM_RANGE(0x0000, 0x0000) AM_READ(ldp_r) - AM_RANGE(0x0400, 0x0400) AM_WRITE(ldp_w) - AM_RANGE(0x0802, 0x0802) AM_WRITENOP // led - AM_RANGE(0x0803, 0x0803) AM_WRITENOP // enable overlay transparency - AM_RANGE(0x0806, 0x0806) AM_READNOP AM_WRITE(irq_enable_w) - AM_RANGE(0x0807, 0x0807) AM_READNOP AM_WRITE(firq_enable_w) - AM_RANGE(0x0c00, 0x0c00) AM_READ_PORT("INPUTS") - AM_RANGE(0x1000, 0x1000) AM_READ_PORT("DSW1") - AM_RANGE(0x1400, 0x1400) AM_DEVWRITE("sn", sn76496_device, write) - AM_RANGE(0x1800, 0x1800) AM_WRITENOP // sn latch - AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x2800, 0x2fff) AM_RAM - AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("ipl",0) -ADDRESS_MAP_END +void konblands_state::konblands_map(address_map &map) +{ + map(0x0000, 0x0000).portr("DSW1").nopw(); // sn latch + map(0x0800, 0x0800).portr("DSW2").w(this, FUNC(konblands_state::ldp_w)); + map(0x1000, 0x1000).nopw().r(this, FUNC(konblands_state::ldp_r)); // led + map(0x1001, 0x1001).nopw(); // coin counter 2 + map(0x1002, 0x1002).nopw(); // coin counter 1 + map(0x1003, 0x1003).nopw(); // enable overlay transparency + map(0x1004, 0x1004).w(this, FUNC(konblands_state::nmi_enable_w)); + map(0x1005, 0x1005).nopw(); // enable audio + map(0x1006, 0x1006).w(this, FUNC(konblands_state::irq_enable_w)); + map(0x1007, 0x1007).w(this, FUNC(konblands_state::firq_enable_w)); + map(0x1800, 0x1800).portr("INPUTS").w("sn", FUNC(sn76496_device::write)); + map(0x4000, 0x47ff).ram().share("vram"); + map(0x4800, 0x4bff).ram(); + map(0x5800, 0x5800).nopw(); // watchdog + map(0x8000, 0x9fff).nopr(); // diagnostic ROM? + map(0xc000, 0xffff).rom().region("ipl",0); +} + +void konblands_state::konblandsh_map(address_map &map) +{ + map(0x0000, 0x0000).r(this, FUNC(konblands_state::ldp_r)); + map(0x0400, 0x0400).w(this, FUNC(konblands_state::ldp_w)); + map(0x0802, 0x0802).nopw(); // led + map(0x0803, 0x0803).nopw(); // enable overlay transparency + map(0x0806, 0x0806).nopr().w(this, FUNC(konblands_state::irq_enable_w)); + map(0x0807, 0x0807).nopr().w(this, FUNC(konblands_state::firq_enable_w)); + map(0x0c00, 0x0c00).portr("INPUTS"); + map(0x1000, 0x1000).portr("DSW1"); + map(0x1400, 0x1400).w("sn", FUNC(sn76496_device::write)); + map(0x1800, 0x1800).nopw(); // sn latch + map(0x2000, 0x27ff).ram().share("vram"); + map(0x2800, 0x2fff).ram(); + map(0xc000, 0xffff).rom().region("ipl",0); +} static INPUT_PORTS_START( konblands ) PORT_START("DSW1") diff --git a/src/mame/drivers/osborne1.cpp b/src/mame/drivers/osborne1.cpp index 4916929a3f2..1e98a1af636 100644 --- a/src/mame/drivers/osborne1.cpp +++ b/src/mame/drivers/osborne1.cpp @@ -124,15 +124,16 @@ void osborne1_state::osborne1_io(address_map &map) map(0x00, 0x03).mirror(0xfc).w(this, FUNC(osborne1_state::bankswitch_w)); } -ADDRESS_MAP_START(osborne1_state::osborne1nv_io) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) +void osborne1_state::osborne1nv_io(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); - AM_RANGE( 0x00, 0x03 ) AM_WRITE(bankswitch_w) - AM_RANGE( 0x04, 0x04 ) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) - AM_RANGE( 0x05, 0x05 ) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) + map( 0x00, 0x03 ).w(this, FUNC(osborne1_state::bankswitch_w)); + map( 0x04, 0x04 ).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); + map( 0x05, 0x05 ).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); // seems to be something at 0x06 as well, but no idea what - BIOS writes 0x07 on boot -ADDRESS_MAP_END +} static INPUT_PORTS_START( osborne1 ) diff --git a/src/mame/drivers/qtsbc.cpp b/src/mame/drivers/qtsbc.cpp index be99a6c3093..d149b7ff195 100644 --- a/src/mame/drivers/qtsbc.cpp +++ b/src/mame/drivers/qtsbc.cpp @@ -57,10 +57,10 @@ public: void io_map(address_map &map); void mem_map(address_map &map); private: - DECLARE_READ8_MEMBER(memory_read); - DECLARE_WRITE8_MEMBER(memory_write); - DECLARE_READ8_MEMBER(io_read); - DECLARE_WRITE8_MEMBER(io_write); + DECLARE_READ8_MEMBER(memory_r); + DECLARE_WRITE8_MEMBER(memory_w); + DECLARE_READ8_MEMBER(io_r); + DECLARE_WRITE8_MEMBER(io_w); virtual void machine_start() override; virtual void machine_reset() override; @@ -76,7 +76,7 @@ private: }; -READ8_MEMBER(qtsbc_state::memory_read) +READ8_MEMBER(qtsbc_state::memory_r) { ioport_value jumpers = m_jumpers->read(); ioport_value dsw3 = m_dsw[2]->read(); @@ -107,7 +107,7 @@ READ8_MEMBER(qtsbc_state::memory_read) } } -WRITE8_MEMBER(qtsbc_state::memory_write) +WRITE8_MEMBER(qtsbc_state::memory_w) { #ifdef NOT_IMPLEMENTED_CURRENTLY if ((offset & 0xfc00) >> 10 == m_dsw[1]->read()) @@ -123,7 +123,7 @@ WRITE8_MEMBER(qtsbc_state::memory_write) } } -READ8_MEMBER(qtsbc_state::io_read) +READ8_MEMBER(qtsbc_state::io_r) { if ((offset & 0xf8) >> 3 == (m_dsw[0]->read() & 0x1f)) { @@ -164,7 +164,7 @@ READ8_MEMBER(qtsbc_state::io_read) } } -WRITE8_MEMBER(qtsbc_state::io_write) +WRITE8_MEMBER(qtsbc_state::io_w) { if ((offset & 0x00f8) >> 3 == (m_dsw[0]->read() & 0x1f)) { @@ -200,15 +200,17 @@ WRITE8_MEMBER(qtsbc_state::io_write) } } -ADDRESS_MAP_START(qtsbc_state::mem_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xffff) AM_RAM AM_SHARE("ram") - AM_RANGE(0x0000, 0xffff) AM_READWRITE(memory_read, memory_write) -ADDRESS_MAP_END +void qtsbc_state::mem_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).ram().share("ram"); + map(0x0000, 0xffff).r(this, FUNC(qtsbc_state::memory_r)).w(this, FUNC(qtsbc_state::memory_w)); +} -ADDRESS_MAP_START(qtsbc_state::io_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0xffff) AM_READWRITE(io_read, io_write) +void qtsbc_state::io_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0xffff).r(this, FUNC(qtsbc_state::io_r)).w(this, FUNC(qtsbc_state::io_w)); ADDRESS_MAP_END /* Input ports */ -- cgit v1.2.3