summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/atari400.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/atari400.cpp')
-rw-r--r--src/mame/drivers/atari400.cpp175
1 files changed, 91 insertions, 84 deletions
diff --git a/src/mame/drivers/atari400.cpp b/src/mame/drivers/atari400.cpp
index 94d749b58b8..d179d64c704 100644
--- a/src/mame/drivers/atari400.cpp
+++ b/src/mame/drivers/atari400.cpp
@@ -558,91 +558,98 @@ WRITE8_MEMBER(a400_state::xegs_low_w)
**************************************************************/
-ADDRESS_MAP_START(a400_state::a400_mem)
- AM_RANGE(0x0000, 0xbfff) AM_NOP // RAM installed at runtime
- AM_RANGE(0xc000, 0xcfff) AM_ROM
- AM_RANGE(0xd000, 0xd0ff) AM_DEVREADWRITE("gtia", gtia_device, read, write)
- AM_RANGE(0xd100, 0xd1ff) AM_NOP
- AM_RANGE(0xd200, 0xd2ff) AM_DEVREADWRITE("pokey", pokey_device, read, write)
- AM_RANGE(0xd300, 0xd3ff) AM_DEVREADWRITE("pia", pia6821_device, read_alt, write_alt)
- AM_RANGE(0xd400, 0xd4ff) AM_DEVREADWRITE("antic", antic_device, read, write)
- AM_RANGE(0xd500, 0xd7ff) AM_NOP
- AM_RANGE(0xd800, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(a400_state::a600xl_mem)
- AM_RANGE(0x0000, 0x3fff) AM_RAM
- AM_RANGE(0x5000, 0x57ff) AM_READ(a600xl_low_r) // self test or NOP
- AM_RANGE(0xa000, 0xbfff) AM_ROM // BASIC
- AM_RANGE(0xc000, 0xcfff) AM_ROM // OS
- AM_RANGE(0xd000, 0xd0ff) AM_DEVREADWRITE("gtia", gtia_device, read, write)
- AM_RANGE(0xd100, 0xd1ff) AM_NOP
- AM_RANGE(0xd200, 0xd2ff) AM_DEVREADWRITE("pokey", pokey_device, read, write)
- AM_RANGE(0xd300, 0xd3ff) AM_DEVREADWRITE("pia", pia6821_device, read_alt, write_alt)
- AM_RANGE(0xd400, 0xd4ff) AM_DEVREADWRITE("antic", antic_device, read, write)
- AM_RANGE(0xd500, 0xd7ff) AM_NOP
- AM_RANGE(0xd800, 0xffff) AM_ROM // OS
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(a400_state::a1200xl_mem)
- AM_RANGE(0x0000, 0xcfff) AM_READWRITE(a1200xl_low_r, xegs_low_w)
- AM_RANGE(0xd000, 0xd0ff) AM_DEVREADWRITE("gtia", gtia_device, read, write)
- AM_RANGE(0xd100, 0xd1ff) AM_NOP
- AM_RANGE(0xd200, 0xd2ff) AM_DEVREADWRITE("pokey", pokey_device, read, write)
- AM_RANGE(0xd300, 0xd3ff) AM_DEVREADWRITE("pia", pia6821_device, read_alt, write_alt)
- AM_RANGE(0xd400, 0xd4ff) AM_DEVREADWRITE("antic", antic_device, read, write)
- AM_RANGE(0xd500, 0xd7ff) AM_NOP
- AM_RANGE(0xd800, 0xffff) AM_READWRITE(a800xl_high_r, a800xl_high_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(a400_state::a800xl_mem)
- AM_RANGE(0x0000, 0xcfff) AM_READWRITE(a800xl_low_r, a800xl_low_w)
- AM_RANGE(0xd000, 0xd0ff) AM_DEVREADWRITE("gtia", gtia_device, read, write)
- AM_RANGE(0xd100, 0xd1ff) AM_NOP
- AM_RANGE(0xd200, 0xd2ff) AM_DEVREADWRITE("pokey", pokey_device, read, write)
- AM_RANGE(0xd300, 0xd3ff) AM_DEVREADWRITE("pia", pia6821_device, read_alt, write_alt)
- AM_RANGE(0xd400, 0xd4ff) AM_DEVREADWRITE("antic", antic_device, read, write)
- AM_RANGE(0xd500, 0xd7ff) AM_NOP
- AM_RANGE(0xd800, 0xffff) AM_READWRITE(a800xl_high_r, a800xl_high_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(a400_state::a130xe_mem)
- AM_RANGE(0x0000, 0xcfff) AM_READWRITE(a130xe_low_r, a800xl_low_w)
- AM_RANGE(0xd000, 0xd0ff) AM_DEVREADWRITE("gtia", gtia_device, read, write)
- AM_RANGE(0xd100, 0xd1ff) AM_NOP
- AM_RANGE(0xd200, 0xd2ff) AM_DEVREADWRITE("pokey", pokey_device, read, write)
- AM_RANGE(0xd300, 0xd3ff) AM_DEVREADWRITE("pia", pia6821_device, read_alt, write_alt)
- AM_RANGE(0xd400, 0xd4ff) AM_DEVREADWRITE("antic", antic_device, read, write)
- AM_RANGE(0xd500, 0xd7ff) AM_NOP
- AM_RANGE(0xd800, 0xffff) AM_READWRITE(a800xl_high_r, a800xl_high_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(a400_state::xegs_mem)
- AM_RANGE(0x0000, 0xcfff) AM_READWRITE(xegs_low_r, xegs_low_w)
- AM_RANGE(0xd000, 0xd0ff) AM_DEVREADWRITE("gtia", gtia_device, read, write)
- AM_RANGE(0xd100, 0xd1ff) AM_NOP
- AM_RANGE(0xd200, 0xd2ff) AM_DEVREADWRITE("pokey", pokey_device, read, write)
- AM_RANGE(0xd300, 0xd3ff) AM_DEVREADWRITE("pia", pia6821_device, read_alt, write_alt)
- AM_RANGE(0xd400, 0xd4ff) AM_DEVREADWRITE("antic", antic_device, read, write)
- AM_RANGE(0xd500, 0xd7ff) AM_NOP
- AM_RANGE(0xd800, 0xffff) AM_READWRITE(a800xl_high_r, a800xl_high_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(a400_state::a5200_mem)
- AM_RANGE(0x0000, 0x3fff) AM_RAM
- AM_RANGE(0x4000, 0xbfff) AM_NOP // ROM installed at machine start
- AM_RANGE(0xc000, 0xcfff) AM_DEVREADWRITE("gtia", gtia_device, read, write)
- AM_RANGE(0xd400, 0xdfff) AM_DEVREADWRITE("antic", antic_device, read, write)
+void a400_state::a400_mem(address_map &map)
+{
+ map(0x0000, 0xbfff).noprw(); // RAM installed at runtime
+ map(0xc000, 0xcfff).rom();
+ map(0xd000, 0xd0ff).rw(m_gtia, FUNC(gtia_device::read), FUNC(gtia_device::write));
+ map(0xd100, 0xd1ff).noprw();
+ map(0xd200, 0xd2ff).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0xd300, 0xd3ff).rw(m_pia, FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xd400, 0xd4ff).rw(m_antic, FUNC(antic_device::read), FUNC(antic_device::write));
+ map(0xd500, 0xd7ff).noprw();
+ map(0xd800, 0xffff).rom();
+}
+
+
+void a400_state::a600xl_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).ram();
+ map(0x5000, 0x57ff).r(this, FUNC(a400_state::a600xl_low_r)); // self test or NOP
+ map(0xa000, 0xbfff).rom(); // BASIC
+ map(0xc000, 0xcfff).rom(); // OS
+ map(0xd000, 0xd0ff).rw(m_gtia, FUNC(gtia_device::read), FUNC(gtia_device::write));
+ map(0xd100, 0xd1ff).noprw();
+ map(0xd200, 0xd2ff).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0xd300, 0xd3ff).rw(m_pia, FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xd400, 0xd4ff).rw(m_antic, FUNC(antic_device::read), FUNC(antic_device::write));
+ map(0xd500, 0xd7ff).noprw();
+ map(0xd800, 0xffff).rom(); // OS
+}
+
+
+void a400_state::a1200xl_mem(address_map &map)
+{
+ map(0x0000, 0xcfff).rw(this, FUNC(a400_state::a1200xl_low_r), FUNC(a400_state::xegs_low_w));
+ map(0xd000, 0xd0ff).rw(m_gtia, FUNC(gtia_device::read), FUNC(gtia_device::write));
+ map(0xd100, 0xd1ff).noprw();
+ map(0xd200, 0xd2ff).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0xd300, 0xd3ff).rw(m_pia, FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xd400, 0xd4ff).rw(m_antic, FUNC(antic_device::read), FUNC(antic_device::write));
+ map(0xd500, 0xd7ff).noprw();
+ map(0xd800, 0xffff).rw(this, FUNC(a400_state::a800xl_high_r), FUNC(a400_state::a800xl_high_w));
+}
+
+
+void a400_state::a800xl_mem(address_map &map)
+{
+ map(0x0000, 0xcfff).rw(this, FUNC(a400_state::a800xl_low_r), FUNC(a400_state::a800xl_low_w));
+ map(0xd000, 0xd0ff).rw(m_gtia, FUNC(gtia_device::read), FUNC(gtia_device::write));
+ map(0xd100, 0xd1ff).noprw();
+ map(0xd200, 0xd2ff).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0xd300, 0xd3ff).rw(m_pia, FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xd400, 0xd4ff).rw(m_antic, FUNC(antic_device::read), FUNC(antic_device::write));
+ map(0xd500, 0xd7ff).noprw();
+ map(0xd800, 0xffff).rw(this, FUNC(a400_state::a800xl_high_r), FUNC(a400_state::a800xl_high_w));
+}
+
+
+void a400_state::a130xe_mem(address_map &map)
+{
+ map(0x0000, 0xcfff).rw(this, FUNC(a400_state::a130xe_low_r), FUNC(a400_state::a800xl_low_w));
+ map(0xd000, 0xd0ff).rw(m_gtia, FUNC(gtia_device::read), FUNC(gtia_device::write));
+ map(0xd100, 0xd1ff).noprw();
+ map(0xd200, 0xd2ff).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0xd300, 0xd3ff).rw(m_pia, FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xd400, 0xd4ff).rw(m_antic, FUNC(antic_device::read), FUNC(antic_device::write));
+ map(0xd500, 0xd7ff).noprw();
+ map(0xd800, 0xffff).rw(this, FUNC(a400_state::a800xl_high_r), FUNC(a400_state::a800xl_high_w));
+}
+
+
+void a400_state::xegs_mem(address_map &map)
+{
+ map(0x0000, 0xcfff).rw(this, FUNC(a400_state::xegs_low_r), FUNC(a400_state::xegs_low_w));
+ map(0xd000, 0xd0ff).rw(m_gtia, FUNC(gtia_device::read), FUNC(gtia_device::write));
+ map(0xd100, 0xd1ff).noprw();
+ map(0xd200, 0xd2ff).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0xd300, 0xd3ff).rw(m_pia, FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
+ map(0xd400, 0xd4ff).rw(m_antic, FUNC(antic_device::read), FUNC(antic_device::write));
+ map(0xd500, 0xd7ff).noprw();
+ map(0xd800, 0xffff).rw(this, FUNC(a400_state::a800xl_high_r), FUNC(a400_state::a800xl_high_w));
+}
+
+
+void a400_state::a5200_mem(address_map &map)
+{
+ map(0x0000, 0x3fff).ram();
+ map(0x4000, 0xbfff).noprw(); // ROM installed at machine start
+ map(0xc000, 0xcfff).rw(m_gtia, FUNC(gtia_device::read), FUNC(gtia_device::write));
+ map(0xd400, 0xdfff).rw(m_antic, FUNC(antic_device::read), FUNC(antic_device::write));
// 0xe000-0xe7ff - Expansion?
- AM_RANGE(0xe800, 0xefff) AM_DEVREADWRITE("pokey", pokey_device, read, write)
- AM_RANGE(0xf000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+ map(0xe800, 0xefff).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
+ map(0xf000, 0xffff).rom();
+}