unixpc.cpp: Replace bankdev with memory view

This commit is contained in:
AJR 2021-12-05 20:36:46 -05:00
parent 0cd40f3acf
commit d296163f7e

View File

@ -41,6 +41,8 @@
DRIVER STATE
***************************************************************************/
namespace {
class unixpc_state : public driver_device
{
public:
@ -55,7 +57,7 @@ public:
m_floppy(*this, "wd2797:0:525dd"),
m_hdc(*this, "hdc"),
m_hdr0(*this, "hdc:0"),
m_ramrombank(*this, "ramrombank"),
m_ramromview(*this, "ramromview"),
m_mapram(*this, "mapram"),
m_videoram(*this, "videoram")
{ }
@ -91,7 +93,6 @@ private:
DECLARE_WRITE_LINE_MEMBER(wd1010_intrq_w);
void ramrombank_map(address_map &map);
void unixpc_mem(address_map &map);
private:
@ -104,7 +105,7 @@ private:
required_device<floppy_image_device> m_floppy;
required_device<wd1010_device> m_hdc;
required_device<harddisk_image_device> m_hdr0;
required_device<address_map_bank_device> m_ramrombank;
memory_view m_ramromview;
required_shared_ptr<uint16_t> m_mapram;
required_shared_ptr<uint16_t> m_videoram;
@ -129,7 +130,7 @@ void unixpc_state::gcr_w(offs_t offset, uint16_t data)
WRITE_LINE_MEMBER(unixpc_state::romlmap_w)
{
m_ramrombank->set_bank(state ? 1 : 0);
m_ramromview.select(state ? 1 : 0);
}
uint16_t unixpc_state::ram_mmu_r(offs_t offset)
@ -322,7 +323,9 @@ uint32_t unixpc_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
void unixpc_state::unixpc_mem(address_map &map)
{
map(0x000000, 0x3fffff).m(m_ramrombank, FUNC(address_map_bank_device::amap16));
map(0x000000, 0x3fffff).view(m_ramromview);
m_ramromview[0](0x000000, 0x3fffff).rom().region("bootrom", 0);
m_ramromview[1](0x000000, 0x3fffff).rw(FUNC(unixpc_state::ram_mmu_r), FUNC(unixpc_state::ram_mmu_w));
map(0x400000, 0x4007ff).ram().share("mapram");
map(0x410000, 0x410001).r(FUNC(unixpc_state::gsr_r));
map(0x420000, 0x427fff).ram().share("videoram");
@ -344,12 +347,6 @@ void unixpc_state::unixpc_mem(address_map &map)
map(0x800000, 0x803fff).mirror(0x7fc000).rom().region("bootrom", 0);
}
void unixpc_state::ramrombank_map(address_map &map)
{
map(0x000000, 0x3fffff).rom().region("bootrom", 0);
map(0x400000, 0x7fffff).rw(FUNC(unixpc_state::ram_mmu_r), FUNC(unixpc_state::ram_mmu_w));
}
/***************************************************************************
INPUT PORTS
***************************************************************************/
@ -408,9 +405,6 @@ void unixpc_state::unixpc(machine_config &config)
// internal ram
RAM(config, RAM_TAG).set_default_size("1M").set_extra_options("2M");
// RAM/ROM bank
ADDRESS_MAP_BANK(config, "ramrombank").set_map(&unixpc_state::ramrombank_map).set_options(ENDIANNESS_BIG, 16, 32, 0x400000);
// floppy
WD2797(config, m_wd2797, 40_MHz_XTAL / 40); // 1PCK (CPU clock) divided by custom DMA chip
m_wd2797->intrq_wr_callback().set(FUNC(unixpc_state::wd2797_intrq_w));
@ -455,6 +449,7 @@ ROM_START( 3b1 )
ROM_LOAD16_BYTE("72-00616.14c", 0x000001, 0x002000, CRC(c61f7ae0) SHA1(ab3ac29935a2a587a083c4d175a5376badd39058))
ROM_END
} // anonymous namespace
/***************************************************************************
GAME DRIVERS