mirror of
https://github.com/holub/mame
synced 2025-04-30 11:50:30 +03:00
upd765: clear seek irq before new seek (nw)
upd71071: fix off by one (nw)
This commit is contained in:
parent
6621051bb7
commit
0bc1c99392
@ -1219,6 +1219,8 @@ void upd765_family_device::start_command(int cmd)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case C_SEEK:
|
case C_SEEK:
|
||||||
|
other_irq = false;
|
||||||
|
check_irq();
|
||||||
seek_start(flopi[command[1] & 3]);
|
seek_start(flopi[command[1] & 3]);
|
||||||
main_phase = PHASE_CMD;
|
main_phase = PHASE_CMD;
|
||||||
break;
|
break;
|
||||||
|
@ -148,7 +148,8 @@ TIMER_CALLBACK_MEMBER(upd71071_device::dma_transfer_timer)
|
|||||||
m_reg.address_current[channel]--;
|
m_reg.address_current[channel]--;
|
||||||
else
|
else
|
||||||
m_reg.address_current[channel]++;
|
m_reg.address_current[channel]++;
|
||||||
if (m_reg.count_current[channel] == 0)
|
m_reg.count_current[channel]--;
|
||||||
|
if(m_reg.count_current[channel] == 0xffff)
|
||||||
{
|
{
|
||||||
if (m_reg.mode_control[channel] & 0x10) // auto-initialise
|
if (m_reg.mode_control[channel] & 0x10) // auto-initialise
|
||||||
{
|
{
|
||||||
@ -158,8 +159,6 @@ TIMER_CALLBACK_MEMBER(upd71071_device::dma_transfer_timer)
|
|||||||
// TODO: send terminal count
|
// TODO: send terminal count
|
||||||
set_eop(ASSERT_LINE);
|
set_eop(ASSERT_LINE);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
m_reg.count_current[channel]--;
|
|
||||||
break;
|
break;
|
||||||
case 0x08: // memory -> I/O
|
case 0x08: // memory -> I/O
|
||||||
data = space.read_byte(m_reg.address_current[channel]);
|
data = space.read_byte(m_reg.address_current[channel]);
|
||||||
@ -169,7 +168,8 @@ TIMER_CALLBACK_MEMBER(upd71071_device::dma_transfer_timer)
|
|||||||
m_reg.address_current[channel]--;
|
m_reg.address_current[channel]--;
|
||||||
else
|
else
|
||||||
m_reg.address_current[channel]++;
|
m_reg.address_current[channel]++;
|
||||||
if (m_reg.count_current[channel] == 0)
|
m_reg.count_current[channel]--;
|
||||||
|
if(m_reg.count_current[channel] == 0xffff)
|
||||||
{
|
{
|
||||||
if (m_reg.mode_control[channel] & 0x10) // auto-initialise
|
if (m_reg.mode_control[channel] & 0x10) // auto-initialise
|
||||||
{
|
{
|
||||||
@ -179,8 +179,6 @@ TIMER_CALLBACK_MEMBER(upd71071_device::dma_transfer_timer)
|
|||||||
// TODO: send terminal count
|
// TODO: send terminal count
|
||||||
set_eop(ASSERT_LINE);
|
set_eop(ASSERT_LINE);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
m_reg.count_current[channel]--;
|
|
||||||
break;
|
break;
|
||||||
case 0x0c: // Invalid
|
case 0x0c: // Invalid
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user