diff options
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) |