summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/devices/nld_tristate.cpp
diff options
context:
space:
mode:
author Westley M. Martinez <anikom15@gmail.com>2016-12-29 14:34:59 -0800
committer Westley M. Martinez <anikom15@gmail.com>2016-12-29 14:34:59 -0800
commit1fafe7706cbfcfc6e39c23c3c713fbb102557cbe (patch)
treee717407aa8f98f192a2095f28909c89f3af3a8e5 /src/lib/netlist/devices/nld_tristate.cpp
parentf7a98c4a969478fca51faf30f588d59631394bd9 (diff)
parent2b74e4c0be91b86b408fca518af7518c1ea994c9 (diff)
Merge https://github.com/mamedev/mame
Diffstat (limited to 'src/lib/netlist/devices/nld_tristate.cpp')
-rw-r--r--src/lib/netlist/devices/nld_tristate.cpp76
1 files changed, 76 insertions, 0 deletions
diff --git a/src/lib/netlist/devices/nld_tristate.cpp b/src/lib/netlist/devices/nld_tristate.cpp
new file mode 100644
index 00000000000..db21468685e
--- /dev/null
+++ b/src/lib/netlist/devices/nld_tristate.cpp
@@ -0,0 +1,76 @@
+// license:BSD-3-Clause
+// copyright-holders:Ryan Holtz
+/*
+ * nld_tristate.cpp
+ *
+ */
+
+#include "nld_tristate.h"
+
+namespace netlist
+{
+ namespace devices
+ {
+ NETLIB_OBJECT(tristate)
+ {
+ NETLIB_CONSTRUCTOR(tristate)
+ , m_CEQ(*this, {{ "CEQ1", "CEQ2" }})
+ , m_D(*this, {{ "D1", "D2" }})
+ , m_Q(*this, "Q")
+ {
+ }
+
+ NETLIB_UPDATEI();
+
+ protected:
+ object_array_t<logic_input_t, 2> m_CEQ;
+ object_array_t<logic_input_t, 2> m_D;
+ logic_output_t m_Q;
+ };
+
+ NETLIB_OBJECT(tristate3)
+ {
+ NETLIB_CONSTRUCTOR(tristate3)
+ , m_CEQ(*this, {{ "CEQ1", "CEQ2", "CEQ3" }} )
+ , m_D(*this, {{ "D1", "D2", "D3" }} )
+ , m_Q(*this, "Q")
+ {
+ }
+
+ NETLIB_UPDATEI();
+
+ protected:
+ object_array_t<logic_input_t, 3> m_CEQ;
+ object_array_t<logic_input_t, 3> m_D;
+ logic_output_t m_Q;
+ };
+
+ NETLIB_UPDATE(tristate)
+ {
+ unsigned q = 0;
+ if (!m_CEQ[0]())
+ q |= m_D[0]();
+ if (!m_CEQ[1]())
+ q |= m_D[1]();
+
+ m_Q.push(q, NLTIME_FROM_NS(1));
+ }
+
+ NETLIB_UPDATE(tristate3)
+ {
+ unsigned q = 0;
+ if (!m_CEQ[0]())
+ q |= m_D[0]();
+ if (!m_CEQ[1]())
+ q |= m_D[1]();
+ if (!m_CEQ[2]())
+ q |= m_D[2]();
+
+ m_Q.push(q, NLTIME_FROM_NS(1));
+ }
+
+ NETLIB_DEVICE_IMPL(tristate)
+ NETLIB_DEVICE_IMPL(tristate3)
+
+ } //namespace devices
+} // namespace netlist