summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/devices/nld_legacy.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/netlist/devices/nld_legacy.cpp')
-rw-r--r--src/lib/netlist/devices/nld_legacy.cpp104
1 files changed, 47 insertions, 57 deletions
diff --git a/src/lib/netlist/devices/nld_legacy.cpp b/src/lib/netlist/devices/nld_legacy.cpp
index 738230646e0..cbc44f589a8 100644
--- a/src/lib/netlist/devices/nld_legacy.cpp
+++ b/src/lib/netlist/devices/nld_legacy.cpp
@@ -1,31 +1,45 @@
-// license:GPL-2.0+
+// license:BSD-3-Clause
// copyright-holders:Couriersud
/*
* nld_legacy.c
*
*/
-#include "nld_legacy.h"
-#include "netlist/nl_base.h"
+#include "nl_base.h"
+
+namespace netlist::devices {
-namespace netlist
-{
- namespace devices
- {
NETLIB_OBJECT(nicRSFF)
{
NETLIB_CONSTRUCTOR(nicRSFF)
- , m_S(*this, "S")
- , m_R(*this, "R")
+ , m_S(*this, "S", NETLIB_DELEGATE(inputs))
+ , m_R(*this, "R", NETLIB_DELEGATE(inputs))
, m_Q(*this, "Q")
, m_QQ(*this, "QQ")
{
}
- NETLIB_RESETI();
- NETLIB_UPDATEI();
+ NETLIB_RESETI()
+ {
+ m_Q.initial(0);
+ m_QQ.initial(1);
+ }
private:
+ NETLIB_HANDLERI(inputs)
+ {
+ if (!m_S())
+ {
+ m_Q.push(1, NLTIME_FROM_NS(20));
+ m_QQ.push(0, NLTIME_FROM_NS(20));
+ }
+ else if (!m_R())
+ {
+ m_Q.push(0, NLTIME_FROM_NS(20));
+ m_QQ.push(1, NLTIME_FROM_NS(20));
+ }
+ }
+
logic_input_t m_S;
logic_input_t m_R;
@@ -37,7 +51,7 @@ namespace netlist
NETLIB_OBJECT(nicDelay)
{
NETLIB_CONSTRUCTOR(nicDelay)
- , m_I(*this, "1")
+ , m_I(*this, "1", NETLIB_DELEGATE(input))
, m_Q(*this, "2")
, m_L_to_H(*this, "L_TO_H", 10)
, m_H_to_L(*this, "H_TO_L", 10)
@@ -46,10 +60,28 @@ namespace netlist
}
//NETLIB_UPDATE_PARAMI();
- NETLIB_RESETI();
- NETLIB_UPDATEI();
+ NETLIB_RESETI()
+ {
+ //m_Q.initial(0);
+ }
private:
+ NETLIB_HANDLERI(input)
+ {
+ netlist_sig_t nval = m_I();
+ if (nval && !m_last)
+ {
+ // L_to_H
+ m_Q.push(1, NLTIME_FROM_NS(static_cast<unsigned>(m_L_to_H())));
+ }
+ else if (!nval && m_last)
+ {
+ // H_to_L
+ m_Q.push(0, NLTIME_FROM_NS(static_cast<unsigned>(m_H_to_L())));
+ }
+ m_last = nval;
+ }
+
logic_input_t m_I;
logic_output_t m_Q;
@@ -59,49 +91,7 @@ namespace netlist
state_var<netlist_sig_t> m_last;
};
- NETLIB_RESET(nicRSFF)
- {
- m_Q.initial(0);
- m_QQ.initial(1);
- }
-
- NETLIB_UPDATE(nicRSFF)
- {
- if (!m_S())
- {
- m_Q.push(1, NLTIME_FROM_NS(20));
- m_QQ.push(0, NLTIME_FROM_NS(20));
- }
- else if (!m_R())
- {
- m_Q.push(0, NLTIME_FROM_NS(20));
- m_QQ.push(1, NLTIME_FROM_NS(20));
- }
- }
-
- NETLIB_RESET(nicDelay)
- {
- //m_Q.initial(0);
- }
-
- NETLIB_UPDATE(nicDelay)
- {
- netlist_sig_t nval = m_I();
- if (nval && !m_last)
- {
- // L_to_H
- m_Q.push(1, NLTIME_FROM_NS(static_cast<unsigned>(m_L_to_H())));
- }
- else if (!nval && m_last)
- {
- // H_to_L
- m_Q.push(0, NLTIME_FROM_NS(static_cast<unsigned>(m_H_to_L())));
- }
- m_last = nval;
- }
-
NETLIB_DEVICE_IMPL(nicRSFF, "NETDEV_RSFF", "")
NETLIB_DEVICE_IMPL(nicDelay, "NETDEV_DELAY", "")
- } //namespace devices
-} // namespace netlist
+} // namespace netlist::devices