summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2020-08-01 18:25:04 +0200
committer couriersud <couriersud@gmx.org>2020-08-01 18:27:17 +0200
commitc0ecd68341633b30b1d10e13673a5e109b23add0 (patch)
treee6623f2f2de94154f1ddf2a1d6b303f932d81637 /src
parentbcfc49f5b8872e04ece9dd17a0d9d7241bceee18 (diff)
netlist: Device refactoring
* Move DIPs for 82S16, 82S115, and 2102A devices into nlm_proms * Moved 7448 DIP to a macro. Replaced 7442 with truthtable and macro. * Moved 74LS629 DIP into macro. * Expand truthtable to handle 10 outputs.
Diffstat (limited to 'src')
-rw-r--r--src/lib/netlist/build/makefile1
-rw-r--r--src/lib/netlist/devices/net_lib.cpp7
-rw-r--r--src/lib/netlist/devices/nld_2102A.cpp33
-rw-r--r--src/lib/netlist/devices/nld_2102A.h23
-rw-r--r--src/lib/netlist/devices/nld_7442.cpp105
-rw-r--r--src/lib/netlist/devices/nld_7442.h63
-rw-r--r--src/lib/netlist/devices/nld_7448.cpp32
-rw-r--r--src/lib/netlist/devices/nld_7448.h16
-rw-r--r--src/lib/netlist/devices/nld_74ls629.cpp43
-rw-r--r--src/lib/netlist/devices/nld_74ls629.h3
-rw-r--r--src/lib/netlist/devices/nld_82S115.cpp43
-rw-r--r--src/lib/netlist/devices/nld_82S115.h22
-rw-r--r--src/lib/netlist/devices/nld_82S16.cpp34
-rw-r--r--src/lib/netlist/devices/nld_82S16.h2
-rw-r--r--src/lib/netlist/devices/nld_devinc.h70
-rw-r--r--src/lib/netlist/devices/nlid_truthtable.cpp3
-rw-r--r--src/lib/netlist/examples/sn74ls629_osc.c1
-rw-r--r--src/lib/netlist/macro/nlm_roms.cpp125
-rw-r--r--src/lib/netlist/macro/nlm_ttl74xx.cpp116
-rw-r--r--src/lib/netlist/macro/nlm_ttl74xx.h7
20 files changed, 275 insertions, 474 deletions
diff --git a/src/lib/netlist/build/makefile b/src/lib/netlist/build/makefile
index 968a2ed6489..9e10f19a60c 100644
--- a/src/lib/netlist/build/makefile
+++ b/src/lib/netlist/build/makefile
@@ -158,7 +158,6 @@ NLOBJS := \
$(NLOBJ)/devices/nld_4053.o \
$(NLOBJ)/devices/nld_4066.o \
$(NLOBJ)/devices/nld_4316.o \
- $(NLOBJ)/devices/nld_7442.o \
$(NLOBJ)/devices/nld_7448.o \
$(NLOBJ)/devices/nld_7450.o \
$(NLOBJ)/devices/nld_7473.o \
diff --git a/src/lib/netlist/devices/net_lib.cpp b/src/lib/netlist/devices/net_lib.cpp
index 3d91fe6030c..0e585a92972 100644
--- a/src/lib/netlist/devices/net_lib.cpp
+++ b/src/lib/netlist/devices/net_lib.cpp
@@ -69,14 +69,10 @@ namespace devices
LIB_ENTRY(nicRSFF)
LIB_ENTRY(nicDelay)
LIB_ENTRY(2102A)
- LIB_ENTRY(2102A_dip)
LIB_ENTRY(2716)
#if !(NL_USE_TRUTHTABLE_7448)
LIB_ENTRY(7448)
- LIB_ENTRY(7448_dip)
#endif
- LIB_ENTRY(7442)
- LIB_ENTRY(7442_dip)
LIB_ENTRY(7450)
LIB_ENTRY(7450_dip)
LIB_ENTRY(7473)
@@ -177,8 +173,6 @@ namespace devices
LIB_ENTRY(74193_dip)
LIB_ENTRY(74194_dip)
LIB_ENTRY(74365_dip)
- LIB_ENTRY(82S16_dip)
- LIB_ENTRY(82S115_dip)
LIB_ENTRY(9602)
LIB_ENTRY(9310_dip)
LIB_ENTRY(9314_dip)
@@ -186,7 +180,6 @@ namespace devices
LIB_ENTRY(9322_dip)
LIB_ENTRY(9334_dip)
LIB_ENTRY(AM2847_dip)
- LIB_ENTRY(SN74LS629_dip)
LIB_ENTRY(MM5837_dip)
}
diff --git a/src/lib/netlist/devices/nld_2102A.cpp b/src/lib/netlist/devices/nld_2102A.cpp
index d60b661ad21..134e2aae945 100644
--- a/src/lib/netlist/devices/nld_2102A.cpp
+++ b/src/lib/netlist/devices/nld_2102A.cpp
@@ -60,7 +60,6 @@ namespace netlist
}
}
- friend class NETLIB_NAME(2102A_dip);
private:
object_array_t<logic_input_t, 10> m_A;
logic_input_t m_CEQ;
@@ -74,39 +73,7 @@ namespace netlist
nld_power_pins m_power_pins;
};
- NETLIB_OBJECT(2102A_dip)
- {
- NETLIB_CONSTRUCTOR(2102A_dip)
- , A(*this, "A")
- {
- register_subalias("8", A.m_A[0]);
- register_subalias("4", A.m_A[1]);
- register_subalias("5", A.m_A[2]);
- register_subalias("6", A.m_A[3]);
- register_subalias("7", A.m_A[4]);
- register_subalias("2", A.m_A[5]);
- register_subalias("1", A.m_A[6]);
- register_subalias("16", A.m_A[7]);
- register_subalias("15", A.m_A[8]);
- register_subalias("14", A.m_A[9]);
-
- register_subalias("13", A.m_CEQ);
- register_subalias("3", A.m_RWQ);
-
- register_subalias("11", A.m_DI);
- register_subalias("12", A.m_DO);
-
- register_subalias("10", "A.VCC");
- register_subalias("9", "A.GND");
-
- }
- //NETLIB_RESETI() {}
- private:
- NETLIB_SUB(2102A) A;
- };
-
NETLIB_DEVICE_IMPL(2102A, "RAM_2102A", "+CEQ,+A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+RWQ,+DI,@VCC,@GND")
- NETLIB_DEVICE_IMPL(2102A_dip,"RAM_2102A_DIP","")
} //namespace devices
} // namespace netlist
diff --git a/src/lib/netlist/devices/nld_2102A.h b/src/lib/netlist/devices/nld_2102A.h
index 9d2279445f1..b617a209fdc 100644
--- a/src/lib/netlist/devices/nld_2102A.h
+++ b/src/lib/netlist/devices/nld_2102A.h
@@ -26,25 +26,8 @@
#include "netlist/nl_setup.h"
-#define RAM_2102A(name, cCEQ, cA0, cA1, cA2, cA3, cA4, cA5, cA6, cA7, cA8, cA9, cRWQ, cDI) \
- NET_REGISTER_DEV(RAM_2102A, name) \
- NET_CONNECT(name, GND, GND) \
- NET_CONNECT(name, VCC, VCC) \
- NET_CONNECT(name, CEQ, cCEQ) \
- NET_CONNECT(name, A0, cA0) \
- NET_CONNECT(name, A1, cA1) \
- NET_CONNECT(name, A2, cA2) \
- NET_CONNECT(name, A3, cA3) \
- NET_CONNECT(name, A4, cA4) \
- NET_CONNECT(name, A5, cA5) \
- NET_CONNECT(name, A6, cA6) \
- NET_CONNECT(name, A7, cA7) \
- NET_CONNECT(name, A8, cA8) \
- NET_CONNECT(name, A9, cA9) \
- NET_CONNECT(name, RWQ, cRWQ) \
- NET_CONNECT(name, DI, cDI)
-
-#define RAM_2102A_DIP(name) \
- NET_REGISTER_DEV(RAM_2102A_DIP, name)
+// expects: RAM_2102A(name, cCEQ, cA0, cA1, cA2, cA3, cA4, cA5, cA6, cA7, cA8, cA9, cRWQ, cDI)
+#define RAM_2102A(...) \
+ NET_REGISTER_DEVEXT(RAM_2102A, __VA_ARGS__)
#endif /* NLD_2102A_H_ */
diff --git a/src/lib/netlist/devices/nld_7442.cpp b/src/lib/netlist/devices/nld_7442.cpp
deleted file mode 100644
index e25b56e60d3..00000000000
--- a/src/lib/netlist/devices/nld_7442.cpp
+++ /dev/null
@@ -1,105 +0,0 @@
-// license:GPL-2.0+
-// copyright-holders:Ryan Holtz
-/*
- * nld_7442.cpp
- *
- */
-
-#include "nld_7442.h"
-#include "netlist/nl_base.h"
-
-namespace netlist
-{
-namespace devices
-{
- static constexpr const netlist_time delay = NLTIME_FROM_NS(30); // Worst-case through 3 levels of logic
-
- // FIXME: stateless device, convert to TRUTHTABLE
- NETLIB_OBJECT(7442)
- {
- NETLIB_CONSTRUCTOR(7442)
- , m_A(*this, "A", NETLIB_DELEGATE(inputs))
- , m_B(*this, "B", NETLIB_DELEGATE(inputs))
- , m_C(*this, "C", NETLIB_DELEGATE(inputs))
- , m_D(*this, "D", NETLIB_DELEGATE(inputs))
- , m_val(*this, "m_val", 0)
- , m_last_val(*this, "m_last_val", 0)
- , m_Q(*this, {"Q0", "Q1", "Q2", "Q3", "Q4", "Q5", "Q6", "Q7", "Q8", "Q9"})
- , m_power_pins(*this)
- {
- }
-
- private:
- NETLIB_RESETI()
- {
- m_val = 0;
- m_last_val = 0;
- }
-
- NETLIB_HANDLERI(inputs)
- {
- const netlist_sig_t new_A = m_A();
- const netlist_sig_t new_B = m_B();
- const netlist_sig_t new_C = m_C();
- const netlist_sig_t new_D = m_D();
-
- m_last_val = m_val;
- m_val = static_cast<uint8_t>((new_D << 3) | (new_C << 2) | (new_B << 1) | new_A);
-
- if (m_last_val != m_val)
- {
- update_outputs();
- }
- }
-
- void update_outputs() noexcept
- {
- for (std::size_t i=0; i<10; i++)
- m_Q[i].push(i == m_val ? 0 : 1, delay);
- }
-
- logic_input_t m_A;
- logic_input_t m_B;
- logic_input_t m_C;
- logic_input_t m_D;
-
- state_var_u8 m_val;
- state_var_u8 m_last_val;
-
- object_array_t<logic_output_t, 10> m_Q;
- nld_power_pins m_power_pins;
- };
-
- NETLIB_OBJECT(7442_dip)
- {
- NETLIB_CONSTRUCTOR(7442_dip)
- , A(*this, "A")
- {
- register_subalias("1", "A.Q0");
- register_subalias("2", "A.Q1");
- register_subalias("3", "A.Q2");
- register_subalias("4", "A.Q3");
- register_subalias("5", "A.Q4");
- register_subalias("6", "A.Q5");
- register_subalias("7", "A.Q6");
- register_subalias("8", "A.GND");
-
- register_subalias("9", "A.Q7");
- register_subalias("10", "A.Q8");
- register_subalias("11", "A.Q9");
- register_subalias("12", "A.D");
- register_subalias("13", "A.C");
- register_subalias("14", "A.B");
- register_subalias("15", "A.A");
- register_subalias("16", "A.VCC");
- }
- //NETLIB_RESETI() {}
- private:
- NETLIB_SUB(7442) A;
- };
-
- NETLIB_DEVICE_IMPL(7442, "TTL_7442", "+A,+B,+C,+D,@VCC,@GND")
- NETLIB_DEVICE_IMPL(7442_dip, "TTL_7442_DIP", "")
-
-} // namespace devices
-} // namespace netlist
diff --git a/src/lib/netlist/devices/nld_7442.h b/src/lib/netlist/devices/nld_7442.h
deleted file mode 100644
index faf3aa1e93b..00000000000
--- a/src/lib/netlist/devices/nld_7442.h
+++ /dev/null
@@ -1,63 +0,0 @@
-// license:GPL-2.0+
-// copyright-holders:Ryan Holtz
-/*
- * nld_7442.h
- *
- * SN7442: 4-Line BCD to 10-Line Decimal Decoder
- *
- * +--------------+
- * 0 |1 ++ 16| VCC
- * 1 |2 15| A
- * 2 |3 14| B
- * 3 |4 13| C
- * 4 |5 7442 12| D
- * 5 |6 11| 9
- * 6 |7 10| 8
- * GND |8 9| 7
- * +--------------+
- *
- * Truth Table
- *
- * +------++---+---+---+---++---+---+---+---+---+---+---+---+---+---+
- * | Num. || D | C | B | A || 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
- * +======++===+===+===+===++===+===+===+===+===+===+===+===+===+===+
- * | 0 || 0 | 0 | 0 | 0 || 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
- * | 1 || 0 | 0 | 0 | 1 || 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
- * | 2 || 0 | 0 | 1 | 0 || 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
- * | 3 || 0 | 0 | 1 | 1 || 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
- * | 4 || 0 | 1 | 0 | 0 || 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
- * | 5 || 0 | 1 | 0 | 1 || 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 |
- * | 6 || 0 | 1 | 1 | 0 || 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 |
- * | 7 || 0 | 1 | 1 | 1 || 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
- * | 8 || 1 | 0 | 0 | 0 || 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 |
- * | 9 || 1 | 0 | 0 | 1 || 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
- * | - || 1 | 0 | 1 | 0 || 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
- * | - || 1 | 0 | 1 | 1 || 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
- * | - || 1 | 1 | 0 | 0 || 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
- * | - || 1 | 1 | 0 | 1 || 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
- * | - || 1 | 1 | 1 | 0 || 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
- * | - || 1 | 1 | 1 | 1 || 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
- * +------++---+---+---+---++---+---+---+---+---+---+---+---+---+---+
- *
- * Naming conventions follow Texas Instruments datasheet
- *
- */
-
-#ifndef NLD_7442_H_
-#define NLD_7442_H_
-
-#include "netlist/nl_setup.h"
-
-#define TTL_7442(name, cA, cB, cC, cD) \
- NET_REGISTER_DEV(TTL_7442, name) \
- NET_CONNECT(name, GND, GND) \
- NET_CONNECT(name, VCC, VCC) \
- NET_CONNECT(name, A, cA) \
- NET_CONNECT(name, B, cB) \
- NET_CONNECT(name, C, cC) \
- NET_CONNECT(name, D, cD)
-
-#define TTL_7442_DIP(name) \
- NET_REGISTER_DEV(TTL_7442_DIP, name)
-
-#endif /* NLD_7442_H_ */
diff --git a/src/lib/netlist/devices/nld_7448.cpp b/src/lib/netlist/devices/nld_7448.cpp
index 13a9b171258..c2f4c386108 100644
--- a/src/lib/netlist/devices/nld_7448.cpp
+++ b/src/lib/netlist/devices/nld_7448.cpp
@@ -36,7 +36,6 @@ namespace netlist
m_state = 0;
}
- friend class NETLIB_NAME(7448_dip);
private:
void update_outputs(unsigned v) noexcept
{
@@ -98,36 +97,6 @@ namespace netlist
static const std::array<uint8_t, 16> tab7448;
};
- NETLIB_OBJECT(7448_dip)
- {
- NETLIB_CONSTRUCTOR(7448_dip)
- , A(*this, "A")
- {
- register_subalias("1", A.m_B);
- register_subalias("2", A.m_C);
- register_subalias("3", A.m_LTQ);
- register_subalias("4", A.m_BIQ);
- register_subalias("5", A.m_RBIQ);
- register_subalias("6", A.m_D);
- register_subalias("7", A.m_A);
- register_subalias("8", "A.GND");
-
- register_subalias("9", A.m_Q[4]); // e
- register_subalias("10", A.m_Q[3]); // d
- register_subalias("11", A.m_Q[2]); // c
- register_subalias("12", A.m_Q[1]); // b
- register_subalias("13", A.m_Q[0]); // a
- register_subalias("14", A.m_Q[6]); // g
- register_subalias("15", A.m_Q[5]); // f
- register_subalias("16", "A.VCC");
- }
- private:
- NETLIB_SUB(7448) A;
- };
- #endif
-
- #if !(NL_USE_TRUTHTABLE_7448)
-
#define BITS7(b6,b5,b4,b3,b2,b1,b0) ((b6)<<6) | ((b5)<<5) | ((b4)<<4) | ((b3)<<3) | ((b2)<<2) | ((b1)<<1) | ((b0)<<0)
const std::array<uint8_t, 16> NETLIB_NAME(7448)::tab7448 =
@@ -151,7 +120,6 @@ namespace netlist
};
NETLIB_DEVICE_IMPL(7448, "TTL_7448", "+A,+B,+C,+D,+LTQ,+BIQ,+RBIQ,@VCC,@GND")
- NETLIB_DEVICE_IMPL(7448_dip, "TTL_7448_DIP", "")
#endif
diff --git a/src/lib/netlist/devices/nld_7448.h b/src/lib/netlist/devices/nld_7448.h
index a4caeafed8b..e8899acdd96 100644
--- a/src/lib/netlist/devices/nld_7448.h
+++ b/src/lib/netlist/devices/nld_7448.h
@@ -28,20 +28,8 @@
#if !NL_AUTO_DEVICES
#if !(NL_USE_TRUTHTABLE_7448)
-#define TTL_7448(name, cA0, cA1, cA2, cA3, cLTQ, cBIQ, cRBIQ) \
- NET_REGISTER_DEV(TTL_7448, name) \
- NET_CONNECT(name, VCC, VCC) \
- NET_CONNECT(name, GND, GND) \
- NET_CONNECT(name, A, cA0) \
- NET_CONNECT(name, B, cA1) \
- NET_CONNECT(name, C, cA2) \
- NET_CONNECT(name, D, cA3) \
- NET_CONNECT(name, LTQ, cLTQ) \
- NET_CONNECT(name, BIQ, cBIQ) \
- NET_CONNECT(name, RBIQ, cRBIQ)
-
-#define TTL_7448_DIP(name) \
- NET_REGISTER_DEV(TTL_7448_DIP, name)
+#define TTL_7448(name) \
+ NET_REGISTER_DEV(TTL_7448, name) \
#endif
#endif
diff --git a/src/lib/netlist/devices/nld_74ls629.cpp b/src/lib/netlist/devices/nld_74ls629.cpp
index cc924450eca..4520cffb95e 100644
--- a/src/lib/netlist/devices/nld_74ls629.cpp
+++ b/src/lib/netlist/devices/nld_74ls629.cpp
@@ -54,6 +54,7 @@ namespace netlist
, m_enableq(*this, "m_enableq", 1)
, m_out(*this, "m_out", 0)
, m_inc(*this, "m_inc", netlist_time::zero())
+ , m_power_pins(*this)
{
connect(m_FB, m_Y);
}
@@ -72,6 +73,8 @@ namespace netlist
state_var<netlist_sig_t> m_enableq;
state_var<netlist_sig_t> m_out;
state_var<netlist_time> m_inc;
+ nld_power_pins m_power_pins;
+
private:
NETLIB_HANDLERI(fb)
{
@@ -98,8 +101,9 @@ namespace netlist
, m_RNG(*this, "RNG", NETLIB_DELEGATE(inputs))
, m_FC(*this, "FC", NETLIB_DELEGATE(inputs))
, m_CAP(*this, "CAP", nlconst::magic(1e-6))
+ , m_power_pins(*this)
{
- register_subalias("GND", m_R_FC.N());
+ connect(m_power_pins.GND(), m_R_FC.N());
connect(m_FC, m_R_FC.P());
connect(m_RNG, m_R_RNG.P());
@@ -130,6 +134,7 @@ namespace netlist
analog_input_t m_FC;
param_fp_t m_CAP;
+ nld_power_pins m_power_pins;
private:
NETLIB_HANDLERI(inputs)
@@ -194,43 +199,7 @@ namespace netlist
};
- NETLIB_OBJECT(SN74LS629_dip)
- {
- NETLIB_CONSTRUCTOR(SN74LS629_dip)
- , m_A(*this, "A")
- , m_B(*this, "B")
- {
- register_subalias("1", m_B.m_FC);
- register_subalias("2", m_A.m_FC);
- register_subalias("3", m_A.m_RNG);
-
- register_subalias("6", m_A.m_ENQ);
- register_subalias("7", m_A.m_clock.m_Y);
-
- register_subalias("8", m_A.m_R_FC.N());
- register_subalias("9", m_A.m_R_FC.N());
- connect(m_A.m_R_FC.N(), m_B.m_R_FC.N());
-
- register_subalias("10", m_B.m_clock.m_Y);
-
- register_subalias("11", m_B.m_ENQ);
- register_subalias("14", m_B.m_RNG);
- }
-
-
- NETLIB_RESETI()
- {
- m_A.reset();
- m_B.reset();
- }
-
- private:
- NETLIB_SUB(SN74LS629) m_A;
- NETLIB_SUB(SN74LS629) m_B;
- };
-
NETLIB_DEVICE_IMPL(SN74LS629, "SN74LS629", "CAP")
- NETLIB_DEVICE_IMPL(SN74LS629_dip, "SN74LS629_DIP", "1.CAP1,2.CAP2")
} //namespace devices
} // namespace netlist
diff --git a/src/lib/netlist/devices/nld_74ls629.h b/src/lib/netlist/devices/nld_74ls629.h
index 7a695e16a17..4b8f3be0b6c 100644
--- a/src/lib/netlist/devices/nld_74ls629.h
+++ b/src/lib/netlist/devices/nld_74ls629.h
@@ -33,7 +33,4 @@
#define SN74LS629(name, p_cap) \
NET_REGISTER_DEVEXT(SN74LS629, name, p_cap)
-#define SN74LS629_DIP(name, p_cap1, p_cap2) \
- NET_REGISTER_DEVEXT(SN74LS629_DIP, name, p_cap1, p_cap2)
-
#endif /* NLD_74LS629_H_ */
diff --git a/src/lib/netlist/devices/nld_82S115.cpp b/src/lib/netlist/devices/nld_82S115.cpp
index 1b1235817f0..377199e2190 100644
--- a/src/lib/netlist/devices/nld_82S115.cpp
+++ b/src/lib/netlist/devices/nld_82S115.cpp
@@ -31,7 +31,6 @@ namespace netlist
m_last_O = 0;
}
- friend class NETLIB_NAME(82S115_dip);
private:
// FIXME: timing!
NETLIB_HANDLERI(inputs)
@@ -73,49 +72,7 @@ namespace netlist
nld_power_pins m_power_pins;
};
- NETLIB_OBJECT(82S115_dip)
- {
- NETLIB_CONSTRUCTOR(82S115_dip)
- , A(*this, "A")
- {
- register_subalias("21", A.m_A[0]);
- register_subalias("22", A.m_A[1]);
- register_subalias("23", A.m_A[2]);
- register_subalias("1", A.m_A[3]);
- register_subalias("2", A.m_A[4]);
- register_subalias("3", A.m_A[5]);
- register_subalias("4", A.m_A[6]);
- register_subalias("5", A.m_A[7]);
- register_subalias("6", A.m_A[8]);
-
- register_subalias("20", A.m_CE1Q);
- register_subalias("19", A.m_CE2);
-
- // FIXME: implement FE1, FE2
- // register_subalias("13", m_FE1);
- // register_subalias("11", m_FE2);
-
- register_subalias("18", A.m_STROBE);
-
- register_subalias("7", A.m_O[0]);
- register_subalias("8", A.m_O[1]);
- register_subalias("9", A.m_O[2]);
- register_subalias("10", A.m_O[3]);
- register_subalias("14", A.m_O[4]);
- register_subalias("15", A.m_O[5]);
- register_subalias("16", A.m_O[6]);
- register_subalias("17", A.m_O[7]);
-
- register_subalias("12", "A.GND");
- register_subalias("24", "A.VCC");
- }
- //NETLIB_RESETI() {}
- private:
- NETLIB_SUB(82S115) A;
- };
-
NETLIB_DEVICE_IMPL(82S115, "PROM_82S115", "+CE1Q,+CE2,+A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+STROBE,@VCC,@GND")
- NETLIB_DEVICE_IMPL(82S115_dip, "PROM_82S115_DIP", "")
} //namespace devices
} // namespace netlist
diff --git a/src/lib/netlist/devices/nld_82S115.h b/src/lib/netlist/devices/nld_82S115.h
index da4c1209e81..1bb3cfb5289 100644
--- a/src/lib/netlist/devices/nld_82S115.h
+++ b/src/lib/netlist/devices/nld_82S115.h
@@ -30,24 +30,8 @@
#include "netlist/nl_setup.h"
-#define PROM_82S115(name, cCE1Q, cCE2, cA0, cA1, cA2, cA3, cA4, cA5, cA6, cA7, cA8, cSTROBE) \
- NET_REGISTER_DEV(PROM_82S115, name) \
- NET_CONNECT(name, GND, GND) \
- NET_CONNECT(name, VCC, VCC) \
- NET_CONNECT(name, CE1Q, cCE1Q) \
- NET_CONNECT(name, CE2, cCE2) \
- NET_CONNECT(name, A0, cA0) \
- NET_CONNECT(name, A1, cA1) \
- NET_CONNECT(name, A2, cA2) \
- NET_CONNECT(name, A3, cA3) \
- NET_CONNECT(name, A4, cA4) \
- NET_CONNECT(name, A5, cA5) \
- NET_CONNECT(name, A6, cA6) \
- NET_CONNECT(name, A7, cA7) \
- NET_CONNECT(name, A8, cA8) \
- NET_CONNECT(name, STROBE, cSTROBE)
-
-#define PROM_82S115_DIP(name) \
- NET_REGISTER_DEV(PROM_82S115_DIP, name)
+// expects: PROM_82S115(name, cCE1Q, cCE2, cA0, cA1, cA2, cA3, cA4, cA5, cA6, cA7, cA8, cSTROBE)
+#define PROM_82S115(...) \
+ NET_REGISTER_DEVEXT(PROM_82S115, __VA_ARGS__)
#endif /* NLD_82S115_H_ */
diff --git a/src/lib/netlist/devices/nld_82S16.cpp b/src/lib/netlist/devices/nld_82S16.cpp
index 370f2c0104d..acfa05ef247 100644
--- a/src/lib/netlist/devices/nld_82S16.cpp
+++ b/src/lib/netlist/devices/nld_82S16.cpp
@@ -38,7 +38,7 @@ namespace netlist
m_addr = 0;
m_enq = 0;
}
- friend class NETLIB_NAME(82S16_dip);
+
private:
// FIXME: timing!
// FIXME: optimize device (separate address decoder!)
@@ -105,39 +105,7 @@ namespace netlist
nld_power_pins m_power_pins;
};
- NETLIB_OBJECT(82S16_dip)
- {
- NETLIB_CONSTRUCTOR(82S16_dip)
- , A(*this, "A")
- {
- register_subalias("2", A.m_A[0]);
- register_subalias("1", A.m_A[1]);
- register_subalias("15", A.m_A[2]);
- register_subalias("14", A.m_A[3]);
- register_subalias("7", A.m_A[4]);
- register_subalias("9", A.m_A[5]);
- register_subalias("10", A.m_A[6]);
- register_subalias("11", A.m_A[7]);
-
- register_subalias("3", A.m_CE1Q);
- register_subalias("4", A.m_CE2Q);
- register_subalias("5", A.m_CE3Q);
-
- register_subalias("12", A.m_WEQ);
- register_subalias("13", A.m_DIN);
-
- register_subalias("6", A.m_DOUTQ);
-
- register_subalias("8", "A.GND");
- register_subalias("16", "A.VCC");
- }
- //NETLIB_RESETI() {}
- private:
- NETLIB_SUB(82S16) A;
- };
-
NETLIB_DEVICE_IMPL(82S16, "TTL_82S16", "")
- NETLIB_DEVICE_IMPL(82S16_dip, "TTL_82S16_DIP", "")
} //namespace devices
} // namespace netlist
diff --git a/src/lib/netlist/devices/nld_82S16.h b/src/lib/netlist/devices/nld_82S16.h
index 47d6189a79b..635a81b245f 100644
--- a/src/lib/netlist/devices/nld_82S16.h
+++ b/src/lib/netlist/devices/nld_82S16.h
@@ -28,7 +28,5 @@
#define TTL_82S16(name) \
NET_REGISTER_DEV(TTL_82S16, name)
-#define TTL_82S16_DIP(name) \
- NET_REGISTER_DEV(TTL_82S16_DIP, name)
#endif /* NLD_82S16_H_ */
diff --git a/src/lib/netlist/devices/nld_devinc.h b/src/lib/netlist/devices/nld_devinc.h
index 7ff94019366..260c794763d 100644
--- a/src/lib/netlist/devices/nld_devinc.h
+++ b/src/lib/netlist/devices/nld_devinc.h
@@ -228,10 +228,6 @@
#define RAM_2102A(...) \
NET_REGISTER_DEVEXT(RAM_2102A, __VA_ARGS__)
-// usage : RAM_2102A_DIP(name)
-#define RAM_2102A_DIP(...) \
- NET_REGISTER_DEVEXT(RAM_2102A_DIP, __VA_ARGS__)
-
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_roms.cpp
// ---------------------------------------------------------------------
@@ -248,22 +244,6 @@
#define TTL_7448(...) \
NET_REGISTER_DEVEXT(TTL_7448, __VA_ARGS__)
-// usage : TTL_7448_DIP(name)
-#define TTL_7448_DIP(...) \
- NET_REGISTER_DEVEXT(TTL_7448_DIP, __VA_ARGS__)
-
-// ---------------------------------------------------------------------
-// Source: src/lib/netlist/devices/nld_7442.cpp
-// ---------------------------------------------------------------------
-// usage : TTL_7442(name, pA, pB, pC, pD)
-// auto connect: VCC, GND
-#define TTL_7442(...) \
- NET_REGISTER_DEVEXT(TTL_7442, __VA_ARGS__)
-
-// usage : TTL_7442_DIP(name)
-#define TTL_7442_DIP(...) \
- NET_REGISTER_DEVEXT(TTL_7442_DIP, __VA_ARGS__)
-
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_7450.cpp
// ---------------------------------------------------------------------
@@ -846,20 +826,6 @@
NET_REGISTER_DEVEXT(TTL_74365_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
-// Source: src/lib/netlist/devices/nld_82S16.cpp
-// ---------------------------------------------------------------------
-// usage : TTL_82S16_DIP(name)
-#define TTL_82S16_DIP(...) \
- NET_REGISTER_DEVEXT(TTL_82S16_DIP, __VA_ARGS__)
-
-// ---------------------------------------------------------------------
-// Source: src/lib/netlist/devices/nld_82S115.cpp
-// ---------------------------------------------------------------------
-// usage : PROM_82S115_DIP(name)
-#define PROM_82S115_DIP(...) \
- NET_REGISTER_DEVEXT(PROM_82S115_DIP, __VA_ARGS__)
-
-// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_74123.cpp
// ---------------------------------------------------------------------
// usage : TTL_9602(name)
@@ -909,13 +875,6 @@
NET_REGISTER_DEVEXT(TTL_AM2847_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
-// Source: src/lib/netlist/devices/nld_74ls629.cpp
-// ---------------------------------------------------------------------
-// usage : SN74LS629_DIP(name, p1_CAP1, p2_CAP2)
-#define SN74LS629_DIP(...) \
- NET_REGISTER_DEVEXT(SN74LS629_DIP, __VA_ARGS__)
-
-// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_mm5837.cpp
// ---------------------------------------------------------------------
// usage : MM5837_DIP(name)
@@ -1053,6 +1012,10 @@
#define TTL_7437_NAND(...) \
NET_REGISTER_DEVEXT(TTL_7437_NAND, __VA_ARGS__)
+// usage : TTL_7448_DIP(name)
+#define TTL_7448_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7448_DIP, __VA_ARGS__)
+
// usage : TTL_7486_GATE(name)
#define TTL_7486_GATE(...) \
NET_REGISTER_DEVEXT(TTL_7486_GATE, __VA_ARGS__)
@@ -1187,6 +1150,14 @@
#define TTL_7437_DIP(...) \
NET_REGISTER_DEVEXT(TTL_7437_DIP, __VA_ARGS__)
+// usage : TTL_7442(name, cA, cB, cC, cD)
+#define TTL_7442(...) \
+ NET_REGISTER_DEVEXT(TTL_7442, __VA_ARGS__)
+
+// usage : TTL_7442_DIP(name)
+#define TTL_7442_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7442_DIP, __VA_ARGS__)
+
// usage : TTL_7486_DIP(name)
#define TTL_7486_DIP(...) \
NET_REGISTER_DEVEXT(TTL_7486_DIP, __VA_ARGS__)
@@ -1243,6 +1214,10 @@
#define TTL_74379_DIP(...) \
NET_REGISTER_DEVEXT(TTL_74379_DIP, __VA_ARGS__)
+// usage : SN74LS629_DIP(name, p1_CAP1, p2_CAP2)
+#define SN74LS629_DIP(...) \
+ NET_REGISTER_DEVEXT(SN74LS629_DIP, __VA_ARGS__)
+
// usage : DM9312_DIP(name)
#define DM9312_DIP(...) \
NET_REGISTER_DEVEXT(DM9312_DIP, __VA_ARGS__)
@@ -1429,5 +1404,18 @@
#define EPROM_2716_DIP(...) \
NET_REGISTER_DEVEXT(EPROM_2716_DIP, __VA_ARGS__)
+// usage : TTL_82S16_DIP(name)
+#define TTL_82S16_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_82S16_DIP, __VA_ARGS__)
+
+// usage : PROM_82S115_DIP(name)
+#define PROM_82S115_DIP(...) \
+ NET_REGISTER_DEVEXT(PROM_82S115_DIP, __VA_ARGS__)
+
+// usage : RAM_2102A_DIP(name)
+#define RAM_2102A_DIP(...) \
+ NET_REGISTER_DEVEXT(RAM_2102A_DIP, __VA_ARGS__)
+
+
#endif // __PLIB_PREPROCESSOR__
#endif
diff --git a/src/lib/netlist/devices/nlid_truthtable.cpp b/src/lib/netlist/devices/nlid_truthtable.cpp
index 947b2651acb..c42e5b2ddb3 100644
--- a/src/lib/netlist/devices/nlid_truthtable.cpp
+++ b/src/lib/netlist/devices/nlid_truthtable.cpp
@@ -677,7 +677,8 @@ namespace factory
#define ENTRY(n, s) ENTRYY(n, 1, s); ENTRYY(n, 2, s); ENTRYY(n, 3, s); \
ENTRYY(n, 4, s); ENTRYY(n, 5, s); ENTRYY(n, 6, s); \
- ENTRYY(n, 7, s); ENTRYY(n, 8, s)
+ ENTRYY(n, 7, s); ENTRYY(n, 8, s); ENTRYY(n, 9, s); \
+ ENTRYY(n, 10, s);
host_arena::unique_ptr<truthtable_base_element_t> truthtable_create(tt_desc &desc, properties &&props)
{
diff --git a/src/lib/netlist/examples/sn74ls629_osc.c b/src/lib/netlist/examples/sn74ls629_osc.c
index c51007a1bd3..748f549651f 100644
--- a/src/lib/netlist/examples/sn74ls629_osc.c
+++ b/src/lib/netlist/examples/sn74ls629_osc.c
@@ -25,6 +25,7 @@ NETLIST_START(ls629)
SN74LS629(OSC, 0.022e-6)
NET_C(GND, OSC.GND)
+ NET_C(V5, OSC.VCC)
NET_C(VR, OSC.RNG)
NET_C(VF, OSC.FC)
NET_C(GND, OSC.ENQ)
diff --git a/src/lib/netlist/macro/nlm_roms.cpp b/src/lib/netlist/macro/nlm_roms.cpp
index e5d6cdc7d06..30bd4b98e06 100644
--- a/src/lib/netlist/macro/nlm_roms.cpp
+++ b/src/lib/netlist/macro/nlm_roms.cpp
@@ -185,6 +185,27 @@ static NETLIST_START(PROM_82S123_DIP)
ALIAS(16, A.VCC)
NETLIST_END()
+/*
+ * 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
+ */
+
+
//- Identifier: EPROM_2716_DIP
//- Title: 2716 16K (2K x 8) UV ERASABLE PROM
//- Description: The Intel®2716 is a 16,384-bit ultraviolet erasable and
@@ -263,6 +284,107 @@ static NETLIST_START(EPROM_2716_DIP)
ALIAS(24, A.VCC)
NETLIST_END()
+/* 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
+ */
+
+static NETLIST_START(TTL_82S16_DIP)
+ TTL_82S16(A)
+
+ DIPPINS( /* +--------------+ */
+ A.A1, /* A1 |1 ++ 16| VCC */ A.VCC,
+ A.A0, /* A0 |2 15| A2 */ A.A2,
+ A.CE1Q, /* CE1Q |3 14| A3 */ A.A3,
+ A.CE2Q, /* CE2Q |4 82S16 13| DIN */ A.DIN,
+ A.CE3Q, /* CE3Q |5 12| WEQ */ A.WEQ,
+ A.DOUTQ, /* DOUTQ |6 11| A7 */ A.A7,
+ A.A4, /* A4 |7 10| A6 */ A.A6,
+ A.GND, /* GND |8 9| A5 */ A.A5
+ /* +--------------+ */
+ )
+NETLIST_END()
+
+/* 82S115: 4K-bit TTL bipolar PROM (512 x 8)
+ *
+ * +--------------+
+ * A3 |1 ++ 24| VCC
+ * A4 |2 23| A2
+ * A5 |3 22| A1
+ * A6 |4 82S115 21| A0
+ * A7 |5 20| CE1Q
+ * A8 |6 19| CE2
+ * O1 |7 18| STROBE
+ * O2 |8 17| O8
+ * O3 |9 16| O7
+ * O4 |10 15| O6
+ * FE2 |11 14| O5
+ * GND |12 13| FE1
+ * +--------------+
+ */
+
+static NETLIST_START(PROM_82S115_DIP)
+ PROM_82S115(A)
+ NC_PIN(NC)
+
+ DIPPINS( /* +--------------+ */
+ A.A3, /* A3 |1 ++ 24| VCC */ A.VCC,
+ A.A4, /* A4 |2 23| A2 */ A.A2,
+ A.A5, /* A5 |3 22| A1 */ A.A1,
+ A.A6, /* A6 |4 82S115 21| A0 */ A.A0,
+ A.A7, /* A7 |5 20| CE1Q */ A.CE1Q,
+ A.A8, /* A8 |6 19| CE2 */ A.CE2,
+ A.O1, /* O1 |7 18| STROBE */ A.STROBE,
+ A.O2, /* O2 |8 17| O8 */ A.O8,
+ A.O3, /* O3 |9 16| O7 */ A.O7,
+ A.O4, /* O4 |10 15| O6 */ A.O6,
+ NC.I, /* FE2 |11 14| O5 */ A.O5,
+ A.GND, /* GND |12 13| FE1 */ NC.I
+ /* +--------------+ */
+ )
+NETLIST_END()
+
+/* 2102: 1024 x 1-bit Static RAM
+ *
+ * +--------------+
+ * A6 |1 ++ 16| A7
+ * A5 |2 15| A8
+ * RWQ |3 14| A9
+ * A1 |4 82S16 13| CEQ
+ * A2 |5 12| DO
+ * A3 |6 11| DI
+ * A4 |7 10| VCC
+ * A0 |8 9| GND
+ * +--------------+
+ */
+
+ static NETLIST_START(RAM_2102A_DIP)
+ RAM_2102A(A)
+
+ DIPPINS( /* +--------------+ */
+ A.A6, /* A6 |1 ++ 16| A7 */ A.A7,
+ A.A5, /* A5 |2 15| A8 */ A.A8,
+ A.RWQ, /* RWQ |3 14| A9 */ A.A9,
+ A.A1, /* A1 |4 82S16 13| CEQ */ A.CEQ,
+ A.A2, /* A2 |5 12| DO */ A.DO,
+ A.A3, /* A3 |6 11| DI */ A.DI,
+ A.A4, /* A4 |7 10| VCC */ A.VCC,
+ A.A0, /* A0 |8 9| GND */ A.GND
+ /* +--------------+ */
+ )
+NETLIST_END()
+
NETLIST_START(ROMS_lib)
@@ -270,6 +392,9 @@ NETLIST_START(ROMS_lib)
LOCAL_LIB_ENTRY(PROM_82S126_DIP)
LOCAL_LIB_ENTRY(PROM_74S287_DIP)
LOCAL_LIB_ENTRY(EPROM_2716_DIP)
+ LOCAL_LIB_ENTRY(TTL_82S16_DIP)
+ LOCAL_LIB_ENTRY(PROM_82S115_DIP)
+ LOCAL_LIB_ENTRY(RAM_2102A_DIP)
NETLIST_END()
diff --git a/src/lib/netlist/macro/nlm_ttl74xx.cpp b/src/lib/netlist/macro/nlm_ttl74xx.cpp
index a4b2766cd07..7df9f367100 100644
--- a/src/lib/netlist/macro/nlm_ttl74xx.cpp
+++ b/src/lib/netlist/macro/nlm_ttl74xx.cpp
@@ -1312,6 +1312,42 @@ static NETLIST_START(TTL_74379_DIP)
NETLIST_END()
/*
+ * SN74LS629: VOLTAGE-CONTROLLED OSCILLATORS
+ *
+ * +--------------+
+ * 2FC |1 ++ 16| VCC
+ * 1FC |2 15| QSC VCC
+ * 1RNG |3 14| 2RNG
+ * 1CX1 |4 74LS629 13| 2CX1
+ * 1CX2 |5 12| 2CX2
+ * 1ENQ |6 11| 2ENQ
+ * 1Y |7 10| 2Y
+ * OSC GND |8 9| GND
+ * +--------------+
+ */
+
+static NETLIST_START(SN74LS629_DIP)
+ SN74LS629(A, CAP_U(1))
+ SN74LS629(B, CAP_U(1))
+
+ NET_C(A.GND, B.GND)
+ NET_C(A.VCC, B.VCC)
+ NC_PIN(NC)
+
+ DIPPINS( /* +--------------+ */
+ B.FC, /* 2FC |1 ++ 16| VCC */ NC.I,
+ A.FC, /* 1FC |2 15| OSC VCC */ A.VCC,
+ A.RNG, /* 1RNG |3 14| 2RNG */ B.RNG,
+ NC.I, /* 1CX1 |4 74LS629 13| 2CX1 */ NC.I,
+ NC.I, /* 1CX2 |5 12| 2CX2 */ NC.I,
+ A.ENQ, /* 1ENQ |6 11| 2ENQ */ B.ENQ,
+ B.Y, /* 1Y |7 10| 2Y */ B.Y,
+ A.GND, /* OSC GND |8 9| GND */ NC.I
+ /* +--------------+ */
+ )
+NETLIST_END()
+
+/*
* DM9312: One of Eight Line Data Selectors/Multiplexers
*
* +--------------+
@@ -1359,7 +1395,36 @@ static NETLIST_START(DM9312_DIP)
)
NETLIST_END()
-#if (NL_USE_TRUTHTABLE_7448)
+/* SN7442: 4-Line BCD to 10-Line Decimal Decoder
+ *
+ * +--------------+
+ * 0 |1 ++ 16| VCC
+ * 1 |2 15| A
+ * 2 |3 14| B
+ * 3 |4 13| C
+ * 4 |5 7442 12| D
+ * 5 |6 11| 9
+ * 6 |7 10| 8
+ * GND |8 9| 7
+ * +--------------+
+ */
+
+static NETLIST_START(TTL_7442_DIP)
+ NET_REGISTER_DEV(TTL_7442, A)
+
+ DIPPINS( /* +--------------+ */
+ A.Q0, /* 0 |1 ++ 16| VCC */ A.VCC,
+ A.Q1, /* 1 |2 15| A */ A.A,
+ A.Q2, /* 2 |3 14| B */ A.B,
+ A.Q3, /* 3 |4 13| C */ A.C,
+ A.Q4, /* 4 |5 7442 12| D */ A.D,
+ A.Q5, /* 5 |6 11| 9 */ A.Q9,
+ A.Q6, /* 6 |7 10| 8 */ A.Q8,
+ A.GND, /* GND |8 9| 7 */ A.Q7
+ /* +--------------+ */
+ )
+NETLIST_END()
+
/*
* DM7448: BCD to 7-Segment decoders/drivers
@@ -1375,31 +1440,30 @@ NETLIST_END()
* GND |8 9| e
* +--------------+
*
- *
* Naming conventions follow National Semiconductor datasheet
*
*/
-#ifndef __PLIB_PREPROCESSOR__
-#define TTL_7448_TT(name) \
- NET_REGISTER_DEV(TTL_7448_TT, name)
-#endif
static NETLIST_START(TTL_7448_DIP)
- TTL_7448_TT(s)
+
+#if (NL_USE_TRUTHTABLE_7448)
+ NET_REGISTER_DEV(TTL_7448_TT, A)
+#else
+ NET_REGISTER_DEV(TTL_7448, A)
+#endif
DIPPINS( /* +--------------+ */
- s.B, /* B |1 ++ 16| VCC */ s.VCC,
- s.C, /* C |2 15| f */ s.f,
- s.LTQ, /* LTQ |3 14| g */ s.g,
- s.BIQ, /* BIQ |4 7448 13| a */ s.a,
- s.RBIQ, /* RBIQ |5 12| b */ s.b,
- s.D, /* D |6 11| c */ s.c,
- s.A, /* A |7 10| d */ s.d,
- s.GND, /* GND |8 9| e */ s.e
+ A.B, /* B |1 ++ 16| VCC */ A.VCC,
+ A.C, /* C |2 15| f */ A.f,
+ A.LTQ, /* LTQ |3 14| g */ A.g,
+ A.BIQ, /* BIQ |4 7448 13| a */ A.a,
+ A.RBIQ, /* RBIQ |5 12| b */ A.b,
+ A.D, /* D |6 11| c */ A.c,
+ A.A, /* A |7 10| d */ A.d,
+ A.GND, /* GND |8 9| e */ A.e
/* +--------------+ */
)
NETLIST_END()
-#endif
NETLIST_START(TTL74XX_lib)
NET_MODEL("DM7414 SCHMITT_TRIGGER(VTP=1.7 VTM=0.9 VI=4.35 RI=6.15k VOH=3.5 ROH=120 VOL=0.1 ROL=37.5 TPLH=15 TPHL=15)")
@@ -1664,6 +1728,22 @@ NETLIST_START(TTL74XX_lib)
TT_FAMILY("74XX")
TRUTHTABLE_END()
+ TRUTHTABLE_START(TTL_7442, 4, 10, "")
+ TT_HEAD("D,C,B,A|0,1,2,3,4,5,6,7,8,9")
+ TT_LINE("0,0,0,0|0,1,1,1,1,1,1,1,1,1|30,30,30,30,30,30,30,30,30,30")
+ TT_LINE("0,0,0,1|1,0,1,1,1,1,1,1,1,1|30,30,30,30,30,30,30,30,30,30")
+ TT_LINE("0,0,1,0|1,1,0,1,1,1,1,1,1,1|30,30,30,30,30,30,30,30,30,30")
+ TT_LINE("0,0,1,1|1,1,1,0,1,1,1,1,1,1|30,30,30,30,30,30,30,30,30,30")
+ TT_LINE("0,1,0,0|1,1,1,1,0,1,1,1,1,1|30,30,30,30,30,30,30,30,30,30")
+ TT_LINE("0,1,0,1|1,1,1,1,1,0,1,1,1,1|30,30,30,30,30,30,30,30,30,30")
+ TT_LINE("0,1,1,0|1,1,1,1,1,1,0,1,1,1|30,30,30,30,30,30,30,30,30,30")
+ TT_LINE("0,1,1,1|1,1,1,1,1,1,1,0,1,1|30,30,30,30,30,30,30,30,30,30")
+ TT_LINE("1,0,0,0|1,1,1,1,1,1,1,1,0,1|30,30,30,30,30,30,30,30,30,30")
+ TT_LINE("1,0,0,1|1,1,1,1,1,1,1,1,1,0|30,30,30,30,30,30,30,30,30,30")
+ TT_LINE("1,0,1,X|1,1,1,1,1,1,1,1,1,1|30,30,30,30,30,30,30,30,30,30")
+ TT_LINE("1,1,X,X|1,1,1,1,1,1,1,1,1,1|30,30,30,30,30,30,30,30,30,30")
+ TRUTHTABLE_END()
+
#if (NL_USE_TRUTHTABLE_7448)
TRUTHTABLE_START(TTL_7448, 7, 7, "+A,+B,+C,+D,+LTQ,+BIQ,+RBIQ,@VCC,@GND")
TT_HEAD(" LTQ,BIQ,RBIQ, A , B , C , D | a, b, c, d, e, f, g")
@@ -1941,9 +2021,8 @@ NETLIST_START(TTL74XX_lib)
LOCAL_LIB_ENTRY(TTL_7430_DIP)
LOCAL_LIB_ENTRY(TTL_7432_DIP)
LOCAL_LIB_ENTRY(TTL_7437_DIP)
-#if (NL_USE_TRUTHTABLE_7448)
+ LOCAL_LIB_ENTRY(TTL_7442_DIP)
LOCAL_LIB_ENTRY(TTL_7448_DIP)
-#endif
LOCAL_LIB_ENTRY(TTL_7486_DIP)
LOCAL_LIB_ENTRY(TTL_74121_DIP)
LOCAL_LIB_ENTRY(TTL_74123_DIP)
@@ -1961,5 +2040,6 @@ NETLIST_START(TTL74XX_lib)
LOCAL_LIB_ENTRY(TTL_74377_DIP)
LOCAL_LIB_ENTRY(TTL_74378_DIP)
LOCAL_LIB_ENTRY(TTL_74379_DIP)
+ LOCAL_LIB_ENTRY(SN74LS629_DIP)
LOCAL_LIB_ENTRY(DM9312_DIP)
NETLIST_END()
diff --git a/src/lib/netlist/macro/nlm_ttl74xx.h b/src/lib/netlist/macro/nlm_ttl74xx.h
index f6a7da742b9..8476b5c9e85 100644
--- a/src/lib/netlist/macro/nlm_ttl74xx.h
+++ b/src/lib/netlist/macro/nlm_ttl74xx.h
@@ -245,6 +245,10 @@
NET_REGISTER_DEV(TTL_7437_DIP, name)
+#define TTL_7442_DIP(name) \
+ NET_REGISTER_DEV(TTL_7442_DIP, name)
+
+
#if (NL_USE_TRUTHTABLE_7448)
#define TTL_7448(name, cA0, cA1, cA2, cA3, cLTQ, cBIQ, cRBIQ) \
NET_REGISTER_DEV(TTL_7448, name) \
@@ -257,12 +261,11 @@
NET_CONNECT(name, LTQ, cLTQ) \
NET_CONNECT(name, BIQ, cBIQ) \
NET_CONNECT(name, RBIQ, cRBIQ)
+#endif
#define TTL_7448_DIP(name) \
NET_REGISTER_DEV(TTL_7448_DIP, name)
-#endif
-
#define TTL_7486_GATE(name) \
NET_REGISTER_DEV(TTL_7486_GATE, name)