mirror of
https://github.com/holub/mame
synced 2025-04-22 08:22:15 +03:00
netlist: Re-do the 74377/8/9 as macros. [Aaron Giles]
This commit is contained in:
parent
5739043ced
commit
333329e54c
@ -129,9 +129,7 @@ namespace devices
|
||||
LIB_ENTRY(74193)
|
||||
LIB_ENTRY(74194)
|
||||
LIB_ENTRY(74365)
|
||||
LIB_ENTRY(74377_dip)
|
||||
LIB_ENTRY(74378_dip)
|
||||
LIB_ENTRY(74379_dip)
|
||||
LIB_ENTRY(74377_GATE)
|
||||
LIB_ENTRY(74393)
|
||||
LIB_ENTRY(74393_dip)
|
||||
//ENTRY(74279, TTL_74279, "") // only dip available
|
||||
|
@ -15,9 +15,9 @@ namespace netlist
|
||||
|
||||
constexpr const std::array<netlist_time, 2> delay = { NLTIME_FROM_NS(25), NLTIME_FROM_NS(25) };
|
||||
|
||||
NETLIB_OBJECT(74377_gate)
|
||||
NETLIB_OBJECT(74377_GATE)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR(74377_gate)
|
||||
NETLIB_CONSTRUCTOR(74377_GATE)
|
||||
, m_E(*this, "E")
|
||||
, m_D(*this, "D")
|
||||
, m_CP(*this, "CP")
|
||||
@ -45,9 +45,6 @@ namespace netlist
|
||||
}
|
||||
}
|
||||
|
||||
friend class NETLIB_NAME(74377_dip);
|
||||
friend class NETLIB_NAME(74378_dip);
|
||||
friend class NETLIB_NAME(74379_dip);
|
||||
private:
|
||||
logic_input_t m_E;
|
||||
logic_input_t m_D;
|
||||
@ -59,198 +56,7 @@ namespace netlist
|
||||
nld_power_pins m_power_pins;
|
||||
};
|
||||
|
||||
NETLIB_OBJECT(74377_dip)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR(74377_dip)
|
||||
, m_A(*this, "A")
|
||||
, m_B(*this, "B")
|
||||
, m_C(*this, "C")
|
||||
, m_D(*this, "D")
|
||||
, m_E(*this, "E")
|
||||
, m_F(*this, "F")
|
||||
, m_G(*this, "G")
|
||||
, m_H(*this, "H")
|
||||
{
|
||||
register_subalias("1", m_A.m_E);
|
||||
register_subalias("2", m_A.m_Q);
|
||||
register_subalias("3", m_A.m_D);
|
||||
register_subalias("4", m_B.m_D);
|
||||
register_subalias("5", m_B.m_Q);
|
||||
register_subalias("6", m_C.m_Q);
|
||||
register_subalias("7", m_C.m_D);
|
||||
register_subalias("8", m_D.m_D);
|
||||
register_subalias("9", m_D.m_Q);
|
||||
register_subalias("10", "A.GND");
|
||||
|
||||
register_subalias("11", m_A.m_CP);
|
||||
register_subalias("12", m_E.m_Q);
|
||||
register_subalias("13", m_E.m_D);
|
||||
register_subalias("14", m_F.m_D);
|
||||
register_subalias("15", m_F.m_Q);
|
||||
register_subalias("16", m_G.m_Q);
|
||||
register_subalias("17", m_G.m_D);
|
||||
register_subalias("18", m_H.m_D);
|
||||
register_subalias("19", m_H.m_Q);
|
||||
register_subalias("20", "A.VCC");
|
||||
|
||||
connect("A.GND", "B.GND");
|
||||
connect("A.GND", "C.GND");
|
||||
connect("A.GND", "D.GND");
|
||||
connect("A.GND", "E.GND");
|
||||
connect("A.GND", "F.GND");
|
||||
connect("A.GND", "G.GND");
|
||||
connect("A.GND", "H.GND");
|
||||
connect("A.VCC", "B.VCC");
|
||||
connect("A.VCC", "C.VCC");
|
||||
connect("A.VCC", "D.VCC");
|
||||
connect("A.VCC", "E.VCC");
|
||||
connect("A.VCC", "F.VCC");
|
||||
connect("A.VCC", "G.VCC");
|
||||
connect("A.VCC", "H.VCC");
|
||||
connect(m_A.m_E, m_B.m_E);
|
||||
connect(m_A.m_E, m_C.m_E);
|
||||
connect(m_A.m_E, m_D.m_E);
|
||||
connect(m_A.m_E, m_E.m_E);
|
||||
connect(m_A.m_E, m_F.m_E);
|
||||
connect(m_A.m_E, m_G.m_E);
|
||||
connect(m_A.m_E, m_H.m_E);
|
||||
connect(m_A.m_CP, m_B.m_CP);
|
||||
connect(m_A.m_CP, m_C.m_CP);
|
||||
connect(m_A.m_CP, m_D.m_CP);
|
||||
connect(m_A.m_CP, m_E.m_CP);
|
||||
connect(m_A.m_CP, m_F.m_CP);
|
||||
connect(m_A.m_CP, m_G.m_CP);
|
||||
connect(m_A.m_CP, m_H.m_CP);
|
||||
}
|
||||
//NETLIB_RESETI();
|
||||
//NETLIB_UPDATEI();
|
||||
|
||||
protected:
|
||||
NETLIB_SUB(74377_gate) m_A;
|
||||
NETLIB_SUB(74377_gate) m_B;
|
||||
NETLIB_SUB(74377_gate) m_C;
|
||||
NETLIB_SUB(74377_gate) m_D;
|
||||
NETLIB_SUB(74377_gate) m_E;
|
||||
NETLIB_SUB(74377_gate) m_F;
|
||||
NETLIB_SUB(74377_gate) m_G;
|
||||
NETLIB_SUB(74377_gate) m_H;
|
||||
};
|
||||
|
||||
NETLIB_OBJECT(74378_dip)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR(74378_dip)
|
||||
, m_A(*this, "A")
|
||||
, m_B(*this, "B")
|
||||
, m_C(*this, "C")
|
||||
, m_D(*this, "D")
|
||||
, m_E(*this, "E")
|
||||
, m_F(*this, "F")
|
||||
{
|
||||
register_subalias("1", m_A.m_E);
|
||||
register_subalias("2", m_A.m_Q);
|
||||
register_subalias("3", m_A.m_D);
|
||||
register_subalias("4", m_B.m_D);
|
||||
register_subalias("5", m_B.m_Q);
|
||||
register_subalias("6", m_C.m_D);
|
||||
register_subalias("7", m_C.m_Q);
|
||||
register_subalias("8", "A.GND");
|
||||
|
||||
register_subalias("9", m_A.m_CP);
|
||||
register_subalias("10", m_D.m_Q);
|
||||
register_subalias("11", m_D.m_D);
|
||||
register_subalias("12", m_E.m_Q);
|
||||
register_subalias("13", m_E.m_D);
|
||||
register_subalias("14", m_F.m_D);
|
||||
register_subalias("15", m_F.m_Q);
|
||||
register_subalias("16", "A.VCC");
|
||||
|
||||
connect("A.GND", "B.GND");
|
||||
connect("A.GND", "C.GND");
|
||||
connect("A.GND", "D.GND");
|
||||
connect("A.GND", "E.GND");
|
||||
connect("A.GND", "F.GND");
|
||||
connect("A.VCC", "B.VCC");
|
||||
connect("A.VCC", "C.VCC");
|
||||
connect("A.VCC", "D.VCC");
|
||||
connect("A.VCC", "E.VCC");
|
||||
connect("A.VCC", "F.VCC");
|
||||
connect(m_A.m_E, m_B.m_E);
|
||||
connect(m_A.m_E, m_C.m_E);
|
||||
connect(m_A.m_E, m_D.m_E);
|
||||
connect(m_A.m_E, m_E.m_E);
|
||||
connect(m_A.m_E, m_F.m_E);
|
||||
connect(m_A.m_CP, m_B.m_CP);
|
||||
connect(m_A.m_CP, m_C.m_CP);
|
||||
connect(m_A.m_CP, m_D.m_CP);
|
||||
connect(m_A.m_CP, m_E.m_CP);
|
||||
connect(m_A.m_CP, m_F.m_CP);
|
||||
}
|
||||
//NETLIB_RESETI();
|
||||
//NETLIB_UPDATEI();
|
||||
|
||||
protected:
|
||||
NETLIB_SUB(74377_gate) m_A;
|
||||
NETLIB_SUB(74377_gate) m_B;
|
||||
NETLIB_SUB(74377_gate) m_C;
|
||||
NETLIB_SUB(74377_gate) m_D;
|
||||
NETLIB_SUB(74377_gate) m_E;
|
||||
NETLIB_SUB(74377_gate) m_F;
|
||||
};
|
||||
|
||||
NETLIB_OBJECT(74379_dip)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR(74379_dip)
|
||||
, m_A(*this, "A")
|
||||
, m_B(*this, "B")
|
||||
, m_C(*this, "C")
|
||||
, m_D(*this, "D")
|
||||
{
|
||||
register_subalias("1", m_A.m_E);
|
||||
register_subalias("2", m_A.m_Q);
|
||||
register_subalias("3", m_A.m_QQ);
|
||||
register_subalias("4", m_A.m_D);
|
||||
register_subalias("5", m_B.m_D);
|
||||
register_subalias("6", m_B.m_QQ);
|
||||
register_subalias("7", m_B.m_Q);
|
||||
register_subalias("8", "A.GND");
|
||||
|
||||
register_subalias("9", m_A.m_CP);
|
||||
register_subalias("10", m_C.m_Q);
|
||||
register_subalias("11", m_C.m_QQ);
|
||||
register_subalias("12", m_C.m_D);
|
||||
register_subalias("13", m_D.m_D);
|
||||
register_subalias("14", m_D.m_QQ);
|
||||
register_subalias("15", m_D.m_Q);
|
||||
register_subalias("16", "A.VCC");
|
||||
|
||||
connect("A.GND", "B.GND");
|
||||
connect("A.GND", "C.GND");
|
||||
connect("A.GND", "D.GND");
|
||||
connect("A.VCC", "B.VCC");
|
||||
connect("A.VCC", "C.VCC");
|
||||
connect("A.VCC", "D.VCC");
|
||||
connect(m_A.m_E, m_B.m_E);
|
||||
connect(m_A.m_E, m_C.m_E);
|
||||
connect(m_A.m_E, m_D.m_E);
|
||||
connect(m_A.m_CP, m_B.m_CP);
|
||||
connect(m_A.m_CP, m_C.m_CP);
|
||||
connect(m_A.m_CP, m_D.m_CP);
|
||||
}
|
||||
//NETLIB_RESETI();
|
||||
//NETLIB_UPDATEI();
|
||||
|
||||
protected:
|
||||
NETLIB_SUB(74377_gate) m_A;
|
||||
NETLIB_SUB(74377_gate) m_B;
|
||||
NETLIB_SUB(74377_gate) m_C;
|
||||
NETLIB_SUB(74377_gate) m_D;
|
||||
};
|
||||
|
||||
|
||||
NETLIB_DEVICE_IMPL(74377_gate, "TTL_74377_GATE", "")
|
||||
NETLIB_DEVICE_IMPL(74377_dip, "TTL_74377_DIP", "")
|
||||
NETLIB_DEVICE_IMPL(74378_dip, "TTL_74378_DIP", "")
|
||||
NETLIB_DEVICE_IMPL(74379_dip, "TTL_74379_DIP", "")
|
||||
NETLIB_DEVICE_IMPL(74377_GATE, "TTL_74377_GATE", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -53,17 +53,9 @@
|
||||
|
||||
#include "netlist/nl_setup.h"
|
||||
|
||||
|
||||
#define TTL_74377_GATE(name) \
|
||||
NET_REGISTER_DEV(TTL_74377_GATE, name)
|
||||
|
||||
#define TTL_74377_DIP(name) \
|
||||
NET_REGISTER_DEV(TTL_74377_DIP, name)
|
||||
|
||||
#define TTL_74378_DIP(name) \
|
||||
NET_REGISTER_DEV(TTL_74378_DIP, name)
|
||||
|
||||
#define TTL_74379_DIP(name) \
|
||||
NET_REGISTER_DEV(TTL_74379_DIP, name)
|
||||
|
||||
|
||||
#endif /* NLD_74377_H_ */
|
||||
|
@ -432,15 +432,6 @@
|
||||
#define TTL_74377_GATE(name) \
|
||||
NET_REGISTER_DEVEXT(TTL_74377_GATE, 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)
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Source: src/lib/netlist/devices/nld_74393.cpp
|
||||
// ---------------------------------------------------------------------
|
||||
@ -894,6 +885,15 @@
|
||||
#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)
|
||||
|
||||
|
@ -828,6 +828,93 @@ static NETLIST_START(TTL_74279_DIP)
|
||||
)
|
||||
NETLIST_END()
|
||||
|
||||
/*
|
||||
* DM74377: Octal D Flip-Flop With Enable
|
||||
* DM74378: Hex D Flip-Flop With Enable
|
||||
* DM74379: 4-bit D Flip-Flop With Enable
|
||||
*
|
||||
*/
|
||||
|
||||
static NETLIST_START(TTL_74377_DIP)
|
||||
TTL_74377_GATE(A)
|
||||
TTL_74377_GATE(B)
|
||||
TTL_74377_GATE(C)
|
||||
TTL_74377_GATE(D)
|
||||
TTL_74377_GATE(E)
|
||||
TTL_74377_GATE(F)
|
||||
TTL_74377_GATE(G)
|
||||
TTL_74377_GATE(H)
|
||||
|
||||
NET_C(A.VCC, B.VCC, C.VCC, D.VCC, E.VCC, F.VCC, G.VCC, H.VCC)
|
||||
NET_C(A.GND, B.GND, C.GND, D.GND, E.GND, F.GND, G.GND, H.GND)
|
||||
NET_C(A.CP, B.CP, C.CP, D.CP, E.CP, F.CP, G.CP, H.CP)
|
||||
NET_C(A.E, B.E, C.E, D.E, E.E, F.E, G.E, H.E)
|
||||
|
||||
DIPPINS( /* +--------------+ */
|
||||
A.E, /* /E |1 ++ 20| VCC */ A.VCC,
|
||||
A.Q, /* Q0 |2 19| Q7 */ H.Q,
|
||||
A.D, /* D0 |3 18| D7 */ H.D,
|
||||
B.D, /* D1 |4 74377 17| D6 */ G.D,
|
||||
B.Q, /* Q1 |5 16| Q6 */ G.Q,
|
||||
C.Q, /* Q2 |6 15| Q5 */ F.Q,
|
||||
C.D, /* D2 |7 14| D5 */ F.D,
|
||||
D.D, /* D3 |8 13| D4 */ E.D,
|
||||
D.Q, /* Q3 |9 12| Q4 */ E.D,
|
||||
A.GND,/* GND |10 11| CP */ A.CP
|
||||
/* +--------------+ */
|
||||
)
|
||||
NETLIST_END()
|
||||
|
||||
static NETLIST_START(TTL_74378_DIP)
|
||||
TTL_74377_GATE(A)
|
||||
TTL_74377_GATE(B)
|
||||
TTL_74377_GATE(C)
|
||||
TTL_74377_GATE(D)
|
||||
TTL_74377_GATE(E)
|
||||
TTL_74377_GATE(F)
|
||||
|
||||
NET_C(A.VCC, B.VCC, C.VCC, D.VCC, E.VCC, F.VCC)
|
||||
NET_C(A.GND, B.GND, C.GND, D.GND, E.GND, F.GND)
|
||||
NET_C(A.CP, B.CP, C.CP, D.CP, E.CP, F.CP)
|
||||
NET_C(A.E, B.E, C.E, D.E, E.E, F.E)
|
||||
|
||||
DIPPINS( /* +--------------+ */
|
||||
A.E, /* /E |1 ++ 16| VCC */ A.VCC,
|
||||
A.Q, /* Q0 |2 15| Q5 */ F.Q,
|
||||
A.D, /* D0 |3 14| D5 */ F.D,
|
||||
B.D, /* D1 |4 74378 13| D4 */ E.D,
|
||||
B.Q, /* Q1 |5 12| Q4 */ E.Q,
|
||||
C.D, /* D2 |6 11| D3 */ D.D,
|
||||
C.Q, /* Q2 |7 10| Q3 */ D.Q,
|
||||
A.GND,/* GND |8 9| CP */ A.CP
|
||||
/* +--------------+ */
|
||||
)
|
||||
NETLIST_END()
|
||||
|
||||
static NETLIST_START(TTL_74379_DIP)
|
||||
TTL_74377_GATE(A)
|
||||
TTL_74377_GATE(B)
|
||||
TTL_74377_GATE(C)
|
||||
TTL_74377_GATE(D)
|
||||
|
||||
NET_C(A.VCC, B.VCC, C.VCC, D.VCC)
|
||||
NET_C(A.GND, B.GND, C.GND, D.GND)
|
||||
NET_C(A.CP, B.CP, C.CP, D.CP)
|
||||
NET_C(A.E, B.E, C.E, D.E)
|
||||
|
||||
DIPPINS( /* +--------------+ */
|
||||
A.E, /* /E |1 ++ 16| VCC */ A.VCC,
|
||||
A.Q, /* Q0 |2 15| Q3 */ D.Q,
|
||||
A.QQ, /* /Q0 |3 14| /Q3 */ D.QQ,
|
||||
A.D, /* D0 |4 74379 13| D3 */ D.D,
|
||||
B.D, /* D1 |5 12| D2 */ C.D,
|
||||
B.QQ, /* /Q1 |6 11| /Q2 */ C.QQ,
|
||||
B.Q, /* Q1 |7 10| Q2 */ C.Q,
|
||||
A.GND,/* GND |8 9| CP */ A.CP
|
||||
/* +--------------+ */
|
||||
)
|
||||
NETLIST_END()
|
||||
|
||||
/*
|
||||
* DM9312: One of Eight Line Data Selectors/Multiplexers
|
||||
*
|
||||
@ -1434,5 +1521,8 @@ NETLIST_START(TTL74XX_lib)
|
||||
LOCAL_LIB_ENTRY(TTL_74156_DIP)
|
||||
LOCAL_LIB_ENTRY(TTL_74260_DIP)
|
||||
LOCAL_LIB_ENTRY(TTL_74279_DIP)
|
||||
LOCAL_LIB_ENTRY(TTL_74377_DIP)
|
||||
LOCAL_LIB_ENTRY(TTL_74378_DIP)
|
||||
LOCAL_LIB_ENTRY(TTL_74379_DIP)
|
||||
LOCAL_LIB_ENTRY(DM9312_DIP)
|
||||
NETLIST_END()
|
||||
|
@ -293,6 +293,15 @@
|
||||
#define TTL_74279_DIP(name) \
|
||||
NET_REGISTER_DEV(TTL_74279_DIP, name)
|
||||
|
||||
#define TTL_74377_DIP(name) \
|
||||
NET_REGISTER_DEV(TTL_74377_DIP, name)
|
||||
|
||||
#define TTL_74378_DIP(name) \
|
||||
NET_REGISTER_DEV(TTL_74378_DIP, name)
|
||||
|
||||
#define TTL_74379_DIP(name) \
|
||||
NET_REGISTER_DEV(TTL_74379_DIP, name)
|
||||
|
||||
#define DM9312(name, cA, cB, cC, cSTROBE, cD0, cD1, cD2, cD3, cD4, cD5, cD6, cD7) \
|
||||
NET_REGISTER_DEV(DM9312, name) \
|
||||
NET_CONNECT(name, VCC, VCC) \
|
||||
|
Loading…
Reference in New Issue
Block a user