mirror of
https://github.com/holub/mame
synced 2025-04-16 05:24:54 +03:00
machine/7200fifo.cpp: Fixed triggering of half-full flag.
This commit is contained in:
parent
60fc286c53
commit
67671d7d89
@ -132,7 +132,7 @@ void fifo7200_device::fifo_write(uint16_t data)
|
||||
m_ff_handler(!m_ff);
|
||||
}
|
||||
|
||||
else if (((m_read_ptr + 1 + m_ram_size / 2) % m_ram_size) == m_write_ptr)
|
||||
else if (!m_hf && (fifo_used() >= m_ram_size / 2))
|
||||
{
|
||||
m_hf = 1;
|
||||
m_hf_handler(!m_hf);
|
||||
@ -166,12 +166,30 @@ uint16_t fifo7200_device::fifo_read()
|
||||
m_ef_handler(!m_ef);
|
||||
}
|
||||
|
||||
else if (((m_read_ptr + m_ram_size / 2) % m_ram_size) == m_write_ptr)
|
||||
else if (m_hf && (fifo_used() < m_ram_size / 2))
|
||||
{
|
||||
m_hf = 0;
|
||||
m_hf_handler(!m_hf);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int fifo7200_device::fifo_used()
|
||||
{
|
||||
int ret = m_ram_size;
|
||||
|
||||
if (!m_ff)
|
||||
{
|
||||
if (m_write_ptr >= m_read_ptr)
|
||||
{
|
||||
ret = m_write_ptr - m_read_ptr;
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = m_ram_size + m_write_ptr - m_read_ptr;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -88,6 +88,7 @@ protected:
|
||||
private:
|
||||
void fifo_write(uint16_t data);
|
||||
uint16_t fifo_read();
|
||||
int fifo_used();
|
||||
|
||||
std::vector<uint16_t> m_buffer;
|
||||
const int m_ram_size;
|
||||
|
Loading…
Reference in New Issue
Block a user