summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/devices/nld_9310.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/netlist/devices/nld_9310.cpp')
-rw-r--r--src/lib/netlist/devices/nld_9310.cpp79
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;
}