diff options
author | 2014-04-30 17:31:51 +0000 | |
---|---|---|
committer | 2014-04-30 17:31:51 +0000 | |
commit | 0789025777ef4615c8b38fa3cdb5363afb1b689e (patch) | |
tree | e5c4308c936114314465cefb0316b0e64a1c4b07 | |
parent | 6edc224d76f491616d0ca897ca4a7bf524b5de66 (diff) |
8257dma: replace it in dkong and kill it (nw)
-rw-r--r-- | .gitattributes | 2 | ||||
-rw-r--r-- | src/emu/machine/8257dma.c | 476 | ||||
-rw-r--r-- | src/emu/machine/8257dma.h | 196 | ||||
-rw-r--r-- | src/emu/machine/i8257.c | 58 | ||||
-rw-r--r-- | src/emu/machine/i8257.h | 82 | ||||
-rw-r--r-- | src/emu/machine/machine.mak | 13 | ||||
-rw-r--r-- | src/mame/drivers/dkong.c | 28 | ||||
-rw-r--r-- | src/mame/includes/dkong.h | 6 | ||||
-rw-r--r-- | src/mess/drivers/apogee.c | 6 | ||||
-rw-r--r-- | src/mess/drivers/fanucspmg.c | 8 | ||||
-rw-r--r-- | src/mess/drivers/mikrosha.c | 6 | ||||
-rw-r--r-- | src/mess/drivers/partner.c | 8 | ||||
-rw-r--r-- | src/mess/drivers/pc8001.c | 10 | ||||
-rw-r--r-- | src/mess/drivers/radio86.c | 16 | ||||
-rw-r--r-- | src/mess/drivers/unior.c | 8 | ||||
-rw-r--r-- | src/mess/includes/pc8001.h | 2 | ||||
-rw-r--r-- | src/mess/includes/radio86.h | 2 | ||||
-rw-r--r-- | src/mess/mess.mak | 1 |
18 files changed, 130 insertions, 798 deletions
diff --git a/.gitattributes b/.gitattributes index f8ae35003f7..9e7d81ca719 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2337,8 +2337,6 @@ src/emu/machine/7474.c svneol=native#text/plain src/emu/machine/7474.h svneol=native#text/plain src/emu/machine/8042kbdc.c svneol=native#text/plain src/emu/machine/8042kbdc.h svneol=native#text/plain -src/emu/machine/8257dma.c svneol=native#text/plain -src/emu/machine/8257dma.h svneol=native#text/plain src/emu/machine/8530scc.c svneol=native#text/plain src/emu/machine/8530scc.h svneol=native#text/plain src/emu/machine/aakart.c svneol=native#text/plain diff --git a/src/emu/machine/8257dma.c b/src/emu/machine/8257dma.c deleted file mode 100644 index eb006d8a64e..00000000000 --- a/src/emu/machine/8257dma.c +++ /dev/null @@ -1,476 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Couriersud -/********************************************************************** - - 8257 DMA interface and emulation - - For datasheet http://www.threedee.com/jcm/library/index.html - - 2008/05 Miodrag Milanovic - - - added support for autoload mode - - fixed bug in calculating count - - 2007/11 couriersud - - - architecture copied from 8237 DMA - - significant changes to implementation - - The DMA works like this: - - 1. The device asserts the DRQn line - 2. The DMA clears the TC (terminal count) line - 3. The DMA asserts the CPU's HRQ (halt request) line - 4. Upon acknowledgement of the halt, the DMA will let the device - know that it needs to send information by asserting the DACKn - line - 5. The DMA will read the byte from the device - 6. The device clears the DRQn line - 7. The DMA clears the CPU's HRQ line - 8. (steps 3-7 are repeated for every byte in the chain) - -**********************************************************************/ - -#include "emu.h" -#include "8257dma.h" - -#define I8257_STATUS_UPDATE 0x10 -#define I8257_STATUS_TC_CH3 0x08 -#define I8257_STATUS_TC_CH2 0x04 -#define I8257_STATUS_TC_CH1 0x02 -#define I8257_STATUS_TC_CH0 0x01 - -#define DMA_MODE_AUTOLOAD(mode) ((mode) & 0x80) -#define DMA_MODE_TCSTOP(mode) ((mode) & 0x40) -#define DMA_MODE_EXWRITE(mode) ((mode) & 0x20) -#define DMA_MODE_ROTPRIO(mode) ((mode) & 0x10) -#define DMA_MODE_CH_EN(mode, chan) ((mode) & (1 << (chan))) - - -//************************************************************************** -// LIVE DEVICE -//************************************************************************** - -// device type definition -const device_type I8257 = &device_creator<i8257_device>; - -//------------------------------------------------- -// i8257_device - constructor -//------------------------------------------------- - -i8257_device::i8257_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : device_t(mconfig, I8257, "8257 DMA", tag, owner, clock, "i8257", __FILE__), - m_out_hrq_cb(*this), - m_out_tc_cb(*this), - m_out_mark_cb(*this), - m_in_memr_cb(*this), - m_out_memw_cb(*this), - m_in_ior_0_cb(*this), - m_in_ior_1_cb(*this), - m_in_ior_2_cb(*this), - m_in_ior_3_cb(*this), - m_out_iow_0_cb(*this), - m_out_iow_1_cb(*this), - m_out_iow_2_cb(*this), - m_out_iow_3_cb(*this), - m_mode(0), - m_rr(0), - m_msb(0), - m_drq(0), - m_status(0x0f) -{ - memset(m_registers, 0, sizeof(m_registers)); - memset(m_address, 0, sizeof(m_address)); - memset(m_count, 0, sizeof(m_count)); - memset(m_rwmode, 0, sizeof(m_rwmode)); -} - -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void i8257_device::device_start() -{ - /* validate arguments */ - assert(this != NULL); - - /* resolve callbacks */ - m_out_hrq_cb.resolve_safe(); - m_out_tc_cb.resolve_safe(); - m_out_mark_cb.resolve_safe(); - m_in_memr_cb.resolve(); - m_out_memw_cb.resolve(); - m_in_ior_0_cb.resolve(); - m_in_ior_1_cb.resolve(); - m_in_ior_2_cb.resolve(); - m_in_ior_3_cb.resolve(); - m_out_iow_0_cb.resolve(); - m_out_iow_1_cb.resolve(); - m_out_iow_2_cb.resolve(); - m_out_iow_3_cb.resolve(); - - /* set initial values */ - m_timer = timer_alloc(TIMER_OPERATION); - m_msbflip_timer = timer_alloc(TIMER_MSBFLIP); - - /* register for state saving */ - save_item(NAME(m_address)); - save_item(NAME(m_count)); - save_item(NAME(m_rwmode)); - save_item(NAME(m_registers)); - save_item(NAME(m_mode)); - save_item(NAME(m_rr)); - save_item(NAME(m_msb)); - save_item(NAME(m_drq)); - save_item(NAME(m_status)); -} - - -//------------------------------------------------- -// device_reset - device-specific reset -//------------------------------------------------- - -void i8257_device::device_reset() -{ - m_status &= 0xf0; - m_mode = 0; - i8257_update_status(); -} - - -int i8257_device::i8257_do_operation(int channel) -{ - int done; - UINT8 data = 0; - - UINT8 mode = m_rwmode[channel]; - if (m_count[channel] == 0x0000) - { - m_status |= (0x01 << channel); - - m_out_tc_cb(ASSERT_LINE); - } - - switch(mode) - { - case 1: - if (!m_in_memr_cb.isnull()) - data = m_in_memr_cb(m_address[channel]); - else - { - data = 0; - logerror("8257: No memory read function defined.\n"); - } - - switch (channel) - { - case 0: - if (!m_out_iow_0_cb.isnull()) - m_out_iow_0_cb((offs_t)m_address[channel], data); - else - logerror("8257: No channel write function for channel %d defined.\n", channel); - break; - case 1: - if (!m_out_iow_1_cb.isnull()) - m_out_iow_1_cb((offs_t)m_address[channel], data); - else - logerror("8257: No channel write function for channel %d defined.\n", channel); - break; - case 2: - if (!m_out_iow_2_cb.isnull()) - m_out_iow_2_cb((offs_t)m_address[channel], data); - else - logerror("8257: No channel write function for channel %d defined.\n", channel); - break; - case 3: - if (!m_out_iow_3_cb.isnull()) - m_out_iow_3_cb((offs_t)m_address[channel], data); - else - logerror("8257: No channel write function for channel %d defined.\n", channel); - break; - } - - m_address[channel]++; - m_count[channel]--; - done = (m_count[channel] == 0xFFFF); - break; - - case 2: - switch (channel) - { - case 0: - if (!m_in_ior_0_cb.isnull()) - data = m_in_ior_0_cb((offs_t)m_address[channel]); - else - { - data = 0; - logerror("8257: No channel read function for channel %d defined.\n", channel); - } - break; - case 1: - if (!m_in_ior_1_cb.isnull()) - data = m_in_ior_1_cb((offs_t)m_address[channel]); - else - { - data = 0; - logerror("8257: No channel read function for channel %d defined.\n", channel); - } - break; - case 2: - if (!m_in_ior_2_cb.isnull()) - data = m_in_ior_2_cb((offs_t)m_address[channel]); - else - { - data = 0; - logerror("8257: No channel read function for channel %d defined.\n", channel); - } - break; - case 3: - if (!m_in_ior_3_cb.isnull()) - data = m_in_ior_3_cb((offs_t)m_address[channel]); - else - { - data = 0; - logerror("8257: No channel read function for channel %d defined.\n", channel); - } - break; - } - - if (!m_out_memw_cb.isnull()) - m_out_memw_cb((offs_t)m_address[channel], data); - else - logerror("8257: No memory write function defined.\n"); - - m_address[channel]++; - m_count[channel]--; - done = (m_count[channel] == 0xffff); - break; - - case 0: /* verify */ - m_address[channel]++; - m_count[channel]--; - done = (m_count[channel] == 0xffff); - break; - - default: - fatalerror("i8257_do_operation: invalid mode!\n"); - break; - } - - if (done) - { - if ((channel==2) && DMA_MODE_AUTOLOAD(m_mode)) - { - /* in case of autoload at the end channel 3 info is */ - /* copied to channel 2 info */ - m_registers[4] = m_registers[6]; - m_registers[5] = m_registers[7]; - } - - m_out_tc_cb(CLEAR_LINE); - } - return done; -} - - -void i8257_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - switch (id) - { - case TIMER_OPERATION: - { - int i, channel = 0, rr; - int done; - - rr = DMA_MODE_ROTPRIO(m_mode) ? m_rr : 0; - for (i = 0; i < I8257_NUM_CHANNELS; i++) - { - channel = (i + rr) % I8257_NUM_CHANNELS; - if ((m_status & (1 << channel)) == 0) - { - if (m_mode & m_drq & (1 << channel)) - { - break; - } - } - } - done = i8257_do_operation(channel); - - m_rr = (channel + 1) & 0x03; - - if (done) - { - m_drq &= ~(0x01 << channel); - i8257_update_status(); - if (!(DMA_MODE_AUTOLOAD(m_mode) && channel==2)) - { - if (DMA_MODE_TCSTOP(m_mode)) - { - m_mode &= ~(0x01 << channel); - } - } - } - break; - } - - case TIMER_MSBFLIP: - m_msb ^= 1; - break; - - case TIMER_DRQ_SYNC: - { - int channel = param >> 1; - int state = param & 0x01; - - /* normalize state */ - if (state) - { - m_drq |= 0x01 << channel; - m_address[channel] = m_registers[channel * 2]; - m_count[channel] = m_registers[channel * 2 + 1] & 0x3FFF; - m_rwmode[channel] = m_registers[channel * 2 + 1] >> 14; - /* clear channel TC */ - m_status &= ~(0x01 << channel); - } - else - m_drq &= ~(0x01 << channel); - - i8257_update_status(); - break; - } - } -} - - -void i8257_device::i8257_update_status() -{ - UINT16 pending_transfer; - attotime next; - - /* no transfer is active right now; is there a transfer pending right now? */ - pending_transfer = m_drq & (m_mode & 0x0F); - - if (pending_transfer) - { - next = attotime::from_hz(clock() / 4 ); - m_timer->adjust( - attotime::zero, - 0, - /* 1 byte transferred in 4 clock cycles */ - next); - } - else - { - /* no transfers active right now */ - m_timer->reset(); - } - - /* set the halt line */ - m_out_hrq_cb(pending_transfer ? ASSERT_LINE : CLEAR_LINE); -} - - -void i8257_device::i8257_prepare_msb_flip() -{ - m_msbflip_timer->adjust(attotime::zero); -} - - -READ8_MEMBER(i8257_device::i8257_r) -{ - UINT8 data = 0xFF; - - switch(offset) - { - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - /* DMA address/count register */ - data = ( m_registers[offset] >> (m_msb ? 8 : 0) ) & 0xFF; - i8257_prepare_msb_flip(); - break; - - case 8: - /* DMA status register */ - data = (UINT8) m_status; - /* read resets status ! */ - m_status &= 0xF0; - - break; - - default: - logerror("8257: Read from register %d.\n", offset); - data = 0xFF; - break; - } - return data; -} - - -WRITE8_MEMBER(i8257_device::i8257_w) -{ - switch(offset) - { - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - /* DMA address/count register */ - if (m_msb) - { - m_registers[offset] |= ((UINT16) data) << 8; - } - else - { - m_registers[offset] = data; - } - - if (DMA_MODE_AUTOLOAD(m_mode)) - { - /* in case of autoload when inserting channel 2 info */ - /* it is automaticaly copied to channel 3 info */ - switch(offset) - { - case 4: - case 5: - if (m_msb) - { - m_registers[offset+2] |= ((UINT16) data) << 8; - } - else - { - m_registers[offset+2] = data; - } - } - } - - i8257_prepare_msb_flip(); - break; - - case 8: - /* DMA mode register */ - m_mode = data; - break; - - default: - logerror("8257: Write to register %d.\n", offset); - break; - } -} - - -void i8257_device::i8257_drq_w(int channel, int state) -{ - int param = (channel << 1) | (state ? 1 : 0); - - synchronize(TIMER_DRQ_SYNC, param); -} diff --git a/src/emu/machine/8257dma.h b/src/emu/machine/8257dma.h deleted file mode 100644 index 7f524b21b58..00000000000 --- a/src/emu/machine/8257dma.h +++ /dev/null @@ -1,196 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Couriersud -/*************************************************************************** - - Intel 8257 Programmable DMA Controller emulation - - Copyright Nicola Salmoria and the MAME Team. - Visit http://mamedev.org for licensing and usage restrictions. - -**************************************************************************** - _____ _____ - _I/OR 1 |* \_/ | 40 A7 - _I/OW 2 | | 39 A6 - _MEMR 3 | | 38 A5 - _MEMW 4 | | 37 A4 - MARK 5 | | 36 TC - READY 6 | | 35 A3 - HLDA 7 | | 34 A2 - ADSTB 8 | | 33 A1 - AEN 9 | | 32 A0 - HRQ 10 | 8257 | 31 Vcc - _CS 11 | | 30 D0 - CLK 12 | | 29 D1 - RESET 13 | | 28 D2 - _DACK2 14 | | 27 D3 - _DACK3 15 | | 26 D4 - DRQ3 16 | | 25 _DACK0 - DRQ2 17 | | 24 _DACK1 - DRQ1 18 | | 23 D5 - DRQ0 19 | | 22 D6 - GND 20 |_____________| 21 D7 - -***************************************************************************/ - -#pragma once - -#ifndef __I8257__ -#define __I8257__ - -#include "emu.h" - - -#define I8257_NUM_CHANNELS (4) - - -/*************************************************************************** - DEVICE CONFIGURATION MACROS -***************************************************************************/ - -#define MCFG_I8257_OUT_HRQ_CB(_devcb) \ - devcb = &i8257_device::set_out_hrq_callback(*device, DEVCB2_##_devcb); - -#define MCFG_I8257_OUT_TC_CB(_devcb) \ - devcb = &i8257_device::set_out_tc_callback(*device, DEVCB2_##_devcb); - -#define MCFG_I8257_OUT_MARK_CB(_devcb) \ - devcb = &i8257_device::set_out_mark_callback(*device, DEVCB2_##_devcb); - - -#define MCFG_I8257_IN_MEMR_CB(_devcb) \ - devcb = &i8257_device::set_in_memr_callback(*device, DEVCB2_##_devcb); - -#define MCFG_I8257_OUT_MEMW_CB(_devcb) \ - devcb = &i8257_device::set_out_memw_callback(*device, DEVCB2_##_devcb); - - -#define MCFG_I8257_IN_IOR_0_CB(_devcb) \ - devcb = &i8257_device::set_in_ior_0_callback(*device, DEVCB2_##_devcb); - -#define MCFG_I8257_IN_IOR_1_CB(_devcb) \ - devcb = &i8257_device::set_in_ior_1_callback(*device, DEVCB2_##_devcb); - -#define MCFG_I8257_IN_IOR_2_CB(_devcb) \ - devcb = &i8257_device::set_in_ior_2_callback(*device, DEVCB2_##_devcb); - -#define MCFG_I8257_IN_IOR_3_CB(_devcb) \ - devcb = &i8257_device::set_in_ior_3_callback(*device, DEVCB2_##_devcb); - - -#define MCFG_I8257_OUT_IOW_0_CB(_devcb) \ - devcb = &i8257_device::set_out_iow_0_callback(*device, DEVCB2_##_devcb); - -#define MCFG_I8257_OUT_IOW_1_CB(_devcb) \ - devcb = &i8257_device::set_out_iow_1_callback(*device, DEVCB2_##_devcb); - -#define MCFG_I8257_OUT_IOW_2_CB(_devcb) \ - devcb = &i8257_device::set_out_iow_2_callback(*device, DEVCB2_##_devcb); - -#define MCFG_I8257_OUT_IOW_3_CB(_devcb) \ - devcb = &i8257_device::set_out_iow_3_callback(*device, DEVCB2_##_devcb); - - -/*************************************************************************** - TYPE DEFINITIONS -***************************************************************************/ - - -// ======================> i8257_device - -class i8257_device : public device_t -{ -public: - // construction/destruction - i8257_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - - template<class _Object> static devcb2_base &set_out_hrq_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_hrq_cb.set_callback(object); } - template<class _Object> static devcb2_base &set_out_tc_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_tc_cb.set_callback(object); } - template<class _Object> static devcb2_base &set_out_mark_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_mark_cb.set_callback(object); } - - template<class _Object> static devcb2_base &set_in_memr_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_in_memr_cb.set_callback(object); } - template<class _Object> static devcb2_base &set_out_memw_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_memw_cb.set_callback(object); } - - template<class _Object> static devcb2_base &set_in_ior_0_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_in_ior_0_cb.set_callback(object); } - template<class _Object> static devcb2_base &set_in_ior_1_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_in_ior_1_cb.set_callback(object); } - template<class _Object> static devcb2_base &set_in_ior_2_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_in_ior_2_cb.set_callback(object); } - template<class _Object> static devcb2_base &set_in_ior_3_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_in_ior_3_cb.set_callback(object); } - - template<class _Object> static devcb2_base &set_out_iow_0_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_iow_0_cb.set_callback(object); } - template<class _Object> static devcb2_base &set_out_iow_1_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_iow_1_cb.set_callback(object); } - template<class _Object> static devcb2_base &set_out_iow_2_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_iow_2_cb.set_callback(object); } - template<class _Object> static devcb2_base &set_out_iow_3_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_iow_3_cb.set_callback(object); } - - /* register access */ - DECLARE_READ8_MEMBER( i8257_r ); - DECLARE_WRITE8_MEMBER( i8257_w ); - - /* hold acknowledge */ - WRITE_LINE_MEMBER( i8257_hlda_w ) { } - - /* ready */ - WRITE_LINE_MEMBER( i8257_ready_w ) { } - - /* data request */ - WRITE_LINE_MEMBER( i8257_drq0_w ) { i8257_drq_w(0, state); } - WRITE_LINE_MEMBER( i8257_drq1_w ) { i8257_drq_w(1, state); } - WRITE_LINE_MEMBER( i8257_drq2_w ) { i8257_drq_w(2, state); } - WRITE_LINE_MEMBER( i8257_drq3_w ) { i8257_drq_w(3, state); } - void i8257_drq_w(int channel, int state); - -protected: - // device-level overrides - virtual void device_start(); - virtual void device_reset(); - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); - -private: - static const device_timer_id TIMER_OPERATION = 0; - static const device_timer_id TIMER_MSBFLIP = 1; - static const device_timer_id TIMER_DRQ_SYNC = 2; - - int i8257_do_operation(int channel); - void i8257_update_status(); - void i8257_prepare_msb_flip(); - - devcb2_write_line m_out_hrq_cb; - devcb2_write_line m_out_tc_cb; - devcb2_write_line m_out_mark_cb; - - /* accessors to main memory */ - devcb2_read8 m_in_memr_cb; - devcb2_write8 m_out_memw_cb; - - /* channel accesors */ - devcb2_read8 m_in_ior_0_cb; - devcb2_read8 m_in_ior_1_cb; - devcb2_read8 m_in_ior_2_cb; - devcb2_read8 m_in_ior_3_cb; - devcb2_write8 m_out_iow_0_cb; - devcb2_write8 m_out_iow_1_cb; - devcb2_write8 m_out_iow_2_cb; - devcb2_write8 m_out_iow_3_cb; - - emu_timer *m_timer; - emu_timer *m_msbflip_timer; - - UINT16 m_registers[I8257_NUM_CHANNELS*2]; - - UINT16 m_address[I8257_NUM_CHANNELS]; - UINT16 m_count[I8257_NUM_CHANNELS]; - UINT8 m_rwmode[I8257_NUM_CHANNELS]; - - UINT8 m_mode; - UINT8 m_rr; - - UINT8 m_msb; - UINT8 m_drq; - - /* bits 0- 3 : Terminal count for channels 0-3 */ - UINT8 m_status; -}; - - -// device type definition -extern const device_type I8257; - -#endif diff --git a/src/emu/machine/i8257.c b/src/emu/machine/i8257.c index 6de5771afbe..d46f9aa8ae7 100644 --- a/src/emu/machine/i8257.c +++ b/src/emu/machine/i8257.c @@ -17,7 +17,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type I8257N = &device_creator<i8257n_device>; +const device_type I8257 = &device_creator<i8257_device>; @@ -69,9 +69,9 @@ enum // dma_request - //------------------------------------------------- -inline void i8257n_device::dma_request(int channel, int state) +inline void i8257_device::dma_request(int channel, int state) { - if (LOG) logerror("I8257N '%s' Channel %u DMA Request: %u\n", tag(), channel, state); + if (LOG) logerror("I8257 '%s' Channel %u DMA Request: %u\n", tag(), channel, state); if (state) { @@ -89,7 +89,7 @@ inline void i8257n_device::dma_request(int channel, int state) // is_request_active - //------------------------------------------------- -inline bool i8257n_device::is_request_active(int channel) +inline bool i8257_device::is_request_active(int channel) { return (BIT(m_request, channel) && MODE_CHAN_ENABLE(channel)) ? true : false; } @@ -98,7 +98,7 @@ inline bool i8257n_device::is_request_active(int channel) // set_hreq //------------------------------------------------- -inline void i8257n_device::set_hreq(int state) +inline void i8257_device::set_hreq(int state) { if (m_hreq != state) { @@ -112,7 +112,7 @@ inline void i8257n_device::set_hreq(int state) // set_tc - //------------------------------------------------- -inline void i8257n_device::set_tc(int state) +inline void i8257_device::set_tc(int state) { if (m_tc != state) { @@ -127,7 +127,7 @@ inline void i8257n_device::set_tc(int state) // set_dack - dack is active low //------------------------------------------------- -inline void i8257n_device::set_dack() +inline void i8257_device::set_dack() { m_out_dack_0_cb(m_current_channel != 0); m_out_dack_1_cb(m_current_channel != 1); @@ -140,7 +140,7 @@ inline void i8257n_device::set_dack() // dma_read - //------------------------------------------------- -inline void i8257n_device::dma_read() +inline void i8257_device::dma_read() { offs_t offset = m_channel[m_current_channel].m_address; @@ -177,7 +177,7 @@ inline void i8257n_device::dma_read() // dma_write - //------------------------------------------------- -inline void i8257n_device::dma_write() +inline void i8257_device::dma_write() { offs_t offset = m_channel[m_current_channel].m_address; @@ -219,7 +219,7 @@ inline void i8257n_device::dma_write() // end_of_process - //------------------------------------------------- -inline void i8257n_device::advance() +inline void i8257_device::advance() { bool tc = (m_channel[m_current_channel].m_count == 0); bool al = (MODE_AUTOLOAD && (m_current_channel == 2)); @@ -257,11 +257,11 @@ inline void i8257n_device::advance() //************************************************************************** //------------------------------------------------- -// i8257n_device - constructor +// i8257_device - constructor //------------------------------------------------- -i8257n_device::i8257n_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : device_t(mconfig, I8257N, "I8257N", tag, owner, clock, "i8257n", __FILE__), +i8257_device::i8257_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, I8257, "Intel 8257", tag, owner, clock, "i8257", __FILE__), device_execute_interface(mconfig, *this), m_icount(0), m_reverse_rw(0), @@ -301,7 +301,7 @@ i8257n_device::i8257n_device(const machine_config &mconfig, const char *tag, dev // device_start - device-specific startup //------------------------------------------------- -void i8257n_device::device_start() +void i8257_device::device_start() { // set our instruction counter m_icountptr = &m_icount; @@ -355,7 +355,7 @@ void i8257n_device::device_start() // device_reset - device-specific reset //------------------------------------------------- -void i8257n_device::device_reset() +void i8257_device::device_reset() { m_state = STATE_SI; m_transfer_mode = 0; @@ -377,7 +377,7 @@ void i8257n_device::device_reset() set_dack(); } -bool i8257n_device::next_channel() +bool i8257_device::next_channel() { int priority[] = { 0, 1, 2, 3 }; @@ -409,7 +409,7 @@ bool i8257n_device::next_channel() // execute_run - //------------------------------------------------- -void i8257n_device::execute_run() +void i8257_device::execute_run() { do { @@ -492,7 +492,7 @@ void i8257n_device::execute_run() // read - //------------------------------------------------- -READ8_MEMBER( i8257n_device::read ) +READ8_MEMBER( i8257_device::read ) { UINT8 data = 0; @@ -518,7 +518,7 @@ READ8_MEMBER( i8257n_device::read ) { data = (m_channel[channel].m_count >> 8); if(m_reverse_rw && m_channel[channel].m_mode) - data |= (m_channel[channel].m_mode == 1) ? 0x2000 : 0x1000; + data |= (m_channel[channel].m_mode == 1) ? 0x80 : 0x40; else data |= (m_channel[channel].m_mode << 6); } @@ -547,7 +547,7 @@ READ8_MEMBER( i8257n_device::read ) // write - //------------------------------------------------- -WRITE8_MEMBER( i8257n_device::write ) +WRITE8_MEMBER( i8257_device::write ) { if (!BIT(offset, 3)) { @@ -600,7 +600,7 @@ WRITE8_MEMBER( i8257n_device::write ) { m_transfer_mode = data; - if (LOG) logerror("I8257N '%s' Command Register: %02x\n", tag(), m_transfer_mode); + if (LOG) logerror("I8257 '%s' Command Register: %02x\n", tag(), m_transfer_mode); } trigger(1); } @@ -610,9 +610,9 @@ WRITE8_MEMBER( i8257n_device::write ) // hlda_w - hold acknowledge //------------------------------------------------- -WRITE_LINE_MEMBER( i8257n_device::hlda_w ) +WRITE_LINE_MEMBER( i8257_device::hlda_w ) { - if (LOG) logerror("I8257N '%s' Hold Acknowledge: %u\n", tag(), state); + if (LOG) logerror("I8257 '%s' Hold Acknowledge: %u\n", tag(), state); m_hack = state; trigger(1); @@ -623,9 +623,9 @@ WRITE_LINE_MEMBER( i8257n_device::hlda_w ) // ready_w - ready //------------------------------------------------- -WRITE_LINE_MEMBER( i8257n_device::ready_w ) +WRITE_LINE_MEMBER( i8257_device::ready_w ) { - if (LOG) logerror("I8257N '%s' Ready: %u\n", tag(), state); + if (LOG) logerror("I8257 '%s' Ready: %u\n", tag(), state); m_ready = state; } @@ -635,7 +635,7 @@ WRITE_LINE_MEMBER( i8257n_device::ready_w ) // dreq0_w - DMA request for channel 0 //------------------------------------------------- -WRITE_LINE_MEMBER( i8257n_device::dreq0_w ) +WRITE_LINE_MEMBER( i8257_device::dreq0_w ) { dma_request(0, state); } @@ -645,7 +645,7 @@ WRITE_LINE_MEMBER( i8257n_device::dreq0_w ) // dreq0_w - DMA request for channel 1 //------------------------------------------------- -WRITE_LINE_MEMBER( i8257n_device::dreq1_w ) +WRITE_LINE_MEMBER( i8257_device::dreq1_w ) { dma_request(1, state); } @@ -655,7 +655,7 @@ WRITE_LINE_MEMBER( i8257n_device::dreq1_w ) // dreq1_w - DMA request for channel 2 //------------------------------------------------- -WRITE_LINE_MEMBER( i8257n_device::dreq2_w ) +WRITE_LINE_MEMBER( i8257_device::dreq2_w ) { dma_request(2, state); } @@ -665,7 +665,7 @@ WRITE_LINE_MEMBER( i8257n_device::dreq2_w ) // dreq3_w - DMA request for channel 3 //------------------------------------------------- -WRITE_LINE_MEMBER( i8257n_device::dreq3_w ) +WRITE_LINE_MEMBER( i8257_device::dreq3_w ) { dma_request(3, state); } diff --git a/src/emu/machine/i8257.h b/src/emu/machine/i8257.h index 8de8bb13ca4..a09358b63d4 100644 --- a/src/emu/machine/i8257.h +++ b/src/emu/machine/i8257.h @@ -34,8 +34,8 @@ #pragma once -#ifndef __I8257N__ -#define __I8257N__ +#ifndef __I8257__ +#define __I8257__ #include "emu.h" @@ -46,69 +46,69 @@ ***************************************************************************/ #define MCFG_I8257_ADD(_tag, _clock, _config) \ - MCFG_DEVICE_ADD(_tag, I8257N, _clock) \ + MCFG_DEVICE_ADD(_tag, I8257, _clock) \ MCFG_DEVICE_CONFIG(_config) #define MCFG_I8257_OUT_HRQ_CB(_devcb) \ - devcb = &i8257n_device::set_out_hrq_callback(*device, DEVCB2_##_devcb); + devcb = &i8257_device::set_out_hrq_callback(*device, DEVCB2_##_devcb); #define MCFG_I8257_OUT_TC_CB(_devcb) \ - devcb = &i8257n_device::set_out_tc_callback(*device, DEVCB2_##_devcb); + devcb = &i8257_device::set_out_tc_callback(*device, DEVCB2_##_devcb); #define MCFG_I8257_IN_MEMR_CB(_devcb) \ - devcb = &i8257n_device::set_in_memr_callback(*device, DEVCB2_##_devcb); + devcb = &i8257_device::set_in_memr_callback(*device, DEVCB2_##_devcb); #define MCFG_I8257_OUT_MEMW_CB(_devcb) \ - devcb = &i8257n_device::set_out_memw_callback(*device, DEVCB2_##_devcb); + devcb = &i8257_device::set_out_memw_callback(*device, DEVCB2_##_devcb); #define MCFG_I8257_IN_IOR_0_CB(_devcb) \ - devcb = &i8257n_device::set_in_ior_0_callback(*device, DEVCB2_##_devcb); + devcb = &i8257_device::set_in_ior_0_callback(*device, DEVCB2_##_devcb); #define MCFG_I8257_IN_IOR_1_CB(_devcb) \ - devcb = &i8257n_device::set_in_ior_1_callback(*device, DEVCB2_##_devcb); + devcb = &i8257_device::set_in_ior_1_callback(*device, DEVCB2_##_devcb); #define MCFG_I8257_IN_IOR_2_CB(_devcb) \ - devcb = &i8257n_device::set_in_ior_2_callback(*device, DEVCB2_##_devcb); + devcb = &i8257_device::set_in_ior_2_callback(*device, DEVCB2_##_devcb); #define MCFG_I8257_IN_IOR_3_CB(_devcb) \ - devcb = &i8257n_device::set_in_ior_3_callback(*device, DEVCB2_##_devcb); + devcb = &i8257_device::set_in_ior_3_callback(*device, DEVCB2_##_devcb); #define MCFG_I8257_OUT_IOW_0_CB(_devcb) \ - devcb = &i8257n_device::set_out_iow_0_callback(*device, DEVCB2_##_devcb); + devcb = &i8257_device::set_out_iow_0_callback(*device, DEVCB2_##_devcb); #define MCFG_I8257_OUT_IOW_1_CB(_devcb) \ - devcb = &i8257n_device::set_out_iow_1_callback(*device, DEVCB2_##_devcb); + devcb = &i8257_device::set_out_iow_1_callback(*device, DEVCB2_##_devcb); #define MCFG_I8257_OUT_IOW_2_CB(_devcb) \ - devcb = &i8257n_device::set_out_iow_2_callback(*device, DEVCB2_##_devcb); + devcb = &i8257_device::set_out_iow_2_callback(*device, DEVCB2_##_devcb); #define MCFG_I8257_OUT_IOW_3_CB(_devcb) \ - devcb = &i8257n_device::set_out_iow_3_callback(*device, DEVCB2_##_devcb); + devcb = &i8257_device::set_out_iow_3_callback(*device, DEVCB2_##_devcb); #define MCFG_I8257_OUT_DACK_0_CB(_devcb) \ - devcb = &i8257n_device::set_out_dack_0_callback(*device, DEVCB2_##_devcb); + devcb = &i8257_device::set_out_dack_0_callback(*device, DEVCB2_##_devcb); #define MCFG_I8257_OUT_DACK_1_CB(_devcb) \ - devcb = &i8257n_device::set_out_dack_1_callback(*device, DEVCB2_##_devcb); + devcb = &i8257_device::set_out_dack_1_callback(*device, DEVCB2_##_devcb); #define MCFG_I8257_OUT_DACK_2_CB(_devcb) \ - devcb = &i8257n_device::set_out_dack_2_callback(*device, DEVCB2_##_devcb); + devcb = &i8257_device::set_out_dack_2_callback(*device, DEVCB2_##_devcb); #define MCFG_I8257_OUT_DACK_3_CB(_devcb) \ - devcb = &i8257n_device::set_out_dack_3_callback(*device, DEVCB2_##_devcb); + devcb = &i8257_device::set_out_dack_3_callback(*device, DEVCB2_##_devcb); // HACK: the radio86 and alikes require this, is it a bug in the soviet clone or is there something else happening? #define MCFG_I8257_REVERSE_RW_MODE(_flag) \ - i8257n_device::static_set_reverse_rw_mode(*device, _flag); + i8257_device::static_set_reverse_rw_mode(*device, _flag); -// ======================> i8257n_device +// ======================> i8257_device -class i8257n_device : public device_t, +class i8257_device : public device_t, public device_execute_interface { public: // construction/destruction - i8257n_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + i8257_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -121,28 +121,28 @@ public: DECLARE_WRITE_LINE_MEMBER( dreq2_w ); DECLARE_WRITE_LINE_MEMBER( dreq3_w ); - template<class _Object> static devcb2_base &set_out_hrq_callback(device_t &device, _Object object) { return downcast<i8257n_device &>(device).m_out_hrq_cb.set_callback(object); } - template<class _Object> static devcb2_base &set_out_tc_callback(device_t &device, _Object object) { return downcast<i8257n_device &>(device).m_out_tc_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_out_hrq_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_hrq_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_out_tc_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_tc_cb.set_callback(object); } - template<class _Object> static devcb2_base &set_in_memr_callback(device_t &device, _Object object) { return downcast<i8257n_device &>(device).m_in_memr_cb.set_callback(object); } - template<class _Object> static devcb2_base &set_out_memw_callback(device_t &device, _Object object) { return downcast<i8257n_device &>(device).m_out_memw_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_in_memr_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_in_memr_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_out_memw_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_memw_cb.set_callback(object); } - template<class _Object> static devcb2_base &set_in_ior_0_callback(device_t &device, _Object object) { return downcast<i8257n_device &>(device).m_in_ior_0_cb.set_callback(object); } - template<class _Object> static devcb2_base &set_in_ior_1_callback(device_t &device, _Object object) { return downcast<i8257n_device &>(device).m_in_ior_1_cb.set_callback(object); } - template<class _Object> static devcb2_base &set_in_ior_2_callback(device_t &device, _Object object) { return downcast<i8257n_device &>(device).m_in_ior_2_cb.set_callback(object); } - template<class _Object> static devcb2_base &set_in_ior_3_callback(device_t &device, _Object object) { return downcast<i8257n_device &>(device).m_in_ior_3_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_in_ior_0_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_in_ior_0_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_in_ior_1_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_in_ior_1_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_in_ior_2_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_in_ior_2_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_in_ior_3_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_in_ior_3_cb.set_callback(object); } - template<class _Object> static devcb2_base &set_out_iow_0_callback(device_t &device, _Object object) { return downcast<i8257n_device &>(device).m_out_iow_0_cb.set_callback(object); } - template<class _Object> static devcb2_base &set_out_iow_1_callback(device_t &device, _Object object) { return downcast<i8257n_device &>(device).m_out_iow_1_cb.set_callback(object); } - template<class _Object> static devcb2_base &set_out_iow_2_callback(device_t &device, _Object object) { return downcast<i8257n_device &>(device).m_out_iow_2_cb.set_callback(object); } - template<class _Object> static devcb2_base &set_out_iow_3_callback(device_t &device, _Object object) { return downcast<i8257n_device &>(device).m_out_iow_3_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_out_iow_0_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_iow_0_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_out_iow_1_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_iow_1_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_out_iow_2_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_iow_2_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_out_iow_3_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_iow_3_cb.set_callback(object); } - template<class _Object> static devcb2_base &set_out_dack_0_callback(device_t &device, _Object object) { return downcast<i8257n_device &>(device).m_out_dack_0_cb.set_callback(object); } - template<class _Object> static devcb2_base &set_out_dack_1_callback(device_t &device, _Object object) { return downcast<i8257n_device &>(device).m_out_dack_1_cb.set_callback(object); } - template<class _Object> static devcb2_base &set_out_dack_2_callback(device_t &device, _Object object) { return downcast<i8257n_device &>(device).m_out_dack_2_cb.set_callback(object); } - template<class _Object> static devcb2_base &set_out_dack_3_callback(device_t &device, _Object object) { return downcast<i8257n_device &>(device).m_out_dack_3_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_out_dack_0_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_dack_0_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_out_dack_1_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_dack_1_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_out_dack_2_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_dack_2_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_out_dack_3_callback(device_t &device, _Object object) { return downcast<i8257_device &>(device).m_out_dack_3_cb.set_callback(object); } - static void static_set_reverse_rw_mode(device_t &device, bool flag) { downcast<i8257n_device &>(device).m_reverse_rw = flag; } + static void static_set_reverse_rw_mode(device_t &device, bool flag) { downcast<i8257_device &>(device).m_reverse_rw = flag; } protected: // device-level overrides virtual void device_start(); @@ -207,7 +207,7 @@ private: // device type definition -extern const device_type I8257N; +extern const device_type I8257; diff --git a/src/emu/machine/machine.mak b/src/emu/machine/machine.mak index a3336936d40..1a270986cad 100644 --- a/src/emu/machine/machine.mak +++ b/src/emu/machine/machine.mak @@ -199,15 +199,6 @@ endif #------------------------------------------------- # -#@src/emu/machine/8257dma.h,MACHINES += I8257 -#------------------------------------------------- - -ifneq ($(filter I8257,$(MACHINES)),) -MACHINEOBJS += $(MACHINEOBJ)/8257dma.o -endif - -#------------------------------------------------- -# #@src/emu/machine/8530scc.h,MACHINES += 8530SCC #------------------------------------------------- @@ -592,10 +583,10 @@ endif #------------------------------------------------- # -#@src/emu/machine/i8257.h,MACHINES += I8257N +#@src/emu/machine/i8257.h,MACHINES += I8257 #------------------------------------------------- -ifneq ($(filter I8257N,$(MACHINES)),) +ifneq ($(filter I8257,$(MACHINES)),) MACHINEOBJS += $(MACHINEOBJ)/i8257.o endif diff --git a/src/mame/drivers/dkong.c b/src/mame/drivers/dkong.c index 507494ac5f1..bd9c185db60 100644 --- a/src/mame/drivers/dkong.c +++ b/src/mame/drivers/dkong.c @@ -326,7 +326,6 @@ this is a legitimate Nintendo Kit. #include "cpu/s2650/s2650.h" #include "cpu/m6502/m6502.h" #include "includes/dkong.h" -#include "machine/8257dma.h" #include "machine/eepromser.h" /************************************* @@ -538,9 +537,10 @@ WRITE8_MEMBER(dkong_state::dkong3_coin_counter_w) WRITE8_MEMBER(dkong_state::p8257_drq_w) { - i8257_device *device = machine().device<i8257_device>("dma8257"); - device->i8257_drq0_w(data & 0x01); - device->i8257_drq1_w(data & 0x01); + m_dma8257->dreq0_w(data & 0x01); + m_dma8257->dreq1_w(data & 0x01); + machine().scheduler().abort_timeslice(); // transfer occurs immediately + machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100)); // smooth things out a bit } READ8_MEMBER(dkong_state::dkong_in2_r) @@ -739,7 +739,7 @@ static ADDRESS_MAP_START( dkong_map, AS_PROGRAM, 8, dkong_state ) AM_RANGE(0x6000, 0x6bff) AM_RAM AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE("sprite_ram") /* sprite set 1 */ AM_RANGE(0x7400, 0x77ff) AM_RAM_WRITE(dkong_videoram_w) AM_SHARE("video_ram") - AM_RANGE(0x7800, 0x780f) AM_DEVREADWRITE("dma8257", i8257_device, i8257_r, i8257_w) /* P8257 control registers */ + AM_RANGE(0x7800, 0x780f) AM_DEVREADWRITE("dma8257", i8257_device, read, write) /* P8257 control registers */ AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_LATCH8_WRITE("ls175.3d") /* IN0, sound CPU intf */ AM_RANGE(0x7c80, 0x7c80) AM_READ_PORT("IN1") AM_WRITE(radarscp_grid_color_w)/* IN1 */ @@ -761,7 +761,7 @@ static ADDRESS_MAP_START( dkongjr_map, AS_PROGRAM, 8, dkong_state ) AM_RANGE(0x6c00, 0x6fff) AM_RAM /* DK3 bootleg only */ AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE("sprite_ram") /* sprite set 1 */ AM_RANGE(0x7400, 0x77ff) AM_RAM_WRITE(dkong_videoram_w) AM_SHARE("video_ram") - AM_RANGE(0x7800, 0x780f) AM_DEVREADWRITE("dma8257", i8257_device, i8257_r, i8257_w) /* P8257 control registers */ + AM_RANGE(0x7800, 0x780f) AM_DEVREADWRITE("dma8257", i8257_device, read, write) /* P8257 control registers */ AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_LATCH8_WRITE("ls174.3d") /* IN0, sound interface */ @@ -834,7 +834,7 @@ static ADDRESS_MAP_START( s2650_map, AS_PROGRAM, 8, dkong_state ) AM_RANGE(0x1600, 0x17ff) AM_RAM /* 0x6400 spriteram location */ AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(dkong_videoram_w) AM_SHARE("video_ram") /* 0x7400 */ AM_RANGE(0x1C00, 0x1f7f) AM_RAM /* 0x6000 */ - AM_RANGE(0x1f80, 0x1f8f) AM_DEVREADWRITE("dma8257", i8257_device, i8257_r, i8257_w) /* P8257 control registers */ + AM_RANGE(0x1f80, 0x1f8f) AM_DEVREADWRITE("dma8257", i8257_device, read, write) /* P8257 control registers */ /* 0x6800 not remapped */ AM_RANGE(0x2000, 0x2fff) AM_ROM AM_RANGE(0x3000, 0x3fff) AM_READWRITE(s2650_mirror_r, s2650_mirror_w) @@ -1614,6 +1614,17 @@ INTERRUPT_GEN_MEMBER(dkong_state::vblank_irq) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } +WRITE_LINE_MEMBER(dkong_state::busreq_w ) +{ +// since our Z80 has no support for BUSACK, we assume it is granted immediately + m_maincpu->set_input_line(Z80_INPUT_LINE_BUSRQ, state); + m_maincpu->set_input_line(INPUT_LINE_HALT, state); // do we need this? + if(m_z80dma) + m_z80dma->bai_w(state); // tell dma that bus has been granted + else if(m_dma8257) + m_dma8257->hlda_w(state); +} + static MACHINE_CONFIG_START( dkong_base, dkong_state ) /* basic machine hardware */ @@ -1625,11 +1636,12 @@ static MACHINE_CONFIG_START( dkong_base, dkong_state ) MCFG_MACHINE_RESET_OVERRIDE(dkong_state,dkong) MCFG_DEVICE_ADD("dma8257", I8257, CLOCK_1H) - MCFG_I8257_OUT_HRQ_CB(INPUTLINE("maincpu", INPUT_LINE_HALT)) + MCFG_I8257_OUT_HRQ_CB(WRITELINE(dkong_state, busreq_w)) MCFG_I8257_IN_MEMR_CB(READ8(dkong_state, memory_read_byte)) MCFG_I8257_OUT_MEMW_CB(WRITE8(dkong_state, memory_write_byte)) MCFG_I8257_IN_IOR_1_CB(READ8(dkong_state, p8257_ctl_r)) MCFG_I8257_OUT_IOW_0_CB(WRITE8(dkong_state, p8257_ctl_w)) + MCFG_I8257_REVERSE_RW_MODE(1) // why? /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/includes/dkong.h b/src/mame/includes/dkong.h index 7c4bb059889..9747f173cd3 100644 --- a/src/mame/includes/dkong.h +++ b/src/mame/includes/dkong.h @@ -4,6 +4,7 @@ #include "cpu/m6502/n2a03.h" #include "machine/latch8.h" #include "machine/z80dma.h" +#include "machine/i8257.h" /* @@ -109,7 +110,8 @@ public: m_gfxdecode(*this, "gfxdecode"), m_screen(*this, "screen"), m_palette(*this, "palette"), - m_z80dma(*this, "z80dma") + m_z80dma(*this, "z80dma"), + m_dma8257(*this, "dma8257") { } /* devices */ @@ -189,6 +191,7 @@ public: required_device<screen_device> m_screen; required_device<palette_device> m_palette; optional_device<z80dma_device> m_z80dma; + optional_device<i8257_device> m_dma8257; /* radarscp_scanline */ int m_counter; @@ -260,6 +263,7 @@ public: INTERRUPT_GEN_MEMBER(s2650_interrupt); INTERRUPT_GEN_MEMBER(vblank_irq); TIMER_CALLBACK_MEMBER(scanline_callback); + DECLARE_WRITE_LINE_MEMBER(busreq_w); void braze_decrypt_rom(UINT8 *dest); void drakton_decrypt_rom(UINT8 mod, int offs, int *bs); diff --git a/src/mess/drivers/apogee.c b/src/mess/drivers/apogee.c index 48ec99d3318..9eb9f378fe6 100644 --- a/src/mess/drivers/apogee.c +++ b/src/mess/drivers/apogee.c @@ -45,7 +45,7 @@ static ADDRESS_MAP_START(apogee_mem, AS_PROGRAM, 8, apogee_state ) AM_RANGE( 0xed00, 0xed03 ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) AM_MIRROR(0x00fc) //AM_RANGE( 0xee00, 0xee03 ) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) AM_MIRROR(0x00fc) AM_RANGE( 0xef00, 0xef01 ) AM_DEVREADWRITE("i8275", i8275_device, read, write) AM_MIRROR(0x00fe) // video - AM_RANGE( 0xf000, 0xf0ff ) AM_DEVWRITE("dma8257", i8257n_device, write) // DMA + AM_RANGE( 0xf000, 0xf0ff ) AM_DEVWRITE("dma8257", i8257_device, write) // DMA AM_RANGE( 0xf000, 0xffff ) AM_ROM // System ROM ADDRESS_MAP_END @@ -244,7 +244,7 @@ static MACHINE_CONFIG_START( apogee, apogee_state ) MCFG_DEVICE_ADD("i8275", I8275, XTAL_16MHz / 12) MCFG_I8275_CHARACTER_WIDTH(6) MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(apogee_state, display_pixels) - MCFG_I8275_DRQ_CALLBACK(DEVWRITELINE("dma8257",i8257n_device, dreq2_w)) + MCFG_I8275_DRQ_CALLBACK(DEVWRITELINE("dma8257",i8257_device, dreq2_w)) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -264,7 +264,7 @@ static MACHINE_CONFIG_START( apogee, apogee_state ) MCFG_SOUND_CONFIG(apogee_speaker_interface) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) - MCFG_DEVICE_ADD("dma8257", I8257N, XTAL_16MHz / 9) + MCFG_DEVICE_ADD("dma8257", I8257, XTAL_16MHz / 9) MCFG_I8257_OUT_HRQ_CB(WRITELINE(radio86_state, hrq_w)) MCFG_I8257_IN_MEMR_CB(READ8(radio86_state, memory_read_byte)) MCFG_I8257_OUT_MEMW_CB(WRITE8(radio86_state, memory_write_byte)) diff --git a/src/mess/drivers/fanucspmg.c b/src/mess/drivers/fanucspmg.c index 4b22fc6cd00..be6d2d96dcb 100644 --- a/src/mess/drivers/fanucspmg.c +++ b/src/mess/drivers/fanucspmg.c @@ -516,7 +516,7 @@ public: required_device<pit8253_device> m_pit1; required_device<pic8259_device> m_pic0; required_device<pic8259_device> m_pic1; - required_device<i8257n_device> m_dmac; + required_device<i8257_device> m_dmac; required_device<mc6845_device> m_crtc; required_device<upd765a_device> m_fdc; required_shared_ptr<UINT8> m_shared; @@ -641,7 +641,7 @@ static ADDRESS_MAP_START(maincpu_mem, AS_PROGRAM, 16, fanucspmg_state) AM_RANGE(0xf001a, 0xf001b) AM_DEVREADWRITE8(USART2_TAG, i8251_device, status_r, control_w, 0x00ff) AM_RANGE(0xf001c, 0xf001d) AM_DEVREADWRITE8(USART3_TAG, i8251_device, data_r, data_w, 0x00ff) AM_RANGE(0xf001e, 0xf001f) AM_DEVREADWRITE8(USART3_TAG, i8251_device, status_r, control_w, 0x00ff) - AM_RANGE(0xf0020, 0xf0029) AM_DEVREADWRITE8(DMAC_TAG, i8257n_device, read, write, 0xffff) + AM_RANGE(0xf0020, 0xf0029) AM_DEVREADWRITE8(DMAC_TAG, i8257_device, read, write, 0xffff) AM_RANGE(0xf0046, 0xf0047) AM_WRITE8(dma_page_w, 0x00ff) AM_RANGE(0xf0048, 0xf004f) AM_DEVREADWRITE8(PIT1_TAG, pit8253_device, read, write, 0x00ff) AM_RANGE(0xf2000, 0xf2003) AM_DEVREADWRITE8(PIC1_TAG, pic8259_device, read, write, 0x00ff) @@ -861,7 +861,7 @@ static MACHINE_CONFIG_START( fanucspmg, fanucspmg_state ) MCFG_PIT8253_CLK1(XTAL_15MHz/12) MCFG_PIT8253_CLK2(XTAL_15MHz/12) - MCFG_DEVICE_ADD(DMAC_TAG, I8257N, XTAL_15MHz / 5) + MCFG_DEVICE_ADD(DMAC_TAG, I8257, XTAL_15MHz / 5) MCFG_I8257_OUT_HRQ_CB(WRITELINE(fanucspmg_state, hrq_w)) MCFG_I8257_OUT_TC_CB(WRITELINE(fanucspmg_state, tc_w)) MCFG_I8257_IN_MEMR_CB(READ8(fanucspmg_state, memory_read_byte)) @@ -874,7 +874,7 @@ static MACHINE_CONFIG_START( fanucspmg, fanucspmg_state ) MCFG_UPD765A_ADD(FDC_TAG, true, true) MCFG_UPD765_INTRQ_CALLBACK(DEVWRITELINE(PIC0_TAG, pic8259_device, ir3_w)) - MCFG_UPD765_DRQ_CALLBACK(DEVWRITELINE(DMAC_TAG, i8257n_device, dreq0_w)) + MCFG_UPD765_DRQ_CALLBACK(DEVWRITELINE(DMAC_TAG, i8257_device, dreq0_w)) MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":0", fanuc_floppies, "525dd", fanucspmg_state::floppy_formats) MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":1", fanuc_floppies, "525dd", fanucspmg_state::floppy_formats) diff --git a/src/mess/drivers/mikrosha.c b/src/mess/drivers/mikrosha.c index 030059bfe00..a5d9d098617 100644 --- a/src/mess/drivers/mikrosha.c +++ b/src/mess/drivers/mikrosha.c @@ -37,7 +37,7 @@ static ADDRESS_MAP_START(mikrosha_mem, AS_PROGRAM, 8, mikrosha_state ) AM_RANGE( 0xd000, 0xd001 ) AM_DEVREADWRITE("i8275", i8275_device, read, write) AM_MIRROR(0x07fe) // video AM_RANGE( 0xd800, 0xd803 ) AM_DEVREADWRITE("pit8253", pit8253_device, read, write) AM_MIRROR(0x07fc) // Timer AM_RANGE( 0xe000, 0xf7ff ) AM_READ(radio_cpu_state_r) // Not connected - AM_RANGE( 0xf800, 0xffff ) AM_DEVWRITE("dma8257", i8257n_device, write) // DMA + AM_RANGE( 0xf800, 0xffff ) AM_DEVWRITE("dma8257", i8257_device, write) // DMA AM_RANGE( 0xf800, 0xffff ) AM_ROM // System ROM ADDRESS_MAP_END @@ -214,7 +214,7 @@ static MACHINE_CONFIG_START( mikrosha, mikrosha_state ) MCFG_DEVICE_ADD("i8275", I8275, XTAL_16MHz / 12) MCFG_I8275_CHARACTER_WIDTH(6) MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(mikrosha_state, display_pixels) - MCFG_I8275_DRQ_CALLBACK(DEVWRITELINE("dma8257",i8257n_device, dreq2_w)) + MCFG_I8275_DRQ_CALLBACK(DEVWRITELINE("dma8257",i8257_device, dreq2_w)) MCFG_DEVICE_ADD("pit8253", PIT8253, 0) MCFG_PIT8253_CLK0(0) @@ -237,7 +237,7 @@ static MACHINE_CONFIG_START( mikrosha, mikrosha_state ) MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette") MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) - MCFG_DEVICE_ADD("dma8257", I8257N, XTAL_16MHz / 9) + MCFG_DEVICE_ADD("dma8257", I8257, XTAL_16MHz / 9) MCFG_I8257_OUT_HRQ_CB(WRITELINE(radio86_state, hrq_w)) MCFG_I8257_IN_MEMR_CB(READ8(radio86_state, memory_read_byte)) MCFG_I8257_OUT_MEMW_CB(WRITE8(radio86_state, memory_write_byte)) diff --git a/src/mess/drivers/partner.c b/src/mess/drivers/partner.c index 33babf13680..a3c099f6559 100644 --- a/src/mess/drivers/partner.c +++ b/src/mess/drivers/partner.c @@ -33,7 +33,7 @@ static ADDRESS_MAP_START(partner_mem, AS_PROGRAM, 8, partner_state ) AM_RANGE( 0xd800, 0xd8ff ) AM_DEVREADWRITE("i8275", i8275_device, read, write) // video AM_RANGE( 0xd900, 0xd9ff ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) AM_RANGE( 0xda00, 0xdaff ) AM_WRITE(partner_mem_page_w) - AM_RANGE( 0xdb00, 0xdbff ) AM_DEVWRITE("dma8257", i8257n_device, write) // DMA + AM_RANGE( 0xdb00, 0xdbff ) AM_DEVWRITE("dma8257", i8257_device, write) // DMA AM_RANGE( 0xdc00, 0xddff ) AM_RAMBANK("bank11") AM_RANGE( 0xde00, 0xdeff ) AM_WRITE(partner_win_memory_page_w) AM_RANGE( 0xe000, 0xe7ff ) AM_RAMBANK("bank12") @@ -186,7 +186,7 @@ static MACHINE_CONFIG_START( partner, partner_state ) MCFG_DEVICE_ADD("i8275", I8275, XTAL_16MHz / 12) MCFG_I8275_CHARACTER_WIDTH(6) MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(partner_state, display_pixels) - MCFG_I8275_DRQ_CALLBACK(DEVWRITELINE("dma8257",i8257n_device, dreq2_w)) + MCFG_I8275_DRQ_CALLBACK(DEVWRITELINE("dma8257",i8257_device, dreq2_w)) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -203,7 +203,7 @@ static MACHINE_CONFIG_START( partner, partner_state ) MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette") MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) - MCFG_DEVICE_ADD("dma8257", I8257N, XTAL_16MHz / 9) + MCFG_DEVICE_ADD("dma8257", I8257, XTAL_16MHz / 9) MCFG_I8257_OUT_HRQ_CB(WRITELINE(partner_state, hrq_w)) MCFG_I8257_IN_MEMR_CB(READ8(radio86_state, memory_read_byte)) MCFG_I8257_OUT_MEMW_CB(WRITE8(radio86_state, memory_write_byte)) @@ -216,7 +216,7 @@ static MACHINE_CONFIG_START( partner, partner_state ) MCFG_SOFTWARE_LIST_ADD("cass_list","partner_cass") MCFG_FD1793x_ADD("wd1793", XTAL_16MHz / 16) - MCFG_WD_FDC_DRQ_CALLBACK(DEVWRITELINE("dma8257", i8257n_device, dreq0_w)) + MCFG_WD_FDC_DRQ_CALLBACK(DEVWRITELINE("dma8257", i8257_device, dreq0_w)) MCFG_FLOPPY_DRIVE_ADD("wd1793:0", partner_floppies, "525qd", partner_state::floppy_formats) MCFG_FLOPPY_DRIVE_ADD("wd1793:1", partner_floppies, "525qd", partner_state::floppy_formats) diff --git a/src/mess/drivers/pc8001.c b/src/mess/drivers/pc8001.c index a1164ca51a2..b77ac725b6d 100644 --- a/src/mess/drivers/pc8001.c +++ b/src/mess/drivers/pc8001.c @@ -188,7 +188,7 @@ static ADDRESS_MAP_START( pc8001_io, AS_IO, 8, pc8001_state ) AM_RANGE(0x30, 0x30) AM_MIRROR(0x0f) AM_WRITE(port30_w) AM_RANGE(0x40, 0x40) AM_MIRROR(0x0f) AM_READWRITE(port40_r, port40_w) AM_RANGE(0x50, 0x51) AM_DEVREADWRITE(UPD3301_TAG, upd3301_device, read, write) - AM_RANGE(0x60, 0x68) AM_DEVREADWRITE(I8257_TAG, i8257n_device, read, write) + AM_RANGE(0x60, 0x68) AM_DEVREADWRITE(I8257_TAG, i8257_device, read, write) // AM_RANGE(0x70, 0x7f) unused // AM_RANGE(0x80, 0x80) AM_MIRROR(0x0f) AM_WRITE(pc8011_ext0_w) // AM_RANGE(0x90, 0x90) AM_MIRROR(0x0f) AM_WRITE(pc8011_ext1_w) @@ -507,7 +507,7 @@ static MACHINE_CONFIG_START( pc8001, pc8001_state ) MCFG_DEVICE_ADD(I8255A_TAG, I8255A, 0) - MCFG_DEVICE_ADD(I8257_TAG, I8257N, 4000000) + MCFG_DEVICE_ADD(I8257_TAG, I8257, 4000000) MCFG_I8257_OUT_HRQ_CB(WRITELINE(pc8001_state, hrq_w)) MCFG_I8257_IN_MEMR_CB(READ8(pc8001_state, dma_mem_r)) MCFG_I8257_OUT_IOW_2_CB(DEVWRITE8(UPD3301_TAG, upd3301_device, dack_w)) @@ -517,7 +517,7 @@ static MACHINE_CONFIG_START( pc8001, pc8001_state ) MCFG_DEVICE_ADD(UPD3301_TAG, UPD3301, 14318180) MCFG_UPD3301_CHARACTER_WIDTH(8) MCFG_UPD3301_DRAW_CHARACTER_CALLBACK_OWNER(pc8001_state, pc8001_display_pixels) - MCFG_UPD3301_VRTC_CALLBACK(DEVWRITELINE(I8257_TAG, i8257n_device, dreq2_w)) + MCFG_UPD3301_VRTC_CALLBACK(DEVWRITELINE(I8257_TAG, i8257_device, dreq2_w)) MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(pc8001_state, write_centronics_ack)) @@ -555,7 +555,7 @@ static MACHINE_CONFIG_START( pc8001mk2, pc8001mk2_state ) MCFG_DEVICE_ADD(I8255A_TAG, I8255A, 0) - MCFG_DEVICE_ADD(I8257_TAG, I8257N, 4000000) + MCFG_DEVICE_ADD(I8257_TAG, I8257, 4000000) MCFG_I8257_OUT_HRQ_CB(WRITELINE(pc8001_state, hrq_w)) MCFG_I8257_IN_MEMR_CB(READ8(pc8001_state, dma_mem_r)) MCFG_I8257_OUT_IOW_2_CB(DEVWRITE8(UPD3301_TAG, upd3301_device, dack_w)) @@ -565,7 +565,7 @@ static MACHINE_CONFIG_START( pc8001mk2, pc8001mk2_state ) MCFG_DEVICE_ADD(UPD3301_TAG, UPD3301, 14318180) MCFG_UPD3301_CHARACTER_WIDTH(8) MCFG_UPD3301_DRAW_CHARACTER_CALLBACK_OWNER(pc8001_state, pc8001_display_pixels) - MCFG_UPD3301_VRTC_CALLBACK(DEVWRITELINE(I8257_TAG, i8257n_device, dreq2_w)) + MCFG_UPD3301_VRTC_CALLBACK(DEVWRITELINE(I8257_TAG, i8257_device, dreq2_w)) MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") diff --git a/src/mess/drivers/radio86.c b/src/mess/drivers/radio86.c index 9520a402091..8ea40caedd4 100644 --- a/src/mess/drivers/radio86.c +++ b/src/mess/drivers/radio86.c @@ -23,7 +23,7 @@ static ADDRESS_MAP_START(radio86_mem, AS_PROGRAM, 8, radio86_state ) AM_RANGE( 0x8000, 0x8003 ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) AM_MIRROR(0x1ffc) //AM_RANGE( 0xa000, 0xa003 ) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) AM_MIRROR(0x1ffc) AM_RANGE( 0xc000, 0xc001 ) AM_DEVREADWRITE("i8275", i8275_device, read, write) AM_MIRROR(0x1ffe) // video - AM_RANGE( 0xe000, 0xffff ) AM_DEVWRITE("dma8257", i8257n_device, write) // DMA + AM_RANGE( 0xe000, 0xffff ) AM_DEVWRITE("dma8257", i8257_device, write) // DMA AM_RANGE( 0xf000, 0xffff ) AM_ROM // System ROM ADDRESS_MAP_END @@ -43,7 +43,7 @@ static ADDRESS_MAP_START(radio86rom_mem, AS_PROGRAM, 8, radio86_state ) AM_RANGE( 0x8000, 0x8003 ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) AM_MIRROR(0x1ffc) AM_RANGE( 0xa000, 0xa003 ) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) AM_MIRROR(0x1ffc) AM_RANGE( 0xc000, 0xc001 ) AM_DEVREADWRITE("i8275", i8275_device, read, write) AM_MIRROR(0x1ffe) // video - AM_RANGE( 0xe000, 0xffff ) AM_DEVWRITE("dma8257", i8257n_device, write) // DMA + AM_RANGE( 0xe000, 0xffff ) AM_DEVWRITE("dma8257", i8257_device, write) // DMA AM_RANGE( 0xf000, 0xffff ) AM_ROM // System ROM ADDRESS_MAP_END @@ -56,7 +56,7 @@ static ADDRESS_MAP_START(radio86ram_mem, AS_PROGRAM, 8, radio86_state ) AM_RANGE( 0xf780, 0xf7bf ) AM_DEVREADWRITE("i8275", i8275_device, read, write) // video AM_RANGE( 0xf684, 0xf687 ) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) AM_RANGE( 0xf688, 0xf688 ) AM_WRITE(radio86_pagesel ) - AM_RANGE( 0xf800, 0xffff ) AM_DEVWRITE("dma8257", i8257n_device, write) // DMA + AM_RANGE( 0xf800, 0xffff ) AM_DEVWRITE("dma8257", i8257_device, write) // DMA AM_RANGE( 0xf800, 0xffff ) AM_ROM // System ROM page 1 ADDRESS_MAP_END @@ -68,7 +68,7 @@ static ADDRESS_MAP_START(radio86_16_mem, AS_PROGRAM, 8, radio86_state ) AM_RANGE( 0x8000, 0x8003 ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) AM_MIRROR(0x1ffc) //AM_RANGE( 0xa000, 0xa003 ) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) AM_MIRROR(0x1ffc) AM_RANGE( 0xc000, 0xc001 ) AM_DEVREADWRITE("i8275", i8275_device, read, write) AM_MIRROR(0x1ffe) // video - AM_RANGE( 0xe000, 0xffff ) AM_DEVWRITE("dma8257", i8257n_device, write) // DMA + AM_RANGE( 0xe000, 0xffff ) AM_DEVWRITE("dma8257", i8257_device, write) // DMA AM_RANGE( 0xf000, 0xffff ) AM_ROM // System ROM ADDRESS_MAP_END @@ -79,7 +79,7 @@ static ADDRESS_MAP_START(mikron2_mem, AS_PROGRAM, 8, radio86_state ) AM_RANGE( 0xc000, 0xc003 ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) AM_MIRROR(0x00fc) //AM_RANGE( 0xc100, 0xc103 ) AM_DEVREADWRITE_LEGACY("ppi8255_2", i8255a_r, i8255a_w) AM_MIRROR(0x00fc) AM_RANGE( 0xc200, 0xc201 ) AM_DEVREADWRITE("i8275", i8275_device, read, write) AM_MIRROR(0x00fe) // video - AM_RANGE( 0xc300, 0xc3ff ) AM_DEVWRITE("dma8257", i8257n_device, write) // DMA + AM_RANGE( 0xc300, 0xc3ff ) AM_DEVWRITE("dma8257", i8257_device, write) // DMA AM_RANGE( 0xf000, 0xffff ) AM_ROM // System ROM ADDRESS_MAP_END @@ -89,7 +89,7 @@ static ADDRESS_MAP_START(impuls03_mem, AS_PROGRAM, 8, radio86_state ) AM_RANGE( 0x8000, 0x8003 ) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) AM_MIRROR(0x1ffc) AM_RANGE( 0xa000, 0xbfff ) AM_ROM // Basic ROM AM_RANGE( 0xc000, 0xc001 ) AM_DEVREADWRITE("i8275", i8275_device, read, write) AM_MIRROR(0x1ffe) // video - AM_RANGE( 0xe000, 0xffff ) AM_DEVWRITE("dma8257", i8257n_device, write) // DMA + AM_RANGE( 0xe000, 0xffff ) AM_DEVWRITE("dma8257", i8257_device, write) // DMA AM_RANGE( 0xf000, 0xffff ) AM_ROM // System ROM ADDRESS_MAP_END @@ -361,7 +361,7 @@ static MACHINE_CONFIG_START( radio86, radio86_state ) MCFG_DEVICE_ADD("i8275", I8275, XTAL_16MHz / 12) MCFG_I8275_CHARACTER_WIDTH(6) MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(radio86_state, display_pixels) - MCFG_I8275_DRQ_CALLBACK(DEVWRITELINE("dma8257",i8257n_device, dreq2_w)) + MCFG_I8275_DRQ_CALLBACK(DEVWRITELINE("dma8257",i8257_device, dreq2_w)) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -377,7 +377,7 @@ static MACHINE_CONFIG_START( radio86, radio86_state ) MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette") MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) - MCFG_DEVICE_ADD("dma8257", I8257N, XTAL_16MHz / 9) + MCFG_DEVICE_ADD("dma8257", I8257, XTAL_16MHz / 9) MCFG_I8257_OUT_HRQ_CB(WRITELINE(radio86_state, hrq_w)) MCFG_I8257_IN_MEMR_CB(READ8(radio86_state, memory_read_byte)) MCFG_I8257_OUT_MEMW_CB(WRITE8(radio86_state, memory_write_byte)) diff --git a/src/mess/drivers/unior.c b/src/mess/drivers/unior.c index ac8e52ca53f..8f7c986d8d6 100644 --- a/src/mess/drivers/unior.c +++ b/src/mess/drivers/unior.c @@ -83,7 +83,7 @@ private: virtual void video_start(); required_device<cpu_device> m_maincpu; required_device<pit8253_device> m_pit; - required_device<i8257n_device> m_dma; + required_device<i8257_device> m_dma; required_device<i8251_device> m_uart; public: required_device<palette_device> m_palette; @@ -98,7 +98,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( unior_io, AS_IO, 8, unior_state ) ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x30, 0x38) AM_DEVREADWRITE("dma", i8257n_device, read, write) // dma data + AM_RANGE(0x30, 0x38) AM_DEVREADWRITE("dma", i8257_device, read, write) // dma data AM_RANGE(0x3c, 0x3f) AM_DEVREADWRITE("ppi0", i8255_device, read, write) // cassette player control AM_RANGE(0x4c, 0x4f) AM_DEVREADWRITE("ppi1", i8255_device, read, write) AM_RANGE(0x50, 0x50) AM_WRITE(scroll_w) @@ -432,7 +432,7 @@ static MACHINE_CONFIG_START( unior, unior_state ) MCFG_I8255_IN_PORTC_CB(READ8(unior_state, ppi1_c_r)) MCFG_I8255_OUT_PORTC_CB(WRITE8(unior_state, ppi1_c_w)) - MCFG_DEVICE_ADD("dma", I8257N, XTAL_20MHz / 9) + MCFG_DEVICE_ADD("dma", I8257, XTAL_20MHz / 9) MCFG_I8257_OUT_HRQ_CB(WRITELINE(unior_state, hrq_w)) MCFG_I8257_IN_MEMR_CB(READ8(unior_state, dma_r)) MCFG_I8257_OUT_IOW_2_CB(DEVWRITE8("crtc", i8275_device, dack_w)) @@ -440,7 +440,7 @@ static MACHINE_CONFIG_START( unior, unior_state ) MCFG_DEVICE_ADD("crtc", I8275, XTAL_20MHz / 12) MCFG_I8275_CHARACTER_WIDTH(6) MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(unior_state, display_pixels) - MCFG_I8275_DRQ_CALLBACK(DEVWRITELINE("dma",i8257n_device, dreq2_w)) + MCFG_I8275_DRQ_CALLBACK(DEVWRITELINE("dma",i8257_device, dreq2_w)) MCFG_VIDEO_SET_SCREEN("screen") MACHINE_CONFIG_END diff --git a/src/mess/includes/pc8001.h b/src/mess/includes/pc8001.h index 7ccfdc5fe7d..524adfba29c 100644 --- a/src/mess/includes/pc8001.h +++ b/src/mess/includes/pc8001.h @@ -48,7 +48,7 @@ public: required_device<cpu_device> m_maincpu; required_device<upd1990a_device> m_rtc; - required_device<i8257n_device> m_dma; + required_device<i8257_device> m_dma; required_device<upd3301_device> m_crtc; required_device<cassette_image_device> m_cassette; required_device<centronics_device> m_centronics; diff --git a/src/mess/includes/radio86.h b/src/mess/includes/radio86.h index 23d92a04a0c..fde5cfc4014 100644 --- a/src/mess/includes/radio86.h +++ b/src/mess/includes/radio86.h @@ -84,7 +84,7 @@ public: protected: required_device<cassette_image_device> m_cassette; - optional_device<i8257n_device> m_dma8257; + optional_device<i8257_device> m_dma8257; required_device<i8255_device> m_ppi8255_1; optional_device<i8255_device> m_ppi8255_2; required_memory_region m_region_maincpu; diff --git a/src/mess/mess.mak b/src/mess/mess.mak index 3bac83c732f..a77589dd188 100644 --- a/src/mess/mess.mak +++ b/src/mess/mess.mak @@ -395,7 +395,6 @@ MACHINES += I8243 MACHINES += I8251 MACHINES += I8255 MACHINES += I8257 -MACHINES += I8257N MACHINES += I8271 MACHINES += I8279 MACHINES += I8355 |