diff options
Diffstat (limited to 'src/mame/drivers/bwidow.cpp')
-rw-r--r-- | src/mame/drivers/bwidow.cpp | 121 |
1 files changed, 62 insertions, 59 deletions
diff --git a/src/mame/drivers/bwidow.cpp b/src/mame/drivers/bwidow.cpp index bdae3bcabba..783972ebef7 100644 --- a/src/mame/drivers/bwidow.cpp +++ b/src/mame/drivers/bwidow.cpp @@ -375,65 +375,68 @@ WRITE8_MEMBER(bwidow_state::irq_ack_w) * *************************************/ -ADDRESS_MAP_START(bwidow_state::bwidow_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0x2000) - AM_RANGE(0x2800, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x67ff) AM_DEVREADWRITE("pokey1", pokey_device, read, write) - AM_RANGE(0x6800, 0x6fff) AM_DEVREADWRITE("pokey2", pokey_device, read, write) - AM_RANGE(0x7000, 0x7000) AM_DEVREAD("earom", atari_vg_earom_device, read) - AM_RANGE(0x7800, 0x7800) AM_READ_PORT("IN0") - AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN3") - AM_RANGE(0x8800, 0x8800) AM_READ_PORT("IN4") - AM_RANGE(0x8800, 0x8800) AM_WRITE(bwidow_misc_w) /* coin counters, leds */ - AM_RANGE(0x8840, 0x8840) AM_DEVWRITE("avg", avg_device, go_w) - AM_RANGE(0x8880, 0x8880) AM_DEVWRITE("avg", avg_device, reset_w) - AM_RANGE(0x88c0, 0x88c0) AM_WRITE(irq_ack_w) /* interrupt acknowledge */ - AM_RANGE(0x8900, 0x8900) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w) - AM_RANGE(0x8940, 0x897f) AM_DEVWRITE("earom", atari_vg_earom_device, write) - AM_RANGE(0x8980, 0x89ed) AM_WRITENOP /* watchdog clear */ - AM_RANGE(0x9000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(bwidow_state::bwidowp_map) - AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x080f) AM_DEVREADWRITE("pokey1", pokey_device, read, write) - AM_RANGE(0x0810, 0x081f) AM_DEVREADWRITE("pokey2", pokey_device, read, write) - AM_RANGE(0x1000, 0x1000) AM_READ(bwidowp_in_r) - AM_RANGE(0x1800, 0x1800) AM_READ_PORT("IN0") - AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("avg", avg_device, go_w) - AM_RANGE(0x2800, 0x2800) AM_DEVWRITE("avg", avg_device, reset_w) - AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x3800, 0x3800) AM_WRITE(bwidow_misc_w) /* coin counters, leds */ - AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0x4000) - AM_RANGE(0x4800, 0x6fff) AM_ROM - AM_RANGE(0x6000, 0x6000) AM_WRITE(irq_ack_w) /* interrupt acknowledge */ - AM_RANGE(0x8000, 0x803f) AM_DEVWRITE("earom", atari_vg_earom_device, write) - AM_RANGE(0x8800, 0x8800) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w) - AM_RANGE(0x9000, 0x9000) AM_DEVREAD("earom", atari_vg_earom_device, read) - AM_RANGE(0x9800, 0x9800) AM_WRITENOP /* ? written once at startup */ - AM_RANGE(0xa000, 0xffff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(bwidow_state::spacduel_map) - AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x0800, 0x0800) AM_READ_PORT("IN0") - AM_RANGE(0x0900, 0x0907) AM_READ(spacduel_IN3_r) /* IN1 */ - AM_RANGE(0x0905, 0x0906) AM_WRITENOP /* ignore? */ - AM_RANGE(0x0a00, 0x0a00) AM_DEVREAD("earom", atari_vg_earom_device, read) - AM_RANGE(0x0c00, 0x0c00) AM_WRITE(spacduel_coin_counter_w) /* coin out */ - AM_RANGE(0x0c80, 0x0c80) AM_DEVWRITE("avg", avg_device, go_w) - AM_RANGE(0x0d00, 0x0d00) AM_WRITENOP /* watchdog clear */ - AM_RANGE(0x0d80, 0x0d80) AM_DEVWRITE("avg", avg_device, reset_w) - AM_RANGE(0x0e00, 0x0e00) AM_WRITE(irq_ack_w) /* interrupt acknowledge */ - AM_RANGE(0x0e80, 0x0e80) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w) - AM_RANGE(0x0f00, 0x0f3f) AM_DEVWRITE("earom", atari_vg_earom_device, write) - AM_RANGE(0x1000, 0x10ff) AM_DEVREADWRITE("pokey1", pokey_device, read, write) - AM_RANGE(0x1400, 0x14ff) AM_DEVREADWRITE("pokey2", pokey_device, read, write) - AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("vectorram") AM_REGION("maincpu", 0x2000) - AM_RANGE(0x2800, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END +void bwidow_state::bwidow_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x2000, 0x27ff).ram().share("vectorram").region("maincpu", 0x2000); + map(0x2800, 0x5fff).rom(); + map(0x6000, 0x67ff).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x6800, 0x6fff).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x7000, 0x7000).r("earom", FUNC(atari_vg_earom_device::read)); + map(0x7800, 0x7800).portr("IN0"); + map(0x8000, 0x8000).portr("IN3"); + map(0x8800, 0x8800).portr("IN4"); + map(0x8800, 0x8800).w(this, FUNC(bwidow_state::bwidow_misc_w)); /* coin counters, leds */ + map(0x8840, 0x8840).w("avg", FUNC(avg_device::go_w)); + map(0x8880, 0x8880).w("avg", FUNC(avg_device::reset_w)); + map(0x88c0, 0x88c0).w(this, FUNC(bwidow_state::irq_ack_w)); /* interrupt acknowledge */ + map(0x8900, 0x8900).w("earom", FUNC(atari_vg_earom_device::ctrl_w)); + map(0x8940, 0x897f).w("earom", FUNC(atari_vg_earom_device::write)); + map(0x8980, 0x89ed).nopw(); /* watchdog clear */ + map(0x9000, 0xffff).rom(); +} + +void bwidow_state::bwidowp_map(address_map &map) +{ + map(0x0000, 0x07ff).ram(); + map(0x0800, 0x080f).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x0810, 0x081f).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x1000, 0x1000).r(this, FUNC(bwidow_state::bwidowp_in_r)); + map(0x1800, 0x1800).portr("IN0"); + map(0x2000, 0x2000).w("avg", FUNC(avg_device::go_w)); + map(0x2800, 0x2800).w("avg", FUNC(avg_device::reset_w)); + map(0x3000, 0x3000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x3800, 0x3800).w(this, FUNC(bwidow_state::bwidow_misc_w)); /* coin counters, leds */ + map(0x4000, 0x47ff).ram().share("vectorram").region("maincpu", 0x4000); + map(0x4800, 0x6fff).rom(); + map(0x6000, 0x6000).w(this, FUNC(bwidow_state::irq_ack_w)); /* interrupt acknowledge */ + map(0x8000, 0x803f).w("earom", FUNC(atari_vg_earom_device::write)); + map(0x8800, 0x8800).w("earom", FUNC(atari_vg_earom_device::ctrl_w)); + map(0x9000, 0x9000).r("earom", FUNC(atari_vg_earom_device::read)); + map(0x9800, 0x9800).nopw(); /* ? written once at startup */ + map(0xa000, 0xffff).rom(); +} + +void bwidow_state::spacduel_map(address_map &map) +{ + map(0x0000, 0x03ff).ram(); + map(0x0800, 0x0800).portr("IN0"); + map(0x0900, 0x0907).r(this, FUNC(bwidow_state::spacduel_IN3_r)); /* IN1 */ + map(0x0905, 0x0906).nopw(); /* ignore? */ + map(0x0a00, 0x0a00).r("earom", FUNC(atari_vg_earom_device::read)); + map(0x0c00, 0x0c00).w(this, FUNC(bwidow_state::spacduel_coin_counter_w)); /* coin out */ + map(0x0c80, 0x0c80).w("avg", FUNC(avg_device::go_w)); + map(0x0d00, 0x0d00).nopw(); /* watchdog clear */ + map(0x0d80, 0x0d80).w("avg", FUNC(avg_device::reset_w)); + map(0x0e00, 0x0e00).w(this, FUNC(bwidow_state::irq_ack_w)); /* interrupt acknowledge */ + map(0x0e80, 0x0e80).w("earom", FUNC(atari_vg_earom_device::ctrl_w)); + map(0x0f00, 0x0f3f).w("earom", FUNC(atari_vg_earom_device::write)); + map(0x1000, 0x10ff).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x1400, 0x14ff).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)); + map(0x2000, 0x27ff).ram().share("vectorram").region("maincpu", 0x2000); + map(0x2800, 0x3fff).rom(); + map(0x4000, 0xffff).rom(); +} |