diff options
Diffstat (limited to 'src/mame/drivers/fidel68k.cpp')
-rw-r--r-- | src/mame/drivers/fidel68k.cpp | 158 |
1 files changed, 83 insertions, 75 deletions
diff --git a/src/mame/drivers/fidel68k.cpp b/src/mame/drivers/fidel68k.cpp index 324523b9f20..5e7ffbb40ac 100644 --- a/src/mame/drivers/fidel68k.cpp +++ b/src/mame/drivers/fidel68k.cpp @@ -392,47 +392,52 @@ WRITE8_MEMBER(fidel68k_state::eag_mux_w) // Excel 68000 -ADDRESS_MAP_START(fidel68k_state::fex68k_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x000000, 0x00000f) AM_MIRROR(0x00fff0) AM_WRITE8(eag_leds_w, 0x00ff) - AM_RANGE(0x000000, 0x00000f) AM_MIRROR(0x00fff0) AM_WRITE8(eag_7seg_w, 0xff00) - AM_RANGE(0x044000, 0x047fff) AM_RAM - AM_RANGE(0x100000, 0x10000f) AM_MIRROR(0x03fff0) AM_READ8(eag_input1_r, 0x00ff) - AM_RANGE(0x140000, 0x14000f) AM_MIRROR(0x03fff0) AM_WRITE8(fex68k_mux_w, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(fidel68k_state::fex68km2_map) - AM_IMPORT_FROM( fex68k_map ) - AM_RANGE(0x200000, 0x21ffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(fidel68k_state::fex68km3_map) - AM_IMPORT_FROM( fex68k_map ) - AM_RANGE(0x200000, 0x20ffff) AM_RAM -ADDRESS_MAP_END +void fidel68k_state::fex68k_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); + map(0x000000, 0x00000f).mirror(0x00fff0).w(this, FUNC(fidel68k_state::eag_leds_w)).umask16(0x00ff); + map(0x000000, 0x00000f).mirror(0x00fff0).w(this, FUNC(fidel68k_state::eag_7seg_w)).umask16(0xff00); + map(0x044000, 0x047fff).ram(); + map(0x100000, 0x10000f).mirror(0x03fff0).r(this, FUNC(fidel68k_state::eag_input1_r)).umask16(0x00ff); + map(0x140000, 0x14000f).mirror(0x03fff0).w(this, FUNC(fidel68k_state::fex68k_mux_w)).umask16(0x00ff); +} + +void fidel68k_state::fex68km2_map(address_map &map) +{ + fex68k_map(map); + map(0x200000, 0x21ffff).ram(); +} + +void fidel68k_state::fex68km3_map(address_map &map) +{ + fex68k_map(map); + map(0x200000, 0x20ffff).ram(); +} // Designer Master -ADDRESS_MAP_START(fidel68k_state::fdes2265_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x000000, 0x00000f) AM_WRITE8(fdes68k_lcd_w, 0x00ff) - AM_RANGE(0x044000, 0x047fff) AM_RAM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x140000, 0x14000f) AM_READ8(fdes68k_input_r, 0xff00) - AM_RANGE(0x140000, 0x14000f) AM_WRITE8(fdes68k_control_w, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(fidel68k_state::fdes2325_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x100000, 0x10000f) AM_WRITE8(fdes68k_lcd_w, 0x00ff00ff) - AM_RANGE(0x140000, 0x14000f) AM_WRITE8(fdes68k_control_w, 0x00ff00ff) - AM_RANGE(0x180000, 0x18000f) AM_READ8(fdes68k_input_r, 0xff00ff00) - AM_RANGE(0x300000, 0x37ffff) AM_RAM - AM_RANGE(0x500000, 0x507fff) AM_RAM -ADDRESS_MAP_END +void fidel68k_state::fdes2265_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x00ffff).rom(); + map(0x000000, 0x00000f).w(this, FUNC(fidel68k_state::fdes68k_lcd_w)).umask16(0x00ff); + map(0x044000, 0x047fff).ram(); + map(0x100000, 0x10ffff).ram(); + map(0x140000, 0x14000f).r(this, FUNC(fidel68k_state::fdes68k_input_r)).umask16(0xff00); + map(0x140000, 0x14000f).w(this, FUNC(fidel68k_state::fdes68k_control_w)).umask16(0x00ff); +} + +void fidel68k_state::fdes2325_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x00ffff).rom(); + map(0x100000, 0x10000f).w(this, FUNC(fidel68k_state::fdes68k_lcd_w)).umask32(0x00ff00ff); + map(0x140000, 0x14000f).w(this, FUNC(fidel68k_state::fdes68k_control_w)).umask32(0x00ff00ff); + map(0x180000, 0x18000f).r(this, FUNC(fidel68k_state::fdes68k_input_r)).umask32(0xff00ff00); + map(0x300000, 0x37ffff).ram(); + map(0x500000, 0x507fff).ram(); +} // EAG @@ -443,44 +448,47 @@ DRIVER_INIT_MEMBER(fidel68k_state, eag) m_maincpu->space(AS_PROGRAM).install_ram(0x200000, 0x200000 + m_ram->size() - 1, m_ram->pointer()); } -ADDRESS_MAP_START(fidel68k_state::eag_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x104000, 0x107fff) AM_RAM - AM_RANGE(0x300000, 0x30000f) AM_MIRROR(0x000010) AM_WRITE8(eag_7seg_w, 0xff00) AM_READNOP - AM_RANGE(0x300000, 0x30000f) AM_MIRROR(0x000010) AM_READWRITE8(eag_input1_r, eag_leds_w, 0x00ff) - AM_RANGE(0x400000, 0x407fff) AM_READ8(cartridge_r, 0xff00) - AM_RANGE(0x400000, 0x400001) AM_WRITE8(eag_mux_w, 0x00ff) - AM_RANGE(0x400002, 0x400007) AM_WRITENOP // ? - AM_RANGE(0x604000, 0x607fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x700002, 0x700003) AM_READ8(eag_input2_r, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(fidel68k_state::eagv7_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x104000, 0x107fff) AM_RAM - AM_RANGE(0x200000, 0x2fffff) AM_RAM - AM_RANGE(0x300000, 0x30000f) AM_MIRROR(0x000010) AM_WRITE8(eag_7seg_w, 0xff00ff00) AM_READNOP - AM_RANGE(0x300000, 0x30000f) AM_MIRROR(0x000010) AM_READWRITE8(eag_input1_r, eag_leds_w, 0x00ff00ff) - AM_RANGE(0x400000, 0x407fff) AM_READ8(cartridge_r, 0xff00ff00) - AM_RANGE(0x400000, 0x400003) AM_WRITE8(eag_mux_w, 0x00ff0000) - AM_RANGE(0x400004, 0x400007) AM_WRITENOP // ? - AM_RANGE(0x604000, 0x607fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x700000, 0x700003) AM_READ8(eag_input2_r, 0x000000ff) - AM_RANGE(0x800000, 0x807fff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(fidel68k_state::eagv11_map) - AM_RANGE(0x00000000, 0x0001ffff) AM_ROM - AM_RANGE(0x00200000, 0x003fffff) AM_RAM - AM_RANGE(0x00b00000, 0x00b0000f) AM_MIRROR(0x00000010) AM_WRITE8(eag_7seg_w, 0xff00ff00) AM_READNOP - AM_RANGE(0x00b00000, 0x00b0000f) AM_MIRROR(0x00000010) AM_READWRITE8(eag_input1_r, eag_leds_w, 0x00ff00ff) - AM_RANGE(0x00c00000, 0x00c07fff) AM_READ8(cartridge_r, 0xff00ff00) - AM_RANGE(0x00c00000, 0x00c00003) AM_WRITE8(eag_mux_w, 0x00ff0000) - AM_RANGE(0x00c00004, 0x00c00007) AM_WRITENOP // ? - AM_RANGE(0x00e04000, 0x00e07fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x00f00000, 0x00f00003) AM_READ8(eag_input2_r, 0x000000ff) - AM_RANGE(0x01000000, 0x0101ffff) AM_RAM -ADDRESS_MAP_END +void fidel68k_state::eag_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x104000, 0x107fff).ram(); + map(0x300000, 0x30000f).mirror(0x000010).w(this, FUNC(fidel68k_state::eag_7seg_w)).umask16(0xff00).nopr(); + map(0x300000, 0x30000f).mirror(0x000010).rw(this, FUNC(fidel68k_state::eag_input1_r), FUNC(fidel68k_state::eag_leds_w)).umask16(0x00ff); + map(0x400000, 0x407fff).r(this, FUNC(fidel68k_state::cartridge_r)).umask16(0xff00); + map(0x400001, 0x400001).w(this, FUNC(fidel68k_state::eag_mux_w)); + map(0x400002, 0x400007).nopw(); // ? + map(0x604000, 0x607fff).ram().share("nvram"); + map(0x700003, 0x700003).r(this, FUNC(fidel68k_state::eag_input2_r)); +} + +void fidel68k_state::eagv7_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x104000, 0x107fff).ram(); + map(0x200000, 0x2fffff).ram(); + map(0x300000, 0x30000f).mirror(0x000010).w(this, FUNC(fidel68k_state::eag_7seg_w)).umask32(0xff00ff00).nopr(); + map(0x300000, 0x30000f).mirror(0x000010).rw(this, FUNC(fidel68k_state::eag_input1_r), FUNC(fidel68k_state::eag_leds_w)).umask32(0x00ff00ff); + map(0x400000, 0x407fff).r(this, FUNC(fidel68k_state::cartridge_r)).umask32(0xff00ff00); + map(0x400001, 0x400001).w(this, FUNC(fidel68k_state::eag_mux_w)); + map(0x400004, 0x400007).nopw(); // ? + map(0x604000, 0x607fff).ram().share("nvram"); + map(0x700003, 0x700003).r(this, FUNC(fidel68k_state::eag_input2_r)); + map(0x800000, 0x807fff).ram(); +} + +void fidel68k_state::eagv11_map(address_map &map) +{ + map(0x00000000, 0x0001ffff).rom(); + map(0x00200000, 0x003fffff).ram(); + map(0x00b00000, 0x00b0000f).mirror(0x00000010).w(this, FUNC(fidel68k_state::eag_7seg_w)).umask32(0xff00ff00).nopr(); + map(0x00b00000, 0x00b0000f).mirror(0x00000010).rw(this, FUNC(fidel68k_state::eag_input1_r), FUNC(fidel68k_state::eag_leds_w)).umask32(0x00ff00ff); + map(0x00c00000, 0x00c07fff).r(this, FUNC(fidel68k_state::cartridge_r)).umask32(0xff00ff00); + map(0x00c00001, 0x00c00001).w(this, FUNC(fidel68k_state::eag_mux_w)); + map(0x00c00004, 0x00c00007).nopw(); // ? + map(0x00e04000, 0x00e07fff).ram().share("nvram"); + map(0x00f00003, 0x00f00003).r(this, FUNC(fidel68k_state::eag_input2_r)); + map(0x01000000, 0x0101ffff).ram(); +} |