summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/mmm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/mmm.cpp')
-rw-r--r--src/mame/drivers/mmm.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/mame/drivers/mmm.cpp b/src/mame/drivers/mmm.cpp
index e0cdb2121e6..8028066b8df 100644
--- a/src/mame/drivers/mmm.cpp
+++ b/src/mame/drivers/mmm.cpp
@@ -19,6 +19,7 @@ public:
mmm_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
+ m_ctc(*this, "ctc"),
m_inputs(*this, "IN%u", 0)
{ }
@@ -27,8 +28,11 @@ public:
DECLARE_WRITE8_MEMBER(ay_porta_w);
void mmm(machine_config &config);
+ void io_map(address_map &map);
+ void mem_map(address_map &map);
private:
required_device<cpu_device> m_maincpu;
+ required_device<z80ctc_device> m_ctc;
required_ioport_array<8> m_inputs;
u8 m_strobe;
};
@@ -53,18 +57,18 @@ WRITE8_MEMBER(mmm_state::ay_porta_w)
logerror("Writing %02X to AY-3-8910 port A\n", data);
}
-static ADDRESS_MAP_START( mem_map, AS_PROGRAM, 8, mmm_state )
+ADDRESS_MAP_START(mmm_state::mem_map)
AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x4000, 0x40ff) AM_RAM
ADDRESS_MAP_END
-static ADDRESS_MAP_START( io_map, AS_IO, 8, mmm_state )
+ADDRESS_MAP_START(mmm_state::io_map)
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(strobe_w)
AM_RANGE(0x03, 0x03) AM_DEVWRITE("aysnd", ay8910_device, address_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE("aysnd", ay8910_device, data_w)
AM_RANGE(0x05, 0x05) AM_DEVREAD("aysnd", ay8910_device, data_r)
- AM_RANGE(0x06, 0x06) AM_SELECT(0x30) AM_DEVREADWRITE_MOD("ctc", z80ctc_device, read, write, rshift<4>)
+ ;map(0x06, 0x06).select(0x30).lrw8("ctc_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_ctc->read(space, offset >> 4, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_ctc->write(space, offset >> 4, data, mem_mask); });
AM_RANGE(0x07, 0x07) AM_READ(inputs_r)
ADDRESS_MAP_END