diff options
Diffstat (limited to 'src/lib/netlist/devices/nld_legacy.c')
-rw-r--r-- | src/lib/netlist/devices/nld_legacy.c | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/src/lib/netlist/devices/nld_legacy.c b/src/lib/netlist/devices/nld_legacy.c new file mode 100644 index 00000000000..834dda31110 --- /dev/null +++ b/src/lib/netlist/devices/nld_legacy.c @@ -0,0 +1,78 @@ +// license:GPL-2.0+ +// copyright-holders:Couriersud +/* + * nld_legacy.c + * + */ + +#include "nld_legacy.h" +#include "nl_setup.h" + +NETLIB_NAMESPACE_DEVICES_START() + +NETLIB_START(nicRSFF) +{ + register_input("S", m_S); + register_input("R", m_R); + register_output("Q", m_Q); + register_output("QQ", m_QQ); +} + +NETLIB_RESET(nicRSFF) +{ + m_Q.initial(0); + m_QQ.initial(1); +} + +NETLIB_UPDATE(nicRSFF) +{ + if (!INPLOGIC(m_S)) + { + OUTLOGIC(m_Q, 1, NLTIME_FROM_NS(20)); + OUTLOGIC(m_QQ, 0, NLTIME_FROM_NS(20)); + } + else if (!INPLOGIC(m_R)) + { + OUTLOGIC(m_Q, 0, NLTIME_FROM_NS(20)); + OUTLOGIC(m_QQ, 1, NLTIME_FROM_NS(20)); + } +} + +NETLIB_START(nicDelay) +{ + register_input("1", m_I); + register_output("2", m_Q); + + register_param("L_TO_H", m_L_to_H, 10); + register_param("H_TO_L", m_H_to_L, 10); + + save(NLNAME(m_last)); + +} + +NETLIB_RESET(nicDelay) +{ + m_Q.initial(0); +} + +NETLIB_UPDATE_PARAM(nicDelay) +{ +} + +NETLIB_UPDATE(nicDelay) +{ + netlist_sig_t nval = INPLOGIC(m_I); + if (nval && !m_last) + { + // L_to_H + OUTLOGIC(m_Q, 1, NLTIME_FROM_NS(m_L_to_H.Value())); + } + else if (!nval && m_last) + { + // H_to_L + OUTLOGIC(m_Q, 0, NLTIME_FROM_NS(m_H_to_L.Value())); + } + m_last = nval; +} + +NETLIB_NAMESPACE_DEVICES_END() |