mirror of
https://github.com/holub/mame
synced 2025-04-25 17:56:43 +03:00
at: eop needs to apply immediately or the fdc errors out (nw)
This commit is contained in:
parent
fd41b35c2a
commit
e99efd87bc
@ -14,7 +14,6 @@
|
||||
#include "bus/pc_kbd/pc_kbdc.h"
|
||||
#include "softlist_dev.h"
|
||||
#include "speaker.h"
|
||||
#include "machine/input_merger.h"
|
||||
|
||||
#define LOG_PORT80 0
|
||||
|
||||
@ -62,12 +61,9 @@ MACHINE_CONFIG_START(at_mb_device::device_add_mconfig)
|
||||
MCFG_PIT8253_CLK2(4772720/4) /* pio port c pin 4, and speaker polling enough */
|
||||
MCFG_PIT8253_OUT2_HANDLER(WRITELINE(*this, at_mb_device, pit8254_out2_changed))
|
||||
|
||||
MCFG_INPUT_MERGER_ANY_LOW("eop")
|
||||
MCFG_INPUT_MERGER_OUTPUT_HANDLER(WRITELINE(*this, at_mb_device, dma8237_out_eop))
|
||||
|
||||
MCFG_DEVICE_ADD("dma8237_1", AM9517A, 14.318181_MHz_XTAL / 3)
|
||||
MCFG_I8237_OUT_HREQ_CB(WRITELINE("dma8237_2", am9517a_device, dreq0_w))
|
||||
MCFG_I8237_OUT_EOP_CB(WRITELINE("eop", input_merger_device, in_w<0>))
|
||||
MCFG_I8237_OUT_EOP_CB(WRITELINE(*this, at_mb_device, dma8237_out_eop))
|
||||
MCFG_I8237_IN_MEMR_CB(READ8(*this, at_mb_device, dma_read_byte))
|
||||
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, at_mb_device, dma_write_byte))
|
||||
MCFG_I8237_IN_IOR_0_CB(READ8(*this, at_mb_device, dma8237_0_dack_r))
|
||||
@ -85,7 +81,7 @@ MACHINE_CONFIG_START(at_mb_device::device_add_mconfig)
|
||||
|
||||
MCFG_DEVICE_ADD( "dma8237_2", AM9517A, 14.318181_MHz_XTAL / 3)
|
||||
MCFG_I8237_OUT_HREQ_CB(WRITELINE(*this, at_mb_device, dma_hrq_changed))
|
||||
MCFG_I8237_OUT_EOP_CB(WRITELINE("eop", input_merger_device, in_w<1>))
|
||||
MCFG_I8237_OUT_EOP_CB(WRITELINE(*this, at_mb_device, dma8237_2_out_eop))
|
||||
MCFG_I8237_IN_MEMR_CB(READ8(*this, at_mb_device, dma_read_word))
|
||||
MCFG_I8237_OUT_MEMW_CB(WRITE8(*this, at_mb_device, dma_write_word))
|
||||
MCFG_I8237_IN_IOR_1_CB(READ8(*this, at_mb_device, dma8237_5_dack_r))
|
||||
@ -342,6 +338,13 @@ WRITE_LINE_MEMBER( at_mb_device::dma8237_out_eop )
|
||||
m_isabus->eop_w(m_dma_channel, m_cur_eop ? ASSERT_LINE : CLEAR_LINE );
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( at_mb_device::dma8237_2_out_eop )
|
||||
{
|
||||
m_cur_eop2 = state == ASSERT_LINE;
|
||||
if(m_dma_channel != -1)
|
||||
m_isabus->eop_w(m_dma_channel, m_cur_eop2 ? ASSERT_LINE : CLEAR_LINE );
|
||||
}
|
||||
|
||||
void at_mb_device::set_dma_channel(int channel, int state)
|
||||
{
|
||||
if(!state) {
|
||||
|
@ -50,7 +50,7 @@ private:
|
||||
uint8_t m_at_spkrdata;
|
||||
uint8_t m_pit_out2;
|
||||
int m_dma_channel;
|
||||
bool m_cur_eop;
|
||||
bool m_cur_eop, m_cur_eop2;
|
||||
uint8_t m_dma_offset[2][4];
|
||||
uint8_t m_at_pages[0x10];
|
||||
uint16_t m_dma_high_byte;
|
||||
@ -61,6 +61,7 @@ private:
|
||||
DECLARE_WRITE_LINE_MEMBER(pit8254_out2_changed);
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER(dma8237_out_eop);
|
||||
DECLARE_WRITE_LINE_MEMBER(dma8237_2_out_eop);
|
||||
DECLARE_READ8_MEMBER(dma8237_0_dack_r);
|
||||
DECLARE_READ8_MEMBER(dma8237_1_dack_r);
|
||||
DECLARE_READ8_MEMBER(dma8237_2_dack_r);
|
||||
|
Loading…
Reference in New Issue
Block a user