From a9132c31a28b15c694a41a3a6682ffc40d147bd4 Mon Sep 17 00:00:00 2001 From: AJR Date: Sat, 22 Sep 2018 22:26:33 -0400 Subject: [PATCH] hazl1420: Add INS8250 (nw) --- src/mame/drivers/hazl1420.cpp | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/src/mame/drivers/hazl1420.cpp b/src/mame/drivers/hazl1420.cpp index de1edf99da5..559f0c7afad 100644 --- a/src/mame/drivers/hazl1420.cpp +++ b/src/mame/drivers/hazl1420.cpp @@ -9,8 +9,9 @@ #include "emu.h" //#include "bus/rs232/rs232.h" #include "cpu/mcs48/mcs48.h" +#include "machine/bankdev.h" //#include "machine/i8243.h" -//#include "machine/ins8250.h" +#include "machine/ins8250.h" //#include "video/dp8350.h" #include "screen.h" @@ -20,6 +21,7 @@ public: hazl1420_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , m_maincpu(*this, "maincpu") + , m_bankdev(*this, "bankdev") { } @@ -29,15 +31,24 @@ protected: virtual void machine_start() override; private: + void p2_w(u8 data); + void prog_map(address_map &map); void io_map(address_map &map); + void bank_map(address_map &map); u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); required_device m_maincpu; + required_device m_bankdev; //required_device_array m_ioexp; }; +void hazl1420_state::p2_w(u8 data) +{ + m_bankdev->set_bank(data & 0x0f); +} + void hazl1420_state::prog_map(address_map &map) { map(0x000, 0xfff).rom().region("maincpu", 0); @@ -45,6 +56,13 @@ void hazl1420_state::prog_map(address_map &map) void hazl1420_state::io_map(address_map &map) { + map(0x00, 0xff).m(m_bankdev, FUNC(address_map_bank_device::amap8)); +} + +void hazl1420_state::bank_map(address_map &map) +{ + map(0x800, 0x807).mirror(0x10).rw("ace", FUNC(ins8250_device::ins8250_r), FUNC(ins8250_device::ins8250_w)); + map(0xc48, 0xc48).ram(); } void hazl1420_state::machine_start() @@ -117,11 +135,18 @@ void hazl1420_state::hazl1420(machine_config &config) I8049(config, m_maincpu, 11_MHz_XTAL); m_maincpu->set_addrmap(AS_PROGRAM, &hazl1420_state::prog_map); m_maincpu->set_addrmap(AS_IO, &hazl1420_state::io_map); + m_maincpu->p2_out_cb().set(FUNC(hazl1420_state::p2_w)); + + ADDRESS_MAP_BANK(config, m_bankdev); + m_bankdev->set_addrmap(0, &hazl1420_state::bank_map); + m_bankdev->set_data_width(8); + m_bankdev->set_addr_width(12); + m_bankdev->set_stride(0x100); //I8243(config, m_ioexp[0]); //I8243(config, m_ioexp[1]); - //INS8250(config, "ace", 1'843'200); + INS8250(config, "ace", 1'843'200); //DP8350(config, "crtc", 10.92_MHz_XTAL);