diff options
Diffstat (limited to 'src/lib/netlist/devices/nld_9316.cpp')
-rw-r--r-- | src/lib/netlist/devices/nld_9316.cpp | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/src/lib/netlist/devices/nld_9316.cpp b/src/lib/netlist/devices/nld_9316.cpp index e054f22c3a7..88d56e50ae3 100644 --- a/src/lib/netlist/devices/nld_9316.cpp +++ b/src/lib/netlist/devices/nld_9316.cpp @@ -25,10 +25,7 @@ namespace netlist , m_LOADQ(*this, "LOADQ") , m_ENP(*this, "ENP") , m_CLRQ(*this, "CLRQ") - , m_A(*this, "A", NETLIB_DELEGATE(9316, abcd)) - , m_B(*this, "B", NETLIB_DELEGATE(9316, abcd)) - , m_C(*this, "C", NETLIB_DELEGATE(9316, abcd)) - , m_D(*this, "D", NETLIB_DELEGATE(9316, abcd)) + , m_ABCD(*this, {{"A", "B", "C", "D"}}, NETLIB_DELEGATE(9316, abcd)) , m_Q(*this, {{ "QA", "QB", "QC", "QD" }}) , m_cnt(*this, "m_cnt", 0) , m_abcd(*this, "m_abcd", 0) @@ -61,8 +58,8 @@ namespace netlist m_CLK.inactivate(); if (!CLRQ && (m_cnt>0)) { + update_outputs_all(0, NLTIME_FROM_NS(36)); m_cnt = 0; - update_outputs_all(m_cnt, NLTIME_FROM_NS(36)); } } m_RC.push(m_ent && (m_cnt == MAXCNT), NLTIME_FROM_NS(27)); @@ -79,7 +76,7 @@ namespace netlist NETLIB_HANDLERI(abcd) { - m_abcd = static_cast<uint8_t>((m_D() << 3) | (m_C() << 2) | (m_B() << 1) | (m_A() << 0)); + m_abcd = static_cast<uint8_t>((m_ABCD[0]() << 0) | (m_ABCD[1]() << 1) | (m_ABCD[2]() << 2) | (m_ABCD[3]() << 3)); } logic_input_t m_CLK; @@ -92,22 +89,18 @@ namespace netlist logic_input_t m_ENP; logic_input_t m_CLRQ; - logic_input_t m_A; - logic_input_t m_B; - logic_input_t m_C; - logic_input_t m_D; - + object_array_t<logic_input_t, 4> m_ABCD; object_array_t<logic_output_t, 4> m_Q; /* counter state */ - state_var<unsigned> m_cnt; + state_var<uint8_t> m_cnt; /* cached pins */ state_var_u8 m_abcd; state_var_sig m_loadq; state_var_sig m_ent; nld_power_pins m_power_pins; - void update_outputs_all(unsigned cnt, netlist_time out_delay) noexcept + void update_outputs_all(uint8_t cnt, netlist_time out_delay) noexcept { m_Q[0].push((cnt >> 0) & 1, out_delay); m_Q[1].push((cnt >> 1) & 1, out_delay); |