summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author couriersud <couriersud@gmx.org>2019-05-01 22:35:01 +0200
committer couriersud <couriersud@gmx.org>2019-05-01 23:29:55 +0200
commitc14db5e7ab0f290ed478a1fd1dcb1fcc1b5848ca (patch)
tree007fc27230675212495495732478230a62f85d8e
parent98d76709e11fe361adbac4e065ee7196ee535bc7 (diff)
netlist: add more defines to nltool -v --version output
- breakout: update notes - 9316: switch to output array - ppmf: fix a warning - nlid_system.h: remove useless brackets.
-rw-r--r--src/lib/netlist/devices/nld_9316.cpp19
-rw-r--r--src/lib/netlist/devices/nlid_system.h47
-rw-r--r--src/lib/netlist/nl_base.cpp7
-rw-r--r--src/lib/netlist/plib/ppmf.h4
-rw-r--r--src/mame/machine/nl_breakout.cpp15
5 files changed, 42 insertions, 50 deletions
diff --git a/src/lib/netlist/devices/nld_9316.cpp b/src/lib/netlist/devices/nld_9316.cpp
index e054f22c3a7..88d56e50ae3 100644
--- a/src/lib/netlist/devices/nld_9316.cpp
+++ b/src/lib/netlist/devices/nld_9316.cpp
@@ -25,10 +25,7 @@ namespace netlist
, m_LOADQ(*this, "LOADQ")
, m_ENP(*this, "ENP")
, m_CLRQ(*this, "CLRQ")
- , m_A(*this, "A", NETLIB_DELEGATE(9316, abcd))
- , m_B(*this, "B", NETLIB_DELEGATE(9316, abcd))
- , m_C(*this, "C", NETLIB_DELEGATE(9316, abcd))
- , m_D(*this, "D", NETLIB_DELEGATE(9316, abcd))
+ , m_ABCD(*this, {{"A", "B", "C", "D"}}, NETLIB_DELEGATE(9316, abcd))
, m_Q(*this, {{ "QA", "QB", "QC", "QD" }})
, m_cnt(*this, "m_cnt", 0)
, m_abcd(*this, "m_abcd", 0)
@@ -61,8 +58,8 @@ namespace netlist
m_CLK.inactivate();
if (!CLRQ && (m_cnt>0))
{
+ update_outputs_all(0, NLTIME_FROM_NS(36));
m_cnt = 0;
- update_outputs_all(m_cnt, NLTIME_FROM_NS(36));
}
}
m_RC.push(m_ent && (m_cnt == MAXCNT), NLTIME_FROM_NS(27));
@@ -79,7 +76,7 @@ namespace netlist
NETLIB_HANDLERI(abcd)
{
- m_abcd = static_cast<uint8_t>((m_D() << 3) | (m_C() << 2) | (m_B() << 1) | (m_A() << 0));
+ m_abcd = static_cast<uint8_t>((m_ABCD[0]() << 0) | (m_ABCD[1]() << 1) | (m_ABCD[2]() << 2) | (m_ABCD[3]() << 3));
}
logic_input_t m_CLK;
@@ -92,22 +89,18 @@ namespace netlist
logic_input_t m_ENP;
logic_input_t m_CLRQ;
- logic_input_t m_A;
- logic_input_t m_B;
- logic_input_t m_C;
- logic_input_t m_D;
-
+ object_array_t<logic_input_t, 4> m_ABCD;
object_array_t<logic_output_t, 4> m_Q;
/* counter state */
- state_var<unsigned> m_cnt;
+ state_var<uint8_t> m_cnt;
/* cached pins */
state_var_u8 m_abcd;
state_var_sig m_loadq;
state_var_sig m_ent;
nld_power_pins m_power_pins;
- void update_outputs_all(unsigned cnt, netlist_time out_delay) noexcept
+ void update_outputs_all(uint8_t cnt, netlist_time out_delay) noexcept
{
m_Q[0].push((cnt >> 0) & 1, out_delay);
m_Q[1].push((cnt >> 1) & 1, out_delay);
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();
diff --git a/src/lib/netlist/nl_base.cpp b/src/lib/netlist/nl_base.cpp
index c23776f8219..6bba075ebff 100644
--- a/src/lib/netlist/nl_base.cpp
+++ b/src/lib/netlist/nl_base.cpp
@@ -270,6 +270,9 @@ void netlist_state_t::compile_defines(std::vector<std::pair<pstring, pstring>> &
defs.push_back(ENTRY(HAS_OPENMP));
defs.push_back(ENTRY(USE_OPENMP));
+ defs.push_back(ENTRY(PPMF_TYPE));
+ defs.push_back(ENTRY(PHAS_PMF_INTERNAL));
+
#undef ENTRY
}
@@ -474,7 +477,7 @@ void netlist_t::print_stats() const
log().verbose("Total time {1:15}", total_time);
// FIXME: clang complains about unreachable code without
- if (USE_QUEUE_STATS || (!USE_QUEUE_STATS && m_stats))
+ if (USE_QUEUE_STATS || (USE_QUEUE_STATS && m_stats))
{
/* Only one serialization should be counted in total time */
/* But two are contained in m_stat_mainloop */
@@ -704,9 +707,7 @@ void detail::net_t::process(const T mask, netlist_sig_t sig)
if ((p.terminal_state() & mask))
{
auto g(stats->m_stat_total_time.guard());
- //p.device().m_stat_total_time.start();
p.m_delegate();
- //p.device().m_stat_total_time.stop();
}
}
}
diff --git a/src/lib/netlist/plib/ppmf.h b/src/lib/netlist/plib/ppmf.h
index 9c5329cccde..d31b238cf6d 100644
--- a/src/lib/netlist/plib/ppmf.h
+++ b/src/lib/netlist/plib/ppmf.h
@@ -252,10 +252,10 @@ namespace plib {
pmfp(MemberFunctionType<O> mftp, O *object)
: pmfp_base<R, Targs...>()
{
- this->set(mftp, object);
+ this->set_base(mftp, object);
+ m_obj = reinterpret_cast<generic_class *>(object);
}
-
template<typename O>
void set(MemberFunctionType<O> mftp, O *object)
{
diff --git a/src/mame/machine/nl_breakout.cpp b/src/mame/machine/nl_breakout.cpp
index c38a67db63f..d6da5118387 100644
--- a/src/mame/machine/nl_breakout.cpp
+++ b/src/mame/machine/nl_breakout.cpp
@@ -7,11 +7,12 @@
* - Start2 works (Couriersud)
* - Added discrete paddle potentiometers (Couriersud)
* - Changes made to run in MAME (Couriersud)
+ * - Added bonus game dip switch (Couriersud)
+ * - Added discrete startup latch
* - Original version imported from DICE
*
* TODO:
- * - implement discrete startup latch
- * - implement bonus game dip switch
+ * - lamp triacs?
*
* The MAME team has asked for and received written confirmation from the
* author of DICE to use, modify and redistribute code under:
@@ -1572,7 +1573,7 @@ CIRCUIT_LAYOUT( breakout )
RES(R51, RES_K(3.9))
RES(R52, RES_K(3.9))
-#if (SLOW_BUT_ACCURATE)
+#if (0 && SLOW_BUT_ACCURATE)
DIODE(CR6, "1N914")
NET_C(E2.11, CR6.K)
@@ -1584,15 +1585,11 @@ CIRCUIT_LAYOUT( breakout )
PARAM(CR6.ROFF, 1)
NET_C(R41.1, R42.1, R43.1, R51.1, R52.1)
#endif
-#if 1
+
CONNECTION("R51", 2, PLAYFIELD)
CONNECTION("R43", 2, BSYNC)
CONNECTION("R52", 2, SCORE)
-#else
- CONNECTION("R51", 2, "V5", Q)
- CONNECTION("R43", 2, "V5", Q)
- CONNECTION("R52", 2, "V5", Q)
-#endif
+
NET_C(R41.2, B9.3)
NET_C(R42.2, V5)