summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame
diff options
context:
space:
mode:
author Wilbert Pol <wilbert@jdg.info>2009-06-13 15:16:25 +0000
committer Wilbert Pol <wilbert@jdg.info>2009-06-13 15:16:25 +0000
commit145186f9f880e4d77cbb716f1efb3b5269d3baf6 (patch)
treedbb759bf5f1be01a32029511ae53f4ee633cd477 /src/mame
parenta736dab1eb29220eedd1f8b3c42e97edf51a124e (diff)
Made the 8237 dma controller emulation more accurate by implementing it as a state machine.
Deprecated the dma8237_run_transfer function.
Diffstat (limited to 'src/mame')
-rw-r--r--src/mame/drivers/calchase.c21
-rw-r--r--src/mame/drivers/gamecstl.c21
-rw-r--r--src/mame/drivers/mediagx.c21
-rw-r--r--src/mame/drivers/pcat_nit.c25
-rw-r--r--src/mame/drivers/pcxt.c17
-rw-r--r--src/mame/drivers/taitowlf.c21
6 files changed, 90 insertions, 36 deletions
diff --git a/src/mame/drivers/calchase.c b/src/mame/drivers/calchase.c
index 977596bdc5c..6bb90331289 100644
--- a/src/mame/drivers/calchase.c
+++ b/src/mame/drivers/calchase.c
@@ -213,6 +213,15 @@ static WRITE8_HANDLER(at_page8_w)
}
+static DMA8237_HRQ_CHANGED( pc_dma_hrq_changed )
+{
+ cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
+
+ /* Assert HLDA */
+ dma8237_set_hlda( device, state );
+}
+
+
static DMA8237_MEM_READ( pc_dma_read_byte )
{
const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
@@ -235,25 +244,25 @@ static DMA8237_MEM_WRITE( pc_dma_write_byte )
static const struct dma8237_interface dma8237_1_config =
{
- "maincpu",
- 1.0e-6, // 1us
+ XTAL_14_31818MHz/3,
+ pc_dma_hrq_changed,
pc_dma_read_byte,
pc_dma_write_byte,
- { 0, 0, NULL, NULL },
- { 0, 0, NULL, NULL },
+ { NULL, NULL, NULL, NULL },
+ { NULL, NULL, NULL, NULL },
NULL
};
static const struct dma8237_interface dma8237_2_config =
{
- "maincpu",
- 1.0e-6, // 1us
+ XTAL_14_31818MHz/3,
NULL,
NULL,
+ NULL,
{ NULL, NULL, NULL, NULL },
{ NULL, NULL, NULL, NULL },
diff --git a/src/mame/drivers/gamecstl.c b/src/mame/drivers/gamecstl.c
index bfa3de0ef25..6c99fbac4e1 100644
--- a/src/mame/drivers/gamecstl.c
+++ b/src/mame/drivers/gamecstl.c
@@ -420,6 +420,15 @@ static WRITE8_HANDLER(at_page8_w)
}
+static DMA8237_HRQ_CHANGED( pc_dma_hrq_changed )
+{
+ cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
+
+ /* Assert HLDA */
+ dma8237_set_hlda( device, state );
+}
+
+
static DMA8237_MEM_READ( pc_dma_read_byte )
{
const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
@@ -442,25 +451,25 @@ static DMA8237_MEM_WRITE( pc_dma_write_byte )
static const struct dma8237_interface dma8237_1_config =
{
- "maincpu",
- 1.0e-6, // 1us
+ XTAL_14_31818MHz/3,
+ pc_dma_hrq_changed,
pc_dma_read_byte,
pc_dma_write_byte,
- { 0, 0, NULL, NULL },
- { 0, 0, NULL, NULL },
+ { NULL, NULL, NULL, NULL },
+ { NULL, NULL, NULL, NULL },
NULL
};
static const struct dma8237_interface dma8237_2_config =
{
- "maincpu",
- 1.0e-6, // 1us
+ XTAL_14_31818MHz/3,
NULL,
NULL,
+ NULL,
{ NULL, NULL, NULL, NULL },
{ NULL, NULL, NULL, NULL },
diff --git a/src/mame/drivers/mediagx.c b/src/mame/drivers/mediagx.c
index 3de5aa5a3bb..ff4028db92c 100644
--- a/src/mame/drivers/mediagx.c
+++ b/src/mame/drivers/mediagx.c
@@ -773,6 +773,15 @@ static WRITE8_HANDLER(at_page8_w)
}
+static DMA8237_HRQ_CHANGED( pc_dma_hrq_changed )
+{
+ cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
+
+ /* Assert HLDA */
+ dma8237_set_hlda( device, state );
+}
+
+
static DMA8237_MEM_READ( pc_dma_read_byte )
{
const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
@@ -795,25 +804,25 @@ static DMA8237_MEM_WRITE( pc_dma_write_byte )
static const struct dma8237_interface dma8237_1_config =
{
- "maincpu",
- 1.0e-6, // 1us
+ XTAL_14_31818MHz/3,
+ pc_dma_hrq_changed,
pc_dma_read_byte,
pc_dma_write_byte,
- { 0, 0, NULL, NULL },
- { 0, 0, NULL, NULL },
+ { NULL, NULL, NULL, NULL },
+ { NULL, NULL, NULL, NULL },
NULL
};
static const struct dma8237_interface dma8237_2_config =
{
- "maincpu",
- 1.0e-6, // 1us
+ XTAL_14_31818MHz/3,
NULL,
NULL,
+ NULL,
{ NULL, NULL, NULL, NULL },
{ NULL, NULL, NULL, NULL },
diff --git a/src/mame/drivers/pcat_nit.c b/src/mame/drivers/pcat_nit.c
index 5c0d1db2bae..da1e0677172 100644
--- a/src/mame/drivers/pcat_nit.c
+++ b/src/mame/drivers/pcat_nit.c
@@ -188,6 +188,15 @@ DMA8237 Controller
static UINT8 dma_offset[2][4];
static UINT8 at_pages[0x10];
+static DMA8237_HRQ_CHANGED( pc_dma_hrq_changed )
+{
+ cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
+
+ /* Assert HLDA */
+ dma8237_set_hlda( device, state );
+}
+
+
static DMA8237_MEM_READ( pc_dma_read_byte )
{
const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
@@ -254,27 +263,27 @@ static WRITE8_HANDLER(dma_page_select_w)
static const struct dma8237_interface dma8237_1_config =
{
- "maincpu",
- 1.0e-6, // 1us
+ XTAL_14_31818MHz/3,
+ pc_dma_hrq_changed,
pc_dma_read_byte,
pc_dma_write_byte,
- { 0, 0, NULL, NULL },
- { 0, 0, NULL, NULL },
+ { NULL, NULL, NULL, NULL },
+ { NULL, NULL, NULL, NULL },
NULL
};
static const struct dma8237_interface dma8237_2_config =
{
- "maincpu",
- 1.0e-6, // 1us
+ XTAL_14_31818MHz/3,
NULL,
NULL,
+ NULL,
- { 0, 0, NULL, NULL },
- { 0, 0, NULL, NULL },
+ { NULL, NULL, NULL, NULL },
+ { NULL, NULL, NULL, NULL },
NULL
};
diff --git a/src/mame/drivers/pcxt.c b/src/mame/drivers/pcxt.c
index fc6d54b7be5..7fac7b3072d 100644
--- a/src/mame/drivers/pcxt.c
+++ b/src/mame/drivers/pcxt.c
@@ -551,6 +551,15 @@ DMA8237 Controller
static UINT8 dma_offset[2][4];
static UINT8 at_pages[0x10];
+static DMA8237_HRQ_CHANGED( pc_dma_hrq_changed )
+{
+ cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
+
+ /* Assert HLDA */
+ dma8237_set_hlda( device, state );
+}
+
+
static DMA8237_MEM_READ( pc_dma_read_byte )
{
const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
@@ -615,14 +624,14 @@ static WRITE8_HANDLER(dma_page_select_w)
static const struct dma8237_interface dma8237_1_config =
{
- "maincpu",
- 1.0e-6, // 1us
+ XTAL_14_31818MHz/3,
+ pc_dma_hrq_changed,
pc_dma_read_byte,
pc_dma_write_byte,
- { 0, 0, NULL, NULL },
- { 0, 0, NULL, NULL },
+ { NULL, NULL, NULL, NULL },
+ { NULL, NULL, NULL, NULL },
NULL
};
diff --git a/src/mame/drivers/taitowlf.c b/src/mame/drivers/taitowlf.c
index 0d83c540a67..d00c6b58d9f 100644
--- a/src/mame/drivers/taitowlf.c
+++ b/src/mame/drivers/taitowlf.c
@@ -365,6 +365,15 @@ static WRITE8_HANDLER(at_page8_w)
}
+static DMA8237_HRQ_CHANGED( pc_dma_hrq_changed )
+{
+ cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
+
+ /* Assert HLDA */
+ dma8237_set_hlda( device, state );
+}
+
+
static DMA8237_MEM_READ( pc_dma_read_byte )
{
const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
@@ -387,25 +396,25 @@ static DMA8237_MEM_WRITE( pc_dma_write_byte )
static const struct dma8237_interface dma8237_1_config =
{
- "maincpu",
- 1.0e-6, // 1us
+ XTAL_14_31818MHz/3,
+ pc_dma_hrq_changed,
pc_dma_read_byte,
pc_dma_write_byte,
- { 0, 0, NULL, NULL },
- { 0, 0, NULL, NULL },
+ { NULL, NULL, NULL, NULL },
+ { NULL, NULL, NULL, NULL },
NULL
};
static const struct dma8237_interface dma8237_2_config =
{
- "maincpu",
- 1.0e-6, // 1us
+ XTAL_14_31818MHz/3,
NULL,
NULL,
+ NULL,
{ NULL, NULL, NULL, NULL },
{ NULL, NULL, NULL, NULL },