summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/devices/nld_7450.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/netlist/devices/nld_7450.cpp')
-rw-r--r--src/lib/netlist/devices/nld_7450.cpp94
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()