mirror of
https://github.com/holub/mame
synced 2025-04-22 08:22:15 +03:00
netlist: Macro-ized 9322 DIPs.
This commit is contained in:
parent
bd6cbb17aa
commit
fe8c88862f
@ -128,6 +128,7 @@ namespace devices
|
||||
LIB_ENTRY(9310)
|
||||
LIB_ENTRY(9314)
|
||||
LIB_ENTRY(9316)
|
||||
LIB_ENTRY(9322_GATE)
|
||||
LIB_ENTRY(9322)
|
||||
LIB_ENTRY(9334)
|
||||
LIB_ENTRY(AM2847)
|
||||
@ -163,7 +164,6 @@ namespace devices
|
||||
LIB_ENTRY(74365_dip)
|
||||
LIB_ENTRY(9602)
|
||||
LIB_ENTRY(9314_dip)
|
||||
LIB_ENTRY(9322_dip)
|
||||
LIB_ENTRY(9334_dip)
|
||||
LIB_ENTRY(AM2847_dip)
|
||||
LIB_ENTRY(MM5837_dip)
|
||||
|
@ -14,24 +14,34 @@ namespace netlist
|
||||
{
|
||||
class NETLIB_NAME(9322);
|
||||
|
||||
NETLIB_OBJECT(9322_selector)
|
||||
NETLIB_OBJECT(9322_GATE)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR(9322_selector)
|
||||
, m_parent(owner)
|
||||
NETLIB_CONSTRUCTOR(9322_GATE)
|
||||
, m_A(*this, "A", NETLIB_DELEGATE(inputs))
|
||||
, m_B(*this, "B", NETLIB_DELEGATE(inputs))
|
||||
, m_SELECT(*this, "SELECT", NETLIB_DELEGATE(inputs))
|
||||
, m_STROBE(*this, "STROBE", NETLIB_DELEGATE(inputs))
|
||||
, m_Y(*this, "Y")
|
||||
, m_power_pins(*this)
|
||||
{
|
||||
}
|
||||
|
||||
// FIXME: Timing
|
||||
NETLIB_HANDLERI(inputs);
|
||||
NETLIB_HANDLERI(inputs)
|
||||
{
|
||||
if (m_STROBE())
|
||||
m_Y.push(0, NLTIME_FROM_NS(21));
|
||||
else if (m_SELECT())
|
||||
m_Y.push(m_B(), NLTIME_FROM_NS(14));
|
||||
else
|
||||
m_Y.push(m_A(), NLTIME_FROM_NS(14));
|
||||
}
|
||||
|
||||
public:
|
||||
NETLIB_NAME(9322) &m_parent;
|
||||
logic_input_t m_A;
|
||||
logic_input_t m_B;
|
||||
logic_input_t m_SELECT;
|
||||
logic_input_t m_STROBE;
|
||||
logic_output_t m_Y;
|
||||
nld_power_pins m_power_pins;
|
||||
};
|
||||
@ -39,8 +49,6 @@ namespace netlist
|
||||
NETLIB_OBJECT(9322)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR(9322)
|
||||
, m_SELECT(*this, "SELECT", NETLIB_DELEGATE(inputs))
|
||||
, m_STROBE(*this, "STROBE", NETLIB_DELEGATE(inputs))
|
||||
, m_1(*this, "A")
|
||||
, m_2(*this, "B")
|
||||
, m_3(*this, "C")
|
||||
@ -65,73 +73,29 @@ namespace netlist
|
||||
connect("A.GND", "B.GND");
|
||||
connect("A.GND", "C.GND");
|
||||
connect("A.GND", "D.GND");
|
||||
connect("A.SELECT", "B.SELECT");
|
||||
connect("A.SELECT", "C.SELECT");
|
||||
connect("A.SELECT", "D.SELECT");
|
||||
connect("A.STROBE", "B.STROBE");
|
||||
connect("A.STROBE", "C.STROBE");
|
||||
connect("A.STROBE", "D.STROBE");
|
||||
|
||||
register_subalias("SELECT", "A.SELECT");
|
||||
register_subalias("STROBE", "A.STROBE");
|
||||
register_subalias("GND", "A.GND");
|
||||
register_subalias("VCC", "B.VCC");
|
||||
|
||||
}
|
||||
|
||||
friend class NETLIB_NAME(9322_dip);
|
||||
public:
|
||||
logic_input_t m_SELECT;
|
||||
logic_input_t m_STROBE;
|
||||
private:
|
||||
NETLIB_HANDLERI(inputs)
|
||||
{
|
||||
m_1.inputs();
|
||||
m_2.inputs();
|
||||
m_3.inputs();
|
||||
m_4.inputs();
|
||||
}
|
||||
|
||||
NETLIB_SUB(9322_selector) m_1;
|
||||
NETLIB_SUB(9322_selector) m_2;
|
||||
NETLIB_SUB(9322_selector) m_3;
|
||||
NETLIB_SUB(9322_selector) m_4;
|
||||
NETLIB_SUB(9322_GATE) m_1;
|
||||
NETLIB_SUB(9322_GATE) m_2;
|
||||
NETLIB_SUB(9322_GATE) m_3;
|
||||
NETLIB_SUB(9322_GATE) m_4;
|
||||
|
||||
};
|
||||
|
||||
NETLIB_HANDLER(9322_selector, inputs)
|
||||
{
|
||||
if (m_parent.m_STROBE())
|
||||
m_Y.push(0, NLTIME_FROM_NS(21));
|
||||
else if (m_parent.m_SELECT())
|
||||
m_Y.push(m_B(), NLTIME_FROM_NS(14));
|
||||
else
|
||||
m_Y.push(m_A(), NLTIME_FROM_NS(14));
|
||||
}
|
||||
|
||||
NETLIB_OBJECT(9322_dip)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR(9322_dip)
|
||||
, A(*this, "A")
|
||||
{
|
||||
register_subalias("1", A.m_SELECT);
|
||||
register_subalias("2", A.m_1.m_A);
|
||||
register_subalias("3", A.m_1.m_B);
|
||||
register_subalias("4", A.m_1.m_Y);
|
||||
register_subalias("5", A.m_2.m_A);
|
||||
register_subalias("6", A.m_2.m_B);
|
||||
register_subalias("7", A.m_2.m_Y);
|
||||
register_subalias("8", "A.GND");
|
||||
|
||||
register_subalias("9", A.m_3.m_Y);
|
||||
register_subalias("10", A.m_3.m_B);
|
||||
register_subalias("11", A.m_3.m_A);
|
||||
register_subalias("12", A.m_4.m_Y);
|
||||
register_subalias("13", A.m_4.m_B);
|
||||
register_subalias("14", A.m_4.m_A);
|
||||
register_subalias("15", A.m_STROBE);
|
||||
register_subalias("16", "A.VCC");
|
||||
}
|
||||
|
||||
//NETLIB_RESETI() {}
|
||||
private:
|
||||
NETLIB_SUB(9322) A;
|
||||
};
|
||||
|
||||
NETLIB_DEVICE_IMPL(9322, "TTL_9322", "+SELECT,+A1,+B1,+A2,+B2,+A3,+B3,+A4,+B4,+STROBE,@VCC,@GND")
|
||||
NETLIB_DEVICE_IMPL(9322_dip, "TTL_9322_DIP", "")
|
||||
NETLIB_DEVICE_IMPL(9322_GATE, "TTL_9322_GATE", "")
|
||||
NETLIB_DEVICE_IMPL(9322, "TTL_9322", "+SELECT,+A1,+B1,+A2,+B2,+A3,+B3,+A4,+B4,+STROBE,@VCC,@GND")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -23,22 +23,11 @@
|
||||
|
||||
#include "netlist/nl_setup.h"
|
||||
|
||||
#define TTL_9322(name, cSELECT, cA1, cB1, cA2, cB2, cA3, cB3, cA4, cB4, cSTROBE) \
|
||||
NET_REGISTER_DEV(TTL_9322, name) \
|
||||
NET_CONNECT(name, SELECT, cSELECT) \
|
||||
NET_CONNECT(name, GND, GND) \
|
||||
NET_CONNECT(name, VCC, VCC) \
|
||||
NET_CONNECT(name, A1, cA1) \
|
||||
NET_CONNECT(name, B1, cB1) \
|
||||
NET_CONNECT(name, A2, cA2) \
|
||||
NET_CONNECT(name, B2, cB2) \
|
||||
NET_CONNECT(name, A3, cA3) \
|
||||
NET_CONNECT(name, B3, cB3) \
|
||||
NET_CONNECT(name, A4, cA4) \
|
||||
NET_CONNECT(name, B4, cB4) \
|
||||
NET_CONNECT(name, STROBE, cSTROBE)
|
||||
#define TTL_9322_GATE(...) \
|
||||
NET_REGISTER_DEVEXT(TTL_9322_GATE, __VA_ARGS__)
|
||||
|
||||
#define TTL_9322_DIP(name) \
|
||||
NET_REGISTER_DEV(TTL_9322_DIP, name)
|
||||
// usage: TTL_9322(name, cSELECT, cA1, cB1, cA2, cB2, cA3, cB3, cA4, cB4, cSTROBE)
|
||||
#define TTL_9322(...) \
|
||||
NET_REGISTER_DEVEXT(TTL_9322, __VA_ARGS__)
|
||||
|
||||
#endif /* NLD_9322_H_ */
|
||||
|
@ -798,13 +798,6 @@
|
||||
#define TTL_9314_DIP(...) \
|
||||
NET_REGISTER_DEVEXT(TTL_9314_DIP, __VA_ARGS__)
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Source: src/lib/netlist/devices/nld_9322.cpp
|
||||
// ---------------------------------------------------------------------
|
||||
// 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
|
||||
// ---------------------------------------------------------------------
|
||||
@ -1227,6 +1220,10 @@
|
||||
#define TTL_9316_DIP(...) \
|
||||
NET_REGISTER_DEVEXT(TTL_9316_DIP, __VA_ARGS__)
|
||||
|
||||
// usage : TTL_9322_DIP(name)
|
||||
#define TTL_9322_DIP(...) \
|
||||
NET_REGISTER_DEVEXT(TTL_9322_DIP, __VA_ARGS__)
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Source: CD4XXX_lib
|
||||
// ---------------------------------------------------------------------
|
||||
|
@ -1864,6 +1864,45 @@ static NETLIST_START(TTL_9316_DIP)
|
||||
)
|
||||
NETLIST_END()
|
||||
|
||||
/*
|
||||
* 9322: Quad 2-Line to 1-Line Data Selectors/Multiplexers
|
||||
*
|
||||
* +------------+
|
||||
* SELECT |1 ++ 16| VCC
|
||||
* A1 |2 15| STROBE
|
||||
* B1 |3 14| A4
|
||||
* Y1 |4 9322 13| B4
|
||||
* A2 |5 12| Y4
|
||||
* B2 |6 11| A3
|
||||
* Y2 |7 10| B3
|
||||
* GND |8 9| Y3
|
||||
* +------------+
|
||||
*/
|
||||
|
||||
static NETLIST_START(TTL_9322_DIP)
|
||||
TTL_9322_GATE(A)
|
||||
TTL_9322_GATE(B)
|
||||
TTL_9322_GATE(C)
|
||||
TTL_9322_GATE(D)
|
||||
|
||||
NET_C(A.SELECT, B.SELECT, C.SELECT, D.SELECT)
|
||||
NET_C(A.STROBE, B.STROBE, C.STROBE, D.STROBE)
|
||||
NET_C(A.VCC, B.VCC, C.VCC, D.VCC)
|
||||
NET_C(A.GND, B.GND, C.GND, D.GND)
|
||||
|
||||
DIPPINS( /* +------------+ */
|
||||
A.SELECT, /* SELECT |1 ++ 16| VCC */ A.VCC,
|
||||
A.A, /* A1 |2 15| STROBE */ A.STROBE,
|
||||
A.B, /* B1 |3 14| A4 */ D.A,
|
||||
A.Y, /* Y1 |4 9322 13| B4 */ D.B,
|
||||
B.A, /* A2 |5 12| Y4 */ D.Y,
|
||||
B.B, /* B2 |6 11| A3 */ C.A,
|
||||
B.Y, /* Y2 |7 10| B3 */ C.B,
|
||||
A.GND, /* GND |8 9| Y3 */ C.Y
|
||||
/* +------------+ */
|
||||
)
|
||||
NETLIST_END()
|
||||
|
||||
/* SN7442: 4-Line BCD to 10-Line Decimal Decoder
|
||||
*
|
||||
* +--------------+
|
||||
@ -2527,4 +2566,5 @@ NETLIST_START(TTL74XX_lib)
|
||||
LOCAL_LIB_ENTRY(DM9312_DIP)
|
||||
LOCAL_LIB_ENTRY(TTL_9310_DIP)
|
||||
LOCAL_LIB_ENTRY(TTL_9316_DIP)
|
||||
LOCAL_LIB_ENTRY(TTL_9322_DIP)
|
||||
NETLIST_END()
|
||||
|
@ -397,6 +397,9 @@
|
||||
#define TTL_9316_DIP(name) \
|
||||
NET_REGISTER_DEV(TTL_9316_DIP, name)
|
||||
|
||||
#define TTL_9322_DIP(name) \
|
||||
NET_REGISTER_DEV(TTL_9322_DIP, name)
|
||||
|
||||
#endif // NL_AUTO_DEVICES
|
||||
|
||||
/* ----------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user