diff options
Diffstat (limited to 'src/lib/netlist/devices/nld_9310.cpp')
-rw-r--r-- | src/lib/netlist/devices/nld_9310.cpp | 79 |
1 files changed, 39 insertions, 40 deletions
diff --git a/src/lib/netlist/devices/nld_9310.cpp b/src/lib/netlist/devices/nld_9310.cpp index e7b95549d47..4ddb62af519 100644 --- a/src/lib/netlist/devices/nld_9310.cpp +++ b/src/lib/netlist/devices/nld_9310.cpp @@ -32,10 +32,9 @@ namespace netlist logic_input_t m_C; logic_input_t m_D; - uint_fast8_t read_ABCD() const + unsigned read_ABCD() const { - //return (INPLOGIC_PASSIVE(m_D) << 3) | (INPLOGIC_PASSIVE(m_C) << 2) | (INPLOGIC_PASSIVE(m_B) << 1) | (INPLOGIC_PASSIVE(m_A) << 0); - return (INPLOGIC(m_D) << 3) | (INPLOGIC(m_C) << 2) | (INPLOGIC(m_B) << 1) | (INPLOGIC(m_A) << 0); + return (m_D() << 3) | (m_C() << 2) | (m_B() << 1) | (m_A() << 0); } }; @@ -57,8 +56,8 @@ namespace netlist NETLIB_RESETI(); NETLIB_UPDATEI(); public: - inline void update_outputs_all(const uint_fast8_t cnt, const netlist_time out_delay); - inline void update_outputs(const uint_fast8_t cnt); + inline void update_outputs_all(const unsigned cnt, const netlist_time out_delay); + inline void update_outputs(const unsigned cnt); logic_input_t m_CLK; @@ -70,9 +69,9 @@ namespace netlist logic_output_t m_QD; logic_output_t m_RC; - state_var_u8 m_cnt; - state_var_u8 m_loadq; - state_var_u8 m_ent; + state_var<unsigned> m_cnt; + state_var<netlist_sig_t> m_loadq; + state_var<netlist_sig_t> m_ent; }; NETLIB_OBJECT(9310) @@ -163,11 +162,11 @@ namespace netlist { case MAXCNT - 1: m_cnt = MAXCNT; - OUTLOGIC(m_RC, m_ent, NLTIME_FROM_NS(20)); - OUTLOGIC(m_QA, 1, NLTIME_FROM_NS(20)); + m_RC.push(m_ent, NLTIME_FROM_NS(20)); + m_QA.push(1, NLTIME_FROM_NS(20)); break; case MAXCNT: - OUTLOGIC(m_RC, 0, NLTIME_FROM_NS(20)); + m_RC.push(0, NLTIME_FROM_NS(20)); m_cnt = 0; update_outputs_all(m_cnt, NLTIME_FROM_NS(20)); break; @@ -180,20 +179,20 @@ namespace netlist { m_cnt = m_ABCD->read_ABCD(); update_outputs_all(m_cnt, NLTIME_FROM_NS(22)); - OUTLOGIC(m_RC, m_ent & (m_cnt == MAXCNT), NLTIME_FROM_NS(27)); + m_RC.push(m_ent & (m_cnt == MAXCNT), NLTIME_FROM_NS(27)); } } NETLIB_UPDATE(9310) { - sub.m_loadq = INPLOGIC(m_LOADQ); - sub.m_ent = INPLOGIC(m_ENT); - const netlist_sig_t clrq = INPLOGIC(m_CLRQ); + sub.m_loadq = m_LOADQ(); + sub.m_ent = m_ENT(); + const netlist_sig_t clrq = m_CLRQ(); - if ((!sub.m_loadq || (sub.m_ent & INPLOGIC(m_ENP))) && clrq) + if ((!sub.m_loadq || (sub.m_ent & m_ENP())) && clrq) { sub.m_CLK.activate_lh(); - OUTLOGIC(sub.m_RC, sub.m_ent & (sub.m_cnt == MAXCNT), NLTIME_FROM_NS(27)); + sub.m_RC.push(sub.m_ent & (sub.m_cnt == MAXCNT), NLTIME_FROM_NS(27)); } else { @@ -204,56 +203,56 @@ namespace netlist sub.m_cnt = 0; //return; } - OUTLOGIC(sub.m_RC, sub.m_ent & (sub.m_cnt == MAXCNT), NLTIME_FROM_NS(27)); + sub.m_RC.push(sub.m_ent & (sub.m_cnt == MAXCNT), NLTIME_FROM_NS(27)); } } - inline NETLIB_FUNC_VOID(9310_sub, update_outputs_all, (const uint_fast8_t cnt, const netlist_time out_delay)) + inline NETLIB_FUNC_VOID(9310_sub, update_outputs_all, (const unsigned cnt, const netlist_time out_delay)) { - OUTLOGIC(m_QA, (cnt >> 0) & 1, out_delay); - OUTLOGIC(m_QB, (cnt >> 1) & 1, out_delay); - OUTLOGIC(m_QC, (cnt >> 2) & 1, out_delay); - OUTLOGIC(m_QD, (cnt >> 3) & 1, out_delay); + m_QA.push((cnt >> 0) & 1, out_delay); + m_QB.push((cnt >> 1) & 1, out_delay); + m_QC.push((cnt >> 2) & 1, out_delay); + m_QD.push((cnt >> 3) & 1, out_delay); } - inline NETLIB_FUNC_VOID(9310_sub, update_outputs, (const uint_fast8_t cnt)) + inline NETLIB_FUNC_VOID(9310_sub, update_outputs, (const unsigned cnt)) { /* static */ const netlist_time out_delay = NLTIME_FROM_NS(20); #if 0 // for (int i=0; i<4; i++) - // OUTLOGIC(m_Q[i], (cnt >> i) & 1, delay[i]); - OUTLOGIC(m_QA, (cnt >> 0) & 1, out_delay); - OUTLOGIC(m_QB, (cnt >> 1) & 1, out_delay); - OUTLOGIC(m_QC, (cnt >> 2) & 1, out_delay); - OUTLOGIC(m_QD, (cnt >> 3) & 1, out_delay); + // m_Q[i], (cnt >> i) & 1, delay[i]); + m_QA, (cnt >> 0) & 1, out_delay); + m_QB, (cnt >> 1) & 1, out_delay); + m_QC, (cnt >> 2) & 1, out_delay); + m_QD, (cnt >> 3) & 1, out_delay); #else if ((cnt & 1) == 1) - OUTLOGIC(m_QA, 1, out_delay); + m_QA.push(1, out_delay); else { - OUTLOGIC(m_QA, 0, out_delay); + m_QA.push(0, out_delay); switch (cnt) { case 0x00: - OUTLOGIC(m_QB, 0, out_delay); - OUTLOGIC(m_QC, 0, out_delay); - OUTLOGIC(m_QD, 0, out_delay); + m_QB.push(0, out_delay); + m_QC.push(0, out_delay); + m_QD.push(0, out_delay); break; case 0x02: case 0x06: case 0x0A: case 0x0E: - OUTLOGIC(m_QB, 1, out_delay); + m_QB.push(1, out_delay); break; case 0x04: case 0x0C: - OUTLOGIC(m_QB, 0, out_delay); - OUTLOGIC(m_QC, 1, out_delay); + m_QB.push(0, out_delay); + m_QC.push(1, out_delay); break; case 0x08: - OUTLOGIC(m_QB, 0, out_delay); - OUTLOGIC(m_QC, 0, out_delay); - OUTLOGIC(m_QD, 1, out_delay); + m_QB.push(0, out_delay); + m_QC.push(0, out_delay); + m_QD.push(1, out_delay); break; } |