diff options
Diffstat (limited to 'src/lib/netlist/devices/nld_7404.cpp')
-rw-r--r-- | src/lib/netlist/devices/nld_7404.cpp | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/src/lib/netlist/devices/nld_7404.cpp b/src/lib/netlist/devices/nld_7404.cpp new file mode 100644 index 00000000000..5bfd08c7d1e --- /dev/null +++ b/src/lib/netlist/devices/nld_7404.cpp @@ -0,0 +1,90 @@ +// license:GPL-2.0+ +// copyright-holders:Couriersud +/* + * nld_7404.c + * + */ + +#include "nld_7404.h" + +NETLIB_NAMESPACE_DEVICES_START() + +#if 1 && (USE_TRUTHTABLE) +nld_7404::truthtable_t nld_7404::m_ttbl; +const char *nld_7404::m_desc[] = { + "A | Q ", + "0 | 1|22", + "1 | 0|15", + "" +}; +#else + +NETLIB_START(7404) +{ + register_input("A", m_I[0]); + register_output("Q", m_Q[0]); +} + +NETLIB_RESET(7404) +{ +} + +NETLIB_UPDATE(7404) +{ + /* static */ const netlist_time delay[2] = { NLTIME_FROM_NS(15), NLTIME_FROM_NS(22) }; + UINT8 t = (INPLOGIC(m_I[0])) ^ 1; + OUTLOGIC(m_Q[0], t, delay[t]); +} +#endif + +NETLIB_START(7404_dip) +{ + register_sub("1", m_1); + register_sub("2", m_2); + register_sub("3", m_3); + register_sub("4", m_4); + register_sub("5", m_5); + register_sub("6", m_6); + + register_subalias("1", m_1.m_I[0]); + register_subalias("2", m_1.m_Q[0]); + + register_subalias("3", m_2.m_I[0]); + register_subalias("4", m_2.m_Q[0]); + + register_subalias("5", m_3.m_I[0]); + register_subalias("6", m_3.m_Q[0]); + + register_subalias("8", m_4.m_Q[0]); + register_subalias("9", m_4.m_I[0]); + + register_subalias("10", m_5.m_Q[0]); + register_subalias("11", m_5.m_I[0]); + + register_subalias("12", m_6.m_Q[0]); + register_subalias("13", m_6.m_I[0]); +} + +NETLIB_UPDATE(7404_dip) +{ + /* only called during startup */ + + m_1.update_dev(); + m_2.update_dev(); + m_3.update_dev(); + m_4.update_dev(); + m_5.update_dev(); + m_6.update_dev(); +} + +NETLIB_RESET(7404_dip) +{ + m_1.do_reset(); + m_2.do_reset(); + m_3.do_reset(); + m_4.do_reset(); + m_5.do_reset(); + m_6.do_reset(); +} + +NETLIB_NAMESPACE_DEVICES_END() |