mirror of
https://github.com/holub/mame
synced 2025-07-05 01:48:29 +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);
|
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 = 1;
|
||||||
m_hf_handler(!m_hf);
|
m_hf_handler(!m_hf);
|
||||||
@ -166,12 +166,30 @@ uint16_t fifo7200_device::fifo_read()
|
|||||||
m_ef_handler(!m_ef);
|
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 = 0;
|
||||||
m_hf_handler(!m_hf);
|
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;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -88,6 +88,7 @@ protected:
|
|||||||
private:
|
private:
|
||||||
void fifo_write(uint16_t data);
|
void fifo_write(uint16_t data);
|
||||||
uint16_t fifo_read();
|
uint16_t fifo_read();
|
||||||
|
int fifo_used();
|
||||||
|
|
||||||
std::vector<uint16_t> m_buffer;
|
std::vector<uint16_t> m_buffer;
|
||||||
const int m_ram_size;
|
const int m_ram_size;
|
||||||
|
Loading…
Reference in New Issue
Block a user