summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author couriersud <couriersud@arcor.de>2015-04-25 14:18:41 +0200
committer couriersud <couriersud@arcor.de>2015-04-25 14:18:41 +0200
commit66d555e3238019b372c7b0253dc9ae738db32269 (patch)
tree5e8ae17e1bad321aa007f4bb2d3f9da6ea6c95e7
parent6ddcf53550caa32be40fbace515c4ee07f69ad9e (diff)
Added 74175 and 82S16 devices to netlist. nl_breakout now compiles. (nw)
-rw-r--r--scripts/src/netlist.lua6
-rw-r--r--src/emu/netlist/devices/net_lib.c6
-rw-r--r--src/emu/netlist/devices/net_lib.h3
-rw-r--r--src/emu/netlist/devices/nld_74175.c92
-rw-r--r--src/emu/netlist/devices/nld_74175.h61
-rw-r--r--src/emu/netlist/devices/nld_74279.c75
-rw-r--r--src/emu/netlist/devices/nld_74279.h55
-rw-r--r--src/emu/netlist/devices/nld_7474.h2
-rw-r--r--src/emu/netlist/devices/nld_82S16.c90
-rw-r--r--src/emu/netlist/devices/nld_82S16.h51
-rw-r--r--src/emu/netlist/devices/nld_system.h1
-rw-r--r--src/mame/drivers/nl_breakout.c4
12 files changed, 443 insertions, 3 deletions
diff --git a/scripts/src/netlist.lua b/scripts/src/netlist.lua
index 4aebef1f091..1670ebb9ba6 100644
--- a/scripts/src/netlist.lua
+++ b/scripts/src/netlist.lua
@@ -81,12 +81,18 @@ files {
MAME_DIR .. "src/emu/netlist/devices/nld_74123.h",
MAME_DIR .. "src/emu/netlist/devices/nld_74153.c",
MAME_DIR .. "src/emu/netlist/devices/nld_74153.h",
+ MAME_DIR .. "src/emu/netlist/devices/nld_74175.c",
+ MAME_DIR .. "src/emu/netlist/devices/nld_74175.h",
MAME_DIR .. "src/emu/netlist/devices/nld_74192.c",
MAME_DIR .. "src/emu/netlist/devices/nld_74192.h",
MAME_DIR .. "src/emu/netlist/devices/nld_74193.c",
MAME_DIR .. "src/emu/netlist/devices/nld_74193.h",
+ MAME_DIR .. "src/emu/netlist/devices/nld_74279.c",
+ MAME_DIR .. "src/emu/netlist/devices/nld_74279.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_82S16.c",
+ MAME_DIR .. "src/emu/netlist/devices/nld_82S16.h",
MAME_DIR .. "src/emu/netlist/devices/nld_9310.c",
MAME_DIR .. "src/emu/netlist/devices/nld_9310.h",
MAME_DIR .. "src/emu/netlist/devices/nld_9312.c",
diff --git a/src/emu/netlist/devices/net_lib.c b/src/emu/netlist/devices/net_lib.c
index 1483f2d40cb..a40be7be574 100644
--- a/src/emu/netlist/devices/net_lib.c
+++ b/src/emu/netlist/devices/net_lib.c
@@ -117,9 +117,12 @@ void nl_initialize_factory(netlist_factory_t &factory)
ENTRY(74107A, TTL_74107A, "+CLK,J,K,CLRQ")
ENTRY(74123, TTL_74123, "-")
ENTRY(74153, TTL_74153, "+C0,C1,C2,C3,A,B,G")
+ ENTRY(74175, TTL_74175, "-")
ENTRY(74192, TTL_74192, "-")
ENTRY(74193, TTL_74193, "-")
+ //ENTRY(74279, TTL_74279, "-") // only dip available
ENTRY(SN74LS629, SN74LS629, "CAP")
+ ENTRY(82S16, TTL_82S16, "-")
ENTRY(9310, TTL_9310, "-")
ENTRY(9312, TTL_9312, "-")
ENTRY(9316, TTL_9316, "+CLK,ENP,ENT,CLRQ,LOADQ,A,B,C,D")
@@ -149,8 +152,11 @@ void nl_initialize_factory(netlist_factory_t &factory)
ENTRY(74107_dip, TTL_74107_DIP, "-")
ENTRY(74123_dip, TTL_74123_DIP, "-")
ENTRY(74153_dip, TTL_74153_DIP, "-")
+ ENTRY(74175_dip, TTL_74175_DIP, "-")
ENTRY(74192_dip, TTL_74192_DIP, "-")
ENTRY(74193_dip, TTL_74193_DIP, "-")
+ ENTRY(74279_dip, TTL_74279_DIP, "-")
+ ENTRY(82S16_dip, TTL_82S16_DIP, "-")
ENTRY(9602_dip, TTL_9602_DIP, "-")
ENTRY(9310_dip, TTL_9310_DIP, "-")
ENTRY(9312_dip, TTL_9312_DIP, "-")
diff --git a/src/emu/netlist/devices/net_lib.h b/src/emu/netlist/devices/net_lib.h
index bc8db7201a2..42efb0f19dd 100644
--- a/src/emu/netlist/devices/net_lib.h
+++ b/src/emu/netlist/devices/net_lib.h
@@ -78,9 +78,12 @@
#include "nld_74107.h"
#include "nld_74123.h"
#include "nld_74153.h"
+#include "nld_74175.h"
#include "nld_74192.h"
#include "nld_74193.h"
+#include "nld_74279.h"
#include "nld_74ls629.h"
+#include "nld_82S16.h"
#include "nld_9310.h"
#include "nld_9312.h"
#include "nld_9316.h"
diff --git a/src/emu/netlist/devices/nld_74175.c b/src/emu/netlist/devices/nld_74175.c
new file mode 100644
index 00000000000..e7c8bc9379c
--- /dev/null
+++ b/src/emu/netlist/devices/nld_74175.c
@@ -0,0 +1,92 @@
+/*
+ * nld_74175.c
+ *
+ */
+
+#include "nld_74175.h"
+
+static const netlist_time delay[2] = { NLTIME_FROM_NS(40), NLTIME_FROM_NS(25) };
+
+NETLIB_UPDATE(74175)
+{
+ if (!INPLOGIC(m_CLRQ))
+ {
+ for (int i=0; i<4; i++)
+ {
+ OUTLOGIC(m_Q[i], 0, delay[0]);
+ OUTLOGIC(m_QQ[i], 1, delay[1]);
+ }
+ }
+ else if (!m_last && INPLOGIC(m_CLK))
+ {
+ for (int i=0; i<4; i++)
+ {
+ UINT8 d = INPLOGIC(m_D[i]);
+ OUTLOGIC(m_Q[i], d, delay[d]);
+ OUTLOGIC(m_QQ[i], !d, delay[!d]);
+ }
+ }
+ m_last = INPLOGIC(m_CLK);
+}
+
+NETLIB_START(74175)
+{
+ register_input("CLK", m_CLK);
+ register_input("CLRQ", m_CLRQ);
+
+ register_input("D1", m_D[0]);
+ register_output("Q1", m_Q[0]);
+ register_output("Q1Q", m_QQ[0]);
+
+ register_input("D2", m_D[1]);
+ register_output("Q2", m_Q[1]);
+ register_output("Q2Q", m_QQ[1]);
+
+ register_input("D3", m_D[2]);
+ register_output("Q3", m_Q[2]);
+ register_output("Q3Q", m_QQ[2]);
+
+ register_input("D4", m_D[3]);
+ register_output("Q4", m_Q[3]);
+ register_output("Q4Q", m_QQ[3]);
+
+ save(NLNAME(m_last.ref()));
+}
+
+NETLIB_RESET(74175)
+{
+}
+
+NETLIB_START(74175_dip)
+{
+ register_input("9", m_CLK);
+ register_input("1", m_CLRQ);
+
+ register_input("4", m_D[0]);
+ register_output("2", m_Q[0]);
+ register_output("3", m_QQ[0]);
+
+ register_input("5", m_D[1]);
+ register_output("7", m_Q[1]);
+ register_output("6", m_QQ[1]);
+
+ register_input("12", m_D[2]);
+ register_output("10", m_Q[2]);
+ register_output("11", m_QQ[2]);
+
+ register_input("13", m_D[3]);
+ register_output("15", m_Q[3]);
+ register_output("14", m_QQ[3]);
+
+ save(NLNAME(m_last.ref()));
+}
+
+NETLIB_RESET(74175_dip)
+{
+ NETLIB_NAME(74175)::reset();
+}
+
+NETLIB_UPDATE(74175_dip)
+{
+ NETLIB_NAME(74175)::update();
+}
diff --git a/src/emu/netlist/devices/nld_74175.h b/src/emu/netlist/devices/nld_74175.h
new file mode 100644
index 00000000000..9c138755a50
--- /dev/null
+++ b/src/emu/netlist/devices/nld_74175.h
@@ -0,0 +1,61 @@
+// license:GPL-2.0+
+// copyright-holders:Couriersud
+/*
+ * nld_74175.h
+ *
+ * DM74175: Quad D Flip-Flops with Clear
+ *
+ * +--------------+
+ * CLR |1 ++ 16| VCC
+ * Q1 |2 15| Q4
+ * Q1Q |3 14| Q4Q
+ * D1 |4 74175 13| D4
+ * D2 |5 12| D3
+ * Q2Q |6 11| Q3Q
+ * Q2 |7 10| Q3
+ * GND |8 9| CLK
+ * +--------------+
+ *
+ * +-----+-----+---++---+-----+
+ * | CLR | CLK | D || Q | QQ |
+ * +=====+=====+===++===+=====+
+ * | 0 | X | X || 0 | 1 |
+ * | 1 | R | 1 || 1 | 0 |
+ * | 1 | R | 0 || 0 | 1 |
+ * | 1 | 0 | X || Q0| Q0Q |
+ * +-----+-----+---++---+-----+
+ *
+ * Q0 The output logic level of Q before the indicated input conditions were established
+ *
+ * R: 0 --> 1
+ *
+ * Naming conventions follow National Semiconductor datasheet
+ *
+ */
+
+#ifndef NLD_74175_H_
+#define NLD_74175_H_
+
+#include "nld_signal.h"
+
+#define TTL_74175(_name) \
+ NET_REGISTER_DEV(74175, _name) \
+
+#define TTL_74175_DIP(_name) \
+ NET_REGISTER_DEV(74175_dip, _name)
+
+NETLIB_DEVICE(74175,
+
+ netlist_state_t<UINT8> m_last;
+ netlist_ttl_input_t m_D[4];
+ netlist_ttl_input_t m_CLRQ;
+ netlist_ttl_input_t m_CLK;
+ netlist_ttl_output_t m_Q[4];
+ netlist_ttl_output_t m_QQ[4];
+);
+
+NETLIB_DEVICE_DERIVED(74175_dip, 74175,
+
+);
+
+#endif /* NLD_74175_H_ */
diff --git a/src/emu/netlist/devices/nld_74279.c b/src/emu/netlist/devices/nld_74279.c
new file mode 100644
index 00000000000..b920ac0498a
--- /dev/null
+++ b/src/emu/netlist/devices/nld_74279.c
@@ -0,0 +1,75 @@
+/*
+ * nld_74279.c
+ *
+ */
+
+#include "nld_74279.h"
+
+nld_74279A::truthtable_t nld_74279A::m_ttbl;
+
+const char *nld_74279A::m_desc[] = {
+ "S,R,PQ,PS,PR|Q",
+ "0,0,X,X,X|1|22",
+ "0,1,X,X,X|1|22",
+ "1,0,X,X,X|0|15",
+ "1,1,0,X,X|0|15",
+ "1,1,1,X,X|1|22",
+ ""
+};
+
+nld_74279B::truthtable_t nld_74279B::m_ttbl;
+
+const char *nld_74279B::m_desc[] = {
+ "S1,S2,R,PQ,PS1,PS2,PR|Q",
+ "0,X,0,X,X,X,X|1|22",
+ "X,0,0,X,X,X,X|1|22",
+ "0,X,1,X,X,X,X|1|22",
+ "X,0,1,X,X,X,X|1|22",
+ "1,1,0,X,X,X,X|0|15",
+ "1,1,1,0,X,X,X|0|15",
+ "1,1,1,1,X,X,X|1|22",
+ ""
+};
+
+NETLIB_START(74279_dip)
+{
+ register_sub(m_1, "1");
+ register_sub(m_2, "2");
+ register_sub(m_3, "3");
+ register_sub(m_4, "4");
+
+ register_subalias("1", m_1.m_i[2]); //R
+ register_subalias("2", m_1.m_i[0]);
+ register_subalias("3", m_1.m_i[1]);
+ register_subalias("4", m_1.m_Q[0]);
+
+ register_subalias("5", m_2.m_i[1]); //R
+ register_subalias("6", m_2.m_i[0]);
+ register_subalias("7", m_2.m_Q[0]);
+
+ register_subalias("9", m_3.m_Q[0]);
+ register_subalias("10", m_3.m_i[2]); //R
+ register_subalias("11", m_3.m_i[0]);
+ register_subalias("12", m_3.m_i[1]);
+
+ register_subalias("13", m_2.m_Q[0]);
+ register_subalias("14", m_2.m_i[1]); //R
+ register_subalias("15", m_2.m_i[0]);
+}
+
+NETLIB_UPDATE(74279_dip)
+{
+ /* only called during startup */
+ m_1.update_dev();
+ m_2.update_dev();
+ m_3.update_dev();
+ m_4.update_dev();
+}
+
+NETLIB_RESET(74279_dip)
+{
+ m_1.do_reset();
+ m_2.do_reset();
+ m_3.do_reset();
+ m_4.do_reset();
+}
diff --git a/src/emu/netlist/devices/nld_74279.h b/src/emu/netlist/devices/nld_74279.h
new file mode 100644
index 00000000000..ae5020394de
--- /dev/null
+++ b/src/emu/netlist/devices/nld_74279.h
@@ -0,0 +1,55 @@
+// license:GPL-2.0+
+// copyright-holders:Couriersud
+/*
+ * nld_74279.h
+ *
+ * DM74279: Triple 3-Input NAND Gates
+ *
+ * +--------------+
+ * 1R |1 ++ 16| VCC
+ * 1S1 |2 15| 4S
+ * 1S2 |3 14| 4R
+ * 1Q |4 74279 13| 4Q
+ * 2R |5 12| 3S2
+ * 2S |6 11| 3S1
+ * 2Q |7 10| 3R
+ * GND |8 9| 3Q
+ * +--------------+
+ * ___
+ *
+ * +---+---+---++---+
+ * |S1 |S2 | R || Q |
+ * +===+===+===++===+
+ * | 0 | 0 | 0 || 1 |
+ * | 0 | 1 | 1 || 1 |
+ * | 1 | 0 | 1 || 1 |
+ * | 1 | 1 | 0 || 0 |
+ * | 1 | 1 | 1 ||QP |
+ * +---+---+---++---+
+ *
+ * QP: Previous Q
+ *
+ * Naming conventions follow Fairchild Semiconductor datasheet
+ *
+ */
+
+#ifndef NLD_74279_H_
+#define NLD_74279_H_
+
+#include "nld_truthtable.h"
+
+NETLIB_TRUTHTABLE(74279A, 2, 1, 1);
+NETLIB_TRUTHTABLE(74279B, 3, 1, 1);
+
+#define TTL_74279_DIP(_name) \
+ NET_REGISTER_DEV(74279_dip, _name)
+
+NETLIB_DEVICE(74279_dip,
+
+ NETLIB_NAME(74279B) m_1;
+ NETLIB_NAME(74279A) m_2;
+ NETLIB_NAME(74279B) m_3;
+ NETLIB_NAME(74279A) m_4;
+);
+
+#endif /* NLD_74279_H_ */
diff --git a/src/emu/netlist/devices/nld_7474.h b/src/emu/netlist/devices/nld_7474.h
index 1c209d3a4e0..3452400dd54 100644
--- a/src/emu/netlist/devices/nld_7474.h
+++ b/src/emu/netlist/devices/nld_7474.h
@@ -4,7 +4,7 @@
* nld_7474.h
*
* DM7474: Dual Positive-Edge-Triggered D Flip-Flops
- * with Preset Clear and Complementary Outputs
+ * with Preset, Clear and Complementary Outputs
*
* +--------------+
* CLR1 |1 ++ 14| VCC
diff --git a/src/emu/netlist/devices/nld_82S16.c b/src/emu/netlist/devices/nld_82S16.c
new file mode 100644
index 00000000000..bb0f4206d93
--- /dev/null
+++ b/src/emu/netlist/devices/nld_82S16.c
@@ -0,0 +1,90 @@
+/*
+ * nld_82S16.c
+ *
+ */
+
+#include "nld_82S16.h"
+
+static const netlist_time delay[2] = { NLTIME_FROM_NS(40), NLTIME_FROM_NS(25) };
+
+// FIXME: timing!
+// FIXME: optimize device (separate address decoder!)
+NETLIB_UPDATE(82S16)
+{
+ if (INPLOGIC(m_CE1Q) || INPLOGIC(m_CE1Q) || INPLOGIC(m_CE1Q))
+ {
+ // FIXME: Outputs are tristate. This needs to be properly implemented
+ OUTLOGIC(m_DOUTQ, 1, NLTIME_FROM_NS(40));
+ }
+ else
+ {
+ int adr = 0;
+ for (int i=0; i<8; i++)
+ adr |= (INPLOGIC(m_A[i]) << i);
+
+ if (!INPLOGIC(m_WEQ))
+ m_ram[adr] = INPLOGIC(m_DIN);
+ OUTLOGIC(m_DOUTQ, m_ram[adr] ^ 1, NLTIME_FROM_NS(40));
+ }
+}
+
+NETLIB_START(82S16)
+{
+ register_input("A0", m_A[0]);
+ register_input("A1", m_A[1]);
+ register_input("A2", m_A[2]);
+ register_input("A3", m_A[3]);
+ register_input("A4", m_A[4]);
+ register_input("A5", m_A[5]);
+ register_input("A6", m_A[6]);
+ register_input("A7", m_A[7]);
+
+ register_input("CE1Q", m_CE1Q);
+ register_input("CE2Q", m_CE2Q);
+ register_input("CE3Q", m_CE3Q);
+
+ register_input("WEQ", m_WEQ);
+ register_input("DIN", m_DIN);
+
+ register_output("DOUTQ",m_DOUTQ);
+
+ save(NLNAME(m_ram));
+}
+
+NETLIB_RESET(82S16)
+{
+ for (int i=0; i<256; i++)
+ {
+ m_ram[i] = 0;
+ }
+}
+
+NETLIB_START(82S16_dip)
+{
+ register_input("2", m_A[0]);
+ register_input("1", m_A[1]);
+ register_input("15", m_A[2]);
+ register_input("14", m_A[3]);
+ register_input("7", m_A[4]);
+ register_input("9", m_A[5]);
+ register_input("10", m_A[6]);
+ register_input("11", m_A[7]);
+
+ register_input("3", m_CE1Q);
+ register_input("4", m_CE2Q);
+ register_input("5", m_CE3Q);
+
+ register_input("12", m_WEQ);
+ register_input("13", m_DIN);
+
+ register_output("6", m_DOUTQ);}
+
+NETLIB_RESET(82S16_dip)
+{
+ NETLIB_NAME(82S16)::reset();
+}
+
+NETLIB_UPDATE(82S16_dip)
+{
+ NETLIB_NAME(82S16)::update();
+}
diff --git a/src/emu/netlist/devices/nld_82S16.h b/src/emu/netlist/devices/nld_82S16.h
new file mode 100644
index 00000000000..652fbbc13a1
--- /dev/null
+++ b/src/emu/netlist/devices/nld_82S16.h
@@ -0,0 +1,51 @@
+// license:GPL-2.0+
+// copyright-holders:Couriersud
+/*
+ * nld_82S16.h
+ *
+ * DM82S16: 256 Bit bipolar ram
+ *
+ * +--------------+
+ * A1 |1 ++ 16| VCC
+ * A0 |2 15| A2
+ * CE1Q |3 14| A3
+ * CE2Q |4 82S16 13| DIN
+ * CE3Q |5 12| WEQ
+ * DOUTQ |6 11| A7
+ * A4 |7 10| A6
+ * GND |8 9| A5
+ * +--------------+
+ *
+ *
+ * Naming conventions follow Signetics datasheet
+ *
+ */
+
+#ifndef NLD_82S16_H_
+#define NLD_82S16_H_
+
+#include "../nl_base.h"
+
+#define TTL_82S16(_name) \
+ NET_REGISTER_DEV(82S16, _name) \
+
+#define TTL_82S16_DIP(_name) \
+ NET_REGISTER_DEV(82S16_dip, _name)
+
+NETLIB_DEVICE(82S16,
+
+ UINT8 m_ram[256];
+ netlist_ttl_input_t m_A[8];
+ netlist_ttl_input_t m_CE1Q;
+ netlist_ttl_input_t m_CE2Q;
+ netlist_ttl_input_t m_CE3Q;
+ netlist_ttl_input_t m_WEQ;
+ netlist_ttl_input_t m_DIN;
+ netlist_ttl_output_t m_DOUTQ;
+);
+
+NETLIB_DEVICE_DERIVED(82S16_dip, 82S16,
+
+);
+
+#endif /* NLD_82S16_H_ */
diff --git a/src/emu/netlist/devices/nld_system.h b/src/emu/netlist/devices/nld_system.h
index 644264eea13..fe14f58ab32 100644
--- a/src/emu/netlist/devices/nld_system.h
+++ b/src/emu/netlist/devices/nld_system.h
@@ -43,6 +43,7 @@
NET_REGISTER_DEV(frontier, _name) \
NET_C(_IN, _name.I) \
NET_C(_OUT, _name.Q)
+
// -----------------------------------------------------------------------------
// mainclock
// -----------------------------------------------------------------------------
diff --git a/src/mame/drivers/nl_breakout.c b/src/mame/drivers/nl_breakout.c
index be56fd611f4..bd4968a0134 100644
--- a/src/mame/drivers/nl_breakout.c
+++ b/src/mame/drivers/nl_breakout.c
@@ -67,8 +67,8 @@
// identify unknown devices in IDE
-#if 0
-#define NETLIST_DEVELOPMENT 1
+#if 1
+#define NETLIST_DEVELOPMENT 0
#include "netlist/nl_dice_compat.h"
#include "netlist/devices/net_lib.h"