summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--scripts/src/netlist.lua2
-rw-r--r--src/emu/netlist/devices/net_lib.c2
-rw-r--r--src/emu/netlist/devices/net_lib.h1
-rw-r--r--src/emu/netlist/devices/nld_9312.c87
-rw-r--r--src/emu/netlist/devices/nld_9312.h58
5 files changed, 150 insertions, 0 deletions
diff --git a/scripts/src/netlist.lua b/scripts/src/netlist.lua
index be502f5ba5c..2db67d68526 100644
--- a/scripts/src/netlist.lua
+++ b/scripts/src/netlist.lua
@@ -83,6 +83,8 @@ files {
MAME_DIR .. "src/emu/netlist/devices/nld_74153.h",
MAME_DIR .. "src/emu/netlist/devices/nld_74ls629.c",
MAME_DIR .. "src/emu/netlist/devices/nld_74ls629.h",
+ MAME_DIR .. "src/emu/netlist/devices/nld_9312.c",
+ MAME_DIR .. "src/emu/netlist/devices/nld_9312.h",
MAME_DIR .. "src/emu/netlist/devices/nld_9316.c",
MAME_DIR .. "src/emu/netlist/devices/nld_9316.h",
MAME_DIR .. "src/emu/netlist/devices/nld_ne555.c",
diff --git a/src/emu/netlist/devices/net_lib.c b/src/emu/netlist/devices/net_lib.c
index 4c8e22d685b..1ef800e524b 100644
--- a/src/emu/netlist/devices/net_lib.c
+++ b/src/emu/netlist/devices/net_lib.c
@@ -117,6 +117,7 @@ void nl_initialize_factory(netlist_factory_t &factory)
ENTRY(74123, TTL_74123, "-")
ENTRY(74153, TTL_74153, "+C0,C1,C2,C3,A,B,G")
ENTRY(SN74LS629, SN74LS629, "CAP")
+ ENTRY(9312, TTL_9312, "-")
ENTRY(9316, TTL_9316, "+CLK,ENP,ENT,CLRQ,LOADQ,A,B,C,D")
ENTRY(NE555, NE555, "-")
ENTRY(r2r_dac, R2R_DAC, "+VIN,R,N")
@@ -145,6 +146,7 @@ void nl_initialize_factory(netlist_factory_t &factory)
ENTRY(74123_dip, TTL_74123_DIP, "-")
ENTRY(74153_dip, TTL_74153_DIP, "-")
ENTRY(9602_dip, TTL_9602_DIP, "-")
+ ENTRY(9312_dip, TTL_9312_DIP, "-")
ENTRY(9316_dip, TTL_9316_DIP, "-")
ENTRY(SN74LS629_dip, SN74LS629_DIP, "1.CAP1,2.CAP2")
ENTRY(NE555_dip, NE555_DIP, "-")
diff --git a/src/emu/netlist/devices/net_lib.h b/src/emu/netlist/devices/net_lib.h
index f3db97584fe..f66da6bb441 100644
--- a/src/emu/netlist/devices/net_lib.h
+++ b/src/emu/netlist/devices/net_lib.h
@@ -79,6 +79,7 @@
#include "nld_74123.h"
#include "nld_74153.h"
#include "nld_74ls629.h"
+#include "nld_9312.h"
#include "nld_9316.h"
#include "nld_ne555.h"
diff --git a/src/emu/netlist/devices/nld_9312.c b/src/emu/netlist/devices/nld_9312.c
new file mode 100644
index 00000000000..6651848e3a9
--- /dev/null
+++ b/src/emu/netlist/devices/nld_9312.c
@@ -0,0 +1,87 @@
+/*
+ * nld_9312.c
+ *
+ */
+
+/*
+ * +---+---+---+---++---+---+
+ * | C | B | A | G || Y | YQ|
+ * +===+===+===+===++===+===+
+ * | X | X | X | 1 || 0| 1 |
+ * | 0 | 0 | 0 | 0 || D0|D0Q|
+ * | 0 | 0 | 1 | 0 || D1|D1Q|
+ * | 0 | 1 | 0 | 0 || D2|D2Q|
+ * | 0 | 1 | 1 | 0 || D3|D3Q|
+ * | 1 | 0 | 0 | 0 || D4|D4Q|
+ * | 1 | 0 | 1 | 0 || D5|D5Q|
+ * | 1 | 1 | 0 | 0 || D6|D6Q|
+ * | 1 | 1 | 1 | 0 || D7|D7Q|
+ * +---+---+---+---++---+---+
+*/
+#include "nld_9312.h"
+
+//#if (USE_TRUTHTABLE)
+nld_9312::truthtable_t nld_9312::m_ttbl;
+
+/* FIXME: Data changes are propagating faster than changing selects A,B,C
+ * Please refer to data sheet.
+ * This would require a state machine, thus we do not
+ * do this right now.
+ */
+
+const char *nld_9312::m_desc[] = {
+ " C, B, A, G,D0,D1,D2,D3,D4,D5,D6,D7| Y,YQ",
+ " X, X, X, 1, X, X, X, X, X, X, X, X| 0, 1|33,19",
+ " 0, 0, 0, 0, 0, X, X, X, X, X, X, X| 0, 1|33,28",
+ " 0, 0, 0, 0, 1, X, X, X, X, X, X, X| 1, 0|33,28",
+ " 0, 0, 1, 0, X, 0, X, X, X, X, X, X| 0, 1|33,28",
+ " 0, 0, 1, 0, X, 1, X, X, X, X, X, X| 1, 0|33,28",
+ " 0, 1, 0, 0, X, X, 0, X, X, X, X, X| 0, 1|33,28",
+ " 0, 1, 0, 0, X, X, 1, X, X, X, X, X| 1, 0|33,28",
+ " 0, 1, 1, 0, X, X, X, 0, X, X, X, X| 0, 1|33,28",
+ " 0, 1, 1, 0, X, X, X, 1, X, X, X, X| 1, 0|33,28",
+ " 1, 0, 0, 0, X, X, X, X, 0, X, X, X| 0, 1|33,28",
+ " 1, 0, 0, 0, X, X, X, X, 1, X, X, X| 1, 0|33,28",
+ " 1, 0, 1, 0, X, X, X, X, X, 0, X, X| 0, 1|33,28",
+ " 1, 0, 1, 0, X, X, X, X, X, 1, X, X| 1, 0|33,28",
+ " 1, 1, 0, 0, X, X, X, X, X, X, 0, X| 0, 1|33,28",
+ " 1, 1, 0, 0, X, X, X, X, X, X, 1, X| 1, 0|33,28",
+ " 1, 1, 1, 0, X, X, X, X, X, X, X, 0| 0, 1|33,28",
+ " 1, 1, 1, 0, X, X, X, X, X, X, X, 1| 1, 0|33,28",
+ ""
+};
+//#endif
+
+
+NETLIB_START(9312_dip)
+{
+ register_sub(m_sub, "1");
+
+ register_subalias("13", m_sub.m_i[0]);
+ register_subalias("12", m_sub.m_i[1]);
+ register_subalias("11", m_sub.m_i[2]);
+ register_subalias("10", m_sub.m_i[3]);
+
+ register_subalias("1", m_sub.m_i[4]);
+ register_subalias("2", m_sub.m_i[5]);
+ register_subalias("3", m_sub.m_i[6]);
+ register_subalias("4", m_sub.m_i[7]);
+ register_subalias("5", m_sub.m_i[8]);
+ register_subalias("6", m_sub.m_i[9]);
+ register_subalias("7", m_sub.m_i[10]);
+ register_subalias("9", m_sub.m_i[11]);
+
+ register_subalias("15", m_sub.m_Q[0]); // Y
+ register_subalias("14", m_sub.m_Q[1]); // YQ
+}
+
+NETLIB_UPDATE(9312_dip)
+{
+ /* only called during startup */
+ m_sub.update_dev();
+}
+
+NETLIB_RESET(9312_dip)
+{
+ m_sub.do_reset();
+}
diff --git a/src/emu/netlist/devices/nld_9312.h b/src/emu/netlist/devices/nld_9312.h
new file mode 100644
index 00000000000..98fd0c7177d
--- /dev/null
+++ b/src/emu/netlist/devices/nld_9312.h
@@ -0,0 +1,58 @@
+// license:GPL-2.0+
+// copyright-holders:Couriersud
+/*
+ * nld_9312.h
+ *
+ * DM9312: One of Eight Line Data Selectors/Multiplexers
+ *
+ * +--------------+
+ * D0 |1 ++ 16| VCC
+ * D1 |2 15| Y
+ * D2 |3 14| YQ
+ * D3 |4 9312 13| C
+ * D4 |5 12| B
+ * D5 |6 11| A
+ * D6 |7 10| G Strobe
+ * GND |8 9| D7
+ * +--------------+
+ * __
+ * +---+---+---+---++---+---+
+ * | C | B | A | G || Y | YQ|
+ * +===+===+===+===++===+===+
+ * | X | X | X | 1 || 0| 1 |
+ * | 0 | 0 | 0 | 0 || D0|D0Q|
+ * | 0 | 0 | 1 | 0 || D1|D1Q|
+ * | 0 | 1 | 0 | 0 || D2|D2Q|
+ * | 0 | 1 | 1 | 0 || D3|D3Q|
+ * | 1 | 0 | 0 | 0 || D4|D4Q|
+ * | 1 | 0 | 1 | 0 || D5|D5Q|
+ * | 1 | 1 | 0 | 0 || D6|D6Q|
+ * | 1 | 1 | 1 | 0 || D7|D7Q|
+ * +---+---+---+---++---+---+
+ *
+ * Naming conventions follow National Semiconductor datasheet
+ *
+ */
+
+#ifndef NLD_9312_H_
+#define NLD_9312_H_
+
+#include "nld_signal.h"
+
+#define TTL_9312(_name) \
+ NET_REGISTER_DEV(9312, _name) \
+
+//#if (USE_TRUTHTABLE)
+#include "nld_truthtable.h"
+NETLIB_TRUTHTABLE(9312, 12, 2, 0);
+//#endif
+
+
+#define TTL_9312_DIP(_name) \
+ NET_REGISTER_DEV(9312_dip, _name)
+
+NETLIB_DEVICE(9312_dip,
+ NETLIB_NAME(9312) m_sub;
+);
+
+#endif /* NLD_9312_H_ */