mirror of
https://github.com/holub/mame
synced 2025-07-07 02:50:50 +03:00
Netlist: Added 74163 to netlist. [Couriersud]
This commit is contained in:
parent
da8cfd878f
commit
097c736f79
@ -110,6 +110,8 @@ namespace devices
|
||||
LIB_ENTRY(74153_dip)
|
||||
LIB_ENTRY(74161)
|
||||
LIB_ENTRY(74161_dip)
|
||||
LIB_ENTRY(74163)
|
||||
LIB_ENTRY(74163_dip)
|
||||
LIB_ENTRY(74164)
|
||||
LIB_ENTRY(74164_dip)
|
||||
LIB_ENTRY(74165)
|
||||
|
@ -16,16 +16,20 @@ namespace netlist
|
||||
|
||||
static constexpr const unsigned MAXCNT = 15;
|
||||
|
||||
NETLIB_OBJECT(9316)
|
||||
// FIXME: Family needs to be set to LS for 74193. This needs some more
|
||||
// thought generally.
|
||||
|
||||
template <bool ASYNC>
|
||||
NETLIB_OBJECT(9316_base)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR(9316)
|
||||
, m_CLK(*this, "CLK", NETLIB_DELEGATE(9316, clk))
|
||||
NETLIB_CONSTRUCTOR(9316_base)
|
||||
, m_CLK(*this, "CLK", NETLIB_DELEGATE(9316_base, clk))
|
||||
, m_ENT(*this, "ENT")
|
||||
, m_RC(*this, "RC")
|
||||
, m_LOADQ(*this, "LOADQ")
|
||||
, m_ENP(*this, "ENP")
|
||||
, m_CLRQ(*this, "CLRQ")
|
||||
, m_ABCD(*this, {"A", "B", "C", "D"}, NETLIB_DELEGATE(9316, abcd))
|
||||
, m_ABCD(*this, {"A", "B", "C", "D"}, NETLIB_DELEGATE(9316_base, abcd))
|
||||
, m_Q(*this, { "QA", "QB", "QC", "QD" })
|
||||
, m_cnt(*this, "m_cnt", 0)
|
||||
, m_abcd(*this, "m_abcd", 0)
|
||||
@ -49,14 +53,14 @@ namespace netlist
|
||||
m_ent = m_ENT();
|
||||
m_loadq = m_LOADQ();
|
||||
|
||||
if (((m_loadq ^ 1) || (m_ent && m_ENP())) && CLRQ)
|
||||
if (((m_loadq ^ 1) || (m_ent && m_ENP())) && (!ASYNC || CLRQ))
|
||||
{
|
||||
m_CLK.activate_lh();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_CLK.inactivate();
|
||||
if (!CLRQ && (m_cnt>0))
|
||||
if (ASYNC && !CLRQ && (m_cnt>0))
|
||||
{
|
||||
update_outputs_all(0, NLTIME_FROM_NS(36));
|
||||
m_cnt = 0;
|
||||
@ -68,10 +72,18 @@ namespace netlist
|
||||
|
||||
NETLIB_HANDLERI(clk)
|
||||
{
|
||||
auto cnt = (m_loadq ? (m_cnt + 1) & MAXCNT: m_abcd);
|
||||
m_RC.push(m_ent && (cnt == MAXCNT), NLTIME_FROM_NS(27));
|
||||
update_outputs_all(cnt, NLTIME_FROM_NS(20));
|
||||
m_cnt = cnt;
|
||||
if (!ASYNC && !m_CLRQ())
|
||||
{
|
||||
update_outputs_all(0, NLTIME_FROM_NS(36));
|
||||
m_cnt = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
auto cnt = (m_loadq ? (m_cnt + 1) & MAXCNT: m_abcd);
|
||||
m_RC.push(m_ent && (cnt == MAXCNT), NLTIME_FROM_NS(27));
|
||||
update_outputs_all(cnt, NLTIME_FROM_NS(20));
|
||||
m_cnt = cnt;
|
||||
}
|
||||
}
|
||||
|
||||
NETLIB_HANDLERI(abcd)
|
||||
@ -109,33 +121,42 @@ namespace netlist
|
||||
}
|
||||
};
|
||||
|
||||
NETLIB_OBJECT_DERIVED(9316_dip, 9316)
|
||||
template <bool ASYNC>
|
||||
NETLIB_OBJECT_DERIVED(9316_dip_base, 9316_base<ASYNC>)
|
||||
{
|
||||
NETLIB_CONSTRUCTOR_DERIVED(9316_dip, 9316)
|
||||
NETLIB_CONSTRUCTOR_DERIVED(9316_dip_base, 9316_base<ASYNC>)
|
||||
{
|
||||
register_subalias("1", "CLRQ");
|
||||
register_subalias("2", "CLK");
|
||||
register_subalias("3", "A");
|
||||
register_subalias("4", "B");
|
||||
register_subalias("5", "C");
|
||||
register_subalias("6", "D");
|
||||
register_subalias("7", "ENP");
|
||||
register_subalias("8", "GND");
|
||||
this->register_subalias("1", "CLRQ");
|
||||
this->register_subalias("2", "CLK");
|
||||
this->register_subalias("3", "A");
|
||||
this->register_subalias("4", "B");
|
||||
this->register_subalias("5", "C");
|
||||
this->register_subalias("6", "D");
|
||||
this->register_subalias("7", "ENP");
|
||||
this->register_subalias("8", "GND");
|
||||
|
||||
register_subalias("9", "LOADQ");
|
||||
register_subalias("10", "ENT");
|
||||
register_subalias("11", "QD");
|
||||
register_subalias("12", "QC");
|
||||
register_subalias("13", "QB");
|
||||
register_subalias("14", "QA");
|
||||
register_subalias("15", "RC");
|
||||
register_subalias("16", "VCC");
|
||||
this->register_subalias("9", "LOADQ");
|
||||
this->register_subalias("10", "ENT");
|
||||
this->register_subalias("11", "QD");
|
||||
this->register_subalias("12", "QC");
|
||||
this->register_subalias("13", "QB");
|
||||
this->register_subalias("14", "QA");
|
||||
this->register_subalias("15", "RC");
|
||||
this->register_subalias("16", "VCC");
|
||||
}
|
||||
};
|
||||
|
||||
using NETLIB_NAME(9316) = NETLIB_NAME(9316_base)<true>;
|
||||
using NETLIB_NAME(74163) = NETLIB_NAME(9316_base)<false>;
|
||||
|
||||
using NETLIB_NAME(9316_dip) = NETLIB_NAME(9316_dip_base)<true>;
|
||||
using NETLIB_NAME(74163_dip) = NETLIB_NAME(9316_dip_base)<false>;
|
||||
|
||||
NETLIB_DEVICE_IMPL(9316, "TTL_9316", "+CLK,+ENP,+ENT,+CLRQ,+LOADQ,+A,+B,+C,+D,@VCC,@GND")
|
||||
NETLIB_DEVICE_IMPL(9316_dip, "TTL_9316_DIP", "")
|
||||
|
||||
NETLIB_DEVICE_IMPL(74163, "TTL_74163", "+CLK,+ENP,+ENT,+CLRQ,+LOADQ,+A,+B,+C,+D,@VCC,@GND")
|
||||
NETLIB_DEVICE_IMPL(74163_dip, "TTL_74163_DIP", "")
|
||||
|
||||
} //namespace devices
|
||||
} // namespace netlist
|
||||
|
@ -67,7 +67,24 @@
|
||||
NET_CONNECT(name, C, cC) \
|
||||
NET_CONNECT(name, D, cD)
|
||||
|
||||
#define TTL_74163(name, cCLK, cENP, cENT, cCLRQ, cLOADQ, cA, cB, cC, cD) \
|
||||
NET_REGISTER_DEV(TTL_74163, name) \
|
||||
NET_CONNECT(name, GND, GND) \
|
||||
NET_CONNECT(name, VCC, VCC) \
|
||||
NET_CONNECT(name, CLK, cCLK) \
|
||||
NET_CONNECT(name, ENP, cENP) \
|
||||
NET_CONNECT(name, ENT, cENT) \
|
||||
NET_CONNECT(name, CLRQ, cCLRQ) \
|
||||
NET_CONNECT(name, LOADQ, cLOADQ) \
|
||||
NET_CONNECT(name, A, cA) \
|
||||
NET_CONNECT(name, B, cB) \
|
||||
NET_CONNECT(name, C, cC) \
|
||||
NET_CONNECT(name, D, cD)
|
||||
|
||||
#define TTL_9316_DIP(name) \
|
||||
NET_REGISTER_DEV(TTL_9316_DIP, name)
|
||||
|
||||
#define TTL_74163_DIP(name) \
|
||||
NET_REGISTER_DEV(TTL_74163_DIP, name)
|
||||
|
||||
#endif /* NLD_9316_H_ */
|
||||
|
Loading…
Reference in New Issue
Block a user