From caacd65730a14a9dca750f7e8102977bc1498f3b Mon Sep 17 00:00:00 2001 From: arbee Date: Mon, 27 May 2019 00:03:47 -0400 Subject: esqmr: improved RAM, ROM, and device mapping. Programs run farther but don't boot yet. [R. Belmont] --- src/mame/drivers/esqmr.cpp | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/src/mame/drivers/esqmr.cpp b/src/mame/drivers/esqmr.cpp index efcba5def47..658c156fc5c 100644 --- a/src/mame/drivers/esqmr.cpp +++ b/src/mame/drivers/esqmr.cpp @@ -203,7 +203,9 @@ #include "machine/esqvfd.h" #include "machine/68340.h" +#include "machine/68340ser.h" #include "sound/es5506.h" +#include "machine/esqpanel.h" #include "speaker.h" @@ -214,7 +216,7 @@ public: esqmr_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , m_maincpu(*this, "maincpu") - , m_sq1vfd(*this, "sq1vfd") + , m_panel(*this, "sq1vfd") { } void mr(machine_config &config); @@ -223,12 +225,15 @@ public: private: required_device m_maincpu; - required_device m_sq1vfd; + required_device m_panel; virtual void machine_reset() override; DECLARE_WRITE_LINE_MEMBER(esq5506_otto_irq); DECLARE_READ16_MEMBER(esq5506_read_adc); + DECLARE_WRITE_LINE_MEMBER(duart_tx_a); + DECLARE_WRITE_LINE_MEMBER(duart_tx_b); + void mr_map(address_map &map); }; @@ -239,9 +244,21 @@ void esqmr_state::machine_reset() void esqmr_state::mr_map(address_map &map) { map(0x00000000, 0x000fffff).rom().region("maincpu", 0); + map(0x00300000, 0x0037ffff).rom().region("maincpu", 0x80000); // MR-61 needs this // AM_RANGE(0x200000, 0x20003f) AM_DEVREADWRITE8("ensoniq", es5506_device, read, write, 0xffffffff) // AM_RANGE(0x240000, 0x24003f) AM_DEVREADWRITE8("ensoniq2", es5506_device, read, write, 0xffffffff) // AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("osram") + map(0x00c00000, 0x00c7ffff).ram(); +} + +WRITE_LINE_MEMBER(esqmr_state::duart_tx_a) +{ + //m_mdout->write_txd(state); +} + +WRITE_LINE_MEMBER(esqmr_state::duart_tx_b) +{ + m_panel->rx_w(state); } WRITE_LINE_MEMBER(esqmr_state::esq5506_otto_irq) @@ -258,7 +275,13 @@ void esqmr_state::mr(machine_config &config) M68340(config, m_maincpu, XTAL(16'000'000)); m_maincpu->set_addrmap(AS_PROGRAM, &esqmr_state::mr_map); - ESQ2X40_SQ1(config, m_sq1vfd, 60); + mc68340_serial_module_device &duart(*m_maincpu->subdevice("serial")); + duart.set_clocks(500000, 500000, 1000000, 1000000); + duart.a_tx_cb().set(FUNC(esqmr_state::duart_tx_a)); + duart.b_tx_cb().set(FUNC(esqmr_state::duart_tx_b)); + + ESQPANEL2X40_VFX(config, m_panel); + m_panel->write_tx().set(duart, FUNC(mc68340_serial_module_device::rx_b_w)); SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); -- cgit v1.2.3