arb: cartridge is on a0-a14 (nw)

This commit is contained in:
hap 2019-02-27 18:31:38 +01:00
parent 54c895e91b
commit a6e9b6fca9
2 changed files with 13 additions and 10 deletions

View file

@ -10,9 +10,11 @@
<year>1980</year>
<publisher>AVE Micro Systems</publisher>
<part name="cart" interface="arb">
<dataarea name="rom" size="0x2000">
<rom name="4000-4800_ea_8332a161-1" size="0x1000" crc="00460848" sha1="ac4fe2232028bd42506a24457882296e7d3a8f54" offset="0x0000" />
<rom name="5000-5800_ea_8332a160-1" size="0x1000" crc="aac1dff2" sha1="9a7fc6dc98e53120e511d266304ad07f248f415a" offset="0x1000" />
<dataarea name="rom" size="0x8000">
<rom name="4000-4800_ea_8332a161-1" size="0x1000" crc="00460848" sha1="ac4fe2232028bd42506a24457882296e7d3a8f54" offset="0x4000" />
<rom size="0x1000" offset="0x6000" loadflag="reload" />
<rom name="5000-5800_ea_8332a160-1" size="0x1000" crc="aac1dff2" sha1="9a7fc6dc98e53120e511d266304ad07f248f415a" offset="0x5000" />
<rom size="0x1000" offset="0x7000" loadflag="reload" />
</dataarea>
</part>
</software>

View file

@ -104,15 +104,15 @@ DEVICE_IMAGE_LOAD_MEMBER(arb_state, cartridge)
m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
// extra ram (optional)
if (image.get_feature("ram"))
m_maincpu->space(AS_PROGRAM).install_ram(0x0800, 0x0fff, 0x1000, nullptr);
return image_init_result::PASS;
}
READ8_MEMBER(arb_state::cartridge_r)
{
// range is 0x4000-0x7fff + 0xc000-0xffff
if (offset >= 0x8000)
offset -= 0x4000;
return m_cart->read_rom(offset & m_cart_mask);
}
@ -165,9 +165,10 @@ READ8_MEMBER(arb_state::input_r)
void arb_state::main_map(address_map &map)
{
map(0x0000, 0x07ff).mirror(0x3800).ram().share("nvram");
map(0x4000, 0xffff).r(FUNC(arb_state::cartridge_r)); // gap in 0x8000-0xbfff
map(0x8000, 0x800f).mirror(0x3ff0).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write));
// external slot is A0-A14, potential bus conflict with RAM/VIA
map(0x0000, 0x7fff).mirror(0x8000).r(FUNC(arb_state::cartridge_r));
map(0x0000, 0x07ff).mirror(0x1000).ram().share("nvram");
map(0x8000, 0x800f).mirror(0x1ff0).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write));
}