summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--scripts/src/netlist.lua10
-rw-r--r--src/lib/netlist/build/makefile5
-rw-r--r--src/lib/netlist/devices/net_lib.cpp4
-rw-r--r--src/lib/netlist/devices/net_lib.h7
-rw-r--r--src/lib/netlist/devices/nld_2716.cpp110
-rw-r--r--src/lib/netlist/devices/nld_2716.h54
-rw-r--r--src/lib/netlist/devices/nld_82S123.cpp93
-rw-r--r--src/lib/netlist/devices/nld_82S123.h44
-rw-r--r--src/lib/netlist/devices/nld_82S126.cpp97
-rw-r--r--src/lib/netlist/devices/nld_82S126.h47
-rw-r--r--src/lib/netlist/devices/nld_devinc.h1361
-rw-r--r--src/lib/netlist/devices/nld_roms.cpp185
-rw-r--r--src/lib/netlist/devices/nld_roms.h29
-rw-r--r--src/lib/netlist/devices/nlid_truthtable.h20
-rw-r--r--src/lib/netlist/macro/nlm_base.cpp2
-rw-r--r--src/lib/netlist/macro/nlm_opamp.h10
-rw-r--r--src/lib/netlist/macro/nlm_roms.cpp203
-rw-r--r--src/lib/netlist/macro/nlm_roms.h44
-rw-r--r--src/lib/netlist/nl_base.h167
-rw-r--r--src/lib/netlist/nl_create_mame_solvers.sh2
-rw-r--r--src/lib/netlist/nl_errstr.h2
-rwxr-xr-xsrc/lib/netlist/nl_setup.cpp8
-rw-r--r--src/lib/netlist/nl_setup.h2
-rw-r--r--src/lib/netlist/plib/ptime.h7
-rw-r--r--src/lib/netlist/plib/ptypes.h23
-rw-r--r--src/lib/netlist/prg/nltool.cpp43
-rw-r--r--src/mame/machine/nl_hazelvid.cpp2
27 files changed, 1528 insertions, 1053 deletions
diff --git a/scripts/src/netlist.lua b/scripts/src/netlist.lua
index 905a081cd4a..a71bcfe1df5 100644
--- a/scripts/src/netlist.lua
+++ b/scripts/src/netlist.lua
@@ -118,8 +118,6 @@ project "netlist"
MAME_DIR .. "src/lib/netlist/solver/vector_base.h",
MAME_DIR .. "src/lib/netlist/devices/nld_2102A.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_2102A.h",
- MAME_DIR .. "src/lib/netlist/devices/nld_2716.cpp",
- MAME_DIR .. "src/lib/netlist/devices/nld_2716.h",
MAME_DIR .. "src/lib/netlist/devices/nld_tms4800.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_tms4800.h",
MAME_DIR .. "src/lib/netlist/devices/nld_4006.cpp",
@@ -192,10 +190,6 @@ project "netlist"
MAME_DIR .. "src/lib/netlist/devices/nld_82S16.h",
MAME_DIR .. "src/lib/netlist/devices/nld_82S115.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_82S115.h",
- MAME_DIR .. "src/lib/netlist/devices/nld_82S123.cpp",
- MAME_DIR .. "src/lib/netlist/devices/nld_82S123.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_9316.cpp",
@@ -224,6 +218,8 @@ project "netlist"
MAME_DIR .. "src/lib/netlist/devices/net_lib.h",
MAME_DIR .. "src/lib/netlist/devices/nld_log.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_log.h",
+ MAME_DIR .. "src/lib/netlist/devices/nld_roms.cpp",
+ MAME_DIR .. "src/lib/netlist/devices/nld_roms.h",
MAME_DIR .. "src/lib/netlist/devices/nld_system.cpp",
MAME_DIR .. "src/lib/netlist/devices/nld_system.h",
MAME_DIR .. "src/lib/netlist/devices/nlid_truthtable.cpp",
@@ -241,6 +237,8 @@ project "netlist"
MAME_DIR .. "src/lib/netlist/macro/nlm_opamp.h",
MAME_DIR .. "src/lib/netlist/macro/nlm_other.cpp",
MAME_DIR .. "src/lib/netlist/macro/nlm_other.h",
+ MAME_DIR .. "src/lib/netlist/macro/nlm_roms.cpp",
+ MAME_DIR .. "src/lib/netlist/macro/nlm_roms.h",
MAME_DIR .. "src/lib/netlist/generated/static_solvers.cpp",
}
diff --git a/src/lib/netlist/build/makefile b/src/lib/netlist/build/makefile
index d18a65605aa..ed2be27c651 100644
--- a/src/lib/netlist/build/makefile
+++ b/src/lib/netlist/build/makefile
@@ -142,7 +142,6 @@ NLOBJS := \
$(NLOBJ)/analog/nlid_twoterm.o \
$(NLOBJ)/analog/nld_opamps.o \
$(NLOBJ)/devices/nld_2102A.o \
- $(NLOBJ)/devices/nld_2716.o \
$(NLOBJ)/devices/nld_tms4800.o \
$(NLOBJ)/devices/nld_4006.o \
$(NLOBJ)/devices/nld_4013.o \
@@ -180,8 +179,6 @@ NLOBJS := \
$(NLOBJ)/devices/nld_74ls629.o \
$(NLOBJ)/devices/nld_82S16.o \
$(NLOBJ)/devices/nld_82S115.o \
- $(NLOBJ)/devices/nld_82S123.o \
- $(NLOBJ)/devices/nld_82S126.o \
$(NLOBJ)/devices/nld_9310.o \
$(NLOBJ)/devices/nld_9316.o \
$(NLOBJ)/devices/nld_9322.o \
@@ -191,6 +188,7 @@ NLOBJS := \
$(NLOBJ)/devices/nld_mm5837.o \
$(NLOBJ)/devices/nld_ne555.o \
$(NLOBJ)/devices/nld_r2r_dac.o \
+ $(NLOBJ)/devices/nld_roms.o \
$(NLOBJ)/devices/nld_tristate.o \
$(NLOBJ)/devices/nld_schmitt.o \
$(NLOBJ)/devices/nld_legacy.o \
@@ -203,6 +201,7 @@ NLOBJS := \
$(NLOBJ)/macro/nlm_cd4xxx.o \
$(NLOBJ)/macro/nlm_opamp.o \
$(NLOBJ)/macro/nlm_other.o \
+ $(NLOBJ)/macro/nlm_roms.o \
$(NLOBJ)/macro/nlm_ttl74xx.o \
$(NLOBJ)/solver/nld_solver.o \
$(NLOBJ)/solver/nld_matrix_solver.o \
diff --git a/src/lib/netlist/devices/net_lib.cpp b/src/lib/netlist/devices/net_lib.cpp
index ae380e6804b..9caf89afdc1 100644
--- a/src/lib/netlist/devices/net_lib.cpp
+++ b/src/lib/netlist/devices/net_lib.cpp
@@ -71,7 +71,6 @@ namespace devices
LIB_ENTRY(2102A)
LIB_ENTRY(2102A_dip)
LIB_ENTRY(2716)
- LIB_ENTRY(2716_dip)
#if !(NL_USE_TRUTHTABLE_7448)
LIB_ENTRY(7448)
LIB_ENTRY(7448_dip)
@@ -138,6 +137,7 @@ namespace devices
LIB_ENTRY(82S115)
LIB_ENTRY(82S123)
LIB_ENTRY(82S126)
+ LIB_ENTRY(74S287)
LIB_ENTRY(9310)
LIB_ENTRY(9314)
LIB_ENTRY(9316)
@@ -172,8 +172,6 @@ namespace devices
LIB_ENTRY(74365_dip)
LIB_ENTRY(82S16_dip)
LIB_ENTRY(82S115_dip)
- LIB_ENTRY(82S123_dip)
- LIB_ENTRY(82S126_dip)
LIB_ENTRY(9602_dip)
LIB_ENTRY(9310_dip)
LIB_ENTRY(9314_dip)
diff --git a/src/lib/netlist/devices/net_lib.h b/src/lib/netlist/devices/net_lib.h
index 12f55858111..9d36c9a48ad 100644
--- a/src/lib/netlist/devices/net_lib.h
+++ b/src/lib/netlist/devices/net_lib.h
@@ -35,6 +35,7 @@
#include "netlist/macro/nlm_opamp.h"
#include "netlist/macro/nlm_other.h"
#include "netlist/macro/nlm_ttl74xx.h"
+#include "netlist/macro/nlm_roms.h"
#include "nld_7448.h"
@@ -46,7 +47,6 @@
#include "nld_system.h"
#include "nld_2102A.h"
-#include "nld_2716.h"
#include "nld_4006.h"
#include "nld_4013.h"
#include "nld_4020.h"
@@ -79,8 +79,6 @@
#include "nld_7497.h"
#include "nld_74ls629.h"
#include "nld_82S115.h"
-#include "nld_82S123.h"
-#include "nld_82S126.h"
#include "nld_82S16.h"
#include "nld_9310.h"
#include "nld_9316.h"
@@ -96,6 +94,8 @@
#include "nld_r2r_dac.h"
+#include "nld_roms.h"
+
#include "nld_schmitt.h"
#include "nld_tristate.h"
@@ -106,6 +106,7 @@
#include "netlist/macro/nlm_opamp.h"
#include "netlist/macro/nlm_other.h"
#include "netlist/macro/nlm_ttl74xx.h"
+#include "netlist/macro/nlm_roms.h"
#include "netlist/analog/nld_bjt.h"
#include "netlist/analog/nld_fourterm.h"
diff --git a/src/lib/netlist/devices/nld_2716.cpp b/src/lib/netlist/devices/nld_2716.cpp
deleted file mode 100644
index 2e2899ce96e..00000000000
--- a/src/lib/netlist/devices/nld_2716.cpp
+++ /dev/null
@@ -1,110 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Ryan Holtz
-/*
- * nld_2716.cpp
- *
- */
-
-#include "nld_2716.h"
-#include "netlist/nl_base.h"
-
-namespace netlist
-{
- namespace devices
- {
- NETLIB_OBJECT(2716)
- {
- NETLIB_CONSTRUCTOR(2716)
- , m_A(*this, { "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10" })
- , m_GQ(*this, "GQ")
- , m_EPQ(*this, "EPQ")
- , m_D(*this, { "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7" })
- , m_last_EPQ(*this, "m_last_EPQ", 1)
- , m_ROM(*this, "ROM")
- , m_power_pins(*this)
- {
- }
-
- NETLIB_UPDATEI();
-
- friend class NETLIB_NAME(2716_dip);
- private:
- object_array_t<logic_input_t, 11> m_A;
- logic_input_t m_GQ;
- logic_input_t m_EPQ;
- object_array_t<logic_output_t, 8> m_D;
-
- state_var<unsigned> m_last_EPQ;
-
- param_rom_t<uint8_t, 11, 8> m_ROM; // 16 Kbits, used as 2 Kbit x 8
- nld_power_pins m_power_pins;
- };
-
- NETLIB_OBJECT(2716_dip)
- {
- NETLIB_CONSTRUCTOR(2716_dip)
- , A(*this, "A")
- {
- register_subalias("8", A.m_A[0]);
- register_subalias("7", A.m_A[1]);
- register_subalias("6", A.m_A[2]);
- register_subalias("5", A.m_A[3]);
- register_subalias("4", A.m_A[4]);
- register_subalias("3", A.m_A[5]);
- register_subalias("2", A.m_A[6]);
- register_subalias("1", A.m_A[7]);
- register_subalias("23", A.m_A[8]);
- register_subalias("22", A.m_A[9]);
- register_subalias("19", A.m_A[10]);
-
- register_subalias("20", A.m_GQ);
- register_subalias("18", A.m_EPQ);
-
- register_subalias("9", A.m_D[0]);
- register_subalias("10", A.m_D[1]);
- register_subalias("11", A.m_D[2]);
- register_subalias("13", A.m_D[3]);
- register_subalias("14", A.m_D[4]);
- register_subalias("15", A.m_D[5]);
- register_subalias("16", A.m_D[6]);
- register_subalias("17", A.m_D[7]);
-
- register_subalias("12", "A.GND");
- register_subalias("24", "A.VCC");
- }
- NETLIB_RESETI() {}
- NETLIB_UPDATEI() {}
- private:
- NETLIB_SUB(2716) A;
- };
-
- // FIXME: timing!
- NETLIB_UPDATE(2716)
- {
- unsigned d = 0xff;
-
- netlist_time delay = NLTIME_FROM_NS(450);
- if (!m_GQ() && !m_EPQ())
- {
- unsigned a = 0;
- for (std::size_t i=0; i<11; i++)
- a |= (m_A[i]() << i);
-
- d = m_ROM[a];
-
- if (m_last_EPQ)
- delay = NLTIME_FROM_NS(120);
- }
-
- m_last_EPQ = m_EPQ();
-
- // FIXME: Outputs are tristate. This needs to be properly implemented
- for (std::size_t i=0; i<8; i++)
- m_D[i].push((d >> i) & 1, delay);
- }
-
- NETLIB_DEVICE_IMPL(2716, "EPROM_2716", "+GQ,+EPQ,+A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,@VCC,@GND")
- NETLIB_DEVICE_IMPL(2716_dip, "EPROM_2716_DIP", "")
-
- } //namespace devices
-} // namespace netlist
diff --git a/src/lib/netlist/devices/nld_2716.h b/src/lib/netlist/devices/nld_2716.h
deleted file mode 100644
index c5e039e1421..00000000000
--- a/src/lib/netlist/devices/nld_2716.h
+++ /dev/null
@@ -1,54 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Ryan Holtz
-/*
- * nld_82S126.h
- *
- * 2716: 16 Kbit (2Kb x 8) UV EPROM
- *
- * +----------------+
- * A7 |1 ++ 24| VCC
- * A6 |2 23| A8
- * A5 |3 22| A9
- * A4 |4 2716 21| VPP
- * A3 |5 20| GQ
- * A2 |6 19| A10
- * A1 |7 18| EPQ
- * A0 |8 17| D7
- * D0 |9 16| D6
- * D1 |10 15| D5
- * D2 |11 14| D4
- * VSS |12 13| D3
- * +----------------+
- *
- *
- * Naming conventions follow STMicro datasheet
- *
- */
-
-#ifndef NLD_2716_H_
-#define NLD_2716_H_
-
-#include "netlist/nl_setup.h"
-
-#define EPROM_2716(name, cGQ, cEPQ, cA0, cA1, cA2, cA3, cA4, cA5, cA6, cA7, cA8, cA9, cA10) \
- NET_REGISTER_DEV(EPROM_2716, name) \
- NET_CONNECT(name, GND, GND) \
- NET_CONNECT(name, VCC, VCC) \
- NET_CONNECT(name, GQ, cGQ) \
- NET_CONNECT(name, EPQ, cEPQ) \
- 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, A10, cA10)
-
-#define EPROM_2716_DIP(name) \
- NET_REGISTER_DEV(EPROM_2716_DIP, name)
-
-#endif /* NLD_2716_H_ */
diff --git a/src/lib/netlist/devices/nld_82S123.cpp b/src/lib/netlist/devices/nld_82S123.cpp
deleted file mode 100644
index 83a0074d134..00000000000
--- a/src/lib/netlist/devices/nld_82S123.cpp
+++ /dev/null
@@ -1,93 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Ryan Holtz
-/*
- * nld_82S123.cpp
- *
- */
-
-#include "nld_82S123.h"
-#include "netlist/nl_base.h"
-
-namespace netlist
-{
- namespace devices
- {
- NETLIB_OBJECT(82S123)
- {
- NETLIB_CONSTRUCTOR(82S123)
- , m_A(*this, {"A0", "A1", "A2", "A3", "A4"})
- , m_CEQ(*this, "CEQ")
- , m_O(*this, {"O1", "O2", "O3", "O4", "O5", "O6", "O7", "O8"})
- , m_ROM(*this, "ROM")
- , m_power_pins(*this)
- {
- }
-
- NETLIB_UPDATEI();
-
- friend class NETLIB_NAME(82S123_dip);
- private:
- object_array_t<logic_input_t, 5> m_A;
- logic_input_t m_CEQ;
- object_array_t<logic_output_t, 8> m_O;
-
- param_rom_t<uint8_t, 5, 8> m_ROM; // 256 bits, 32x8
- nld_power_pins m_power_pins;
- };
-
- NETLIB_OBJECT(82S123_dip)
- {
- NETLIB_CONSTRUCTOR(82S123_dip)
- , A(*this, "A")
- {
- register_subalias("1", A.m_O[0]);
- register_subalias("2", A.m_O[1]);
- register_subalias("3", A.m_O[2]);
- register_subalias("4", A.m_O[3]);
- register_subalias("5", A.m_O[4]);
- register_subalias("6", A.m_O[5]);
- register_subalias("7", A.m_O[6]);
- register_subalias("8", "A.GND");
-
- register_subalias("9", A.m_O[7]);
- register_subalias("10", A.m_A[0]);
- register_subalias("11", A.m_A[1]);
- register_subalias("12", A.m_A[2]);
- register_subalias("13", A.m_A[3]);
- register_subalias("14", A.m_A[4]);
- register_subalias("15", A.m_CEQ);
- register_subalias("16", "A.VCC");
- }
- NETLIB_RESETI() {}
- NETLIB_UPDATEI() {}
- private:
- NETLIB_SUB(82S123) A;
- };
-
- // FIXME: timing!
- NETLIB_UPDATE(82S123)
- {
- unsigned o = 0xff;
-
- netlist_time delay = NLTIME_FROM_NS(35);
- if (!m_CEQ())
- {
- unsigned a = 0;
- for (std::size_t i=0; i<5; 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<8; i++)
- m_O[i].push((o >> i) & 1, delay);
- }
-
- NETLIB_DEVICE_IMPL(82S123, "PROM_82S123", "+CEQ,+A0,+A1,+A2,+A3,+A4,@VCC,@GND")
- NETLIB_DEVICE_IMPL(82S123_dip, "PROM_82S123_DIP", "")
-
- } //namespace devices
-} // namespace netlist
diff --git a/src/lib/netlist/devices/nld_82S123.h b/src/lib/netlist/devices/nld_82S123.h
deleted file mode 100644
index 69088b03f6b..00000000000
--- a/src/lib/netlist/devices/nld_82S123.h
+++ /dev/null
@@ -1,44 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Ryan Holtz
-/*
- * nld_82S123.h
- *
- * 82S23: 256-bit (32x8) TTL bipolar PROM with open-collector outputs
- * 82S123: 256-bit (32x8) TTL bipolar PROM with tri-state outputs
- *
- * +--------------+
- * O1 |1 ++ 16| VCC
- * O2 |2 15| CEQ
- * O3 |3 14| A4
- * O4 |4 82S123 13| A3
- * O5 |5 12| A2
- * O6 |6 11| A1
- * O7 |7 10| A0
- * GND |8 9| O8
- * +--------------+
- *
- *
- * Naming conventions follow Philips datasheet
- *
- */
-
-#ifndef NLD_82S123_H_
-#define NLD_82S123_H_
-
-#include "netlist/nl_setup.h"
-
-#define PROM_82S123(name, cCEQ, cA0, cA1, cA2, cA3, cA4) \
- NET_REGISTER_DEV(PROM_82S123, 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)
-
-#define PROM_82S123_DIP(name) \
- NET_REGISTER_DEV(PROM_82S123_DIP, name)
-
-#endif /* NLD_82S123_H_ */
diff --git a/src/lib/netlist/devices/nld_82S126.cpp b/src/lib/netlist/devices/nld_82S126.cpp
deleted file mode 100644
index 99bf3920a60..00000000000
--- a/src/lib/netlist/devices/nld_82S126.cpp
+++ /dev/null
@@ -1,97 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Ryan Holtz
-/*
- * nld_82S126.cpp
- *
- */
-
-#include "nld_82S126.h"
-#include "netlist/nl_base.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, "ROM")
- , m_power_pins(*this)
- {
- }
-
- NETLIB_UPDATEI();
-
- friend class NETLIB_NAME(82S126_dip);
- private:
- 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, 4> m_O;
-
- param_rom_t<uint8_t, 8, 4> m_ROM; // 1024 bits, 32x32, used as 256x4
- nld_power_pins m_power_pins;
- };
-
- NETLIB_OBJECT(82S126_dip)
- {
- NETLIB_CONSTRUCTOR(82S126_dip)
- , A(*this, "A")
- {
- register_subalias("5", A.m_A[0]);
- register_subalias("6", A.m_A[1]);
- register_subalias("7", A.m_A[2]);
- register_subalias("4", A.m_A[3]);
- register_subalias("3", A.m_A[4]);
- register_subalias("2", A.m_A[5]);
- register_subalias("1", A.m_A[6]);
- register_subalias("15", A.m_A[7]);
-
- register_subalias("13", A.m_CE1Q);
- register_subalias("14", A.m_CE2Q);
-
- register_subalias("12", A.m_O[0]);
- register_subalias("11", A.m_O[1]);
- register_subalias("10", A.m_O[2]);
- register_subalias("9", A.m_O[3]);
-
- register_subalias("8", "A.GND");
- register_subalias("16", "A.VCC");
- }
- NETLIB_RESETI() {}
- NETLIB_UPDATEI() {}
- private:
- NETLIB_SUB(82S126) A;
- };
-
- // FIXME: timing!
- NETLIB_UPDATE(82S126)
- {
- unsigned o = 0xf;
-
- netlist_time delay = NLTIME_FROM_NS(25);
- if (!m_CE1Q() && !m_CE2Q())
- {
- 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, "PROM_82S126", "+CE1Q,+CE2Q,+A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,@VCC,@GND")
- NETLIB_DEVICE_IMPL(82S126_dip, "PROM_82S126_DIP", "")
-
- } //namespace devices
-} // namespace netlist
diff --git a/src/lib/netlist/devices/nld_82S126.h b/src/lib/netlist/devices/nld_82S126.h
deleted file mode 100644
index 35f2c0dd725..00000000000
--- a/src/lib/netlist/devices/nld_82S126.h
+++ /dev/null
@@ -1,47 +0,0 @@
-// 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 "netlist/nl_setup.h"
-
-#define PROM_82S126(name, cCE1Q, cCE2Q, cA0, cA1, cA2, cA3, cA4, cA5, cA6, cA7) \
- NET_REGISTER_DEV(PROM_82S126, name) \
- NET_CONNECT(name, GND, GND) \
- NET_CONNECT(name, VCC, VCC) \
- NET_CONNECT(name, CE1Q, cCE1Q) \
- NET_CONNECT(name, CE2Q, cCE2Q) \
- 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)
-
-#define PROM_82S126_DIP(name) \
- NET_REGISTER_DEV(PROM_82S126_DIP, name)
-
-#endif /* NLD_82S126_H_ */
diff --git a/src/lib/netlist/devices/nld_devinc.h b/src/lib/netlist/devices/nld_devinc.h
index aff6c92d630..421379899df 100644
--- a/src/lib/netlist/devices/nld_devinc.h
+++ b/src/lib/netlist/devices/nld_devinc.h
@@ -12,989 +12,1304 @@
// ---------------------------------------------------------------------
// Source: src/lib/netlist/analog/nlid_twoterm.cpp
// ---------------------------------------------------------------------
-#define RES(name, pR) \
- NET_REGISTER_DEVEXT(RES, name, pR)
+// usage : RES(name, pR)
+#define RES(...) \
+ NET_REGISTER_DEVEXT(RES, __VA_ARGS__)
-#define POT(name, pR) \
- NET_REGISTER_DEVEXT(POT, name, pR)
+// usage : POT(name, pR)
+#define POT(...) \
+ NET_REGISTER_DEVEXT(POT, __VA_ARGS__)
-#define POT2(name, pR) \
- NET_REGISTER_DEVEXT(POT2, name, pR)
+// usage : POT2(name, pR)
+#define POT2(...) \
+ NET_REGISTER_DEVEXT(POT2, __VA_ARGS__)
-#define CAP(name, pC) \
- NET_REGISTER_DEVEXT(CAP, name, pC)
+// usage : CAP(name, pC)
+#define CAP(...) \
+ NET_REGISTER_DEVEXT(CAP, __VA_ARGS__)
-#define IND(name, pL) \
- NET_REGISTER_DEVEXT(IND, name, pL)
+// usage : IND(name, pL)
+#define IND(...) \
+ NET_REGISTER_DEVEXT(IND, __VA_ARGS__)
-#define DIODE(name, pMODEL) \
- NET_REGISTER_DEVEXT(DIODE, name, pMODEL)
+// usage : DIODE(name, pMODEL)
+#define DIODE(...) \
+ NET_REGISTER_DEVEXT(DIODE, __VA_ARGS__)
-#define ZDIODE(name, pMODEL) \
- NET_REGISTER_DEVEXT(ZDIODE, name, pMODEL)
+// usage : ZDIODE(name, pMODEL)
+#define ZDIODE(...) \
+ NET_REGISTER_DEVEXT(ZDIODE, __VA_ARGS__)
-#define VS(name, pV) \
- NET_REGISTER_DEVEXT(VS, name, pV)
+// usage : VS(name, pV)
+#define VS(...) \
+ NET_REGISTER_DEVEXT(VS, __VA_ARGS__)
-#define CS(name, pI) \
- NET_REGISTER_DEVEXT(CS, name, pI)
+// usage : CS(name, pI)
+#define CS(...) \
+ NET_REGISTER_DEVEXT(CS, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/analog/nlid_fourterm.cpp
// ---------------------------------------------------------------------
-#define VCVS(name, pG) \
- NET_REGISTER_DEVEXT(VCVS, name, pG)
+// usage : VCVS(name, pG)
+#define VCVS(...) \
+ NET_REGISTER_DEVEXT(VCVS, __VA_ARGS__)
-#define VCCS(name, pG) \
- NET_REGISTER_DEVEXT(VCCS, name, pG)
+// usage : VCCS(name, pG)
+#define VCCS(...) \
+ NET_REGISTER_DEVEXT(VCCS, __VA_ARGS__)
-#define CCCS(name, pG) \
- NET_REGISTER_DEVEXT(CCCS, name, pG)
+// usage : CCCS(name, pG)
+#define CCCS(...) \
+ NET_REGISTER_DEVEXT(CCCS, __VA_ARGS__)
-#define CCVS(name, pG) \
- NET_REGISTER_DEVEXT(CCVS, name, pG)
+// usage : CCVS(name, pG)
+#define CCVS(...) \
+ NET_REGISTER_DEVEXT(CCVS, __VA_ARGS__)
-#define LVCCS(name) \
- NET_REGISTER_DEVEXT(LVCCS, name)
+// usage : LVCCS(name)
+#define LVCCS(...) \
+ NET_REGISTER_DEVEXT(LVCCS, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/analog/nld_opamps.cpp
// ---------------------------------------------------------------------
-#define OPAMP(name, pMODEL) \
- NET_REGISTER_DEVEXT(OPAMP, name, pMODEL)
+// usage : OPAMP(name, pMODEL)
+#define OPAMP(...) \
+ NET_REGISTER_DEVEXT(OPAMP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_system.cpp
// ---------------------------------------------------------------------
-#define NC_PIN(name) \
- NET_REGISTER_DEVEXT(NC_PIN, name)
+// usage : NC_PIN(name)
+#define NC_PIN(...) \
+ NET_REGISTER_DEVEXT(NC_PIN, __VA_ARGS__)
-#define FRONTIER_DEV(name, pI, pG, pQ) \
- NET_REGISTER_DEVEXT(FRONTIER_DEV, name, pI, pG, pQ)
+// usage : FRONTIER_DEV(name, pI, pG, pQ)
+#define FRONTIER_DEV(...) \
+ NET_REGISTER_DEVEXT(FRONTIER_DEV, __VA_ARGS__)
-#define AFUNC(name, pN, pFUNC) \
- NET_REGISTER_DEVEXT(AFUNC, name, pN, pFUNC)
+// usage : AFUNC(name, pN, pFUNC)
+#define AFUNC(...) \
+ NET_REGISTER_DEVEXT(AFUNC, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/analog/nld_bjt.cpp
// ---------------------------------------------------------------------
-#define QBJT_EB(name, pMODEL) \
- NET_REGISTER_DEVEXT(QBJT_EB, name, pMODEL)
+// usage : QBJT_EB(name, pMODEL)
+#define QBJT_EB(...) \
+ NET_REGISTER_DEVEXT(QBJT_EB, __VA_ARGS__)
-#define QBJT_SW(name, pMODEL) \
- NET_REGISTER_DEVEXT(QBJT_SW, name, pMODEL)
+// usage : QBJT_SW(name, pMODEL)
+#define QBJT_SW(...) \
+ NET_REGISTER_DEVEXT(QBJT_SW, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/analog/nld_mosfet.cpp
// ---------------------------------------------------------------------
-#define MOSFET(name, pMODEL) \
- NET_REGISTER_DEVEXT(MOSFET, name, pMODEL)
+// usage : MOSFET(name, pMODEL)
+#define MOSFET(...) \
+ NET_REGISTER_DEVEXT(MOSFET, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_system.cpp
// ---------------------------------------------------------------------
-#define TTL_INPUT(name, pIN) \
- NET_REGISTER_DEVEXT(TTL_INPUT, name, pIN)
+// usage : TTL_INPUT(name, pIN)
+#define TTL_INPUT(...) \
+ NET_REGISTER_DEVEXT(TTL_INPUT, __VA_ARGS__)
-#define LOGIC_INPUT(name, pIN, pMODEL) \
- NET_REGISTER_DEVEXT(LOGIC_INPUT, name, pIN, pMODEL)
+// usage : LOGIC_INPUT(name, pIN, pMODEL)
+#define LOGIC_INPUT(...) \
+ NET_REGISTER_DEVEXT(LOGIC_INPUT, __VA_ARGS__)
-#define LOGIC_INPUT8(name, pIN, pMODEL) \
- NET_REGISTER_DEVEXT(LOGIC_INPUT8, name, pIN, pMODEL)
+// usage : LOGIC_INPUT8(name, pIN, pMODEL)
+#define LOGIC_INPUT8(...) \
+ NET_REGISTER_DEVEXT(LOGIC_INPUT8, __VA_ARGS__)
-#define ANALOG_INPUT(name, pIN) \
- NET_REGISTER_DEVEXT(ANALOG_INPUT, name, pIN)
+// usage : ANALOG_INPUT(name, pIN)
+#define ANALOG_INPUT(...) \
+ NET_REGISTER_DEVEXT(ANALOG_INPUT, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_log.cpp
// ---------------------------------------------------------------------
-#define LOG(name, pI) \
- NET_REGISTER_DEVEXT(LOG, name, pI)
+// usage : LOG(name, pI)
+#define LOG(...) \
+ NET_REGISTER_DEVEXT(LOG, __VA_ARGS__)
-#define LOGD(name, pI, pI2) \
- NET_REGISTER_DEVEXT(LOGD, name, pI, pI2)
+// usage : LOGD(name, pI, pI2)
+#define LOGD(...) \
+ NET_REGISTER_DEVEXT(LOGD, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_system.cpp
// ---------------------------------------------------------------------
-#define CLOCK(name, pFREQ) \
- NET_REGISTER_DEVEXT(CLOCK, name, pFREQ)
+// usage : CLOCK(name, pFREQ)
+#define CLOCK(...) \
+ NET_REGISTER_DEVEXT(CLOCK, __VA_ARGS__)
-#define VARCLOCK(name, pFUNC) \
- NET_REGISTER_DEVEXT(VARCLOCK, name, pFUNC)
+// usage : VARCLOCK(name, pFUNC)
+#define VARCLOCK(...) \
+ NET_REGISTER_DEVEXT(VARCLOCK, __VA_ARGS__)
-#define EXTCLOCK(name, pFREQ, pPATTERN) \
- NET_REGISTER_DEVEXT(EXTCLOCK, name, pFREQ, pPATTERN)
+// usage : EXTCLOCK(name, pFREQ, pPATTERN)
+#define EXTCLOCK(...) \
+ NET_REGISTER_DEVEXT(EXTCLOCK, __VA_ARGS__)
-#define MAINCLOCK(name, pFREQ) \
- NET_REGISTER_DEVEXT(MAINCLOCK, name, pFREQ)
+// usage : MAINCLOCK(name, pFREQ)
+#define MAINCLOCK(...) \
+ NET_REGISTER_DEVEXT(MAINCLOCK, __VA_ARGS__)
-#define GNDA(name) \
- NET_REGISTER_DEVEXT(GNDA, name)
+// usage : GNDA(name)
+#define GNDA(...) \
+ NET_REGISTER_DEVEXT(GNDA, __VA_ARGS__)
-#define PARAMETER(name) \
- NET_REGISTER_DEVEXT(PARAMETER, name)
+// usage : PARAMETER(name)
+#define PARAMETER(...) \
+ NET_REGISTER_DEVEXT(PARAMETER, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/solver/nld_solver.cpp
// ---------------------------------------------------------------------
-#define SOLVER(name, pFREQ) \
- NET_REGISTER_DEVEXT(SOLVER, name, pFREQ)
+// usage : SOLVER(name, pFREQ)
+#define SOLVER(...) \
+ NET_REGISTER_DEVEXT(SOLVER, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_system.cpp
// ---------------------------------------------------------------------
-#define SYS_DSW(name, pI, p1, p2) \
- NET_REGISTER_DEVEXT(SYS_DSW, name, pI, p1, p2)
+// usage : SYS_DSW(name, pI, p1, p2)
+#define SYS_DSW(...) \
+ NET_REGISTER_DEVEXT(SYS_DSW, __VA_ARGS__)
-#define SYS_DSW2(name) \
- NET_REGISTER_DEVEXT(SYS_DSW2, name)
+// usage : SYS_DSW2(name)
+#define SYS_DSW2(...) \
+ NET_REGISTER_DEVEXT(SYS_DSW2, __VA_ARGS__)
-#define SYS_COMPD(name) \
- NET_REGISTER_DEVEXT(SYS_COMPD, name)
+// usage : SYS_COMPD(name)
+#define SYS_COMPD(...) \
+ NET_REGISTER_DEVEXT(SYS_COMPD, __VA_ARGS__)
-#define SYS_NOISE_MT_U(name, pSIGMA) \
- NET_REGISTER_DEVEXT(SYS_NOISE_MT_U, name, pSIGMA)
+// usage : SYS_NOISE_MT_U(name, pSIGMA)
+#define SYS_NOISE_MT_U(...) \
+ NET_REGISTER_DEVEXT(SYS_NOISE_MT_U, __VA_ARGS__)
-#define SYS_NOISE_MT_N(name, pSIGMA) \
- NET_REGISTER_DEVEXT(SYS_NOISE_MT_N, name, pSIGMA)
+// usage : SYS_NOISE_MT_N(name, pSIGMA)
+#define SYS_NOISE_MT_N(...) \
+ NET_REGISTER_DEVEXT(SYS_NOISE_MT_N, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/analog/nld_switches.cpp
// ---------------------------------------------------------------------
-#define SWITCH(name) \
- NET_REGISTER_DEVEXT(SWITCH, name)
+// usage : SWITCH(name)
+#define SWITCH(...) \
+ NET_REGISTER_DEVEXT(SWITCH, __VA_ARGS__)
-#define SWITCH2(name) \
- NET_REGISTER_DEVEXT(SWITCH2, name)
+// usage : SWITCH2(name)
+#define SWITCH2(...) \
+ NET_REGISTER_DEVEXT(SWITCH2, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_legacy.cpp
// ---------------------------------------------------------------------
-#define NETDEV_RSFF(name) \
- NET_REGISTER_DEVEXT(NETDEV_RSFF, name)
+// usage : NETDEV_RSFF(name)
+#define NETDEV_RSFF(...) \
+ NET_REGISTER_DEVEXT(NETDEV_RSFF, __VA_ARGS__)
-#define NETDEV_DELAY(name) \
- NET_REGISTER_DEVEXT(NETDEV_DELAY, name)
+// usage : NETDEV_DELAY(name)
+#define NETDEV_DELAY(...) \
+ NET_REGISTER_DEVEXT(NETDEV_DELAY, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_2102A.cpp
// ---------------------------------------------------------------------
-#define RAM_2102A(name, pCEQ, pA0, pA1, pA2, pA3, pA4, pA5, pA6, pA7, pA8, pA9, pRWQ, pDI)\
- NET_REGISTER_DEVEXT(RAM_2102A, name, pCEQ, pA0, pA1, pA2, pA3, pA4, pA5, pA6, pA7, pA8, pA9, pRWQ, pDI)
+// usage : RAM_2102A(name, pCEQ, pA0, pA1, pA2, pA3, pA4, pA5, pA6, pA7, pA8, pA9, pRWQ, pDI)
+// auto connect: VCC, GND
+#define RAM_2102A(...) \
+ NET_REGISTER_DEVEXT(RAM_2102A, __VA_ARGS__)
-#define RAM_2102A_DIP(name) \
- NET_REGISTER_DEVEXT(RAM_2102A_DIP, name)
+// usage : RAM_2102A_DIP(name)
+#define RAM_2102A_DIP(...) \
+ NET_REGISTER_DEVEXT(RAM_2102A_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_2716.cpp
// ---------------------------------------------------------------------
-#define EPROM_2716(name, pGQ, pEPQ, pA0, pA1, pA2, pA3, pA4, pA5, pA6, pA7, pA8, pA9, pA10)\
- NET_REGISTER_DEVEXT(EPROM_2716, name, pGQ, pEPQ, pA0, pA1, pA2, pA3, pA4, pA5, pA6, pA7, pA8, pA9, pA10)
+// usage : EPROM_2716(name, pGQ, pEPQ, pA0, pA1, pA2, pA3, pA4, pA5, pA6, pA7, pA8, pA9, pA10)
+// auto connect: VCC, GND
+#define EPROM_2716(...) \
+ NET_REGISTER_DEVEXT(EPROM_2716, __VA_ARGS__)
-#define EPROM_2716_DIP(name) \
- NET_REGISTER_DEVEXT(EPROM_2716_DIP, name)
+// usage : EPROM_2716_DIP(name)
+#define EPROM_2716_DIP(...) \
+ NET_REGISTER_DEVEXT(EPROM_2716_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_7448.cpp
// ---------------------------------------------------------------------
-#define TTL_7448(name, pA, pB, pC, pD, pLTQ, pBIQ, pRBIQ) \
- NET_REGISTER_DEVEXT(TTL_7448, name, pA, pB, pC, pD, pLTQ, pBIQ, pRBIQ)
+// usage : TTL_7448(name, pA, pB, pC, pD, pLTQ, pBIQ, pRBIQ)
+// auto connect: VCC, GND
+#define TTL_7448(...) \
+ NET_REGISTER_DEVEXT(TTL_7448, __VA_ARGS__)
-#define TTL_7448_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7448_DIP, name)
+// 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
// ---------------------------------------------------------------------
-#define TTL_7442(name, pA, pB, pC, pD) \
- NET_REGISTER_DEVEXT(TTL_7442, name, pA, pB, pC, pD)
+// usage : TTL_7442(name, pA, pB, pC, pD)
+// auto connect: VCC, GND
+#define TTL_7442(...) \
+ NET_REGISTER_DEVEXT(TTL_7442, __VA_ARGS__)
-#define TTL_7442_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7442_DIP, name)
+// 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
// ---------------------------------------------------------------------
-#define TTL_7450_ANDORINVERT(name, pA, pB, pC, pD) \
- NET_REGISTER_DEVEXT(TTL_7450_ANDORINVERT, name, pA, pB, pC, pD)
+// usage : TTL_7450_ANDORINVERT(name, pA, pB, pC, pD)
+// auto connect: VCC, GND
+#define TTL_7450_ANDORINVERT(...) \
+ NET_REGISTER_DEVEXT(TTL_7450_ANDORINVERT, __VA_ARGS__)
-#define TTL_7450_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7450_DIP, name)
+// usage : TTL_7450_DIP(name)
+#define TTL_7450_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7450_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_7473.cpp
// ---------------------------------------------------------------------
-#define TTL_7473(name, pCLK, pJ, pK, pCLRQ) \
- NET_REGISTER_DEVEXT(TTL_7473, name, pCLK, pJ, pK, pCLRQ)
+// usage : TTL_7473(name, pCLK, pJ, pK, pCLRQ)
+// auto connect: VCC, GND
+#define TTL_7473(...) \
+ NET_REGISTER_DEVEXT(TTL_7473, __VA_ARGS__)
-#define TTL_7473_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7473_DIP, name)
+// usage : TTL_7473_DIP(name)
+#define TTL_7473_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7473_DIP, __VA_ARGS__)
-#define TTL_7473A(name, pCLK, pJ, pK, pCLRQ) \
- NET_REGISTER_DEVEXT(TTL_7473A, name, pCLK, pJ, pK, pCLRQ)
+// usage : TTL_7473A(name, pCLK, pJ, pK, pCLRQ)
+// auto connect: VCC, GND
+#define TTL_7473A(...) \
+ NET_REGISTER_DEVEXT(TTL_7473A, __VA_ARGS__)
-#define TTL_7473A_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7473A_DIP, name)
+// usage : TTL_7473A_DIP(name)
+#define TTL_7473A_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7473A_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_7474.cpp
// ---------------------------------------------------------------------
-#define TTL_7474(name, pCLK, pD, pCLRQ, pPREQ) \
- NET_REGISTER_DEVEXT(TTL_7474, name, pCLK, pD, pCLRQ, pPREQ)
+// usage : TTL_7474(name, pCLK, pD, pCLRQ, pPREQ)
+// auto connect: VCC, GND
+#define TTL_7474(...) \
+ NET_REGISTER_DEVEXT(TTL_7474, __VA_ARGS__)
-#define TTL_7474_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7474_DIP, name)
+// usage : TTL_7474_DIP(name)
+#define TTL_7474_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7474_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_7475.cpp
// ---------------------------------------------------------------------
-#define TTL_7475(name) \
- NET_REGISTER_DEVEXT(TTL_7475, name)
+// usage : TTL_7475(name)
+#define TTL_7475(...) \
+ NET_REGISTER_DEVEXT(TTL_7475, __VA_ARGS__)
-#define TTL_7475_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7475_DIP, name)
+// usage : TTL_7475_DIP(name)
+#define TTL_7475_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7475_DIP, __VA_ARGS__)
-#define TTL_7477(name) \
- NET_REGISTER_DEVEXT(TTL_7477, name)
+// usage : TTL_7477(name)
+#define TTL_7477(...) \
+ NET_REGISTER_DEVEXT(TTL_7477, __VA_ARGS__)
-#define TTL_7477_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7477_DIP, name)
+// usage : TTL_7477_DIP(name)
+#define TTL_7477_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7477_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_7483.cpp
// ---------------------------------------------------------------------
-#define TTL_7483(name, pA1, pA2, pA3, pA4, pB1, pB2, pB3, pB4, pC0) \
- NET_REGISTER_DEVEXT(TTL_7483, name, pA1, pA2, pA3, pA4, pB1, pB2, pB3, pB4, pC0)
+// usage : TTL_7483(name, pA1, pA2, pA3, pA4, pB1, pB2, pB3, pB4, pC0)
+// auto connect: VCC, GND
+#define TTL_7483(...) \
+ NET_REGISTER_DEVEXT(TTL_7483, __VA_ARGS__)
-#define TTL_7483_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7483_DIP, name)
+// usage : TTL_7483_DIP(name)
+#define TTL_7483_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7483_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_7485.cpp
// ---------------------------------------------------------------------
-#define TTL_7485(name, pA0, pA1, pA2, pA3, pB0, pB1, pB2, pB3, pLTIN, pEQIN, pGTIN)\
- NET_REGISTER_DEVEXT(TTL_7485, name, pA0, pA1, pA2, pA3, pB0, pB1, pB2, pB3, pLTIN, pEQIN, pGTIN)
+// usage : TTL_7485(name, pA0, pA1, pA2, pA3, pB0, pB1, pB2, pB3, pLTIN, pEQIN, pGTIN)
+// auto connect: VCC, GND
+#define TTL_7485(...) \
+ NET_REGISTER_DEVEXT(TTL_7485, __VA_ARGS__)
-#define TTL_7485_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7485_DIP, name)
+// usage : TTL_7485_DIP(name)
+#define TTL_7485_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7485_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_7490.cpp
// ---------------------------------------------------------------------
-#define TTL_7490(name, pA, pB, pR1, pR2, pR91, pR92) \
- NET_REGISTER_DEVEXT(TTL_7490, name, pA, pB, pR1, pR2, pR91, pR92)
+// usage : TTL_7490(name, pA, pB, pR1, pR2, pR91, pR92)
+// auto connect: VCC, GND
+#define TTL_7490(...) \
+ NET_REGISTER_DEVEXT(TTL_7490, __VA_ARGS__)
-#define TTL_7490_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7490_DIP, name)
+// usage : TTL_7490_DIP(name)
+#define TTL_7490_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7490_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_7492.cpp
// ---------------------------------------------------------------------
-#define TTL_7492(name, pA, pB, pR1, pR2) \
- NET_REGISTER_DEVEXT(TTL_7492, name, pA, pB, pR1, pR2)
+// usage : TTL_7492(name, pA, pB, pR1, pR2)
+// auto connect: VCC, GND
+#define TTL_7492(...) \
+ NET_REGISTER_DEVEXT(TTL_7492, __VA_ARGS__)
-#define TTL_7492_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7492_DIP, name)
+// usage : TTL_7492_DIP(name)
+#define TTL_7492_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7492_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_7493.cpp
// ---------------------------------------------------------------------
-#define TTL_7493(name, pCLKA, pCLKB, pR1, pR2) \
- NET_REGISTER_DEVEXT(TTL_7493, name, pCLKA, pCLKB, pR1, pR2)
+// usage : TTL_7493(name, pCLKA, pCLKB, pR1, pR2)
+// auto connect: VCC, GND
+#define TTL_7493(...) \
+ NET_REGISTER_DEVEXT(TTL_7493, __VA_ARGS__)
-#define TTL_7493_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7493_DIP, name)
+// usage : TTL_7493_DIP(name)
+#define TTL_7493_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7493_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_7497.cpp
// ---------------------------------------------------------------------
-#define TTL_7497(name, pCLK, pSTRBQ, pENQ, pUNITYQ, pCLR, pB0, pB1, pB2, pB3, pB4, pB5)\
- NET_REGISTER_DEVEXT(TTL_7497, name, pCLK, pSTRBQ, pENQ, pUNITYQ, pCLR, pB0, pB1, pB2, pB3, pB4, pB5)
+// usage : TTL_7497(name, pCLK, pSTRBQ, pENQ, pUNITYQ, pCLR, pB0, pB1, pB2, pB3, pB4, pB5)
+// auto connect: VCC, GND
+#define TTL_7497(...) \
+ NET_REGISTER_DEVEXT(TTL_7497, __VA_ARGS__)
-#define TTL_7497_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7497_DIP, name)
+// usage : TTL_7497_DIP(name)
+#define TTL_7497_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7497_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_74107.cpp
// ---------------------------------------------------------------------
-#define TTL_74107(name, pCLK, pJ, pK, pCLRQ) \
- NET_REGISTER_DEVEXT(TTL_74107, name, pCLK, pJ, pK, pCLRQ)
+// usage : TTL_74107(name, pCLK, pJ, pK, pCLRQ)
+// auto connect: VCC, GND
+#define TTL_74107(...) \
+ NET_REGISTER_DEVEXT(TTL_74107, __VA_ARGS__)
-#define TTL_74107_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_74107_DIP, name)
+// usage : TTL_74107_DIP(name)
+#define TTL_74107_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_74107_DIP, __VA_ARGS__)
-#define TTL_74107A(name, pCLK, pJ, pK, pCLRQ) \
- NET_REGISTER_DEVEXT(TTL_74107A, name, pCLK, pJ, pK, pCLRQ)
+// usage : TTL_74107A(name, pCLK, pJ, pK, pCLRQ)
+// auto connect: VCC, GND
+#define TTL_74107A(...) \
+ NET_REGISTER_DEVEXT(TTL_74107A, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_74123.cpp
// ---------------------------------------------------------------------
-#define TTL_74123(name) \
- NET_REGISTER_DEVEXT(TTL_74123, name)
+// usage : TTL_74123(name)
+#define TTL_74123(...) \
+ NET_REGISTER_DEVEXT(TTL_74123, __VA_ARGS__)
-#define TTL_74123_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_74123_DIP, name)
+// usage : TTL_74123_DIP(name)
+#define TTL_74123_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_74123_DIP, __VA_ARGS__)
+
+// ---------------------------------------------------------------------
+// Source: src/lib/netlist/devices/nld_74125.cpp
+// ---------------------------------------------------------------------
+// usage : TTL_74125(name)
+#define TTL_74125(...) \
+ NET_REGISTER_DEVEXT(TTL_74125, __VA_ARGS__)
+
+// usage : TTL_74126(name)
+#define TTL_74126(...) \
+ NET_REGISTER_DEVEXT(TTL_74126, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_74153.cpp
// ---------------------------------------------------------------------
-#define TTL_74153(name, pC0, pC1, pC2, pC3, pA, pB, pG) \
- NET_REGISTER_DEVEXT(TTL_74153, name, pC0, pC1, pC2, pC3, pA, pB, pG)
+// usage : TTL_74153(name, pC0, pC1, pC2, pC3, pA, pB, pG)
+// auto connect: VCC, GND
+#define TTL_74153(...) \
+ NET_REGISTER_DEVEXT(TTL_74153, __VA_ARGS__)
-#define TTL_74153_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_74153_DIP, name)
+// usage : TTL_74153_DIP(name)
+#define TTL_74153_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_74153_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_74161.cpp
// ---------------------------------------------------------------------
-#define TTL_74161(name, pA, pB, pC, pD, pCLRQ, pLOADQ, pCLK, pENABLEP, pENABLET)\
- NET_REGISTER_DEVEXT(TTL_74161, name, pA, pB, pC, pD, pCLRQ, pLOADQ, pCLK, pENABLEP, pENABLET)
+// usage : TTL_74161(name, pA, pB, pC, pD, pCLRQ, pLOADQ, pCLK, pENABLEP, pENABLET)
+// auto connect: VCC, GND
+#define TTL_74161(...) \
+ NET_REGISTER_DEVEXT(TTL_74161, __VA_ARGS__)
-#define TTL_74161_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_74161_DIP, name)
+// usage : TTL_74161_DIP(name)
+#define TTL_74161_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_74161_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_9316.cpp
// ---------------------------------------------------------------------
-#define TTL_74163(name, pCLK, pENP, pENT, pCLRQ, pLOADQ, pA, pB, pC, pD)\
- NET_REGISTER_DEVEXT(TTL_74163, name, pCLK, pENP, pENT, pCLRQ, pLOADQ, pA, pB, pC, pD)
+// usage : TTL_74163(name, pCLK, pENP, pENT, pCLRQ, pLOADQ, pA, pB, pC, pD)
+// auto connect: VCC, GND
+#define TTL_74163(...) \
+ NET_REGISTER_DEVEXT(TTL_74163, __VA_ARGS__)
-#define TTL_74163_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_74163_DIP, name)
+// usage : TTL_74163_DIP(name)
+#define TTL_74163_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_74163_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_74164.cpp
// ---------------------------------------------------------------------
-#define TTL_74164(name, pA, pB, pCLRQ, pCLK) \
- NET_REGISTER_DEVEXT(TTL_74164, name, pA, pB, pCLRQ, pCLK)
+// usage : TTL_74164(name, pA, pB, pCLRQ, pCLK)
+// auto connect: VCC, GND
+#define TTL_74164(...) \
+ NET_REGISTER_DEVEXT(TTL_74164, __VA_ARGS__)
-#define TTL_74164_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_74164_DIP, name)
+// usage : TTL_74164_DIP(name)
+#define TTL_74164_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_74164_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_74165.cpp
// ---------------------------------------------------------------------
-#define TTL_74165(name, pCLK, pCLKINH, pSH_LDQ, pSER, pA, pB, pC, pD, pE, pF, pG, pH)\
- NET_REGISTER_DEVEXT(TTL_74165, name, pCLK, pCLKINH, pSH_LDQ, pSER, pA, pB, pC, pD, pE, pF, pG, pH)
+// usage : TTL_74165(name, pCLK, pCLKINH, pSH_LDQ, pSER, pA, pB, pC, pD, pE, pF, pG, pH)
+// auto connect: VCC, GND
+#define TTL_74165(...) \
+ NET_REGISTER_DEVEXT(TTL_74165, __VA_ARGS__)
-#define TTL_74165_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_74165_DIP, name)
+// usage : TTL_74165_DIP(name)
+#define TTL_74165_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_74165_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_74166.cpp
// ---------------------------------------------------------------------
-#define TTL_74166(name, pCLK, pCLKINH, pSH_LDQ, pSER, pA, pB, pC, pD, pE, pF, pG, pH, pCLRQ)\
- NET_REGISTER_DEVEXT(TTL_74166, name, pCLK, pCLKINH, pSH_LDQ, pSER, pA, pB, pC, pD, pE, pF, pG, pH, pCLRQ)
+// usage : TTL_74166(name, pCLK, pCLKINH, pSH_LDQ, pSER, pA, pB, pC, pD, pE, pF, pG, pH, pCLRQ)
+// auto connect: VCC, GND
+#define TTL_74166(...) \
+ NET_REGISTER_DEVEXT(TTL_74166, __VA_ARGS__)
-#define TTL_74166_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_74166_DIP, name)
+// usage : TTL_74166_DIP(name)
+#define TTL_74166_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_74166_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_74174.cpp
// ---------------------------------------------------------------------
-#define TTL_74174(name, pCLK, pD1, pD2, pD3, pD4, pD5, pD6, pCLRQ) \
- NET_REGISTER_DEVEXT(TTL_74174, name, pCLK, pD1, pD2, pD3, pD4, pD5, pD6, pCLRQ)
+// usage : TTL_74174(name, pCLK, pD1, pD2, pD3, pD4, pD5, pD6, pCLRQ)
+// auto connect: VCC, GND
+#define TTL_74174(...) \
+ NET_REGISTER_DEVEXT(TTL_74174, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_74175.cpp
// ---------------------------------------------------------------------
-#define TTL_74175(name, pCLK, pD1, pD2, pD3, pD4, pCLRQ) \
- NET_REGISTER_DEVEXT(TTL_74175, name, pCLK, pD1, pD2, pD3, pD4, pCLRQ)
+// usage : TTL_74175(name, pCLK, pD1, pD2, pD3, pD4, pCLRQ)
+// auto connect: VCC, GND
+#define TTL_74175(...) \
+ NET_REGISTER_DEVEXT(TTL_74175, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_74192.cpp
// ---------------------------------------------------------------------
-#define TTL_74192(name, pA, pB, pC, pD, pCLEAR, pLOADQ, pCU, pCD) \
- NET_REGISTER_DEVEXT(TTL_74192, name, pA, pB, pC, pD, pCLEAR, pLOADQ, pCU, pCD)
+// usage : TTL_74192(name, pA, pB, pC, pD, pCLEAR, pLOADQ, pCU, pCD)
+// auto connect: VCC, GND
+#define TTL_74192(...) \
+ NET_REGISTER_DEVEXT(TTL_74192, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_74193.cpp
// ---------------------------------------------------------------------
-#define TTL_74193(name, pA, pB, pC, pD, pCLEAR, pLOADQ, pCU, pCD) \
- NET_REGISTER_DEVEXT(TTL_74193, name, pA, pB, pC, pD, pCLEAR, pLOADQ, pCU, pCD)
+// usage : TTL_74193(name, pA, pB, pC, pD, pCLEAR, pLOADQ, pCU, pCD)
+// auto connect: VCC, GND
+#define TTL_74193(...) \
+ NET_REGISTER_DEVEXT(TTL_74193, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_74194.cpp
// ---------------------------------------------------------------------
-#define TTL_74194(name, pCLK, pS0, pS1, pSRIN, pA, pB, pC, pD, pSLIN, pCLRQ)\
- NET_REGISTER_DEVEXT(TTL_74194, name, pCLK, pS0, pS1, pSRIN, pA, pB, pC, pD, pSLIN, pCLRQ)
+// usage : TTL_74194(name, pCLK, pS0, pS1, pSRIN, pA, pB, pC, pD, pSLIN, pCLRQ)
+// auto connect: VCC, GND
+#define TTL_74194(...) \
+ NET_REGISTER_DEVEXT(TTL_74194, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_74365.cpp
// ---------------------------------------------------------------------
-#define TTL_74365(name, pG1Q, pG2Q, pA1, pA2, pA3, pA4, pA5, pA6) \
- NET_REGISTER_DEVEXT(TTL_74365, name, pG1Q, pG2Q, pA1, pA2, pA3, pA4, pA5, pA6)
+// usage : TTL_74365(name, pG1Q, pG2Q, pA1, pA2, pA3, pA4, pA5, pA6)
+// auto connect: VCC, GND
+#define TTL_74365(...) \
+ NET_REGISTER_DEVEXT(TTL_74365, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_74377.cpp
// ---------------------------------------------------------------------
-#define TTL_74377_GATE(name) \
- NET_REGISTER_DEVEXT(TTL_74377_GATE, name)
+// usage : TTL_74377_GATE(name)
+#define TTL_74377_GATE(...) \
+ NET_REGISTER_DEVEXT(TTL_74377_GATE, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_74393.cpp
// ---------------------------------------------------------------------
-#define TTL_74393(name, pCP, pMR) \
- NET_REGISTER_DEVEXT(TTL_74393, name, pCP, pMR)
+// usage : TTL_74393(name, pCP, pMR)
+// auto connect: VCC, GND
+#define TTL_74393(...) \
+ NET_REGISTER_DEVEXT(TTL_74393, __VA_ARGS__)
-#define TTL_74393_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_74393_DIP, name)
+// usage : TTL_74393_DIP(name)
+#define TTL_74393_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_74393_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_74ls629.cpp
// ---------------------------------------------------------------------
-#define SN74LS629(name, pCAP) \
- NET_REGISTER_DEVEXT(SN74LS629, name, pCAP)
+// usage : SN74LS629(name, pCAP)
+#define SN74LS629(...) \
+ NET_REGISTER_DEVEXT(SN74LS629, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_82S16.cpp
// ---------------------------------------------------------------------
-#define TTL_82S16(name) \
- NET_REGISTER_DEVEXT(TTL_82S16, name)
+// usage : TTL_82S16(name)
+#define TTL_82S16(...) \
+ NET_REGISTER_DEVEXT(TTL_82S16, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_82S115.cpp
// ---------------------------------------------------------------------
-#define PROM_82S115(name, pCE1Q, pCE2, pA0, pA1, pA2, pA3, pA4, pA5, pA6, pA7, pA8, pSTROBE)\
- NET_REGISTER_DEVEXT(PROM_82S115, name, pCE1Q, pCE2, pA0, pA1, pA2, pA3, pA4, pA5, pA6, pA7, pA8, pSTROBE)
+// usage : PROM_82S115(name, pCE1Q, pCE2, pA0, pA1, pA2, pA3, pA4, pA5, pA6, pA7, pA8, pSTROBE)
+// auto connect: VCC, GND
+#define PROM_82S115(...) \
+ NET_REGISTER_DEVEXT(PROM_82S115, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_82S123.cpp
// ---------------------------------------------------------------------
-#define PROM_82S123(name, pCEQ, pA0, pA1, pA2, pA3, pA4) \
- NET_REGISTER_DEVEXT(PROM_82S123, name, pCEQ, pA0, pA1, pA2, pA3, pA4)
+// usage : PROM_82S123(name, pCEQ, pA0, pA1, pA2, pA3, pA4)
+// auto connect: VCC, GND
+#define PROM_82S123(...) \
+ NET_REGISTER_DEVEXT(PROM_82S123, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_82S126.cpp
// ---------------------------------------------------------------------
-#define PROM_82S126(name, pCE1Q, pCE2Q, pA0, pA1, pA2, pA3, pA4, pA5, pA6, pA7)\
- NET_REGISTER_DEVEXT(PROM_82S126, name, pCE1Q, pCE2Q, pA0, pA1, pA2, pA3, pA4, pA5, pA6, pA7)
+// usage : PROM_82S126(name, pCE1Q, pCE2Q, pA0, pA1, pA2, pA3, pA4, pA5, pA6, pA7)
+// auto connect: VCC, GND
+#define PROM_82S126(...) \
+ NET_REGISTER_DEVEXT(PROM_82S126, __VA_ARGS__)
+
+// usage : PROM_74S287(name, pCE1Q, pCE2Q, pA0, pA1, pA2, pA3, pA4, pA5, pA6, pA7)
+// auto connect: VCC, GND
+#define PROM_74S287(...) \
+ NET_REGISTER_DEVEXT(PROM_74S287, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_9310.cpp
// ---------------------------------------------------------------------
-#define TTL_9310(name, pCLK, pENP, pENT, pCLRQ, pLOADQ, pA, pB, pC, pD)\
- NET_REGISTER_DEVEXT(TTL_9310, name, pCLK, pENP, pENT, pCLRQ, pLOADQ, pA, pB, pC, pD)
+// usage : TTL_9310(name, pCLK, pENP, pENT, pCLRQ, pLOADQ, pA, pB, pC, pD)
+// auto connect: VCC, GND
+#define TTL_9310(...) \
+ NET_REGISTER_DEVEXT(TTL_9310, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_dm9314.cpp
// ---------------------------------------------------------------------
-#define TTL_9314(name, pEQ, pMRQ, pS0Q, pS1Q, pS2Q, pS3Q, pD0, pD1, pD2, pD3)\
- NET_REGISTER_DEVEXT(TTL_9314, name, pEQ, pMRQ, pS0Q, pS1Q, pS2Q, pS3Q, pD0, pD1, pD2, pD3)
+// usage : TTL_9314(name, pEQ, pMRQ, pS0Q, pS1Q, pS2Q, pS3Q, pD0, pD1, pD2, pD3)
+// auto connect: VCC, GND
+#define TTL_9314(...) \
+ NET_REGISTER_DEVEXT(TTL_9314, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_9316.cpp
// ---------------------------------------------------------------------
-#define TTL_9316(name, pCLK, pENP, pENT, pCLRQ, pLOADQ, pA, pB, pC, pD)\
- NET_REGISTER_DEVEXT(TTL_9316, name, pCLK, pENP, pENT, pCLRQ, pLOADQ, pA, pB, pC, pD)
+// usage : TTL_9316(name, pCLK, pENP, pENT, pCLRQ, pLOADQ, pA, pB, pC, pD)
+// auto connect: VCC, GND
+#define TTL_9316(...) \
+ NET_REGISTER_DEVEXT(TTL_9316, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_9322.cpp
// ---------------------------------------------------------------------
-#define TTL_9322(name, pSELECT, pA1, pB1, pA2, pB2, pA3, pB3, pA4, pB4, pSTROBE)\
- NET_REGISTER_DEVEXT(TTL_9322, name, pSELECT, pA1, pB1, pA2, pB2, pA3, pB3, pA4, pB4, pSTROBE)
+// usage : TTL_9322(name, pSELECT, pA1, pB1, pA2, pB2, pA3, pB3, pA4, pB4, pSTROBE)
+// auto connect: VCC, GND
+#define TTL_9322(...) \
+ NET_REGISTER_DEVEXT(TTL_9322, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_dm9334.cpp
// ---------------------------------------------------------------------
-#define TTL_9334(name, pCQ, pEQ, pD, pA0, pA1, pA2) \
- NET_REGISTER_DEVEXT(TTL_9334, name, pCQ, pEQ, pD, pA0, pA1, pA2)
+// usage : TTL_9334(name, pCQ, pEQ, pD, pA0, pA1, pA2)
+// auto connect: VCC, GND
+#define TTL_9334(...) \
+ NET_REGISTER_DEVEXT(TTL_9334, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_am2847.cpp
// ---------------------------------------------------------------------
-#define TTL_AM2847(name, pCP, pINA, pINB, pINC, pIND, pRCA, pRCB, pRCC, pRCD)\
- NET_REGISTER_DEVEXT(TTL_AM2847, name, pCP, pINA, pINB, pINC, pIND, pRCA, pRCB, pRCC, pRCD)
+// usage : TTL_AM2847(name, pCP, pINA, pINB, pINC, pIND, pRCA, pRCB, pRCC, pRCD)
+// auto connect: VSS, VDD
+#define TTL_AM2847(...) \
+ NET_REGISTER_DEVEXT(TTL_AM2847, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_4006.cpp
// ---------------------------------------------------------------------
-#define CD4006(name, pCLOCK, pD1, pD2, pD3, pD4, pD1P4, pD1P4S, pD2P4, pD2P5, pD3P4, pD4P4, pD3P5)\
- NET_REGISTER_DEVEXT(CD4006, name, pCLOCK, pD1, pD2, pD3, pD4, pD1P4, pD1P4S, pD2P4, pD2P5, pD3P4, pD4P4, pD3P5)
+// usage : CD4006(name, pCLOCK, pD1, pD2, pD3, pD4, pD1P4, pD1P4S, pD2P4, pD2P5, pD3P4, pD4P4, pD3P5)
+// auto connect: VCC, GND
+#define CD4006(...) \
+ NET_REGISTER_DEVEXT(CD4006, __VA_ARGS__)
-#define CD4006_DIP(name) \
- NET_REGISTER_DEVEXT(CD4006_DIP, name)
+// usage : CD4006_DIP(name)
+#define CD4006_DIP(...) \
+ NET_REGISTER_DEVEXT(CD4006_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_4020.cpp
// ---------------------------------------------------------------------
-#define CD4020_WI(name, pIP, pRESET, pVDD, pVSS) \
- NET_REGISTER_DEVEXT(CD4020_WI, name, pIP, pRESET, pVDD, pVSS)
+// usage : CD4020_WI(name, pIP, pRESET, pVDD, pVSS)
+#define CD4020_WI(...) \
+ NET_REGISTER_DEVEXT(CD4020_WI, __VA_ARGS__)
-#define CD4020(name) \
- NET_REGISTER_DEVEXT(CD4020, name)
+// usage : CD4020(name)
+#define CD4020(...) \
+ NET_REGISTER_DEVEXT(CD4020, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_4066.cpp
// ---------------------------------------------------------------------
-#define CD4066_GATE(name) \
- NET_REGISTER_DEVEXT(CD4066_GATE, name)
+// usage : CD4066_GATE(name)
+#define CD4066_GATE(...) \
+ NET_REGISTER_DEVEXT(CD4066_GATE, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_4316.cpp
// ---------------------------------------------------------------------
-#define CD4316_GATE(name) \
- NET_REGISTER_DEVEXT(CD4316_GATE, name)
+// usage : CD4316_GATE(name)
+#define CD4316_GATE(...) \
+ NET_REGISTER_DEVEXT(CD4316_GATE, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_74123.cpp
// ---------------------------------------------------------------------
-#define CD4538_DIP(name) \
- NET_REGISTER_DEVEXT(CD4538_DIP, name)
+// usage : CD4538_DIP(name)
+#define CD4538_DIP(...) \
+ NET_REGISTER_DEVEXT(CD4538_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_schmitt.cpp
// ---------------------------------------------------------------------
-#define SCHMITT_TRIGGER(name, pSTMODEL) \
- NET_REGISTER_DEVEXT(SCHMITT_TRIGGER, name, pSTMODEL)
+// usage : SCHMITT_TRIGGER(name, pSTMODEL)
+#define SCHMITT_TRIGGER(...) \
+ NET_REGISTER_DEVEXT(SCHMITT_TRIGGER, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_ne555.cpp
// ---------------------------------------------------------------------
-#define NE555(name) \
- NET_REGISTER_DEVEXT(NE555, name)
+// usage : NE555(name)
+#define NE555(...) \
+ NET_REGISTER_DEVEXT(NE555, __VA_ARGS__)
-#define NE555_DIP(name) \
- NET_REGISTER_DEVEXT(NE555_DIP, name)
+// usage : NE555_DIP(name)
+#define NE555_DIP(...) \
+ NET_REGISTER_DEVEXT(NE555_DIP, __VA_ARGS__)
-#define MC1455P(name) \
- NET_REGISTER_DEVEXT(MC1455P, name)
+// usage : MC1455P(name)
+#define MC1455P(...) \
+ NET_REGISTER_DEVEXT(MC1455P, __VA_ARGS__)
-#define MC1455P_DIP(name) \
- NET_REGISTER_DEVEXT(MC1455P_DIP, name)
+// usage : MC1455P_DIP(name)
+#define MC1455P_DIP(...) \
+ NET_REGISTER_DEVEXT(MC1455P_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_tms4800.cpp
// ---------------------------------------------------------------------
-#define ROM_TMS4800(name, pAR, pOE1, pOE2, pA0, pA1, pA2, pA3, pA4, pA5, pA6, pA7, pA8, pA9, pA10)\
- NET_REGISTER_DEVEXT(ROM_TMS4800, name, pAR, pOE1, pOE2, pA0, pA1, pA2, pA3, pA4, pA5, pA6, pA7, pA8, pA9, pA10)
+// usage : ROM_TMS4800(name, pAR, pOE1, pOE2, pA0, pA1, pA2, pA3, pA4, pA5, pA6, pA7, pA8, pA9, pA10)
+// auto connect: VCC, GND
+#define ROM_TMS4800(...) \
+ NET_REGISTER_DEVEXT(ROM_TMS4800, __VA_ARGS__)
-#define ROM_TMS4800_DIP(name) \
- NET_REGISTER_DEVEXT(ROM_TMS4800_DIP, name)
+// usage : ROM_TMS4800_DIP(name)
+#define ROM_TMS4800_DIP(...) \
+ NET_REGISTER_DEVEXT(ROM_TMS4800_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_r2r_dac.cpp
// ---------------------------------------------------------------------
-#define R2R_DAC(name, pVIN, pR, pN) \
- NET_REGISTER_DEVEXT(R2R_DAC, name, pVIN, pR, pN)
+// usage : R2R_DAC(name, pVIN, pR, pN)
+#define R2R_DAC(...) \
+ NET_REGISTER_DEVEXT(R2R_DAC, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_tristate.cpp
// ---------------------------------------------------------------------
-#define TTL_TRISTATE(name, pCEQ1, pD1, pCEQ2, pD2) \
- NET_REGISTER_DEVEXT(TTL_TRISTATE, name, pCEQ1, pD1, pCEQ2, pD2)
+// usage : TTL_TRISTATE(name, pCEQ1, pD1, pCEQ2, pD2)
+#define TTL_TRISTATE(...) \
+ NET_REGISTER_DEVEXT(TTL_TRISTATE, __VA_ARGS__)
-#define TTL_TRISTATE3(name) \
- NET_REGISTER_DEVEXT(TTL_TRISTATE3, name)
+// usage : TTL_TRISTATE3(name)
+#define TTL_TRISTATE3(...) \
+ NET_REGISTER_DEVEXT(TTL_TRISTATE3, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_74174.cpp
// ---------------------------------------------------------------------
-#define TTL_74174_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_74174_DIP, name)
+// usage : TTL_74174_DIP(name)
+#define TTL_74174_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_74174_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_74175.cpp
// ---------------------------------------------------------------------
-#define TTL_74175_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_74175_DIP, name)
+// usage : TTL_74175_DIP(name)
+#define TTL_74175_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_74175_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_74192.cpp
// ---------------------------------------------------------------------
-#define TTL_74192_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_74192_DIP, name)
+// usage : TTL_74192_DIP(name)
+#define TTL_74192_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_74192_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_74193.cpp
// ---------------------------------------------------------------------
-#define TTL_74193_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_74193_DIP, name)
+// usage : TTL_74193_DIP(name)
+#define TTL_74193_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_74193_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_74194.cpp
// ---------------------------------------------------------------------
-#define TTL_74194_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_74194_DIP, name)
+// usage : TTL_74194_DIP(name)
+#define TTL_74194_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_74194_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_74365.cpp
// ---------------------------------------------------------------------
-#define TTL_74365_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_74365_DIP, name)
+// usage : TTL_74365_DIP(name)
+#define TTL_74365_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_74365_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_82S16.cpp
// ---------------------------------------------------------------------
-#define TTL_82S16_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_82S16_DIP, name)
+// 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
// ---------------------------------------------------------------------
-#define PROM_82S115_DIP(name) \
- NET_REGISTER_DEVEXT(PROM_82S115_DIP, name)
+// usage : PROM_82S115_DIP(name)
+#define PROM_82S115_DIP(...) \
+ NET_REGISTER_DEVEXT(PROM_82S115_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_82S123.cpp
// ---------------------------------------------------------------------
-#define PROM_82S123_DIP(name) \
- NET_REGISTER_DEVEXT(PROM_82S123_DIP, name)
-
-// ---------------------------------------------------------------------
-// Source: src/lib/netlist/devices/nld_82S126.cpp
-// ---------------------------------------------------------------------
-#define PROM_82S126_DIP(name) \
- NET_REGISTER_DEVEXT(PROM_82S126_DIP, name)
+// usage : PROM_82S123_DIP(name)
+#define PROM_82S123_DIP(...) \
+ NET_REGISTER_DEVEXT(PROM_82S123_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_74123.cpp
// ---------------------------------------------------------------------
-#define TTL_9602_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_9602_DIP, name)
+// usage : TTL_9602_DIP(name)
+#define TTL_9602_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_9602_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_9310.cpp
// ---------------------------------------------------------------------
-#define TTL_9310_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_9310_DIP, name)
+// usage : TTL_9310_DIP(name)
+#define TTL_9310_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_9310_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_dm9314.cpp
// ---------------------------------------------------------------------
-#define TTL_9314_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_9314_DIP, name)
+// usage : TTL_9314_DIP(name)
+#define TTL_9314_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_9314_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_9316.cpp
// ---------------------------------------------------------------------
-#define TTL_9316_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_9316_DIP, name)
+// usage : TTL_9316_DIP(name)
+#define TTL_9316_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_9316_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_9322.cpp
// ---------------------------------------------------------------------
-#define TTL_9322_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_9322_DIP, name)
+// usage : TTL_9322_DIP(name)
+#define TTL_9322_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_9322_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_dm9334.cpp
// ---------------------------------------------------------------------
-#define TTL_9334_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_9334_DIP, name)
+// usage : TTL_9334_DIP(name)
+#define TTL_9334_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_9334_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_am2847.cpp
// ---------------------------------------------------------------------
-#define TTL_AM2847_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_AM2847_DIP, name)
+// usage : TTL_AM2847_DIP(name)
+#define TTL_AM2847_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_AM2847_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/devices/nld_74ls629.cpp
// ---------------------------------------------------------------------
-#define SN74LS629_DIP(name, p1_CAP1, p2_CAP2) \
- NET_REGISTER_DEVEXT(SN74LS629_DIP, name, p1_CAP1, p2_CAP2)
+// 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
// ---------------------------------------------------------------------
-#define MM5837_DIP(name) \
- NET_REGISTER_DEVEXT(MM5837_DIP, name)
+// usage : MM5837_DIP(name)
+#define MM5837_DIP(...) \
+ NET_REGISTER_DEVEXT(MM5837_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/macro/nlm_ttl74xx.cpp
// ---------------------------------------------------------------------
-#define TTL_7400_GATE(name) \
- NET_REGISTER_DEVEXT(TTL_7400_GATE, name)
-
-#define TTL_7400_NAND(name, pA, pB) \
- NET_REGISTER_DEVEXT(TTL_7400_NAND, name, pA, pB)
-
-#define TTL_7402_GATE(name) \
- NET_REGISTER_DEVEXT(TTL_7402_GATE, name)
-
-#define TTL_7402_NOR(name, pA, pB) \
- NET_REGISTER_DEVEXT(TTL_7402_NOR, name, pA, pB)
-
-#define TTL_7404_GATE(name) \
- NET_REGISTER_DEVEXT(TTL_7404_GATE, name)
-
-#define TTL_7404_INVERT(name, pA) \
- NET_REGISTER_DEVEXT(TTL_7404_INVERT, name, pA)
-
-#define TTL_7406_GATE(name) \
- NET_REGISTER_DEVEXT(TTL_7406_GATE, name)
-
-#define TTL_7408_GATE(name) \
- NET_REGISTER_DEVEXT(TTL_7408_GATE, name)
-
-#define TTL_7408_AND(name, pA, pB) \
- NET_REGISTER_DEVEXT(TTL_7408_AND, name, pA, pB)
-
-#define TTL_7410_NAND(name, pA, pB, pC) \
- NET_REGISTER_DEVEXT(TTL_7410_NAND, name, pA, pB, pC)
-
-#define TTL_7410_GATE(name) \
- NET_REGISTER_DEVEXT(TTL_7410_GATE, name)
-
-#define TTL_7411_AND(name, pA, pB, pC) \
- NET_REGISTER_DEVEXT(TTL_7411_AND, name, pA, pB, pC)
-
-#define TTL_7411_GATE(name) \
- NET_REGISTER_DEVEXT(TTL_7411_GATE, name)
-
-#define TTL_7416_GATE(name) \
- NET_REGISTER_DEVEXT(TTL_7416_GATE, name)
-
-#define TTL_7420_GATE(name) \
- NET_REGISTER_DEVEXT(TTL_7420_GATE, name)
-
-#define TTL_7420_NAND(name, pA, pB, pC, pD) \
- NET_REGISTER_DEVEXT(TTL_7420_NAND, name, pA, pB, pC, pD)
-
-#define TTL_7425_GATE(name) \
- NET_REGISTER_DEVEXT(TTL_7425_GATE, name)
-
-#define TTL_7425_NOR(name, pA, pB, pC, pD) \
- NET_REGISTER_DEVEXT(TTL_7425_NOR, name, pA, pB, pC, pD)
+// usage : TTL_7400_GATE(name)
+#define TTL_7400_GATE(...) \
+ NET_REGISTER_DEVEXT(TTL_7400_GATE, __VA_ARGS__)
+
+// usage : TTL_7400_NAND(name, pA, pB)
+// auto connect: VCC, GND
+#define TTL_7400_NAND(...) \
+ NET_REGISTER_DEVEXT(TTL_7400_NAND, __VA_ARGS__)
+
+// usage : TTL_7402_GATE(name)
+#define TTL_7402_GATE(...) \
+ NET_REGISTER_DEVEXT(TTL_7402_GATE, __VA_ARGS__)
+
+// usage : TTL_7402_NOR(name, pA, pB)
+// auto connect: VCC, GND
+#define TTL_7402_NOR(...) \
+ NET_REGISTER_DEVEXT(TTL_7402_NOR, __VA_ARGS__)
+
+// usage : TTL_7404_GATE(name)
+#define TTL_7404_GATE(...) \
+ NET_REGISTER_DEVEXT(TTL_7404_GATE, __VA_ARGS__)
+
+// usage : TTL_7404_INVERT(name, pA)
+// auto connect: VCC, GND
+#define TTL_7404_INVERT(...) \
+ NET_REGISTER_DEVEXT(TTL_7404_INVERT, __VA_ARGS__)
+
+// usage : TTL_7406_GATE(name)
+#define TTL_7406_GATE(...) \
+ NET_REGISTER_DEVEXT(TTL_7406_GATE, __VA_ARGS__)
+
+// usage : TTL_7408_GATE(name)
+#define TTL_7408_GATE(...) \
+ NET_REGISTER_DEVEXT(TTL_7408_GATE, __VA_ARGS__)
+
+// usage : TTL_7408_AND(name, pA, pB)
+// auto connect: VCC, GND
+#define TTL_7408_AND(...) \
+ NET_REGISTER_DEVEXT(TTL_7408_AND, __VA_ARGS__)
+
+// usage : TTL_7410_NAND(name, pA, pB, pC)
+// auto connect: VCC, GND
+#define TTL_7410_NAND(...) \
+ NET_REGISTER_DEVEXT(TTL_7410_NAND, __VA_ARGS__)
+
+// usage : TTL_7410_GATE(name)
+#define TTL_7410_GATE(...) \
+ NET_REGISTER_DEVEXT(TTL_7410_GATE, __VA_ARGS__)
+
+// usage : TTL_7411_AND(name, pA, pB, pC)
+// auto connect: VCC, GND
+#define TTL_7411_AND(...) \
+ NET_REGISTER_DEVEXT(TTL_7411_AND, __VA_ARGS__)
+
+// usage : TTL_7411_GATE(name)
+#define TTL_7411_GATE(...) \
+ NET_REGISTER_DEVEXT(TTL_7411_GATE, __VA_ARGS__)
+
+// usage : TTL_7416_GATE(name)
+#define TTL_7416_GATE(...) \
+ NET_REGISTER_DEVEXT(TTL_7416_GATE, __VA_ARGS__)
+
+// usage : TTL_7420_GATE(name)
+#define TTL_7420_GATE(...) \
+ NET_REGISTER_DEVEXT(TTL_7420_GATE, __VA_ARGS__)
+
+// usage : TTL_7420_NAND(name, pA, pB, pC, pD)
+// auto connect: VCC, GND
+#define TTL_7420_NAND(...) \
+ NET_REGISTER_DEVEXT(TTL_7420_NAND, __VA_ARGS__)
+
+// usage : TTL_7425_GATE(name)
+#define TTL_7425_GATE(...) \
+ NET_REGISTER_DEVEXT(TTL_7425_GATE, __VA_ARGS__)
+
+// usage : TTL_7425_NOR(name, pA, pB, pC, pD)
+// auto connect: VCC, GND
+#define TTL_7425_NOR(...) \
+ NET_REGISTER_DEVEXT(TTL_7425_NOR, __VA_ARGS__)
+
+// usage : TTL_7427_GATE(name)
+#define TTL_7427_GATE(...) \
+ NET_REGISTER_DEVEXT(TTL_7427_GATE, __VA_ARGS__)
+
+// usage : TTL_7427_NOR(name, pA, pB, pC)
+// auto connect: VCC, GND
+#define TTL_7427_NOR(...) \
+ NET_REGISTER_DEVEXT(TTL_7427_NOR, __VA_ARGS__)
+
+// usage : TTL_7430_GATE(name)
+#define TTL_7430_GATE(...) \
+ NET_REGISTER_DEVEXT(TTL_7430_GATE, __VA_ARGS__)
+
+// usage : TTL_7430_NAND(name, pA, pB, pC, pD, pE, pF, pG, pH)
+// auto connect: VCC, GND
+#define TTL_7430_NAND(...) \
+ NET_REGISTER_DEVEXT(TTL_7430_NAND, __VA_ARGS__)
+
+// usage : TTL_7432_GATE(name)
+#define TTL_7432_GATE(...) \
+ NET_REGISTER_DEVEXT(TTL_7432_GATE, __VA_ARGS__)
+
+// usage : TTL_7432_OR(name, pA, pB)
+// auto connect: VCC, GND
+#define TTL_7432_OR(...) \
+ NET_REGISTER_DEVEXT(TTL_7432_OR, __VA_ARGS__)
+
+// usage : TTL_7437_GATE(name)
+#define TTL_7437_GATE(...) \
+ NET_REGISTER_DEVEXT(TTL_7437_GATE, __VA_ARGS__)
+
+// usage : TTL_7437_NAND(name, pA, pB)
+#define TTL_7437_NAND(...) \
+ NET_REGISTER_DEVEXT(TTL_7437_NAND, __VA_ARGS__)
+
+// usage : TTL_7486_GATE(name)
+#define TTL_7486_GATE(...) \
+ NET_REGISTER_DEVEXT(TTL_7486_GATE, __VA_ARGS__)
+
+// usage : TTL_7486_XOR(name, pA, pB)
+// auto connect: VCC, GND
+#define TTL_7486_XOR(...) \
+ NET_REGISTER_DEVEXT(TTL_7486_XOR, __VA_ARGS__)
+
+// usage : TTL_74155A_GATE(name)
+#define TTL_74155A_GATE(...) \
+ NET_REGISTER_DEVEXT(TTL_74155A_GATE, __VA_ARGS__)
+
+// usage : TTL_74155B_GATE(name)
+#define TTL_74155B_GATE(...) \
+ NET_REGISTER_DEVEXT(TTL_74155B_GATE, __VA_ARGS__)
+
+// usage : TTL_74156A_GATE(name)
+#define TTL_74156A_GATE(...) \
+ NET_REGISTER_DEVEXT(TTL_74156A_GATE, __VA_ARGS__)
+
+// usage : TTL_74156B_GATE(name)
+#define TTL_74156B_GATE(...) \
+ NET_REGISTER_DEVEXT(TTL_74156B_GATE, __VA_ARGS__)
+
+// usage : TTL_74260_GATE(name)
+#define TTL_74260_GATE(...) \
+ NET_REGISTER_DEVEXT(TTL_74260_GATE, __VA_ARGS__)
+
+// usage : TTL_74260_NOR(name, pA, pB, pC, pD, pE)
+// auto connect: VCC, GND
+#define TTL_74260_NOR(...) \
+ NET_REGISTER_DEVEXT(TTL_74260_NOR, __VA_ARGS__)
+
+// usage : TTL_74279A(name)
+#define TTL_74279A(...) \
+ NET_REGISTER_DEVEXT(TTL_74279A, __VA_ARGS__)
+
+// usage : TTL_74279B(name)
+#define TTL_74279B(...) \
+ NET_REGISTER_DEVEXT(TTL_74279B, __VA_ARGS__)
+
+// usage : DM9312(name, pA, pB, pC, pG, pD0, pD1, pD2, pD3, pD4, pD5, pD6, pD7)
+// auto connect: VCC, GND
+#define DM9312(...) \
+ NET_REGISTER_DEVEXT(DM9312, __VA_ARGS__)
+
+// usage : TTL_7400_DIP(name)
+#define TTL_7400_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7400_DIP, __VA_ARGS__)
+
+// usage : TTL_7402_DIP(name)
+#define TTL_7402_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7402_DIP, __VA_ARGS__)
+
+// usage : TTL_7404_DIP(name)
+#define TTL_7404_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7404_DIP, __VA_ARGS__)
-#define TTL_7427_GATE(name) \
- NET_REGISTER_DEVEXT(TTL_7427_GATE, name)
+// usage : TTL_7406_DIP(name)
+#define TTL_7406_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7406_DIP, __VA_ARGS__)
-#define TTL_7427_NOR(name, pA, pB, pC) \
- NET_REGISTER_DEVEXT(TTL_7427_NOR, name, pA, pB, pC)
+// usage : TTL_7408_DIP(name)
+#define TTL_7408_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7408_DIP, __VA_ARGS__)
-#define TTL_7430_GATE(name) \
- NET_REGISTER_DEVEXT(TTL_7430_GATE, name)
+// usage : TTL_7410_DIP(name)
+#define TTL_7410_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7410_DIP, __VA_ARGS__)
-#define TTL_7430_NAND(name, pA, pB, pC, pD, pE, pF, pG, pH) \
- NET_REGISTER_DEVEXT(TTL_7430_NAND, name, pA, pB, pC, pD, pE, pF, pG, pH)
+// usage : TTL_7411_DIP(name)
+#define TTL_7411_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7411_DIP, __VA_ARGS__)
-#define TTL_7432_GATE(name) \
- NET_REGISTER_DEVEXT(TTL_7432_GATE, name)
+// usage : TTL_7414_GATE(name)
+#define TTL_7414_GATE(...) \
+ NET_REGISTER_DEVEXT(TTL_7414_GATE, __VA_ARGS__)
-#define TTL_7432_OR(name, pA, pB) \
- NET_REGISTER_DEVEXT(TTL_7432_OR, name, pA, pB)
+// usage : TTL_74LS14_GATE(name)
+#define TTL_74LS14_GATE(...) \
+ NET_REGISTER_DEVEXT(TTL_74LS14_GATE, __VA_ARGS__)
-#define TTL_7437_GATE(name) \
- NET_REGISTER_DEVEXT(TTL_7437_GATE, name)
+// usage : TTL_7414_DIP(name)
+#define TTL_7414_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7414_DIP, __VA_ARGS__)
-#define TTL_7437_NAND(name, pA, pB) \
- NET_REGISTER_DEVEXT(TTL_7437_NAND, name, pA, pB)
+// usage : TTL_74LS14_DIP(name)
+#define TTL_74LS14_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_74LS14_DIP, __VA_ARGS__)
-#define TTL_7486_GATE(name) \
- NET_REGISTER_DEVEXT(TTL_7486_GATE, name)
+// usage : TTL_7416_DIP(name)
+#define TTL_7416_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7416_DIP, __VA_ARGS__)
-#define TTL_7486_XOR(name, pA, pB) \
- NET_REGISTER_DEVEXT(TTL_7486_XOR, name, pA, pB)
+// usage : TTL_7420_DIP(name)
+#define TTL_7420_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7420_DIP, __VA_ARGS__)
-#define TTL_74155A_GATE(name) \
- NET_REGISTER_DEVEXT(TTL_74155A_GATE, name)
+// usage : TTL_7425_DIP(name)
+#define TTL_7425_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7425_DIP, __VA_ARGS__)
-#define TTL_74155B_GATE(name) \
- NET_REGISTER_DEVEXT(TTL_74155B_GATE, name)
+// usage : TTL_7427_DIP(name)
+#define TTL_7427_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7427_DIP, __VA_ARGS__)
-#define TTL_74156A_GATE(name) \
- NET_REGISTER_DEVEXT(TTL_74156A_GATE, name)
+// usage : TTL_7430_DIP(name)
+#define TTL_7430_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7430_DIP, __VA_ARGS__)
-#define TTL_74156B_GATE(name) \
- NET_REGISTER_DEVEXT(TTL_74156B_GATE, name)
+// usage : TTL_7432_DIP(name)
+#define TTL_7432_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7432_DIP, __VA_ARGS__)
-#define TTL_74260_GATE(name) \
- NET_REGISTER_DEVEXT(TTL_74260_GATE, name)
+// usage : TTL_7437_DIP(name)
+#define TTL_7437_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7437_DIP, __VA_ARGS__)
-#define TTL_74260_NOR(name, pA, pB, pC, pD, pE) \
- NET_REGISTER_DEVEXT(TTL_74260_NOR, name, pA, pB, pC, pD, pE)
+// usage : TTL_7486_DIP(name)
+#define TTL_7486_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_7486_DIP, __VA_ARGS__)
-#define TTL_74279A(name) \
- NET_REGISTER_DEVEXT(TTL_74279A, name)
+// usage : TTL_74155_DIP(name)
+#define TTL_74155_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_74155_DIP, __VA_ARGS__)
-#define TTL_74279B(name) \
- NET_REGISTER_DEVEXT(TTL_74279B, name)
+// usage : TTL_74156_DIP(name)
+#define TTL_74156_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_74156_DIP, __VA_ARGS__)
-#define DM9312(name, pA, pB, pC, pG, pD0, pD1, pD2, pD3, pD4, pD5, pD6, pD7)\
- NET_REGISTER_DEVEXT(DM9312, name, pA, pB, pC, pG, pD0, pD1, pD2, pD3, pD4, pD5, pD6, pD7)
+// usage : TTL_74260_DIP(name)
+#define TTL_74260_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_74260_DIP, __VA_ARGS__)
-#define TTL_7400_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7400_DIP, name)
+// usage : TTL_74279_DIP(name)
+#define TTL_74279_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_74279_DIP, __VA_ARGS__)
-#define TTL_7402_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7402_DIP, name)
+// usage : TTL_74377_DIP(name)
+#define TTL_74377_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_74377_DIP, __VA_ARGS__)
-#define TTL_7404_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7404_DIP, name)
+// usage : TTL_74378_DIP(name)
+#define TTL_74378_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_74378_DIP, __VA_ARGS__)
-#define TTL_7406_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7406_DIP, name)
+// usage : TTL_74379_DIP(name)
+#define TTL_74379_DIP(...) \
+ NET_REGISTER_DEVEXT(TTL_74379_DIP, __VA_ARGS__)
-#define TTL_7408_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7408_DIP, name)
-
-#define TTL_7410_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7410_DIP, name)
-
-#define TTL_7411_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7411_DIP, name)
-
-#define TTL_7414_GATE(name) \
- NET_REGISTER_DEVEXT(TTL_7414_GATE, name)
-
-#define TTL_74LS14_GATE(name) \
- NET_REGISTER_DEVEXT(TTL_74LS14_GATE, name)
-
-#define TTL_7414_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7414_DIP, name)
-
-#define TTL_74LS14_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_74LS14_DIP, name)
-
-#define TTL_7416_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7416_DIP, name)
-
-#define TTL_7420_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7420_DIP, name)
-
-#define TTL_7425_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7425_DIP, name)
-
-#define TTL_7427_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7427_DIP, name)
-
-#define TTL_7430_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7430_DIP, name)
-
-#define TTL_7432_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7432_DIP, name)
-
-#define TTL_7437_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7437_DIP, name)
-
-#define TTL_7486_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_7486_DIP, name)
-
-#define TTL_74155_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_74155_DIP, name)
-
-#define TTL_74156_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_74156_DIP, name)
-
-#define TTL_74260_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_74260_DIP, name)
-
-#define TTL_74279_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_74279_DIP, name)
-
-#define TTL_74377_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_74377_DIP, name)
-
-#define TTL_74378_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_74378_DIP, name)
-
-#define TTL_74379_DIP(name) \
- NET_REGISTER_DEVEXT(TTL_74379_DIP, name)
-
-#define DM9312_DIP(name) \
- NET_REGISTER_DEVEXT(DM9312_DIP, name)
+// usage : DM9312_DIP(name)
+#define DM9312_DIP(...) \
+ NET_REGISTER_DEVEXT(DM9312_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/macro/nlm_cd4xxx.cpp
// ---------------------------------------------------------------------
-#define CD4001_GATE(name) \
- NET_REGISTER_DEVEXT(CD4001_GATE, name)
+// usage : CD4001_GATE(name)
+#define CD4001_GATE(...) \
+ NET_REGISTER_DEVEXT(CD4001_GATE, __VA_ARGS__)
-#define CD4070_GATE(name) \
- NET_REGISTER_DEVEXT(CD4070_GATE, name)
+// usage : CD4070_GATE(name)
+#define CD4070_GATE(...) \
+ NET_REGISTER_DEVEXT(CD4070_GATE, __VA_ARGS__)
#define CD4069_GATE(name) \
NET_REGISTER_DEVEXT(CD4069_GATE, name)
+// usage : CD4001_DIP(name)
#define CD4001_DIP(name) \
NET_REGISTER_DEVEXT(CD4001_DIP, name)
-#define CD4070_DIP(name) \
- NET_REGISTER_DEVEXT(CD4070_DIP, name)
+// usage : CD4070_DIP(name)
+#define CD4070_DIP(...) \
+ NET_REGISTER_DEVEXT(CD4070_DIP, __VA_ARGS__)
-#define CD4020_DIP(name) \
- NET_REGISTER_DEVEXT(CD4020_DIP, name)
+// usage : CD4020_DIP(name)
+#define CD4020_DIP(...) \
+ NET_REGISTER_DEVEXT(CD4020_DIP, __VA_ARGS__)
-#define CD4016_DIP(name) \
- NET_REGISTER_DEVEXT(CD4016_DIP, name)
+// usage : CD4016_DIP(name)
+#define CD4016_DIP(...) \
+ NET_REGISTER_DEVEXT(CD4016_DIP, __VA_ARGS__)
-#define CD4066_DIP(name) \
- NET_REGISTER_DEVEXT(CD4066_DIP, name)
+// usage : CD4066_DIP(name)
+#define CD4066_DIP(...) \
+ NET_REGISTER_DEVEXT(CD4066_DIP, __VA_ARGS__)
-#define CD4316_DIP(name) \
- NET_REGISTER_DEVEXT(CD4316_DIP, name)
+// usage : CD4316_DIP(name)
+#define CD4316_DIP(...) \
+ NET_REGISTER_DEVEXT(CD4316_DIP, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/macro/nlm_opamp.cpp
// ---------------------------------------------------------------------
-#define opamp_layout_4_4_11(name) \
- NET_REGISTER_DEVEXT(opamp_layout_4_4_11, name)
+// usage : opamp_layout_4_4_11(name)
+#define opamp_layout_4_4_11(...) \
+ NET_REGISTER_DEVEXT(opamp_layout_4_4_11, __VA_ARGS__)
-#define opamp_layout_2_8_4(name) \
- NET_REGISTER_DEVEXT(opamp_layout_2_8_4, name)
+// usage : opamp_layout_2_8_4(name)
+#define opamp_layout_2_8_4(...) \
+ NET_REGISTER_DEVEXT(opamp_layout_2_8_4, __VA_ARGS__)
-#define opamp_layout_2_13_9_4(name) \
- NET_REGISTER_DEVEXT(opamp_layout_2_13_9_4, name)
+// usage : opamp_layout_2_13_9_4(name)
+#define opamp_layout_2_13_9_4(...) \
+ NET_REGISTER_DEVEXT(opamp_layout_2_13_9_4, __VA_ARGS__)
-#define opamp_layout_1_7_4(name) \
- NET_REGISTER_DEVEXT(opamp_layout_1_7_4, name)
+// usage : opamp_layout_1_7_4(name)
+#define opamp_layout_1_7_4(...) \
+ NET_REGISTER_DEVEXT(opamp_layout_1_7_4, __VA_ARGS__)
-#define opamp_layout_1_8_5(name) \
- NET_REGISTER_DEVEXT(opamp_layout_1_8_5, name)
+// usage : opamp_layout_1_8_5(name)
+#define opamp_layout_1_8_5(...) \
+ NET_REGISTER_DEVEXT(opamp_layout_1_8_5, __VA_ARGS__)
-#define opamp_layout_1_11_6(name) \
- NET_REGISTER_DEVEXT(opamp_layout_1_11_6, name)
+// usage : opamp_layout_1_11_6(name)
+#define opamp_layout_1_11_6(...) \
+ NET_REGISTER_DEVEXT(opamp_layout_1_11_6, __VA_ARGS__)
-#define MB3614_DIP(name) \
- NET_REGISTER_DEVEXT(MB3614_DIP, name)
+// usage : MB3614_DIP(name)
+#define MB3614_DIP(...) \
+ NET_REGISTER_DEVEXT(MB3614_DIP, __VA_ARGS__)
-#define TL081_DIP(name) \
- NET_REGISTER_DEVEXT(TL081_DIP, name)
+// usage : TL081_DIP(name)
+#define TL081_DIP(...) \
+ NET_REGISTER_DEVEXT(TL081_DIP, __VA_ARGS__)
-#define TL084_DIP(name) \
- NET_REGISTER_DEVEXT(TL084_DIP, name)
+// usage : TL084_DIP(name)
+#define TL084_DIP(...) \
+ NET_REGISTER_DEVEXT(TL084_DIP, __VA_ARGS__)
-#define LM324_DIP(name) \
- NET_REGISTER_DEVEXT(LM324_DIP, name)
+// usage : LM324_DIP(name)
+#define LM324_DIP(...) \
+ NET_REGISTER_DEVEXT(LM324_DIP, __VA_ARGS__)
-#define LM358_DIP(name) \
- NET_REGISTER_DEVEXT(LM358_DIP, name)
+// usage : LM358_DIP(name)
+#define LM358_DIP(...) \
+ NET_REGISTER_DEVEXT(LM358_DIP, __VA_ARGS__)
-#define LM2902_DIP(name) \
- NET_REGISTER_DEVEXT(LM2902_DIP, name)
+// usage : LM2902_DIP(name)
+#define LM2902_DIP(...) \
+ NET_REGISTER_DEVEXT(LM2902_DIP, __VA_ARGS__)
-#define UA741_DIP8(name) \
- NET_REGISTER_DEVEXT(UA741_DIP8, name)
+// usage : UA741_DIP8(name)
+#define UA741_DIP8(...) \
+ NET_REGISTER_DEVEXT(UA741_DIP8, __VA_ARGS__)
-#define UA741_DIP10(name) \
- NET_REGISTER_DEVEXT(UA741_DIP10, name)
+// usage : UA741_DIP10(name)
+#define UA741_DIP10(...) \
+ NET_REGISTER_DEVEXT(UA741_DIP10, __VA_ARGS__)
-#define UA741_DIP14(name) \
- NET_REGISTER_DEVEXT(UA741_DIP14, name)
+// usage : UA741_DIP14(name)
+#define UA741_DIP14(...) \
+ NET_REGISTER_DEVEXT(UA741_DIP14, __VA_ARGS__)
-#define LM747_DIP(name) \
- NET_REGISTER_DEVEXT(LM747_DIP, name)
+// usage : LM747_DIP(name)
+#define LM747_DIP(...) \
+ NET_REGISTER_DEVEXT(LM747_DIP, __VA_ARGS__)
-#define LM747A_DIP(name) \
- NET_REGISTER_DEVEXT(LM747A_DIP, name)
+// usage : LM747A_DIP(name)
+#define LM747A_DIP(...) \
+ NET_REGISTER_DEVEXT(LM747A_DIP, __VA_ARGS__)
-#define LM3900(name) \
- NET_REGISTER_DEVEXT(LM3900, name)
+// usage : LM3900(name)
+#define LM3900(...) \
+ NET_REGISTER_DEVEXT(LM3900, __VA_ARGS__)
// ---------------------------------------------------------------------
// Source: src/lib/netlist/macro/nlm_other.cpp
// ---------------------------------------------------------------------
-#define MC14584B_GATE(name) \
- NET_REGISTER_DEVEXT(MC14584B_GATE, name)
+// usage : MC14584B_GATE(name)
+#define MC14584B_GATE(...) \
+ NET_REGISTER_DEVEXT(MC14584B_GATE, __VA_ARGS__)
+
+// usage : MC14584B_DIP(name)
+#define MC14584B_DIP(...) \
+ NET_REGISTER_DEVEXT(MC14584B_DIP, __VA_ARGS__)
-#define MC14584B_DIP(name) \
- NET_REGISTER_DEVEXT(MC14584B_DIP, name)
+// usage : NE566_DIP(name)
+#define NE566_DIP(...) \
+ NET_REGISTER_DEVEXT(NE566_DIP, __VA_ARGS__)
+
+// ---------------------------------------------------------------------
+// Source: src/lib/netlist/macro/nlm_roms.cpp
+// ---------------------------------------------------------------------
+// usage : PROM_82S126_DIP(name)
+#define PROM_82S126_DIP(...) \
+ NET_REGISTER_DEVEXT(PROM_82S126_DIP, __VA_ARGS__)
-#define NE566_DIP(name) \
- NET_REGISTER_DEVEXT(NE566_DIP, name)
+// usage : PROM_74S287_DIP(name)
+#define PROM_74S287_DIP(...) \
+ NET_REGISTER_DEVEXT(PROM_74S287_DIP, __VA_ARGS__)
#endif // __PLIB_PREPROCESSOR__
#endif
diff --git a/src/lib/netlist/devices/nld_roms.cpp b/src/lib/netlist/devices/nld_roms.cpp
new file mode 100644
index 00000000000..5a7bc9fa59b
--- /dev/null
+++ b/src/lib/netlist/devices/nld_roms.cpp
@@ -0,0 +1,185 @@
+// license:GPL-2.0+
+// copyright-holders:Couriersud
+/*
+ * nld_roms.cpp
+ *
+ */
+
+#include "netlist/nl_base.h"
+#include "netlist/nl_setup.h"
+
+template <typename N, typename T>
+constexpr bool TOR(N n, T &a)
+{
+ return (n == 0 ? false : TOR(n-1, a) || a[n-1]());
+}
+
+template <typename T>
+constexpr bool TOR(T &a)
+{
+ return TOR(a.size(), a);
+}
+
+namespace netlist
+{
+ namespace devices
+ {
+
+ template<netlist_time::internal_type value0>
+ struct times_ns1
+ {
+ static constexpr netlist_time value(std::size_t N = 0)
+ {
+ plib::unused_var(N);
+ return NLTIME_FROM_NS(value0);
+ }
+ };
+
+ template <netlist_time::internal_type value0>
+ using time_ns = times_ns1<value0>;
+
+ template<netlist_time::internal_type value0,
+ netlist_time::internal_type value1>
+ struct times_ns2
+ {
+ static constexpr netlist_time value(std::size_t N)
+ {
+ return NLTIME_FROM_NS(N == 0 ? value0 : value1);
+ }
+ };
+
+ template<netlist_time::internal_type value0,
+ netlist_time::internal_type value1,
+ netlist_time::internal_type value2>
+ struct times_ns3
+ {
+ static constexpr netlist_time value(std::size_t N)
+ {
+ return NLTIME_FROM_NS(N == 0 ? value0 :
+ N == 1 ? value1 :
+ value2);
+ }
+ };
+
+ template <typename D>
+ NETLIB_OBJECT(generic_prom)
+ {
+ NETLIB_CONSTRUCTOR(generic_prom)
+ , m_enabled(*this, "m_enabled", true)
+ , m_A(*this, 0, "A{}", NETLIB_DELEGATE(generic_prom, addr))
+ , m_CEQ(*this, 1, D::chip_enable_mask ^ static_cast<size_t>(0xffff), pstring("CE{}"),
+ std::array<nldelegate, 3>{ NETLIB_DELEGATE(generic_prom, ce<0>),
+ NETLIB_DELEGATE(generic_prom, ce<1>),
+ NETLIB_DELEGATE(generic_prom, ce<2>)})
+ , m_O(*this, D::data_name_offset, "O{}")
+ , m_ROM(*this, "ROM")
+ , m_power_pins(*this)
+ {
+ }
+
+ using data_type = typename plib::least_type_for_bits<D::data_width>::type;
+
+ private:
+
+ template <std::size_t N>
+ inline NETLIB_HANDLERI(ce)
+ {
+ using cet = typename D::chip_enable_time;
+ m_enabled = (m_CEQ() == D::chip_enable_mask);
+ const auto delay = m_enabled ? D::access_time::value() : cet::value(N);
+ const data_type o = m_enabled ? m_ROM[m_A()] : (1 << D::data_width) - 1; // FIXME tristate !
+
+ m_O.push(o, delay);
+ }
+
+ inline
+ NETLIB_HANDLERI(addr)
+ {
+ if (m_enabled)
+ {
+ // FIXME: Outputs are tristate. This needs to be properly implemented
+ m_O.push(m_ROM[m_A()], D::access_time::value());
+ }
+ }
+
+ NETLIB_UPDATEI()
+ {
+ ce<0>(); // only called during setup
+ }
+
+ state_var<bool> m_enabled;
+ object_array_t<logic_input_t, D::address_width> m_A;
+ object_array_t<logic_input_t, D::chip_enable_inputs> m_CEQ;
+ object_array_t<typename D::output_type, D::data_width> m_O;
+
+ param_rom_t<uint8_t, D::address_width, D::data_width> m_ROM;
+ nld_power_pins m_power_pins;
+ };
+
+ struct desc_82S126
+ {
+ static constexpr const size_t address_width = 8;
+ static constexpr const size_t data_width = 4;
+ static constexpr const size_t data_name_offset = 1; // O1, O2, ..
+ static constexpr const size_t chip_enable_inputs = 2;
+ // MATCH_MASK : all 0 ==> all bits inverted
+ static constexpr const size_t chip_enable_mask = 0x00;
+
+ using chip_enable_time = times_ns2<25, 25>;
+ using access_time = time_ns<40>;
+
+ using output_type = logic_output_t;
+ };
+
+ struct desc_74S287 : public desc_82S126
+ {
+ using chip_enable_time = times_ns2<15, 15>;
+ using access_time = time_ns<35>;
+ };
+
+ struct desc_82S123
+ {
+ // FIXME: tristate outputs, add 82S23 (open collector)
+ static constexpr const size_t address_width = 5;
+ static constexpr const size_t data_width = 8;
+ static constexpr const size_t data_name_offset = 1; // O1, O2, ..
+ static constexpr const size_t chip_enable_inputs = 1;
+ // MATCH_MASK : all 0 ==> all bits inverted
+ static constexpr const size_t chip_enable_mask = 0x00;
+
+ using chip_enable_time = times_ns1<35>;
+ using access_time = time_ns<45>;
+
+ using output_type = logic_output_t;
+ };
+
+ struct desc_2716
+ {
+ // FIXME: tristate outputs
+ static constexpr const size_t address_width = 11;
+ static constexpr const size_t data_width = 8;
+ static constexpr const size_t data_name_offset = 0; // O0, O1, ..
+
+ static constexpr const size_t chip_enable_inputs = 2;
+ // MATCH_MASK : all 0 ==> all bits inverted
+ static constexpr const size_t chip_enable_mask = 0x00;
+
+ using chip_enable_time = times_ns2<450, 100>; //CE, OE
+ using access_time = time_ns<450>;
+
+ using output_type = logic_output_t;
+ };
+
+
+ using NETLIB_NAME(82S123) = NETLIB_NAME(generic_prom)<desc_82S123>; // 256 bits, 32x8, used as 256x4
+ using NETLIB_NAME(82S126) = NETLIB_NAME(generic_prom)<desc_82S126>; // 1024 bits, 32x32, used as 256x4
+ using NETLIB_NAME(74S287) = NETLIB_NAME(generic_prom)<desc_74S287>; // 1024 bits, 32x32, used as 256x4
+ using NETLIB_NAME(2716) = NETLIB_NAME(generic_prom)<desc_2716>; // CE2Q = OE, CE1Q = CE
+
+ NETLIB_DEVICE_IMPL(82S126, "PROM_82S126", "+CE1Q,+CE2Q,+A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,@VCC,@GND")
+ NETLIB_DEVICE_IMPL(74S287, "PROM_74S287", "+CE1Q,+CE2Q,+A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,@VCC,@GND")
+ NETLIB_DEVICE_IMPL(82S123, "PROM_82S123", "+CEQ,+A0,+A1,+A2,+A3,+A4,@VCC,@GND")
+ NETLIB_DEVICE_IMPL(2716, "EPROM_2716", "+CE2Q,+CE1Q,+A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+A10,@VCC,@GND")
+
+ } //namespace devices
+} // namespace netlist
diff --git a/src/lib/netlist/devices/nld_roms.h b/src/lib/netlist/devices/nld_roms.h
new file mode 100644
index 00000000000..0ebd6b832b6
--- /dev/null
+++ b/src/lib/netlist/devices/nld_roms.h
@@ -0,0 +1,29 @@
+// license:GPL-2.0+
+// copyright-holders:Couriersud
+/*
+ * nld_roms.h
+ *
+ */
+
+#ifndef NLD_ROMS_H_
+#define NLD_ROMS_H_
+
+#include "netlist/nl_setup.h"
+
+// PROM_82S126(name, cCE1Q, cCE2Q, cA0, cA1, cA2, cA3, cA4, cA5, cA6, cA7)
+#define PROM_82S126(...) \
+ NET_REGISTER_DEVEXT(PROM_82S126, __VA_ARGS__)
+
+// PROM_74S287(name, cCE1Q, cCE2Q, cA0, cA1, cA2, cA3, cA4, cA5, cA6, cA7)
+#define PROM_74S287(...) \
+ NET_REGISTER_DEVEXT(PROM_74S287, __VA_ARGS__)
+
+// PROM_82S123(name, cCEQ, cA0, cA1, cA2, cA3, cA4)
+#define PROM_82S123(...) \
+ NET_REGISTER_DEVEXT(PROM_82S123, __VA_ARGS__)
+
+// EPROM_2716(name, cGQ, cEPQ, cA0, cA1, cA2, cA3, cA4, cA5, cA6, cA7, cA8, cA9, cA10)
+#define EPROM_2716(...) \
+ NET_REGISTER_DEVEXT(EPROM_2716, __VA_ARGS__)
+
+#endif /* NLD_ROMS_H_ */
diff --git a/src/lib/netlist/devices/nlid_truthtable.h b/src/lib/netlist/devices/nlid_truthtable.h
index bee8912dfa6..41cd5c309d2 100644
--- a/src/lib/netlist/devices/nlid_truthtable.h
+++ b/src/lib/netlist/devices/nlid_truthtable.h
@@ -11,6 +11,7 @@
#include "netlist/devices/nlid_system.h"
#include "netlist/nl_base.h"
#include "netlist/nl_setup.h"
+#include "plib/ptypes.h"
#include "plib/putil.h"
#define USE_TT_ALTERNATIVE (0)
@@ -20,29 +21,12 @@ namespace netlist
namespace devices
{
- template<unsigned bits>
- struct need_bytes_for_bits
- {
- enum { value =
- bits <= 8 ? 1 :
- bits <= 16 ? 2 :
- bits <= 32 ? 4 :
- 8
- };
- };
-
- template<unsigned bits> struct uint_for_size;
- template<> struct uint_for_size<1> { using type = uint_least8_t; };
- template<> struct uint_for_size<2> { using type = uint_least16_t; };
- template<> struct uint_for_size<4> { using type = uint_least32_t; };
- template<> struct uint_for_size<8> { using type = uint_least64_t; };
-
template<std::size_t m_NI, std::size_t m_NO>
class NETLIB_NAME(truthtable_t) : public device_t
{
public:
- using type_t = typename uint_for_size<need_bytes_for_bits<m_NO + m_NI>::value>::type;
+ using type_t = typename plib::least_type_for_bits<m_NO + m_NI>::type;
static constexpr const std::size_t m_num_bits = m_NI;
static constexpr const std::size_t m_size = (1 << (m_num_bits));
diff --git a/src/lib/netlist/macro/nlm_base.cpp b/src/lib/netlist/macro/nlm_base.cpp
index 83089a53ee7..b399a2c360c 100644
--- a/src/lib/netlist/macro/nlm_base.cpp
+++ b/src/lib/netlist/macro/nlm_base.cpp
@@ -110,6 +110,7 @@ NETLIST_START(base)
LOCAL_SOURCE(CD4XXX_lib)
LOCAL_SOURCE(OPAMP_lib)
LOCAL_SOURCE(otheric_lib)
+ LOCAL_SOURCE(ROMS_lib)
INCLUDE(diode_models)
INCLUDE(bjt_models)
@@ -119,6 +120,7 @@ NETLIST_START(base)
INCLUDE(CD4XXX_lib)
INCLUDE(OPAMP_lib)
INCLUDE(otheric_lib)
+ INCLUDE(ROMS_lib)
NETLIST_END()
diff --git a/src/lib/netlist/macro/nlm_opamp.h b/src/lib/netlist/macro/nlm_opamp.h
index 7fc2fa3ab83..06c31acc71b 100644
--- a/src/lib/netlist/macro/nlm_opamp.h
+++ b/src/lib/netlist/macro/nlm_opamp.h
@@ -39,19 +39,19 @@
#define LM3900(name) \
NET_REGISTER_DEV(LM3900, name)
-#define UA741_DIP8(name) \
+#define UA741_DIP8(name) \
NET_REGISTER_DEV(UA741_DIP8, name)
-#define UA741_DIP10(name) \
+#define UA741_DIP10(name) \
NET_REGISTER_DEV(UA741_DIP10, name)
-#define UA741_DIP14(name) \
+#define UA741_DIP14(name) \
NET_REGISTER_DEV(UA741_DIP14, name)
-#define LM747_DIP(name) \
+#define LM747_DIP(name) \
NET_REGISTER_DEV(LM747_DIP, name)
-#define LM747A_DIP(name) \
+#define LM747A_DIP(name) \
NET_REGISTER_DEV(LM747A_DIP, name)
#endif // NL_AUTO_DEVICES
diff --git a/src/lib/netlist/macro/nlm_roms.cpp b/src/lib/netlist/macro/nlm_roms.cpp
new file mode 100644
index 00000000000..a9dc0d1fc85
--- /dev/null
+++ b/src/lib/netlist/macro/nlm_roms.cpp
@@ -0,0 +1,203 @@
+// license:CC0
+// copyright-holders:Couriersud
+
+#include "netlist/devices/net_lib.h"
+
+
+//- Identifier: PROM_82S126_DIP
+//- Title: 82S126 1K-bit TTL bipolar PROM
+//- Description: The 82S126 and 82S129 are field programmable, which means that
+//- custom patterns are immediately available by following the Signetics
+//- Generic I fusing procedure. The 82S126 and 82S129 devices are supplied
+//- with all outputs at logical Low. Outputs are programmed to a logic High
+//- level at any specified address by fusing the Ni-Cr link matrix.
+//-
+//- These devices include on-chip decoding and 2 Chip Enable inputs for ease
+//- of memory expansion. They feature either open collector or 3-State outputs
+//- for optimization of word expansion in bused organizations.
+//-
+//.
+//- Pinalias: A6,A5,A4,A3,A0,A1,A2,GND,O3,O2,O1,O0,CE1Q,CE2Q,A7,VCC
+//- Package: DIP
+//- NamingConvention: Naming conventions follow Philips Components-Signetics datasheet
+//- Limitations:
+//- Currently neither OC nor Tristate is supported.
+//-
+//- Example: 82S126.cpp,82S126_example
+//- FunctionTable:
+//- http://pdf.datasheetcatalog.com/datasheet/philips/82S129.pdf
+//-
+
+static NETLIST_START(PROM_82S126_DIP)
+
+ PROM_82S126(A)
+
+ DEFPARAM(ROM, "unknown")
+ PARAM(A.ROM, "$(@.ROM)")
+ ALIAS(1, A.A6)
+ ALIAS(2, A.A5)
+ ALIAS(3, A.A4)
+ ALIAS(4, A.A3)
+ ALIAS(5, A.A0)
+ ALIAS(6, A.A1)
+ ALIAS(7, A.A2)
+ ALIAS(8, A.GND)
+ ALIAS(9, A.O3)
+ ALIAS(10, A.O2)
+ ALIAS(11, A.O1)
+ ALIAS(12, A.O0)
+ ALIAS(13, A.CE1Q)
+ ALIAS(14, A.CE2Q)
+ ALIAS(15, A.A7)
+ ALIAS(16, A.VCC)
+NETLIST_END()
+
+static NETLIST_START(PROM_74S287_DIP)
+
+ PROM_74S287(A)
+
+ DEFPARAM(ROM, "unknown")
+ PARAM(A.ROM, "$(@.ROM)")
+ ALIAS(1, A.A6)
+ ALIAS(2, A.A5)
+ ALIAS(3, A.A4)
+ ALIAS(4, A.A3)
+ ALIAS(5, A.A0)
+ ALIAS(6, A.A1)
+ ALIAS(7, A.A2)
+ ALIAS(8, A.GND)
+ ALIAS(9, A.O3)
+ ALIAS(10, A.O2)
+ ALIAS(11, A.O1)
+ ALIAS(12, A.O0)
+ ALIAS(13, A.CE1Q)
+ ALIAS(14, A.CE2Q)
+ ALIAS(15, A.A7)
+ ALIAS(16, A.VCC)
+NETLIST_END()
+
+//- Identifier: PROM_82S123_DIP
+//- Title: 82S123 256 bit TTL bipolar PROM
+//- Description: The 82S123 and 82S23 are field programmable, which means that
+//- custom patterns are immediately available by following the Signetics
+//- Generic I fusing procedure. The 82S123 and 82S23 devices are supplied
+//- with all outputs at logical Low. Outputs are programmed to a logic High
+//- level at any specified address by fusing the Ni-Cr link matrix.
+//-
+//- These devices include on-chip decoding and 1 Chip Enable inputs for
+//- memory expansion. They feature either open collector or 3-State outputs
+//- for optimization of word expansion in bused organizations.
+//-
+//.
+//- Pinalias: O1,O2,O3,O4,O5,O6,O7,GND,O8,A0,A1,A2,A3,A4,CEQ,VCC
+//- Package: DIP
+//- NamingConvention: Naming conventions follow Philips Components-Signetics datasheet
+//- Limitations:
+//- Currently neither OC nor Tristate is supported.
+//-
+//- Example: 82S123.cpp,82S123_example
+//- FunctionTable:
+//- http://pdf.datasheetcatalog.com/datasheet/philips/82S123.pdf
+//-
+
+static NETLIST_START(PROM_82S123_DIP)
+
+ PROM_82S123(A)
+
+ DEFPARAM(ROM, "unknown")
+ PARAM(A.ROM, "$(@.ROM)")
+ ALIAS(1, A.O0)
+ ALIAS(2, A.O1)
+ ALIAS(3, A.O2)
+ ALIAS(4, A.O3)
+ ALIAS(5, A.O4)
+ ALIAS(6, A.O5)
+ ALIAS(7, A.O6)
+ ALIAS(8, A.GND)
+
+ ALIAS(9, A.O7)
+ ALIAS(10, A.A0)
+ ALIAS(11, A.A1)
+ ALIAS(12, A.A2)
+ ALIAS(13, A.A3)
+ ALIAS(14, A.A4)
+ ALIAS(15, A.CEQ)
+ ALIAS(16, A.VCC)
+NETLIST_END()
+
+//- 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
+//- electrically programmable read-only memory (EPROM). The 2716 operates
+//- from a single 5-volt power supply, has a static standby mode, and
+//- features fast single address location programming. It makes designing
+//- with EPROMs faster, easier and more economical.
+//-
+//- The 2716, with its single 5-volt supply and with an access time up
+//- to 350 ns, is ideal for use with the newer high performance
+//- +5V microprocessors such as Intel's 8085 and 8086. A selected
+//- 2716-5 and 2716-6 is available for slower speed applications.
+//- The 2716 is also the first EPROM with a static standby mode which reduces
+//- the power dissipation without increasing access time. The maximum
+//- active power dissipation is 525 mW while the maximum standby power
+//- dissipation is only 132 mW, a 75% savings.
+//-
+//- The 2716 has the simplest and fastest method yet devised for
+//- programming EPROMs - single pulse TTL level programming. No need for high
+//- voltage pulsing because all programming controls are handled by
+//- TTL signals. Program any location at any time-either individually,
+//- sequentially or at random, with the 2716's single address location
+//- programming. Total programming time for all 16,384 bits is only 100 seconds
+//-
+//- Pinalias: A7,A6,A6,A4,A4,A2,A1,A0,O0,O1,O2,GND,O3,O4,O5,O6,O7,CE1Q/CE,A10,CE2Q/OE,VPP,A9,A8,VCC
+//- Package: DIP
+//- NamingConvention: Naming conventions follow Intel datasheet
+//- Limitations:
+//- Currently Tristate is not supported.
+//-
+//- Example: 2716.cpp,2716_example
+//- FunctionTable:
+//- http://pdf.datasheetcatalog.com/datasheets/400/500340_DS.pdf
+//-
+static NETLIST_START(EPROM_2716_DIP)
+
+ EPROM_2716(A)
+
+ DEFPARAM(ROM, "unknown")
+ PARAM(A.ROM, "$(@.ROM)")
+ ALIAS(1, A.A7)
+ ALIAS(2, A.A6)
+ ALIAS(3, A.A5)
+ ALIAS(4, A.A4)
+ ALIAS(5, A.A3)
+ ALIAS(6, A.A2)
+ ALIAS(7, A.A1)
+ ALIAS(8, A.A0)
+ ALIAS(9, A.D0)
+ ALIAS(10, A.D1)
+ ALIAS(11, A.D2)
+ ALIAS(12, A.GND)
+
+ ALIAS(13, A.D3)
+ ALIAS(14, A.D4)
+ ALIAS(15, A.D5)
+ ALIAS(16, A.D6)
+ ALIAS(17, A.D7)
+ ALIAS(18, A.CE1Q) // CEQ
+ ALIAS(19, A.A10)
+ ALIAS(20, A.CE2Q) // OEQ
+ ALIAS(22, A.A9)
+ ALIAS(23, A.A8)
+ ALIAS(24, A.VCC)
+NETLIST_END()
+
+
+NETLIST_START(ROMS_lib)
+
+ LOCAL_LIB_ENTRY(PROM_82S123_DIP)
+ LOCAL_LIB_ENTRY(PROM_82S126_DIP)
+ LOCAL_LIB_ENTRY(PROM_74S287_DIP)
+ LOCAL_LIB_ENTRY(EPROM_2716_DIP)
+
+ NETLIST_END()
+
diff --git a/src/lib/netlist/macro/nlm_roms.h b/src/lib/netlist/macro/nlm_roms.h
new file mode 100644
index 00000000000..1900e693e04
--- /dev/null
+++ b/src/lib/netlist/macro/nlm_roms.h
@@ -0,0 +1,44 @@
+// license:GPL-2.0+
+// copyright-holders:Couriersud
+
+#ifndef NLM_ROMS_H_
+#define NLM_ROMS_H_
+
+///
+/// \file nlm_roms.h
+///
+
+#include "netlist/nl_setup.h"
+
+#ifndef __PLIB_PREPROCESSOR__
+
+/* ----------------------------------------------------------------------------
+ * Netlist Macros
+ * ---------------------------------------------------------------------------*/
+
+#if !NL_AUTO_DEVICES
+
+#define PROM_82S126_DIP(name) \
+ NET_REGISTER_DEV(PROM_82S126_DIP, name)
+
+#define PROM_82S123_DIP(name) \
+ NET_REGISTER_DEV(PROM_82S123_DIP, name)
+
+#define PROM_74S287_DIP(name) \
+ NET_REGISTER_DEV(PROM_74S287_DIP, name)
+
+#define EPROM_2716_DIP(name) \
+ NET_REGISTER_DEV(EPROM_2716_DIP, name)
+
+#endif // NL_AUTO_DEVICES
+
+
+/* ----------------------------------------------------------------------------
+ * External declarations
+ * ---------------------------------------------------------------------------*/
+
+NETLIST_EXTERNAL(ROMS_lib)
+
+#endif // __PLIB_PREPROCESSOR__
+
+#endif
diff --git a/src/lib/netlist/nl_base.h b/src/lib/netlist/nl_base.h
index 90f1ea88d2e..6d52fed38ea 100644
--- a/src/lib/netlist/nl_base.h
+++ b/src/lib/netlist/nl_base.h
@@ -24,6 +24,7 @@
#include "plib/pstonum.h"
#include "plib/pstream.h"
#include "plib/ptime.h"
+#include "plib/ptypes.h"
#include "nl_errstr.h"
#include "nltypes.h"
@@ -174,7 +175,7 @@ class NETLIB_NAME(name) : public delegator_t<base_device_t>
#define NETLIB_DELEGATE(chip, name) nldelegate(&NETLIB_NAME(chip) :: name, this)
#define NETLIB_UPDATE_TERMINALSI() virtual void update_terminals() noexcept override
-#define NETLIB_HANDLERI(name) virtual void name() noexcept
+#define NETLIB_HANDLERI(name) void name() noexcept
#define NETLIB_UPDATEI() virtual void update() noexcept override
#define NETLIB_UPDATE_PARAMI() virtual void update_param() noexcept override
#define NETLIB_RESETI() virtual void reset() override
@@ -1879,12 +1880,12 @@ namespace netlist
// Support classes for devices
// -----------------------------------------------------------------------------
- template<class C, int N>
- class object_array_t : public plib::uninitialised_array_t<C, N>
+ template<class C, std::size_t N>
+ class object_array_base_t : public plib::uninitialised_array_t<C, N>
{
public:
template<class D, typename... Args>
- object_array_t(D &dev, const std::initializer_list<const char *> &names, Args&&... args)
+ object_array_base_t(D &dev, const std::initializer_list<const char *> &names, Args&&... args)
{
passert_always_msg(names.size() == N, "initializer_list size mismatch");
std::size_t i = 0;
@@ -1892,20 +1893,170 @@ namespace netlist
this->emplace(i++, dev, pstring(n), std::forward<Args>(args)...);
}
+#if 0
template<class D, typename... Args>
- object_array_t(D &dev, const pstring &fmt, Args&&... args)
+ object_array_base_t(D &dev, const pstring &fmt, Args&&... args)
{
for (std::size_t i = 0; i<N; i++)
- this->emplace(i, dev, plib::pfmt(fmt)(i), std::forward<Args>(args)...);
+ this->emplace(i, dev, formatted(fmt, i), std::forward<Args>(args)...);
}
template<class D, typename... Args>
- object_array_t(D &dev, std::size_t offset, const pstring &fmt, Args&&... args)
+ object_array_base_t(D &dev, std::size_t offset, const pstring &fmt, Args&&... args)
{
for (std::size_t i = 0; i<N; i++)
- this->emplace(i, dev, plib::pfmt(fmt)(i+offset), std::forward<Args>(args)...);
+ this->emplace(i, dev, formatted(fmt, i+offset), std::forward<Args>(args)...);
}
+ template<class D, typename... Args>
+ object_array_base_t(D &dev, std::size_t offset, std::size_t qmask, const pstring &fmt, Args&&... args)
+ {
+ for (std::size_t i = 0; i<N; i++)
+ {
+ pstring name(formatted(fmt, i+offset));
+ if ((qmask >> i) & 1)
+ name += "Q";
+ this->emplace(i, dev, name, std::forward<Args>(args)...);
+ }
+ }
+#else
+ template<class D>
+ object_array_base_t(D &dev, const pstring &fmt)
+ {
+ for (std::size_t i = 0; i<N; i++)
+ this->emplace(i, dev, formatted(fmt, i));
+ }
+
+ template<class D>
+ object_array_base_t(D &dev, std::size_t offset, const pstring &fmt)
+ {
+ for (std::size_t i = 0; i<N; i++)
+ this->emplace(i, dev, formatted(fmt, i+offset));
+ }
+
+ template<class D>
+ object_array_base_t(D &dev, std::size_t offset, const pstring &fmt, nldelegate &&delegate)
+ {
+ for (std::size_t i = 0; i<N; i++)
+ this->emplace(i, dev, formatted(fmt, i+offset), std::move(delegate));
+ }
+
+ template<class D>
+ object_array_base_t(D &dev, std::size_t offset, std::size_t qmask, const pstring &fmt)
+ {
+ for (std::size_t i = 0; i<N; i++)
+ {
+ pstring name(formatted(fmt, i+offset));
+ if ((qmask >> i) & 1)
+ name += "Q";
+ this->emplace(i, dev, name);
+ }
+ }
+ protected:
+ object_array_base_t() = default;
+#endif
+
+ protected:
+ static pstring formatted(const pstring &fmt, std::size_t n)
+ {
+ if (N != 1)
+ return plib::pfmt(fmt)(n);
+ else
+ return plib::pfmt(fmt)("");
+ }
+ };
+
+ template<class C, std::size_t N>
+ class object_array_t : public object_array_base_t<C, N>
+ {
+ public:
+ using base_type = object_array_base_t<C, N>;
+ using base_type::base_type;
+ };
+
+ template<std::size_t N>
+ class object_array_t<logic_input_t,N> : public object_array_base_t<logic_input_t, N>
+ {
+ public:
+ using base_type = object_array_base_t<logic_input_t, N>;
+ using base_type::base_type;
+
+ template<class D, std::size_t ND>
+ object_array_t(D &dev, std::size_t offset, std::size_t qmask,
+// const pstring &fmt, std::initializer_list<nldelegate> &delegates)
+ const pstring &fmt, std::array<nldelegate, ND> &&delegates)
+ {
+ passert_always_msg(delegates.size() >= N, "initializer_list size mismatch");
+ std::size_t i = 0;
+ for (auto &e : delegates)
+ {
+ if (i < N)
+ {
+ pstring name(this->formatted(fmt, i+offset));
+ if ((qmask >> i) & 1)
+ name += "Q";
+ this->emplace(i, dev, name, e);
+ }
+ i++;
+ }
+ }
+
+
+ using value_type = typename plib::least_type_for_bits<N>::type;
+
+ value_type operator ()()
+ {
+ if (N <= 8)
+ return tobits(N, *this);
+ else
+ {
+ value_type r(0);
+ for (std::size_t i = 0; i < N; i++)
+ r = static_cast<value_type>((*this)[i]() << (N-1)) | (r >> 1);
+ return r;
+ }
+ }
+
+ private:
+ template <typename T>
+ static constexpr value_type tobits(std::size_t n, T &a)
+ {
+ return (n == 0 ? 0 : (tobits(n-1, a) | static_cast<value_type>(a[n-1]() << (n-1))));
+ }
+ };
+
+ template<std::size_t N>
+ class object_array_t<logic_output_t,N> : public object_array_base_t<logic_output_t, N>
+ {
+ public:
+ using base_type = object_array_base_t<logic_output_t, N>;
+ using base_type::base_type;
+
+ using value_type = typename plib::least_type_for_bits<N>::type;
+
+ void push(value_type v, netlist_time t)
+ {
+ if (N <= 8)
+ rpush(N, *this, v, t);
+ else
+ {
+ for (std::size_t i = 0; i < N; v = v >> 1, i++)
+ (*this)[i].push(v & 1, t);
+ }
+ }
+
+ private:
+ template <typename A, typename V, typename X>
+ static V rpush(std::size_t n, A &a, V value, X time)
+ {
+ if (n > 0)
+ {
+ value = rpush(n-1, a, value, time);
+ a[n-1].push((value & 1), time);
+ return value >> 1;
+ }
+ return value;
+ }
};
// -----------------------------------------------------------------------------
diff --git a/src/lib/netlist/nl_create_mame_solvers.sh b/src/lib/netlist/nl_create_mame_solvers.sh
index ada19512af9..3d72e1c1bc7 100644
--- a/src/lib/netlist/nl_create_mame_solvers.sh
+++ b/src/lib/netlist/nl_create_mame_solvers.sh
@@ -1,7 +1,7 @@
#!/bin/sh
GENERATED=src/lib/netlist/generated/static_solvers.cpp
-FILES=`ls src/mame/machine/nl_*.cpp src/mame/audio/nl_*.cpp | grep -v pongdoubles`
+FILES=`ls src/mame/machine/nl_*.cpp src/mame/audio/nl_*.cpp | grep -v pongdoubles`
OUTDIR=/tmp/static_syms
diff --git a/src/lib/netlist/nl_errstr.h b/src/lib/netlist/nl_errstr.h
index 290110560e8..243b7c0812f 100644
--- a/src/lib/netlist/nl_errstr.h
+++ b/src/lib/netlist/nl_errstr.h
@@ -87,7 +87,7 @@ namespace netlist
PERRMSGV(MF_MODEL_NUMBER_CONVERSION_ERROR, 4, "Can't convert {1}={2} to {3} for model {4}")
PERRMSGV(MF_NOT_FOUND_IN_SOURCE_COLLECTION, 1, "unable to find {1} in sources collection")
- PERRMSGV(MW_OVERWRITING_PARAM_1_OLD_2_NEW_3, 3, "Overwriting {1} old <{2}> new <{3}>")
+ PERRMSGV(MI_OVERWRITING_PARAM_1_OLD_2_NEW_3, 3, "Overwriting {1} old <{2}> new <{3}>")
PERRMSGV(MW_CONNECTING_1_TO_ITSELF, 1, "Connecting net {1} to itself.")
PERRMSGV(MW_CONNECTING_1_TO_2_SAME_NET, 3, "Connecting terminals {1} and {2} which are already both on net {3}")
PERRMSGV(ME_NC_PIN_1_WITH_CONNECTIONS, 1, "Found NC (not connected) terminal {1} with connections")
diff --git a/src/lib/netlist/nl_setup.cpp b/src/lib/netlist/nl_setup.cpp
index 675cbae5360..1fb515f346a 100755
--- a/src/lib/netlist/nl_setup.cpp
+++ b/src/lib/netlist/nl_setup.cpp
@@ -218,8 +218,12 @@ namespace netlist
}
else
{
- log().warning(MW_OVERWRITING_PARAM_1_OLD_2_NEW_3(fqn, idx->second,
- val));
+ if (idx->second.find("$(") == pstring::npos)
+ {
+ //* There may be reason ... so make it an INFO
+ log().info(MI_OVERWRITING_PARAM_1_OLD_2_NEW_3(fqn,
+ idx->second, val));
+ }
m_abstract.m_param_values[fqn] = val;
}
}
diff --git a/src/lib/netlist/nl_setup.h b/src/lib/netlist/nl_setup.h
index f86326be8c4..efbf16d339c 100644
--- a/src/lib/netlist/nl_setup.h
+++ b/src/lib/netlist/nl_setup.h
@@ -8,7 +8,7 @@
#ifndef NLSETUP_H_
#define NLSETUP_H_
-#define NL_AUTO_DEVICES 1
+#define NL_AUTO_DEVICES 0
#include "plib/ppreprocessor.h"
#include "plib/pstream.h"
diff --git a/src/lib/netlist/plib/ptime.h b/src/lib/netlist/plib/ptime.h
index 3cdb9f30d33..839b8e95dbd 100644
--- a/src/lib/netlist/plib/ptime.h
+++ b/src/lib/netlist/plib/ptime.h
@@ -110,6 +110,13 @@ namespace plib
return static_cast<mult_type>(m_time / rhs.m_time);
}
+ template <typename T>
+ constexpr typename std::enable_if<std::is_integral<T>::value, ptime>::type
+ operator/(const T &rhs) const noexcept
+ {
+ return ptime(m_time / rhs);
+ }
+
friend constexpr bool operator<(const ptime &lhs, const ptime &rhs) noexcept
{
return (lhs.m_time < rhs.m_time);
diff --git a/src/lib/netlist/plib/ptypes.h b/src/lib/netlist/plib/ptypes.h
index 6bceb764b10..dc762a51107 100644
--- a/src/lib/netlist/plib/ptypes.h
+++ b/src/lib/netlist/plib/ptypes.h
@@ -88,6 +88,29 @@ namespace plib
};
#endif
+ template<unsigned bits>
+ struct least_size_for_bits
+ {
+ enum { value =
+ bits <= 8 ? 1 :
+ bits <= 16 ? 2 :
+ bits <= 32 ? 4 :
+ 8
+ };
+ };
+
+ template<unsigned N> struct least_type_for_size;
+ template<> struct least_type_for_size<1> { using type = uint_least8_t; };
+ template<> struct least_type_for_size<2> { using type = uint_least16_t; };
+ template<> struct least_type_for_size<4> { using type = uint_least32_t; };
+ template<> struct least_type_for_size<8> { using type = uint_least64_t; };
+
+ template<unsigned bits>
+ struct least_type_for_bits
+ {
+ using type = typename least_type_for_size<least_size_for_bits<bits>::value>::type;
+ };
+
//============================================================
// Avoid unused variable warnings
//============================================================
diff --git a/src/lib/netlist/prg/nltool.cpp b/src/lib/netlist/prg/nltool.cpp
index 0ac02df201c..99b90d611e5 100644
--- a/src/lib/netlist/prg/nltool.cpp
+++ b/src/lib/netlist/prg/nltool.cpp
@@ -263,24 +263,6 @@ public:
for (const auto & r : roms)
parser().register_source<netlist_data_folder_t>(r);
-#if 0
- using a = plib::psource_str_t<plib::psource_t>;
-#if USE_EVAL
- const pstring content =
- "#define RES_R(res) (res) \n"
- "#define RES_K(res) ((res) * 1e3) \n"
- "#define RES_M(res) ((res) * 1e6) \n"
- "#define CAP_U(cap) ((cap) * 1e-6) \n"
- "#define CAP_N(cap) ((cap) * 1e-9) \n"
- "#define CAP_P(cap) ((cap) * 1e-12) \n"
- "#define IND_U(ind) ((ind) * 1e-6) \n"
- "#define IND_N(ind) ((ind) * 1e-9) \n"
- "#define IND_P(ind) ((ind) * 1e-12) \n";
- setup().add_include(plib::make_unique<a>("netlist/devices/net_lib.h", content));
-#else
- setup().add_include(plib::make_unique<a>("netlist/devices/net_lib.h",""));
-#endif
-#endif
for (const auto & i : includes)
parser().add_include<netlist_data_folder_t>(i);
@@ -745,9 +727,9 @@ static doc_ext read_docsrc(const pstring &fname, const pstring &id)
pstring v(a.size() < 2 ? "" : plib::trim(a[1]));
if (n == "Identifier")
{
- ret.id = v;
- if (!r.readline(l))
+ if (!r.readline(l) || ret.id == id)
return (ret.id == id ? ret : doc_ext());
+ ret.id = v;
}
else
{
@@ -821,24 +803,19 @@ void tool_app_t::header_entry(const netlist::factory::element_t *e)
{
auto v = plib::psplit(e->param_desc(), ",");
pstring vs;
+ pstring avs;
for (const auto &s : v)
if (!plib::startsWith(s, "@"))
vs += ", p" + plib::replace_all(plib::replace_all(s, "+", ""), ".", "_");
- mac_out("#define " + e->name() + "(name" + vs + ")");
-
- vs = "";
+ else
+ avs += ", " + s.substr(1);
- for (const auto &s : v)
- {
- if (!plib::startsWith(s, "@"))
- {
- // @ gets automatically connected
- const pstring r(plib::replace_all(plib::replace_all(plib::replace_all(s, "+", ""), ".", "_"), "@",""));
- vs += ", p" + r;
- }
- }
+ mac_out("// usage : " + e->name() + "(name" + vs + ")", false);
+ if (avs != "")
+ mac_out("// auto connect: " + avs.substr(2), false);
- mac_out("\tNET_REGISTER_DEVEXT(" + e->name() +", name" + vs + ")", false);
+ mac_out("#define " + e->name() + "(...)");
+ mac_out("\tNET_REGISTER_DEVEXT(" + e->name() +", __VA_ARGS__)", false);
mac_out("", false);
}
diff --git a/src/mame/machine/nl_hazelvid.cpp b/src/mame/machine/nl_hazelvid.cpp
index 7634efc27a1..0fa6fb3d75d 100644
--- a/src/mame/machine/nl_hazelvid.cpp
+++ b/src/mame/machine/nl_hazelvid.cpp
@@ -222,7 +222,7 @@ NETLIST_START(hazelvid)
EPROM_2716(u78, low, low, lc20, lc21, lc22, lc23, u66.Q1, u66.Q2, u66.Q3, u66.Q4, u66.Q5, u66.Q6, u56.Q1)
PARAM(u78.ROM, "u83_chr.bin")
- TTL_74166(u77, video_clk, low, ndot, low, u78.D0, u78.D1, u78.D2, u78.D3, u78.D4, u78.D5, u78.D6, low, clr_vid_sr)
+ TTL_74166(u77, video_clk, low, ndot, low, u78.O0, u78.O1, u78.O2, u78.O3, u78.O4, u78.O5, u78.O6, low, clr_vid_sr)
ALIAS(raw_dot, u77.QH)
TTL_7400_NAND(u79_4, fgbit_q, fgbit_q)