From 6f889d51aeb4ca7d692060b08f1deec7315e816b Mon Sep 17 00:00:00 2001 From: couriersud Date: Mon, 2 May 2016 23:42:32 +0200 Subject: [PATCH] Implement 7404 as macro device. (nw) --- scripts/src/netlist.lua | 2 - src/lib/netlist/devices/net_lib.cpp | 2 - src/lib/netlist/devices/net_lib.h | 1 - src/lib/netlist/devices/nld_7404.cpp | 90 -------------------- src/lib/netlist/devices/nld_7404.h | 67 --------------- src/lib/netlist/macro/nlm_ttl74xx.cpp | 114 +++++++++++++++++++------- src/lib/netlist/macro/nlm_ttl74xx.h | 17 +++- 7 files changed, 98 insertions(+), 195 deletions(-) delete mode 100644 src/lib/netlist/devices/nld_7404.cpp delete mode 100644 src/lib/netlist/devices/nld_7404.h diff --git a/scripts/src/netlist.lua b/scripts/src/netlist.lua index cb389db8d8d..2f5cad23237 100644 --- a/scripts/src/netlist.lua +++ b/scripts/src/netlist.lua @@ -88,8 +88,6 @@ project "netlist" MAME_DIR .. "src/lib/netlist/devices/nld_4066.h", MAME_DIR .. "src/lib/netlist/devices/nld_7402.cpp", MAME_DIR .. "src/lib/netlist/devices/nld_7402.h", - MAME_DIR .. "src/lib/netlist/devices/nld_7404.cpp", - MAME_DIR .. "src/lib/netlist/devices/nld_7404.h", MAME_DIR .. "src/lib/netlist/devices/nld_7408.cpp", MAME_DIR .. "src/lib/netlist/devices/nld_7408.h", MAME_DIR .. "src/lib/netlist/devices/nld_7410.cpp", diff --git a/src/lib/netlist/devices/net_lib.cpp b/src/lib/netlist/devices/net_lib.cpp index 7933bcde988..97b2eb1820e 100644 --- a/src/lib/netlist/devices/net_lib.cpp +++ b/src/lib/netlist/devices/net_lib.cpp @@ -99,7 +99,6 @@ void initialize_factory(factory_list_t &factory) ENTRY(nicRSFF, NETDEV_RSFF, "+S,R") ENTRY(nicDelay, NETDEV_DELAY, "-") ENTRY(7402, TTL_7402_NOR, "+A,B") - ENTRY(7404, TTL_7404_INVERT, "+A") ENTRY(7408, TTL_7408_AND, "+A,B") ENTRY(7410, TTL_7410_NAND, "+A,B,C") ENTRY(7411, TTL_7411_AND, "+A,B,C") @@ -138,7 +137,6 @@ void initialize_factory(factory_list_t &factory) ENTRY(r2r_dac, R2R_DAC, "+VIN,R,N") ENTRY(4538_dip, CD4538_DIP, "-") ENTRY(7402_dip, TTL_7402_DIP, "-") - ENTRY(7404_dip, TTL_7404_DIP, "-") ENTRY(7408_dip, TTL_7408_DIP, "-") ENTRY(7410_dip, TTL_7410_DIP, "-") ENTRY(7411_dip, TTL_7411_DIP, "-") diff --git a/src/lib/netlist/devices/net_lib.h b/src/lib/netlist/devices/net_lib.h index 890092e9cee..69a9123b490 100644 --- a/src/lib/netlist/devices/net_lib.h +++ b/src/lib/netlist/devices/net_lib.h @@ -18,7 +18,6 @@ #include "nld_4020.h" #include "nld_4066.h" #include "nld_7402.h" -#include "nld_7404.h" #include "nld_7408.h" #include "nld_7410.h" #include "nld_7411.h" diff --git a/src/lib/netlist/devices/nld_7404.cpp b/src/lib/netlist/devices/nld_7404.cpp deleted file mode 100644 index 2f1b712a479..00000000000 --- a/src/lib/netlist/devices/nld_7404.cpp +++ /dev/null @@ -1,90 +0,0 @@ -// license:GPL-2.0+ -// copyright-holders:Couriersud -/* - * nld_7404.c - * - */ - -#include "nld_7404.h" - -NETLIB_NAMESPACE_DEVICES_START() - -#if 1 && (USE_TRUTHTABLE) -nld_7404::truthtable_t nld_7404::m_ttbl; -const char *nld_7404::m_desc[] = { - "A | Q ", - "0 | 1|22", - "1 | 0|15", - "" -}; -#else - -NETLIB_START(7404) -{ - register_input("A", m_I[0]); - register_output("Q", m_Q[0]); -} - -NETLIB_RESET(7404) -{ -} - -NETLIB_UPDATE(7404) -{ - /* static */ const netlist_time delay[2] = { NLTIME_FROM_NS(15), NLTIME_FROM_NS(22) }; - UINT8 t = (INPLOGIC(m_I[0])) ^ 1; - OUTLOGIC(m_Q[0], t, delay[t]); -} -#endif - -NETLIB_START(7404_dip) -{ - register_sub("1", m_1); - register_sub("2", m_2); - register_sub("3", m_3); - register_sub("4", m_4); - register_sub("5", m_5); - register_sub("6", m_6); - - register_subalias("1", m_1->m_I[0]); - register_subalias("2", m_1->m_Q[0]); - - register_subalias("3", m_2->m_I[0]); - register_subalias("4", m_2->m_Q[0]); - - register_subalias("5", m_3->m_I[0]); - register_subalias("6", m_3->m_Q[0]); - - register_subalias("8", m_4->m_Q[0]); - register_subalias("9", m_4->m_I[0]); - - register_subalias("10", m_5->m_Q[0]); - register_subalias("11", m_5->m_I[0]); - - register_subalias("12", m_6->m_Q[0]); - register_subalias("13", m_6->m_I[0]); -} - -NETLIB_UPDATE(7404_dip) -{ - /* only called during startup */ - - m_1->update_dev(); - m_2->update_dev(); - m_3->update_dev(); - m_4->update_dev(); - m_5->update_dev(); - m_6->update_dev(); -} - -NETLIB_RESET(7404_dip) -{ - m_1->do_reset(); - m_2->do_reset(); - m_3->do_reset(); - m_4->do_reset(); - m_5->do_reset(); - m_6->do_reset(); -} - -NETLIB_NAMESPACE_DEVICES_END() diff --git a/src/lib/netlist/devices/nld_7404.h b/src/lib/netlist/devices/nld_7404.h deleted file mode 100644 index 197f36c3c0f..00000000000 --- a/src/lib/netlist/devices/nld_7404.h +++ /dev/null @@ -1,67 +0,0 @@ -// license:GPL-2.0+ -// copyright-holders:Couriersud -/* - * nld_7404.h - * - * DM7404: Hex Inverting Gates - * - * +--------------+ - * A1 |1 ++ 14| VCC - * Y1 |2 13| A6 - * A2 |3 12| Y6 - * Y2 |4 7404 11| A5 - * A3 |5 10| Y5 - * Y3 |6 9| A4 - * GND |7 8| Y4 - * +--------------+ - * _ - * Y = A - * +---++---+ - * | A || Y | - * +===++===+ - * | 0 || 1 | - * | 1 || 0 | - * +---++---+ - * - * Naming conventions follow National Semiconductor datasheet - * - */ - -#ifndef NLD_7404_H_ -#define NLD_7404_H_ - -#include "nld_signal.h" -#include "nld_truthtable.h" - -#define TTL_7404_INVERT(_name, _A) \ - NET_REGISTER_DEV(TTL_7404_INVERT, _name) \ - NET_CONNECT(_name, A, _A) - -#define TTL_7404_DIP(_name) \ - NET_REGISTER_DEV(TTL_7404_DIP, _name) - -NETLIB_NAMESPACE_DEVICES_START() - -#if 1 && (USE_TRUTHTABLE) -NETLIB_TRUTHTABLE(7404, 1, 1, 0); -#else -NETLIB_DEVICE(7404, -public: - logic_input_t m_I[1]; - logic_output_t m_Q[1]; -); -#endif - -NETLIB_DEVICE(7404_dip, - - NETLIB_SUB(7404) m_1; - NETLIB_SUB(7404) m_2; - NETLIB_SUB(7404) m_3; - NETLIB_SUB(7404) m_4; - NETLIB_SUB(7404) m_5; - NETLIB_SUB(7404) m_6; -); - -NETLIB_NAMESPACE_DEVICES_END() - -#endif /* NLD_7404_H_ */ diff --git a/src/lib/netlist/macro/nlm_ttl74xx.cpp b/src/lib/netlist/macro/nlm_ttl74xx.cpp index ed74a8e305c..7cc32c573b0 100644 --- a/src/lib/netlist/macro/nlm_ttl74xx.cpp +++ b/src/lib/netlist/macro/nlm_ttl74xx.cpp @@ -5,34 +5,6 @@ #include "devices/nld_truthtable.h" #include "devices/nld_system.h" -/* - * DM7416: Hex Inverting Buffers with - * High Voltage Open-Collector Outputs - * - */ - -NETLIST_START(TTL_7416_DIP) - TTL_7416_GATE(s1) - TTL_7416_GATE(s2) - TTL_7416_GATE(s3) - TTL_7416_GATE(s4) - TTL_7416_GATE(s5) - TTL_7416_GATE(s6) - - DUMMY_INPUT(GND) - DUMMY_INPUT(VCC) - - DIPPINS( /* +--------------+ */ - s1.A, /* A1 |1 ++ 14| VCC */ VCC.I, - s1.Q, /* Y1 |2 13| A6 */ s6.A, - s2.A, /* A2 |3 12| Y6 */ s6.Q, - s2.Q, /* Y2 |4 7416 11| A5 */ s5.A, - s3.A, /* A3 |5 10| Y5 */ s5.Q, - s3.Q, /* Y3 |6 9| A4 */ s4.A, - GND.I, /* GND |7 8| Y4 */ s4.Q - /* +--------------+ */ - ) -NETLIST_END() /* * DM7400: Quad 2-Input NAND Gates @@ -73,6 +45,73 @@ NETLIST_START(TTL_7400_DIP) ) NETLIST_END() +/* + * DM7404: Hex Inverting Gates + * _ + * Y = A + * +---++---+ + * | A || Y | + * +===++===+ + * | 0 || 1 | + * | 1 || 0 | + * +---++---+ + * + * Naming conventions follow National Semiconductor datasheet + * + */ + +NETLIST_START(TTL_7404_DIP) + TTL_7404_GATE(s1) + TTL_7404_GATE(s2) + TTL_7404_GATE(s3) + TTL_7404_GATE(s4) + TTL_7404_GATE(s5) + TTL_7404_GATE(s6) + + DUMMY_INPUT(GND) + DUMMY_INPUT(VCC) + + DIPPINS( /* +--------------+ */ + s1.A, /* A1 |1 ++ 14| VCC */ VCC.I, + s1.Q, /* Y1 |2 13| A6 */ s6.A, + s2.A, /* A2 |3 12| Y6 */ s6.Q, + s2.Q, /* Y2 |4 7404 11| A5 */ s5.A, + s3.A, /* A3 |5 10| Y5 */ s5.Q, + s3.Q, /* Y3 |6 9| A4 */ s4.A, + GND.I, /* GND |7 8| Y4 */ s4.Q + /* +--------------+ */ + ) +NETLIST_END() + +/* + * DM7416: Hex Inverting Buffers with + * High Voltage Open-Collector Outputs + * + */ + +NETLIST_START(TTL_7416_DIP) + TTL_7416_GATE(s1) + TTL_7416_GATE(s2) + TTL_7416_GATE(s3) + TTL_7416_GATE(s4) + TTL_7416_GATE(s5) + TTL_7416_GATE(s6) + + DUMMY_INPUT(GND) + DUMMY_INPUT(VCC) + + DIPPINS( /* +--------------+ */ + s1.A, /* A1 |1 ++ 14| VCC */ VCC.I, + s1.Q, /* Y1 |2 13| A6 */ s6.A, + s2.A, /* A2 |3 12| Y6 */ s6.Q, + s2.Q, /* Y2 |4 7416 11| A5 */ s5.A, + s3.A, /* A3 |5 10| Y5 */ s5.Q, + s3.Q, /* Y3 |6 9| A4 */ s4.A, + GND.I, /* GND |7 8| Y4 */ s4.Q + /* +--------------+ */ + ) +NETLIST_END() + NETLIST_START(TTL74XX_lib) TRUTHTABLE_START(TTL_7400_GATE, 2, 1, 0, "") @@ -80,7 +119,6 @@ NETLIST_START(TTL74XX_lib) TT_LINE("0,X|1|22") TT_LINE("X,0|1|22") TT_LINE("1,1|0|15") - /* Open Collector */ TT_FAMILY("74XX") TRUTHTABLE_END() @@ -89,7 +127,20 @@ NETLIST_START(TTL74XX_lib) TT_LINE("0,X|1|22") TT_LINE("X,0|1|22") TT_LINE("1,1|0|15") - /* Open Collector */ + TT_FAMILY("74XX") + TRUTHTABLE_END() + + TRUTHTABLE_START(TTL_7404_GATE, 1, 1, 0, "") + TT_HEAD(" A | Q ") + TT_LINE(" 0 | 1 |22") + TT_LINE(" 1 | 0 |15") + TT_FAMILY("74XX") + TRUTHTABLE_END() + + TRUTHTABLE_START(TTL_7404_INVERT, 1, 1, 0, "A") + TT_HEAD(" A | Q ") + TT_LINE(" 0 | 1 |22") + TT_LINE(" 1 | 0 |15") TT_FAMILY("74XX") TRUTHTABLE_END() @@ -101,6 +152,7 @@ NETLIST_START(TTL74XX_lib) TT_FAMILY("74XXOC") TRUTHTABLE_END() - LOCAL_LIB_ENTRY(TTL_7416_DIP) LOCAL_LIB_ENTRY(TTL_7400_DIP) + LOCAL_LIB_ENTRY(TTL_7404_DIP) + LOCAL_LIB_ENTRY(TTL_7416_DIP) NETLIST_END() diff --git a/src/lib/netlist/macro/nlm_ttl74xx.h b/src/lib/netlist/macro/nlm_ttl74xx.h index 763ee5620ca..36b08532644 100644 --- a/src/lib/netlist/macro/nlm_ttl74xx.h +++ b/src/lib/netlist/macro/nlm_ttl74xx.h @@ -13,14 +13,27 @@ #define TTL_7400_GATE(_name) \ NET_REGISTER_DEV(TTL_7400_GATE, _name) + #define TTL_7400_NAND(_name, _A, _B) \ - NET_REGISTER_DEV(TTL_7400_NAND, _name) \ - NET_CONNECT(_name, A, _A) \ + NET_REGISTER_DEV(TTL_7400_NAND, _name) \ + NET_CONNECT(_name, A, _A) \ NET_CONNECT(_name, B, _B) #define TTL_7400_DIP(_name) \ NET_REGISTER_DEV(TTL_7400_DIP, _name) + +#define TTL_7404_GATE(_name) \ + NET_REGISTER_DEV(TTL_7404_GATE, _name) + +#define TTL_7404_INVERT(_name, _A) \ + NET_REGISTER_DEV(TTL_7404_INVERT, _name) \ + NET_CONNECT(_name, A, _A) + +#define TTL_7404_DIP(_name) \ + NET_REGISTER_DEV(TTL_7404_DIP, _name) + + #define TTL_7416_GATE(_name) \ NET_REGISTER_DEV(TTL_7416_GATE, _name)