Fixed breakout attract mode. (nw)

This commit is contained in:
couriersud 2016-05-23 01:54:09 +02:00
parent 009d75b60d
commit c97c3ae855
5 changed files with 23 additions and 3 deletions

View File

@ -337,10 +337,19 @@ ATTR_COLD void netlist_t::reset()
}
// Step all devices once !
#if 0
for (std::size_t i = 0; i < m_devices.size(); i++)
{
m_devices[i]->update_dev();
}
#else
/* FIXME: this makes breakout attract mode working again.
* It is however not acceptable that this depends on the startup order.
* Best would be, if reset would call update_dev for devices which need it.
*/
for (int i = m_devices.size() - 1; i >= 0; i--)
m_devices[i]->update_dev();
#endif
// FIXME: some const devices rely on this
/* make sure params are set now .. */

View File

@ -13,6 +13,7 @@
namespace netlist
{
// ----------------------------------------------------------------------------------------
// net_device_t_base_factory
// ----------------------------------------------------------------------------------------

View File

@ -64,12 +64,13 @@ namespace netlist
ATTR_HOT bool is_empty() const { return (m_end == &m_list[1]); }
ATTR_HOT bool is_not_empty() const { return (m_end > &m_list[1]); }
ATTR_HOT void push(const entry_t &e) NOEXCEPT
ATTR_HOT void push(const entry_t e) NOEXCEPT
{
#if HAS_OPENMP && USE_OPENMP
/* Lock */
while (m_lock.exchange(1)) { }
#endif
#if 0
const _Time t = e.exec_time();
entry_t * i = m_end++;
for (; t > (i - 1)->exec_time(); i--)
@ -79,6 +80,16 @@ namespace netlist
inc_stat(m_prof_sortmove);
}
*i = e;
#else
entry_t * i = m_end++;
while (e.exec_time() > (i - 1)->exec_time())
{
*(i) = *(i-1);
--i;
inc_stat(m_prof_sortmove);
}
*i = e;
#endif
inc_stat(m_prof_call);
#if HAS_OPENMP && USE_OPENMP
m_lock = 0;

View File

@ -51,7 +51,6 @@ class wav_t
public:
wav_t(postream &strm, unsigned sr) : m_f(strm)
{
// m_f = strm;
initialize(sr);
m_f.write(&m_fh, sizeof(m_fh));
m_f.write(&m_fmt, sizeof(m_fmt));

View File

@ -128,7 +128,7 @@ CIRCUIT_LAYOUT( breakout )
//----------------------------------------------------------------
// Clock circuit
//----------------------------------------------------------------
#if 0 || (SLOW_BUT_ACCURATE)
#if 0 || (SLOW_BUT_ACCURATE)
MAINCLOCK(Y1, 14318000.0)
CHIP("F1", 9316)
NET_C(Y1.Q, F1.2)