summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author therealmogminer@gmail.com <therealmogminer@gmail.com>2016-12-13 19:42:42 +0100
committer therealmogminer@gmail.com <therealmogminer@gmail.com>2016-12-21 20:32:47 +0100
commit19165cfbfd0a5df163101f95323a567d519ea90c (patch)
tree23cc56b8662854e3729337b3203ef944bea1d8a8
parentb64073e79564cda7072c7d9df7b8cad4013d1e71 (diff)
netlist: Added 82S126 1K-bit bipolar PROM device. [Ryan Holtz]
-rw-r--r--scripts/src/netlist.lua2
-rw-r--r--src/lib/netlist/build/makefile1
-rw-r--r--src/lib/netlist/devices/net_lib.cpp2
-rw-r--r--src/lib/netlist/devices/net_lib.h1
-rw-r--r--src/lib/netlist/devices/nld_82S126.cpp85
-rw-r--r--src/lib/netlist/devices/nld_82S126.h34
6 files changed, 125 insertions, 0 deletions
diff --git a/scripts/src/netlist.lua b/scripts/src/netlist.lua
index 66c336a6dae..7a3bf069b84 100644
--- a/scripts/src/netlist.lua
+++ b/scripts/src/netlist.lua
@@ -129,6 +129,8 @@ project "netlist"
MAME_DIR .. "src/lib/netlist/devices/nld_74ls629.h",
MAME_DIR .. "src/lib/netlist/devices/nld_82S16.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_82S16.h",
+ MAME_DIR .. "src/lib/netlist/devices/nld_82S126.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_82S126.h",
MAME_DIR .. "src/lib/netlist/devices/nld_9310.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_9310.h",
MAME_DIR .. "src/lib/netlist/devices/nld_9312.cpp",
diff --git a/src/lib/netlist/build/makefile b/src/lib/netlist/build/makefile
index bbef3d58b97..f262f17fc1a 100644
--- a/src/lib/netlist/build/makefile
+++ b/src/lib/netlist/build/makefile
@@ -85,6 +85,7 @@ NLOBJS := \
$(NLOBJ)/devices/nld_74279.o \
$(NLOBJ)/devices/nld_74ls629.o \
$(NLOBJ)/devices/nld_82S16.o \
+ $(NLOBJ)/devices/nld_82S126.o \
$(NLOBJ)/devices/nld_9310.o \
$(NLOBJ)/devices/nld_9312.o \
$(NLOBJ)/devices/nld_9316.o \
diff --git a/src/lib/netlist/devices/net_lib.cpp b/src/lib/netlist/devices/net_lib.cpp
index a9f087c1002..02cfe14f692 100644
--- a/src/lib/netlist/devices/net_lib.cpp
+++ b/src/lib/netlist/devices/net_lib.cpp
@@ -126,6 +126,7 @@ static void initialize_factory(factory_list_t &factory)
//ENTRY(74279, TTL_74279, "-") // only dip available
ENTRYX(SN74LS629, SN74LS629, "CAP")
ENTRYX(82S16, TTL_82S16, "-")
+ ENTRYX(82S126, TTL_82S126, "-")
ENTRYX(9310, TTL_9310, "-")
ENTRYX(9312, TTL_9312, "-")
ENTRYX(9316, TTL_9316, "+CLK,ENP,ENT,CLRQ,LOADQ,A,B,C,D")
@@ -154,6 +155,7 @@ static void initialize_factory(factory_list_t &factory)
ENTRYX(74193_dip, TTL_74193_DIP, "-")
ENTRYX(74279_dip, TTL_74279_DIP, "-")
ENTRYX(82S16_dip, TTL_82S16_DIP, "-")
+ ENTRYX(82S126_dip, TTL_82S126_DIP, "-")
ENTRYX(9602_dip, TTL_9602_DIP, "-")
ENTRYX(9310_dip, TTL_9310_DIP, "-")
ENTRYX(9312_dip, TTL_9312_DIP, "-")
diff --git a/src/lib/netlist/devices/net_lib.h b/src/lib/netlist/devices/net_lib.h
index b7248683f0a..02d36402d01 100644
--- a/src/lib/netlist/devices/net_lib.h
+++ b/src/lib/netlist/devices/net_lib.h
@@ -33,6 +33,7 @@
#include "nld_74279.h"
#include "nld_74ls629.h"
#include "nld_82S16.h"
+#include "nld_82S126.h"
#include "nld_9310.h"
#include "nld_9312.h"
#include "nld_9316.h"
diff --git a/src/lib/netlist/devices/nld_82S126.cpp b/src/lib/netlist/devices/nld_82S126.cpp
new file mode 100644
index 00000000000..ac9e51587ca
--- /dev/null
+++ b/src/lib/netlist/devices/nld_82S126.cpp
@@ -0,0 +1,85 @@
+// license:BSD-3-Clause
+// copyright-holders:Ryan Holtz
+/*
+ * nld_82s126.cpp
+ *
+ */
+
+#include "nld_82s126.h"
+
+namespace netlist
+{
+ namespace devices
+ {
+ NETLIB_OBJECT(82S126)
+ {
+ NETLIB_CONSTRUCTOR(82S126)
+ , m_A(*this, {{"A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7" }})
+ , m_CE1Q(*this, "CE1Q")
+ , m_CE2Q(*this, "CE2Q")
+ , m_O(*this, {{"O1", "O2", "O3", "O4" }})
+ , m_ROM(*this, "m_ROM", nullptr)
+ {
+ }
+
+ NETLIB_UPDATEI();
+
+ protected:
+ object_array_t<logic_input_t, 8> m_A;
+ logic_input_t m_CE1Q;
+ logic_input_t m_CE2Q;
+ object_array_t<logic_output_t, 8> m_O;
+
+ param_rom_t m_ROM; // 1024 bits, 32x32, used as 256x4
+ };
+
+ NETLIB_OBJECT_DERIVED(82S126_dip, 82S126)
+ {
+ NETLIB_CONSTRUCTOR_DERIVED(82S126_dip, 82S126)
+ {
+ register_subalias("5", m_A[0]);
+ register_subalias("6", m_A[1]);
+ register_subalias("7", m_A[2]);
+ register_subalias("4", m_A[3]);
+ register_subalias("3", m_A[4]);
+ register_subalias("2", m_A[5]);
+ register_subalias("1", m_A[6]);
+ register_subalias("15", m_A[7]);
+
+ register_subalias("13", m_CE1Q);
+ register_subalias("14", m_CE2Q);
+
+ register_subalias("12", m_O[0]);
+ register_subalias("11", m_O[1]);
+ register_subalias("10", m_O[2]);
+ register_subalias("9", m_O[3]);
+ }
+ };
+
+ // FIXME: timing!
+ NETLIB_UPDATE(82S126)
+ {
+ unsigned o = 0xf;
+
+ netlist_time delay = NLTIME_FROM_NS(25);
+ if (m_CE1Q() && m_CE1Q())
+ {
+ unsigned a = 0;
+ for (std::size_t i=0; i<8; i++)
+ a |= (m_A[i]() << i);
+
+ o = m_ROM()[a];
+
+ delay = NLTIME_FROM_NS(50);
+ }
+
+ // FIXME: Outputs are tristate. This needs to be properly implemented
+ for (std::size_t i=0; i<4; i++)
+ m_O[i].push((o >> i) & 1, delay);
+ }
+
+ NETLIB_DEVICE_IMPL(82S126)
+ NETLIB_DEVICE_IMPL(82S126_dip)
+
+ } //namespace devices
+} // namespace netlist
diff --git a/src/lib/netlist/devices/nld_82S126.h b/src/lib/netlist/devices/nld_82S126.h
new file mode 100644
index 00000000000..3ecfd985faf
--- /dev/null
+++ b/src/lib/netlist/devices/nld_82S126.h
@@ -0,0 +1,34 @@
+// license:BSD-3-Clause
+// copyright-holders:Ryan Holtz
+/*
+ * nld_82S126.h
+ *
+ * 82S126: 1K-bit TTL bipolar PROM
+ *
+ * +--------------+
+ * A6 |1 ++ 16| VCC
+ * A5 |2 15| Q7
+ * A4 |3 14| CE2Q
+ * A3 |4 82S126 13| CE1Q
+ * A0 |5 12| O1
+ * A1 |6 11| O2
+ * A2 |7 10| O3
+ * GND |8 9| O4
+ * +--------------+
+ *
+ *
+ * Naming conventions follow Signetics datasheet
+ *
+ */
+
+#ifndef NLD_82S126_H_
+#define NLD_82S126_H_
+
+#include "nl_setup.h"
+
+#define TTL_82S126(name) \
+ NET_REGISTER_DEV(TTL_82S126, name)
+#define TTL_82S126_DIP(name) \
+ NET_REGISTER_DEV(TTL_82S126_DIP, name)
+
+#endif /* NLD_82S126_H_ */