diff options
author | 2016-12-29 14:34:59 -0800 | |
---|---|---|
committer | 2016-12-29 14:34:59 -0800 | |
commit | 1fafe7706cbfcfc6e39c23c3c713fbb102557cbe (patch) | |
tree | e717407aa8f98f192a2095f28909c89f3af3a8e5 /src/lib/netlist/devices/nld_tristate.cpp | |
parent | f7a98c4a969478fca51faf30f588d59631394bd9 (diff) | |
parent | 2b74e4c0be91b86b408fca518af7518c1ea994c9 (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.cpp | 76 |
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 |