fix for timers 8237dma, this gives timeslice to cpu making soundblaster able to work (no whatsnew)

This commit is contained in:
Miodrag Milanovic 2012-06-01 14:01:03 +00:00
parent f0471ad2d0
commit 2fe09fc618

View File

@ -304,7 +304,8 @@ void i8237_device::i8237_timerproc()
m_out_hrq_func(m_hrq); m_out_hrq_func(m_hrq);
m_state = DMA8237_S0; m_state = DMA8237_S0;
m_timer->enable( true ); //m_timer->enable( true );
m_timer->adjust(attotime::from_hz(clock()), 0, attotime::from_hz(clock()));
} }
else if (m_command == 3 && (m_drq & 1)) else if (m_command == 3 && (m_drq & 1))
{ {
@ -314,7 +315,8 @@ void i8237_device::i8237_timerproc()
} }
else else
{ {
m_timer->enable( false ); //m_timer->enable( false );
m_timer->reset();
} }
break; break;
} }
@ -607,7 +609,11 @@ WRITE8_DEVICE_HANDLER_TRAMPOLINE(i8237, i8237_w)
case 8: case 8:
/* DMA command register */ /* DMA command register */
m_command = data; m_command = data;
m_timer->enable( ( m_command & 0x04 ) ? 0 : 1 ); // m_timer->enable( ( m_command & 0x04 ) ? 0 : 1 );
if ( m_command & 0x04 )
m_timer->reset();
else
m_timer->adjust(attotime::from_hz(clock()), 0, attotime::from_hz(clock()));
break; break;
case 9: case 9:
@ -617,7 +623,12 @@ WRITE8_DEVICE_HANDLER_TRAMPOLINE(i8237, i8237_w)
if ( data & 0x04 ) if ( data & 0x04 )
{ {
m_drq |= 0x01 << channel; m_drq |= 0x01 << channel;
m_timer->enable( ( m_command & 0x04 ) ? 0 : 1 ); //m_timer->enable( ( m_command & 0x04 ) ? 0 : 1 );
if ( m_command & 0x04 )
m_timer->reset();
else
m_timer->adjust(attotime::from_hz(clock()), 0, attotime::from_hz(clock()));
} }
else else
{ {
@ -692,7 +703,11 @@ void i8237_device::i8237_drq_write(int channel, int state)
m_drq &= ~( 0x01 << channel ); m_drq &= ~( 0x01 << channel );
} }
m_timer->enable( ( m_command & 0x04 ) ? 0 : 1 ); //m_timer->enable( ( m_command & 0x04 ) ? 0 : 1 );
if ( m_command & 0x04 )
m_timer->reset();
else
m_timer->adjust(attotime::from_hz(clock()), 0, attotime::from_hz(clock()));
} }