diff options
Diffstat (limited to 'src/lib/netlist/devices/nlid_system.h')
-rw-r--r-- | src/lib/netlist/devices/nlid_system.h | 47 |
1 files changed, 24 insertions, 23 deletions
diff --git a/src/lib/netlist/devices/nlid_system.h b/src/lib/netlist/devices/nlid_system.h index 3bb651106b2..3ae553fc2ec 100644 --- a/src/lib/netlist/devices/nlid_system.h +++ b/src/lib/netlist/devices/nlid_system.h @@ -171,32 +171,33 @@ namespace devices m_inc[0] = netlist_time::from_double(1.0 / (m_freq() * 2.0)); connect(m_feedback, m_Q); + + netlist_time base = netlist_time::from_double(1.0 / (m_freq()*2.0)); + std::vector<pstring> pat(plib::psplit(m_pattern(),",")); + m_off = netlist_time::from_double(m_offset()); + + std::array<std::int64_t, 32> pati = { 0 }; + + m_size = static_cast<std::uint8_t>(pat.size()); + netlist_time::mult_type total = 0; + for (unsigned i=0; i<m_size; i++) { - netlist_time base = netlist_time::from_double(1.0 / (m_freq()*2.0)); - std::vector<pstring> pat(plib::psplit(m_pattern(),",")); - m_off = netlist_time::from_double(m_offset()); - - std::array<std::int64_t, 32> pati = { 0 }; - - m_size = static_cast<std::uint8_t>(pat.size()); - netlist_time::mult_type total = 0; - for (unsigned i=0; i<m_size; i++) - { - // FIXME: use pstonum_ne - //pati[i] = plib::pstonum<decltype(pati[i])>(pat[i]); - pati[i] = plib::pstonum<std::int64_t, true>(pat[i]); - total += pati[i]; - } - netlist_time ttotal = netlist_time::zero(); - auto sm1 = static_cast<uint8_t>(m_size - 1); - for (unsigned i=0; i < sm1; i++) - { - m_inc[i] = base * pati[i]; - ttotal += m_inc[i]; - } - m_inc[sm1] = base * total - ttotal; + // FIXME: use pstonum_ne + //pati[i] = plib::pstonum<decltype(pati[i])>(pat[i]); + pati[i] = plib::pstonum<std::int64_t, true>(pat[i]); + total += pati[i]; } + netlist_time ttotal = netlist_time::zero(); + auto sm1 = static_cast<uint8_t>(m_size - 1); + for (unsigned i=0; i < sm1; i++) + { + m_inc[i] = base * pati[i]; + ttotal += m_inc[i]; + } + m_inc[sm1] = base * total - ttotal; + } + NETLIB_UPDATEI(); NETLIB_RESETI(); //NETLIB_UPDATE_PARAMI(); |