mirror of
https://github.com/holub/mame
synced 2025-07-10 12:15:31 +03:00
unixpc.cpp: Replace bankdev with memory view
This commit is contained in:
parent
0cd40f3acf
commit
d296163f7e
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user