diff options
Diffstat (limited to 'src/lib/netlist/devices/nld_7450.cpp')
-rw-r--r-- | src/lib/netlist/devices/nld_7450.cpp | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/src/lib/netlist/devices/nld_7450.cpp b/src/lib/netlist/devices/nld_7450.cpp new file mode 100644 index 00000000000..30d7916acf0 --- /dev/null +++ b/src/lib/netlist/devices/nld_7450.cpp @@ -0,0 +1,94 @@ +// license:GPL-2.0+ +// copyright-holders:Couriersud +/* + * nld_7450.c + * + */ + +#include "nld_7450.h" + +NETLIB_NAMESPACE_DEVICES_START() + +NETLIB_START(7450) +{ + register_input("A", m_A); + register_input("B", m_B); + register_input("C", m_C); + register_input("D", m_D); + register_output("Q", m_Q); +} + +NETLIB_RESET(7450) +{ +} + +NETLIB_UPDATE(7450) +{ + m_A.activate(); + m_B.activate(); + m_C.activate(); + m_D.activate(); + UINT8 t1 = INPLOGIC(m_A) & INPLOGIC(m_B); + UINT8 t2 = INPLOGIC(m_C) & INPLOGIC(m_D); + + const netlist_time times[2] = { NLTIME_FROM_NS(22), NLTIME_FROM_NS(15) }; + + UINT8 res = 0; + if (t1 ^ 1) + { + if (t2 ^ 1) + { + res = 1; + } + else + { + m_A.inactivate(); + m_B.inactivate(); + } + } else { + if (t2 ^ 1) + { + m_C.inactivate(); + m_D.inactivate(); + } + } + OUTLOGIC(m_Q, res, times[1 - res]);// ? 22000 : 15000); +} + + +NETLIB_START(7450_dip) +{ + register_sub("1", m_1); + register_sub("2", m_2); + + register_subalias("1", m_1.m_A); + register_subalias("2", m_2.m_A); + register_subalias("3", m_2.m_B); + register_subalias("4", m_2.m_C); + register_subalias("5", m_2.m_D); + register_subalias("6", m_2.m_Q); + //register_subalias("7",); GND + + register_subalias("8", m_1.m_Q); + register_subalias("9", m_1.m_C); + register_subalias("10", m_1.m_D); + //register_subalias("11", m_1.m_X1); + //register_subalias("12", m_1.m_X1Q); + register_subalias("13", m_1.m_B); + //register_subalias("14",); VCC +} + +NETLIB_UPDATE(7450_dip) +{ + /* only called during startup */ + m_1.update_dev(); + m_2.update_dev(); +} + +NETLIB_RESET(7450_dip) +{ + m_1.do_reset(); + m_2.do_reset(); +} + +NETLIB_NAMESPACE_DEVICES_END() |