diff options
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 |
commit | 145186f9f880e4d77cbb716f1efb3b5269d3baf6 (patch) | |
tree | dbb759bf5f1be01a32029511ae53f4ee633cd477 /src/mame | |
parent | a736dab1eb29220eedd1f8b3c42e97edf51a124e (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.c | 21 | ||||
-rw-r--r-- | src/mame/drivers/gamecstl.c | 21 | ||||
-rw-r--r-- | src/mame/drivers/mediagx.c | 21 | ||||
-rw-r--r-- | src/mame/drivers/pcat_nit.c | 25 | ||||
-rw-r--r-- | src/mame/drivers/pcxt.c | 17 | ||||
-rw-r--r-- | src/mame/drivers/taitowlf.c | 21 |
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 }, |