summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author cracyc <cracyc@users.noreply.github.com>2018-02-20 09:04:09 -0600
committer cracyc <cracyc@users.noreply.github.com>2018-02-20 09:04:09 -0600
commit1a19ef98fedcc70f0a09f28702b1acf15fbe7793 (patch)
tree602b8424919ccf8b6dfe3a0822f79eaa6e91f855 /src
parent9f308593beca57bfb478d85a854a2edde5cdb4ed (diff)
duet16: dma page register (nw)
Diffstat (limited to 'src')
-rw-r--r--src/mame/drivers/duet16.cpp20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/mame/drivers/duet16.cpp b/src/mame/drivers/duet16.cpp
index cb8c05ab136..70fc324df2a 100644
--- a/src/mame/drivers/duet16.cpp
+++ b/src/mame/drivers/duet16.cpp
@@ -38,6 +38,8 @@ private:
DECLARE_WRITE8_MEMBER(pic_w);
DECLARE_READ8_MEMBER(dma_mem_r);
DECLARE_WRITE8_MEMBER(dma_mem_w);
+ DECLARE_READ8_MEMBER(dmapg_r);
+ DECLARE_WRITE8_MEMBER(dmapg_w);
DECLARE_WRITE8_MEMBER(fdcctrl_w);
DECLARE_WRITE_LINE_MEMBER(hrq_w);
MC6845_UPDATE_ROW(crtc_update_row);
@@ -50,6 +52,7 @@ private:
required_device_array<floppy_connector, 2> m_fd;
required_memory_region m_chrrom;
required_shared_ptr<u16> m_vram;
+ u8 m_dmapg;
};
READ8_MEMBER(duet16_state::pic_r)
@@ -64,7 +67,7 @@ WRITE8_MEMBER(duet16_state::pic_w)
WRITE8_MEMBER(duet16_state::fdcctrl_w)
{
- floppy_image_device *f = m_fd[BIT(data, 2) ? 0 : 1]->get_device();
+ floppy_image_device *f = m_fd[BIT(data, 2) ? 1 : 0]->get_device();
m_fdc->set_floppy(f);
m_fd[0]->get_device()->mon_w(!BIT(data, 0));
@@ -77,12 +80,22 @@ WRITE8_MEMBER(duet16_state::fdcctrl_w)
READ8_MEMBER(duet16_state::dma_mem_r)
{
- return m_maincpu->space(AS_PROGRAM).read_byte(offset);
+ return m_maincpu->space(AS_PROGRAM).read_byte((m_dmapg << 16) | offset);
}
WRITE8_MEMBER(duet16_state::dma_mem_w)
{
- m_maincpu->space(AS_PROGRAM).write_byte(offset, data);
+ m_maincpu->space(AS_PROGRAM).write_byte((m_dmapg << 16) | offset, data);
+}
+
+READ8_MEMBER(duet16_state::dmapg_r)
+{
+ return m_dmapg;
+}
+
+WRITE8_MEMBER(duet16_state::dmapg_w)
+{
+ m_dmapg = data & 0xf;
}
WRITE_LINE_MEMBER(duet16_state::hrq_w)
@@ -95,6 +108,7 @@ ADDRESS_MAP_START(duet16_state::duet16_mem)
AM_RANGE(0x00000, 0x9ffff) AM_RAM
AM_RANGE(0xb8000, 0xbffff) AM_RAM
AM_RANGE(0xc0000, 0xc0fff) AM_RAM AM_SHARE("vram")
+ AM_RANGE(0xf8000, 0xf801f) AM_READWRITE8(dmapg_r, dmapg_w, 0x00ff)
AM_RANGE(0xf8000, 0xf801f) AM_DEVREADWRITE8("dmac", am9517a_device, read, write, 0xff00)
AM_RANGE(0xf8020, 0xf8023) AM_READWRITE8(pic_r, pic_w, 0x00ff)
AM_RANGE(0xf8040, 0xf804f) AM_DEVREADWRITE8("itm", ptm6840_device, read, write, 0x00ff)