diff options
Diffstat (limited to 'src/lib/netlist/devices/nld_9310.cpp')
-rw-r--r-- | src/lib/netlist/devices/nld_9310.cpp | 227 |
1 files changed, 0 insertions, 227 deletions
diff --git a/src/lib/netlist/devices/nld_9310.cpp b/src/lib/netlist/devices/nld_9310.cpp deleted file mode 100644 index 9dd1f67332e..00000000000 --- a/src/lib/netlist/devices/nld_9310.cpp +++ /dev/null @@ -1,227 +0,0 @@ -// license:GPL-2.0+ -// copyright-holders:Couriersud -/* - * nld_9310.c - * - */ - -#include "nld_9310.h" -#include "netlist/nl_base.h" - -#define MAXCNT 9 - -namespace netlist -{ - namespace devices - { - - NETLIB_OBJECT(9310) - { - NETLIB_CONSTRUCTOR(9310) - , m_ENP(*this, "ENP") - , m_ENT(*this, "ENT") - , m_CLRQ(*this, "CLRQ") - , m_LOADQ(*this, "LOADQ") - , m_A(*this, "A", NETLIB_DELEGATE(9310, abcd)) - , m_B(*this, "B", NETLIB_DELEGATE(9310, abcd)) - , m_C(*this, "C", NETLIB_DELEGATE(9310, abcd)) - , m_D(*this, "D", NETLIB_DELEGATE(9310, abcd)) - , m_CLK(*this, "CLK", NETLIB_DELEGATE(9310, sub)) - , m_QA(*this, "QA") - , m_QB(*this, "QB") - , m_QC(*this, "QC") - , m_QD(*this, "QD") - , m_RC(*this, "RC") - , m_cnt(*this, "m_cnt", 0) - , m_loadq(*this, "m_loadq", 0) - , m_ent(*this, "m_ent", 0) - , m_power_pins(*this) - { - } - - NETLIB_RESETI() - { - m_CLK.set_state(logic_t::STATE_INP_LH); - m_cnt = 0; - m_loadq = 1; - m_ent = 1; - } - NETLIB_UPDATEI(); - - NETLIB_HANDLERI(abcd) { } // do nothing - - NETLIB_HANDLERI(sub) - { - auto cnt(m_cnt); - - if (m_loadq) - { - if (cnt < MAXCNT - 1) - { - ++cnt; - update_outputs(cnt); - } - else if (cnt == MAXCNT - 1) - { - cnt = MAXCNT; - m_RC.push(m_ent, NLTIME_FROM_NS(20)); - m_QA.push(1, NLTIME_FROM_NS(20)); - } - else // MAXCNT - { - m_RC.push(0, NLTIME_FROM_NS(20)); - cnt = 0; - update_outputs_all(cnt, NLTIME_FROM_NS(20)); - } - } - else - { - cnt = read_ABCD(); - m_RC.push(m_ent & (cnt == MAXCNT), NLTIME_FROM_NS(27)); - update_outputs_all(cnt, NLTIME_FROM_NS(22)); - } - m_cnt = cnt; - } - - friend class NETLIB_NAME(9310_dip); - private: - - unsigned read_ABCD() const - { - return (m_D() << 3) | (m_C() << 2) | (m_B() << 1) | (m_A() << 0); - } - - void update_outputs_all(const unsigned cnt, const netlist_time 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); - } - - void update_outputs(const unsigned cnt) - { - /* static */ const netlist_time out_delay = NLTIME_FROM_NS(20); - #if 0 - // for (int i=0; i<4; i++) - // m_Q[i], (cnt >> i) & 1, delay[i]); - 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); - #else - if ((cnt & 1) == 1) - m_QA.push(1, out_delay); - else - { - m_QA.push(0, out_delay); - switch (cnt) - { - case 0x00: - 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: - m_QB.push(1, out_delay); - break; - case 0x04: - case 0x0C: - m_QB.push(0, out_delay); - m_QC.push(1, out_delay); - break; - case 0x08: - m_QB.push(0, out_delay); - m_QC.push(0, out_delay); - m_QD.push(1, out_delay); - break; - } - - } - #endif - } - - logic_input_t m_ENP; - logic_input_t m_ENT; - logic_input_t m_CLRQ; - logic_input_t m_LOADQ; - logic_input_t m_A; - logic_input_t m_B; - logic_input_t m_C; - logic_input_t m_D; - logic_input_t m_CLK; - - logic_output_t m_QA; - logic_output_t m_QB; - logic_output_t m_QC; - logic_output_t m_QD; - logic_output_t m_RC; - - state_var<unsigned> m_cnt; - state_var<netlist_sig_t> m_loadq; - state_var<netlist_sig_t> m_ent; - nld_power_pins m_power_pins; - }; - - NETLIB_OBJECT(9310_dip) - { - NETLIB_CONSTRUCTOR(9310_dip) - , A(*this, "A") - { - register_subalias("1", A.m_CLRQ); - register_subalias("2", A.m_CLK); - register_subalias("3", A.m_A); - register_subalias("4", A.m_B); - register_subalias("5", A.m_C); - register_subalias("6", A.m_D); - register_subalias("7", A.m_ENP); - register_subalias("8", "A.GND"); - - register_subalias("9", A.m_LOADQ); - register_subalias("10", A.m_ENT); - register_subalias("11", A.m_QD); - register_subalias("12", A.m_QC); - register_subalias("13", A.m_QB); - register_subalias("14", A.m_QA); - register_subalias("15", A.m_RC); - register_subalias("16", "A.VCC"); - } - - NETLIB_RESETI() {} - NETLIB_UPDATEI() {} - private: - NETLIB_SUB(9310) A; - }; - - NETLIB_UPDATE(9310) - { - m_loadq = m_LOADQ(); - m_ent = m_ENT(); - const netlist_sig_t clrq = m_CLRQ(); - - if ((!m_loadq || (m_ent & m_ENP())) && clrq) - { - m_CLK.activate_lh(); - m_RC.push(m_ent & (m_cnt == MAXCNT), NLTIME_FROM_NS(27)); - } - else - { - m_CLK.inactivate(); - if (!clrq && (m_cnt>0)) - { - update_outputs_all(0, NLTIME_FROM_NS(36)); - m_cnt = 0; - //return; - } - m_RC.push(m_ent & (m_cnt == MAXCNT), NLTIME_FROM_NS(27)); - } - } - - NETLIB_DEVICE_IMPL(9310, "TTL_9310", "+CLK,+ENP,+ENT,+CLRQ,+LOADQ,+A,+B,+C,+D,@VCC,@GND") - NETLIB_DEVICE_IMPL(9310_dip, "TTL_9310_DIP", "") - - } //namespace devices -} // namespace netlist |