Fix magtouch, fake the bios shadow a little less badly

This commit is contained in:
Olivier Galibert 2020-11-27 17:42:38 +01:00
parent dd1fdeb986
commit c57c3e5be5

View File

@ -92,6 +92,7 @@ public:
: pcat_base_state(mconfig, type, tag)
, m_isabus(*this, "isa")
, m_rombank(*this, "rombank")
, m_shadow(*this, "shadow")
, m_in0(*this, "IN0")
{ }
@ -100,12 +101,14 @@ public:
private:
required_device<isa8_device> m_isabus;
required_memory_bank m_rombank;
required_shared_ptr<uint32_t> m_shadow;
required_ioport m_in0;
uint8_t magtouch_io_r(offs_t offset);
void magtouch_io_w(offs_t offset, uint8_t data);
void dma8237_1_dack_w(uint8_t data);
virtual void machine_start() override;
virtual void machine_reset() override;
static void magtouch_sb_conf(device_t *device);
void magtouch_io(address_map &map);
void magtouch_map(address_map &map);
@ -145,7 +148,7 @@ void magtouch_state::magtouch_map(address_map &map)
map(0x000c0000, 0x000c7fff).rom().region("video_bios", 0);
map(0x000d0000, 0x000d1fff).ram().share("nvram");
map(0x000d8000, 0x000dffff).bankr("rombank");
map(0x000f0000, 0x000fffff).rom().region("bios", 0);
map(0x000f0000, 0x000fffff).ram().share(m_shadow);
map(0xffff0000, 0xffffffff).rom().region("bios", 0);
}
@ -178,6 +181,12 @@ void magtouch_state::machine_start()
subdevice<nvram_device>("nvram")->set_base(memshare("nvram")->ptr(), 0x2000);
}
void magtouch_state::machine_reset()
{
// Rom shadow is not handled, well, at all
memcpy(m_shadow, memregion("bios")->base(), 0x10000);
}
static void magtouch_isa8_cards(device_slot_interface &device)
{
device.option_add("sb15", ISA8_SOUND_BLASTER_1_5);