diff options
Diffstat (limited to 'src/lib/netlist/devices/nld_7483.cpp')
-rw-r--r-- | src/lib/netlist/devices/nld_7483.cpp | 47 |
1 files changed, 31 insertions, 16 deletions
diff --git a/src/lib/netlist/devices/nld_7483.cpp b/src/lib/netlist/devices/nld_7483.cpp index 72c86c003d5..5f820162209 100644 --- a/src/lib/netlist/devices/nld_7483.cpp +++ b/src/lib/netlist/devices/nld_7483.cpp @@ -6,7 +6,7 @@ */ #include "nld_7483.h" -#include "../nl_base.h" +#include "netlist/nl_base.h" namespace netlist { @@ -16,14 +16,16 @@ namespace netlist { NETLIB_CONSTRUCTOR(7483) , m_C0(*this, "C0") - , m_A1(*this, "A1") - , m_A2(*this, "A2") - , m_A3(*this, "A3") - , m_A4(*this, "A4") - , m_B1(*this, "B1") - , m_B2(*this, "B2") - , m_B3(*this, "B3") - , m_B4(*this, "B4") + , m_A1(*this, "A1", NETLIB_DELEGATE(7483, upd_a)) + , m_A2(*this, "A2", NETLIB_DELEGATE(7483, upd_a)) + , m_A3(*this, "A3", NETLIB_DELEGATE(7483, upd_a)) + , m_A4(*this, "A4", NETLIB_DELEGATE(7483, upd_a)) + , m_B1(*this, "B1", NETLIB_DELEGATE(7483, upd_b)) + , m_B2(*this, "B2", NETLIB_DELEGATE(7483, upd_b)) + , m_B3(*this, "B3", NETLIB_DELEGATE(7483, upd_b)) + , m_B4(*this, "B4", NETLIB_DELEGATE(7483, upd_b)) + , m_a(*this, "m_a", 0) + , m_b(*this, "m_b", 0) , m_lastr(*this, "m_lastr", 0) , m_S1(*this, "S1") , m_S2(*this, "S2") @@ -34,6 +36,8 @@ namespace netlist } NETLIB_RESETI(); NETLIB_UPDATEI(); + NETLIB_HANDLERI(upd_a); + NETLIB_HANDLERI(upd_b); protected: logic_input_t m_C0; @@ -46,7 +50,9 @@ namespace netlist logic_input_t m_B3; logic_input_t m_B4; - state_var<unsigned> m_lastr; + state_var_u8 m_a; + state_var_u8 m_b; + state_var_u8 m_lastr; logic_output_t m_S1; logic_output_t m_S2; @@ -87,12 +93,21 @@ namespace netlist m_lastr = 0; } - NETLIB_UPDATE(7483) + NETLIB_HANDLER(7483, upd_a) { - netlist_sig_t a = (m_A1() << 0) | (m_A2() << 1) | (m_A3() << 2) | (m_A4() << 3); - netlist_sig_t b = (m_B1() << 0) | (m_B2() << 1) | (m_B3() << 2) | (m_B4() << 3); + m_a = static_cast<uint8_t>((m_A1() << 0) | (m_A2() << 1) | (m_A3() << 2) | (m_A4() << 3)); + NETLIB_NAME(7483)::update(); + } - unsigned r = a + b + m_C0(); + NETLIB_HANDLER(7483, upd_b) + { + m_b = static_cast<uint8_t>((m_B1() << 0) | (m_B2() << 1) | (m_B3() << 2) | (m_B4() << 3)); + NETLIB_NAME(7483)::update(); + } + + NETLIB_UPDATE(7483) + { + auto r = static_cast<uint8_t>(m_a + m_b + m_C0()); if (r != m_lastr) { @@ -105,8 +120,8 @@ namespace netlist } } - NETLIB_DEVICE_IMPL(7483) - NETLIB_DEVICE_IMPL(7483_dip) + NETLIB_DEVICE_IMPL(7483, "TTL_7483", "+A1,+A2,+A3,+A4,+B1,+B2,+B3,+B4,+C0") + NETLIB_DEVICE_IMPL(7483_dip, "TTL_7483_DIP", "") } //namespace devices } // namespace netlist |