From c5ead97dcae9ed6671c5fe78b91fe6360c238c09 Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 30 Oct 2024 12:40:17 -0400 Subject: ausnz/poly.cpp: Replace bankdev with memory view --- src/mame/ausnz/poly.cpp | 50 +++++++++++++++++++++-------------------------- src/mame/ausnz/poly.h | 12 +++++------- src/mame/ausnz/poly_m.cpp | 5 +++-- 3 files changed, 30 insertions(+), 37 deletions(-) diff --git a/src/mame/ausnz/poly.cpp b/src/mame/ausnz/poly.cpp index 063b76dea06..838a8be7647 100644 --- a/src/mame/ausnz/poly.cpp +++ b/src/mame/ausnz/poly.cpp @@ -37,38 +37,34 @@ #include "utf8.h" -void poly_state::poly_bank(address_map &map) +void poly_state::poly_mem(address_map &map) { map.unmap_value_high(); + map(0x0000, 0xffff).view(m_memview); /* System mode */ - map(0x00000, 0x0ffff).rw(FUNC(poly_state::logical_mem_r), FUNC(poly_state::logical_mem_w)); // Logical Memory - map(0x0e000, 0x0e003).rw(m_pia[0], FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // Video control PIA 6821 - map(0x0e004, 0x0e005).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); // Optional RS232 Interface - map(0x0e006, 0x0e006).w(FUNC(poly_state::baud_rate_w)); // Baud rate controller - map(0x0e00c, 0x0e00f).rw(m_pia[1], FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // Keyboard PIA 6821 - map(0x0e020, 0x0e027).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)); // Timer 6840 - map(0x0e030, 0x0e036).rw(FUNC(poly_state::network_r), FUNC(poly_state::network_w)); // Data Link Controller 6854 - map(0x0e040, 0x0e040).w(FUNC(poly_state::set_protect_w)); // Set protect flip-flop after 1 E-cycle - map(0x0e050, 0x0e05f).ram().share("dat"); // Dynamic Address Translator - map(0x0e060, 0x0e060).rw(FUNC(poly_state::select_map_r), FUNC(poly_state::select_map1_w)); // Select Map 1 - map(0x0e070, 0x0e070).rw(FUNC(poly_state::select_map_r), FUNC(poly_state::select_map2_w)); // Select Map 2 - map(0x0e800, 0x0efff).ram().share("videoram"); // Teletext screens and System data - map(0x0f000, 0x0ffff).rom().region("system", 0); // System Program ROM + m_memview[0](0x0000, 0xffff).rw(FUNC(poly_state::logical_mem_r), FUNC(poly_state::logical_mem_w)); // Logical Memory + m_memview[0](0xe000, 0xe003).rw(m_pia[0], FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // Video control PIA 6821 + m_memview[0](0xe004, 0xe005).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); // Optional RS232 Interface + m_memview[0](0xe006, 0xe006).w(FUNC(poly_state::baud_rate_w)); // Baud rate controller + m_memview[0](0xe00c, 0xe00f).rw(m_pia[1], FUNC(pia6821_device::read), FUNC(pia6821_device::write)); // Keyboard PIA 6821 + m_memview[0](0xe020, 0xe027).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)); // Timer 6840 + m_memview[0](0xe030, 0xe036).rw(FUNC(poly_state::network_r), FUNC(poly_state::network_w)); // Data Link Controller 6854 + m_memview[0](0xe040, 0xe040).w(FUNC(poly_state::set_protect_w)); // Set protect flip-flop after 1 E-cycle + m_memview[0](0xe050, 0xe05f).ram().share("dat"); // Dynamic Address Translator + m_memview[0](0xe060, 0xe060).rw(FUNC(poly_state::select_map_r), FUNC(poly_state::select_map1_w)); // Select Map 1 + m_memview[0](0xe070, 0xe070).rw(FUNC(poly_state::select_map_r), FUNC(poly_state::select_map2_w)); // Select Map 2 + m_memview[0](0xe800, 0xefff).ram().share("videoram"); // Teletext screens and System data + m_memview[0](0xf000, 0xffff).rom().region("system", 0); // System Program ROM /* User mode */ - map(0x10000, 0x1ffff).rw(FUNC(poly_state::logical_mem_r), FUNC(poly_state::logical_mem_w)); // Logical Memory - map(0x1fff0, 0x1ffff).r(FUNC(poly_state::vector_r)); // Vector fetch (interrupt and reset) -} - -void polydev_state::poly_bank(address_map &map) -{ - poly_state::poly_bank(map); - map(0x0e014, 0x0e014).rw(FUNC(polydev_state::drive_register_r), FUNC(polydev_state::drive_register_w)); // Drive register - map(0x0e018, 0x0e01b).rw(FUNC(polydev_state::fdc_inv_r), FUNC(polydev_state::fdc_inv_w)); // Floppy controller + m_memview[1](0x0000, 0xffff).rw(FUNC(poly_state::logical_mem_r), FUNC(poly_state::logical_mem_w)); // Logical Memory + m_memview[1](0xfff0, 0xffff).r(FUNC(poly_state::vector_r)); // Vector fetch (interrupt and reset) } -void poly_state::poly_mem(address_map &map) +void polydev_state::poly_mem(address_map &map) { - map(0x0000, 0xffff).m(m_bankdev, FUNC(address_map_bank_device::amap8)); + poly_state::poly_mem(map); + m_memview[0](0xe014, 0xe014).rw(FUNC(polydev_state::drive_register_r), FUNC(polydev_state::drive_register_w)); // Drive register + m_memview[0](0xe018, 0xe01b).rw(FUNC(polydev_state::fdc_inv_r), FUNC(polydev_state::fdc_inv_w)); // Floppy controller } @@ -209,7 +205,7 @@ void poly_state::machine_reset() //m_kr2376->set_input_pin(kr2376_device::KR2376_PII, 0); /* system mode is entered on Reset */ - m_bankdev->set_bank(0); + m_memview.select(0); } @@ -261,8 +257,6 @@ void poly_state::poly(machine_config &config) MC6809(config, m_maincpu, 12.0576_MHz_XTAL / 3); m_maincpu->set_addrmap(AS_PROGRAM, &poly_state::poly_mem); - ADDRESS_MAP_BANK(config, "bankdev").set_map(&poly_state::poly_bank).set_options(ENDIANNESS_LITTLE, 8, 17, 0x10000); - INPUT_MERGER_ANY_HIGH(config, "irqs").output_handler().set_inputline(m_maincpu, M6809_IRQ_LINE); /* video hardware */ diff --git a/src/mame/ausnz/poly.h b/src/mame/ausnz/poly.h index a02f199faa1..d93f84b62d5 100644 --- a/src/mame/ausnz/poly.h +++ b/src/mame/ausnz/poly.h @@ -43,7 +43,6 @@ #include "machine/kr2376.h" #include "machine/clock.h" #include "machine/mc6854.h" -#include "machine/bankdev.h" #include "machine/ram.h" #include "machine/input_merger.h" #include "machine/wd_fdc.h" @@ -61,8 +60,8 @@ class poly_state : public driver_device public: poly_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) + , m_memview(*this, "memview") , m_maincpu(*this, "maincpu") - , m_bankdev(*this, "bankdev") , m_ram(*this, RAM_TAG) , m_trom(*this, "saa5050_%u", 1U) , m_pia(*this, "pia%u", 0U) @@ -90,14 +89,14 @@ public: void init_poly(); - virtual void poly_bank(address_map &map) ATTR_COLD; + virtual void poly_mem(address_map &map) ATTR_COLD; + + memory_view m_memview; private: virtual void machine_start() override ATTR_COLD; virtual void machine_reset() override ATTR_COLD; - void poly_mem(address_map &map) ATTR_COLD; - uint8_t logical_mem_r(offs_t offset); void logical_mem_w(offs_t offset, uint8_t data); uint8_t vector_r(offs_t offset); @@ -124,7 +123,6 @@ private: uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); required_device m_maincpu; - required_device m_bankdev; required_device m_ram; required_device_array m_trom; required_device_array m_pia; @@ -175,7 +173,7 @@ private: void fdc_inv_w(offs_t offset, uint8_t data); - virtual void poly_bank(address_map &map) override ATTR_COLD; + virtual void poly_mem(address_map &map) override ATTR_COLD; static void floppy_formats(format_registration &fr); diff --git a/src/mame/ausnz/poly_m.cpp b/src/mame/ausnz/poly_m.cpp index 387f5ab3bed..5c21f8fc18f 100644 --- a/src/mame/ausnz/poly_m.cpp +++ b/src/mame/ausnz/poly_m.cpp @@ -30,7 +30,8 @@ void poly_state::logical_mem_w(offs_t offset, uint8_t data) uint8_t poly_state::vector_r(offs_t offset) { /* system mode is selected by a vector fetch (interrupt and reset) */ - m_bankdev->set_bank(0); + if (!machine().side_effects_disabled()) + m_memview.select(0); return m_system->base()[0x0ff0 + offset]; } @@ -38,7 +39,7 @@ uint8_t poly_state::vector_r(offs_t offset) TIMER_CALLBACK_MEMBER(poly_state::set_protect) { - m_bankdev->set_bank(1); + m_memview.select(1); } void poly_state::set_protect_w(uint8_t data) -- cgit v1.2.3