summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author arbee <rb6502@users.noreply.github.com>2019-05-27 00:03:47 -0400
committer arbee <rb6502@users.noreply.github.com>2019-05-27 00:03:47 -0400
commitcaacd65730a14a9dca750f7e8102977bc1498f3b (patch)
tree2f697026a10840d738007c64188d37f12fd18b3e
parent2090f71585677a74ae7cf27606ad401dbcda9e23 (diff)
esqmr: improved RAM, ROM, and device mapping. Programs run farther but don't boot yet. [R. Belmont]
-rw-r--r--src/mame/drivers/esqmr.cpp29
1 files 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<m68340_cpu_device> m_maincpu;
- required_device<esq2x40_sq1_device> m_sq1vfd;
+ required_device<esqpanel2x40_vfx_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<mc68340_serial_module_device>("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();