summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author couriersud <couriersud@arcor.de>2016-04-23 23:35:27 +0200
committer couriersud <couriersud@arcor.de>2016-05-02 21:56:57 +0200
commit576189b1695936f35f077918fbb9191ed68ad8df (patch)
treeb20669555c740ced035d9ffb78f71d1619cf7dd9 /src
parent28eeb49676eb5550180d481b87f5a6ca86564828 (diff)
Converted most subdevices to unique_ptr. This is a temporary measure
until the device initialisation is moved into the constructor. Started converting constructors of devices to be passed name and netlist. (nw)
Diffstat (limited to 'src')
-rw-r--r--src/devices/machine/netlist.h12
-rw-r--r--src/lib/netlist/analog/nld_bjt.cpp4
-rw-r--r--src/lib/netlist/analog/nld_bjt.h31
-rw-r--r--src/lib/netlist/analog/nld_fourterm.cpp4
-rw-r--r--src/lib/netlist/analog/nld_fourterm.h24
-rw-r--r--src/lib/netlist/analog/nld_opamps.cpp32
-rw-r--r--src/lib/netlist/analog/nld_opamps.h12
-rw-r--r--src/lib/netlist/analog/nld_switches.cpp42
-rw-r--r--src/lib/netlist/analog/nld_switches.h4
-rw-r--r--src/lib/netlist/analog/nld_twoterm.cpp44
-rw-r--r--src/lib/netlist/analog/nld_twoterm.h25
-rw-r--r--src/lib/netlist/devices/nld_4020.cpp42
-rw-r--r--src/lib/netlist/devices/nld_4020.h4
-rw-r--r--src/lib/netlist/devices/nld_4066.cpp16
-rw-r--r--src/lib/netlist/devices/nld_4066.h4
-rw-r--r--src/lib/netlist/devices/nld_7402.cpp40
-rw-r--r--src/lib/netlist/devices/nld_7402.h8
-rw-r--r--src/lib/netlist/devices/nld_7404.cpp48
-rw-r--r--src/lib/netlist/devices/nld_7404.h12
-rw-r--r--src/lib/netlist/devices/nld_7408.cpp40
-rw-r--r--src/lib/netlist/devices/nld_7408.h8
-rw-r--r--src/lib/netlist/devices/nld_7410.cpp40
-rw-r--r--src/lib/netlist/devices/nld_7410.h6
-rw-r--r--src/lib/netlist/devices/nld_74107.cpp74
-rw-r--r--src/lib/netlist/devices/nld_74107.h10
-rw-r--r--src/lib/netlist/devices/nld_7411.cpp40
-rw-r--r--src/lib/netlist/devices/nld_7411.h6
-rw-r--r--src/lib/netlist/devices/nld_74123.cpp175
-rw-r--r--src/lib/netlist/devices/nld_74123.h16
-rw-r--r--src/lib/netlist/devices/nld_74153.cpp58
-rw-r--r--src/lib/netlist/devices/nld_74153.h6
-rw-r--r--src/lib/netlist/devices/nld_74175.cpp54
-rw-r--r--src/lib/netlist/devices/nld_74175.h2
-rw-r--r--src/lib/netlist/devices/nld_74192.cpp18
-rw-r--r--src/lib/netlist/devices/nld_74192.h2
-rw-r--r--src/lib/netlist/devices/nld_7420.cpp28
-rw-r--r--src/lib/netlist/devices/nld_7420.h4
-rw-r--r--src/lib/netlist/devices/nld_7425.cpp28
-rw-r--r--src/lib/netlist/devices/nld_7425.h4
-rw-r--r--src/lib/netlist/devices/nld_7427.cpp40
-rw-r--r--src/lib/netlist/devices/nld_7427.h6
-rw-r--r--src/lib/netlist/devices/nld_74279.cpp50
-rw-r--r--src/lib/netlist/devices/nld_74279.h8
-rw-r--r--src/lib/netlist/devices/nld_7430.cpp22
-rw-r--r--src/lib/netlist/devices/nld_7430.h2
-rw-r--r--src/lib/netlist/devices/nld_7432.cpp40
-rw-r--r--src/lib/netlist/devices/nld_7432.h8
-rw-r--r--src/lib/netlist/devices/nld_7437.cpp40
-rw-r--r--src/lib/netlist/devices/nld_7437.h8
-rw-r--r--src/lib/netlist/devices/nld_7448.cpp78
-rw-r--r--src/lib/netlist/devices/nld_7448.h2
-rw-r--r--src/lib/netlist/devices/nld_7450.cpp32
-rw-r--r--src/lib/netlist/devices/nld_7450.h4
-rw-r--r--src/lib/netlist/devices/nld_7474.cpp56
-rw-r--r--src/lib/netlist/devices/nld_7474.h6
-rw-r--r--src/lib/netlist/devices/nld_7486.cpp40
-rw-r--r--src/lib/netlist/devices/nld_7486.h8
-rw-r--r--src/lib/netlist/devices/nld_7493.cpp58
-rw-r--r--src/lib/netlist/devices/nld_7493.h8
-rw-r--r--src/lib/netlist/devices/nld_74ls629.cpp60
-rw-r--r--src/lib/netlist/devices/nld_74ls629.h10
-rw-r--r--src/lib/netlist/devices/nld_9310.cpp66
-rw-r--r--src/lib/netlist/devices/nld_9310.h4
-rw-r--r--src/lib/netlist/devices/nld_9312.cpp64
-rw-r--r--src/lib/netlist/devices/nld_9312.h2
-rw-r--r--src/lib/netlist/devices/nld_9316.cpp68
-rw-r--r--src/lib/netlist/devices/nld_9316.h4
-rw-r--r--src/lib/netlist/devices/nld_cmos.h4
-rw-r--r--src/lib/netlist/devices/nld_mm5837.cpp20
-rw-r--r--src/lib/netlist/devices/nld_mm5837.h2
-rw-r--r--src/lib/netlist/devices/nld_ne555.cpp56
-rw-r--r--src/lib/netlist/devices/nld_ne555.h8
-rw-r--r--src/lib/netlist/devices/nld_signal.h8
-rw-r--r--src/lib/netlist/devices/nld_system.cpp22
-rw-r--r--src/lib/netlist/devices/nld_system.h56
-rw-r--r--src/lib/netlist/devices/nld_truthtable.h22
-rw-r--r--src/lib/netlist/nl_base.cpp50
-rw-r--r--src/lib/netlist/nl_base.h38
-rw-r--r--src/lib/netlist/nl_factory.cpp14
-rw-r--r--src/lib/netlist/nl_factory.h12
-rw-r--r--src/lib/netlist/nl_parser.cpp4
-rw-r--r--src/lib/netlist/nl_setup.cpp38
-rw-r--r--src/lib/netlist/nl_setup.h2
-rw-r--r--src/lib/netlist/prg/nltool.cpp3
-rw-r--r--src/lib/netlist/solver/nld_matrix_solver.h3
-rw-r--r--src/lib/netlist/solver/nld_ms_direct.h14
-rw-r--r--src/lib/netlist/solver/nld_ms_direct1.h4
-rw-r--r--src/lib/netlist/solver/nld_ms_direct2.h4
-rw-r--r--src/lib/netlist/solver/nld_ms_gcr.h5
-rw-r--r--src/lib/netlist/solver/nld_ms_gmres.h4
-rw-r--r--src/lib/netlist/solver/nld_ms_sm.h8
-rw-r--r--src/lib/netlist/solver/nld_ms_sor.h4
-rw-r--r--src/lib/netlist/solver/nld_ms_sor_mat.h4
-rw-r--r--src/lib/netlist/solver/nld_ms_w.h7
-rw-r--r--src/lib/netlist/solver/nld_solver.cpp29
-rw-r--r--src/lib/netlist/solver/nld_solver.h4
96 files changed, 1146 insertions, 1124 deletions
diff --git a/src/devices/machine/netlist.h b/src/devices/machine/netlist.h
index a5a71ae2318..671085443c0 100644
--- a/src/devices/machine/netlist.h
+++ b/src/devices/machine/netlist.h
@@ -503,8 +503,8 @@ private:
class NETLIB_NAME(analog_callback) : public netlist::device_t
{
public:
- NETLIB_NAME(analog_callback)()
- : device_t(), m_cpu_device(nullptr), m_last(0) { }
+ NETLIB_NAME(analog_callback)(netlist::netlist_t &anetlist, const pstring &name)
+ : device_t(anetlist, name), m_cpu_device(nullptr), m_last(0) { }
ATTR_COLD void start() override
{
@@ -552,8 +552,8 @@ private:
class NETLIB_NAME(sound_out) : public netlist::device_t
{
public:
- NETLIB_NAME(sound_out)()
- : netlist::device_t() { }
+ NETLIB_NAME(sound_out)(netlist::netlist_t &anetlist, const pstring &name)
+ : netlist::device_t(anetlist, name) { }
static const int BUFSIZE = 2048;
@@ -626,8 +626,8 @@ private:
class NETLIB_NAME(sound_in) : public netlist::device_t
{
public:
- NETLIB_NAME(sound_in)()
- : netlist::device_t() { }
+ NETLIB_NAME(sound_in)(netlist::netlist_t &anetlist, const pstring &name)
+ : netlist::device_t(anetlist, name) { }
static const int MAX_INPUT_CHANNELS = 10;
diff --git a/src/lib/netlist/analog/nld_bjt.cpp b/src/lib/netlist/analog/nld_bjt.cpp
index 5f5a3611b97..4d2335113ca 100644
--- a/src/lib/netlist/analog/nld_bjt.cpp
+++ b/src/lib/netlist/analog/nld_bjt.cpp
@@ -44,8 +44,8 @@ private:
// nld_Q
// ----------------------------------------------------------------------------------------
-NETLIB_NAME(Q)::NETLIB_NAME(Q)(const family_t afamily)
-: device_t(afamily)
+NETLIB_NAME(Q)::NETLIB_NAME(Q)(const family_t afamily, netlist_t &anetlist, const pstring &name)
+: device_t(afamily, anetlist, name)
, m_qtype(BJT_NPN) { }
NETLIB_NAME(Q)::~NETLIB_NAME(Q)()
diff --git a/src/lib/netlist/analog/nld_bjt.h b/src/lib/netlist/analog/nld_bjt.h
index 07f5923c17c..5448964a335 100644
--- a/src/lib/netlist/analog/nld_bjt.h
+++ b/src/lib/netlist/analog/nld_bjt.h
@@ -40,7 +40,7 @@ public:
BJT_PNP
};
- NETLIB_NAME(Q)(const family_t afamily);
+ NETLIB_NAME(Q)(const family_t afamily, netlist_t &anetlist, const pstring &name);
virtual ~NETLIB_NAME(Q)();
inline q_type qtype() const { return m_qtype; }
@@ -60,8 +60,8 @@ class NETLIB_NAME(QBJT) : public NETLIB_NAME(Q)
{
public:
- NETLIB_NAME(QBJT)(const family_t afamily)
- : NETLIB_NAME(Q)(afamily) { }
+ NETLIB_NAME(QBJT)(const family_t afamily, netlist_t &anetlist, const pstring &name)
+ : NETLIB_NAME(Q)(afamily, anetlist, name) { }
virtual ~NETLIB_NAME(QBJT)() { }
@@ -94,12 +94,15 @@ private:
class NETLIB_NAME(QBJT_switch) : public NETLIB_NAME(QBJT)
{
public:
- ATTR_COLD NETLIB_NAME(QBJT_switch)()
- : NETLIB_NAME(QBJT)(BJT_SWITCH),
- m_RB(object_t::ANALOG),
- m_RC(object_t::ANALOG),
- m_BC_dummy(object_t::ANALOG),
- m_gB(NETLIST_GMIN_DEFAULT), m_gC(NETLIST_GMIN_DEFAULT), m_V(0.0), m_state_on(0) { }
+ ATTR_COLD NETLIB_NAME(QBJT_switch)(netlist_t &anetlist, const pstring &name)
+ : NETLIB_NAME(QBJT)(BJT_SWITCH, anetlist, name),
+ m_RB(object_t::ANALOG, anetlist, "m_RB"),
+ m_RC(object_t::ANALOG, anetlist, "m_RC"),
+ m_BC_dummy(object_t::ANALOG, anetlist, "m_BC"),
+ m_gB(NETLIST_GMIN_DEFAULT),
+ m_gC(NETLIST_GMIN_DEFAULT),
+ m_V(0.0),
+ m_state_on(0) { }
ATTR_HOT void virtual update() override;
@@ -134,11 +137,11 @@ private:
class NETLIB_NAME(QBJT_EB) : public NETLIB_NAME(QBJT)
{
public:
- ATTR_COLD NETLIB_NAME(QBJT_EB)()
- : NETLIB_NAME(QBJT)(BJT_EB),
- m_D_CB(object_t::ANALOG),
- m_D_EB(object_t::ANALOG),
- m_D_EC(object_t::ANALOG),
+ ATTR_COLD NETLIB_NAME(QBJT_EB)(netlist_t &anetlist, const pstring &name)
+ : NETLIB_NAME(QBJT)(BJT_EB, anetlist, name),
+ m_D_CB(object_t::ANALOG, anetlist, "m_D_CB"),
+ m_D_EB(object_t::ANALOG, anetlist, "m_D_EB"),
+ m_D_EC(object_t::ANALOG, anetlist, "m_D_EC"),
m_alpha_f(0),
m_alpha_r(0)
{ }
diff --git a/src/lib/netlist/analog/nld_fourterm.cpp b/src/lib/netlist/analog/nld_fourterm.cpp
index 51502319f83..7cba4b15588 100644
--- a/src/lib/netlist/analog/nld_fourterm.cpp
+++ b/src/lib/netlist/analog/nld_fourterm.cpp
@@ -34,8 +34,8 @@ void NETLIB_NAME(VCCS)::start_internal(const nl_double def_RI)
register_terminal("_OP1", m_OP1);
register_terminal("_ON1", m_ON1);
- m_IP.m_otherterm = &m_IN; // <= this should be nullptr and terminal be filtered out prior to solving...
- m_IN.m_otherterm = &m_IP; // <= this should be nullptr and terminal be filtered out prior to solving...
+ m_IP.m_otherterm = &m_IN; // <= this should be NULL and terminal be filtered out prior to solving...
+ m_IN.m_otherterm = &m_IP; // <= this should be NULL and terminal be filtered out prior to solving...
m_OP.m_otherterm = &m_IP;
m_OP1.m_otherterm = &m_IN;
diff --git a/src/lib/netlist/analog/nld_fourterm.h b/src/lib/netlist/analog/nld_fourterm.h
index 7bed4e71a52..4f40eea3dc8 100644
--- a/src/lib/netlist/analog/nld_fourterm.h
+++ b/src/lib/netlist/analog/nld_fourterm.h
@@ -54,10 +54,10 @@ NETLIB_NAMESPACE_DEVICES_START()
class NETLIB_NAME(VCCS) : public device_t
{
public:
- ATTR_COLD NETLIB_NAME(VCCS)()
- : device_t(VCCS), m_gfac(1.0) { }
- ATTR_COLD NETLIB_NAME(VCCS)(const family_t afamily)
- : device_t(afamily), m_gfac(1.0) { }
+ ATTR_COLD NETLIB_NAME(VCCS)(netlist_t &anetlist, const pstring &name)
+ : device_t(VCCS, anetlist, name), m_gfac(1.0) { }
+ ATTR_COLD NETLIB_NAME(VCCS)(const family_t afamily, netlist_t &anetlist, const pstring &name)
+ : device_t(afamily, anetlist, name), m_gfac(1.0) { }
param_double_t m_G;
param_double_t m_RI;
@@ -87,10 +87,10 @@ protected:
class NETLIB_NAME(LVCCS) : public NETLIB_NAME(VCCS)
{
public:
- ATTR_COLD NETLIB_NAME(LVCCS)()
- : NETLIB_NAME(VCCS)(LVCCS), m_vi(0.0) { }
- ATTR_COLD NETLIB_NAME(LVCCS)(const family_t afamily)
- : NETLIB_NAME(VCCS)(afamily), m_vi(0.0) { }
+ ATTR_COLD NETLIB_NAME(LVCCS)(netlist_t &anetlist, const pstring &name)
+ : NETLIB_NAME(VCCS)(LVCCS, anetlist, name), m_vi(0.0) { }
+ ATTR_COLD NETLIB_NAME(LVCCS)(const family_t afamily, netlist_t &anetlist, const pstring &name)
+ : NETLIB_NAME(VCCS)(afamily, anetlist, name), m_vi(0.0) { }
param_double_t m_cur_limit; /* current limit */
@@ -130,8 +130,8 @@ protected:
class NETLIB_NAME(CCCS) : public NETLIB_NAME(VCCS)
{
public:
- ATTR_COLD NETLIB_NAME(CCCS)()
- : NETLIB_NAME(VCCS)(CCCS), m_gfac(1.0) { }
+ ATTR_COLD NETLIB_NAME(CCCS)(netlist_t &anetlist, const pstring &name)
+ : NETLIB_NAME(VCCS)(CCCS, anetlist, name), m_gfac(1.0) { }
protected:
virtual void start() override;
@@ -174,8 +174,8 @@ protected:
class NETLIB_NAME(VCVS) : public NETLIB_NAME(VCCS)
{
public:
- ATTR_COLD NETLIB_NAME(VCVS)()
- : NETLIB_NAME(VCCS)(VCVS) { }
+ ATTR_COLD NETLIB_NAME(VCVS)(netlist_t &anetlist, const pstring &name)
+ : NETLIB_NAME(VCCS)(VCVS, anetlist, name) { }
param_double_t m_RO;
diff --git a/src/lib/netlist/analog/nld_opamps.cpp b/src/lib/netlist/analog/nld_opamps.cpp
index 38a32b0d211..7a844d01a6a 100644
--- a/src/lib/netlist/analog/nld_opamps.cpp
+++ b/src/lib/netlist/analog/nld_opamps.cpp
@@ -123,36 +123,36 @@ NETLIB_UPDATE(OPAMP)
NETLIB_RESET(OPAMP)
{
- m_G1.do_reset();
- m_G1.m_RI.setTo(m_model.model_value("RI"));
+ m_G1->do_reset();
+ m_G1->m_RI.setTo(m_model.model_value("RI"));
if (m_type == 1)
{
double RO = m_model.model_value("RO");
double G = m_model.model_value("UGF") / m_model.model_value("FPF") / RO;
- m_RP.set_R(RO);
- m_G1.m_G.setTo(G);
+ m_RP->set_R(RO);
+ m_G1->m_G.setTo(G);
}
else if (m_type == 3)
{
- m_EBUF.do_reset();
- m_DP.do_reset();
- m_DN.do_reset();
- m_CP.do_reset();
- m_RP.do_reset();
+ m_EBUF->do_reset();
+ m_DP->do_reset();
+ m_DN->do_reset();
+ m_CP->do_reset();
+ m_RP->do_reset();
- m_EBUF.m_G.setTo(1.0);
- m_EBUF.m_RO.setTo(m_model.model_value("RO"));
- m_DP.m_model.setTo("D(IS=1e-15 N=1)");
- m_DN.m_model.setTo("D(IS=1e-15 N=1)");
+ m_EBUF->m_G.setTo(1.0);
+ m_EBUF->m_RO.setTo(m_model.model_value("RO"));
+ m_DP->m_model.setTo("D(IS=1e-15 N=1)");
+ m_DN->m_model.setTo("D(IS=1e-15 N=1)");
double CP = m_model.model_value("DAB") / m_model.model_value("SLEW");
double RP = 0.5 / 3.1459 / CP / m_model.model_value("FPF");
double G = m_model.model_value("UGF") / m_model.model_value("FPF") / RP;
- m_CP.m_C.setTo(CP);
- m_RP.set_R(RP);
- m_G1.m_G.setTo(G);
+ m_CP->m_C.setTo(CP);
+ m_RP->set_R(RP);
+ m_G1->m_G.setTo(G);
}
diff --git a/src/lib/netlist/analog/nld_opamps.h b/src/lib/netlist/analog/nld_opamps.h
index 2cee8696bca..65ad97b2b42 100644
--- a/src/lib/netlist/analog/nld_opamps.h
+++ b/src/lib/netlist/analog/nld_opamps.h
@@ -35,12 +35,12 @@ NETLIST_EXTERNAL(opamp_lm3900)
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_DEVICE_WITH_PARAMS(OPAMP,
- NETLIB_NAME(R) m_RP;
- NETLIB_NAME(C) m_CP;
- NETLIB_NAME(VCCS) m_G1;
- NETLIB_NAME(VCVS) m_EBUF;
- NETLIB_NAME(D) m_DP;
- NETLIB_NAME(D) m_DN;
+ NETLIB_SUB(R) m_RP;
+ NETLIB_SUB(C) m_CP;
+ NETLIB_SUB(VCCS) m_G1;
+ NETLIB_SUB(VCVS) m_EBUF;
+ NETLIB_SUB(D) m_DP;
+ NETLIB_SUB(D) m_DN;
analog_input_t m_VCC;
analog_input_t m_GND;
diff --git a/src/lib/netlist/analog/nld_switches.cpp b/src/lib/netlist/analog/nld_switches.cpp
index 6166463c6f8..57a895f1d18 100644
--- a/src/lib/netlist/analog/nld_switches.cpp
+++ b/src/lib/netlist/analog/nld_switches.cpp
@@ -23,29 +23,29 @@ NETLIB_START(switch1)
register_param("POS", m_POS, 0);
- register_subalias("1", m_R.m_P);
- register_subalias("2", m_R.m_N);
+ register_subalias("1", m_R->m_P);
+ register_subalias("2", m_R->m_N);
}
NETLIB_RESET(switch1)
{
- m_R.do_reset();
+ m_R->do_reset();
- m_R.set_R(R_OFF);
+ m_R->set_R(R_OFF);
}
NETLIB_UPDATE(switch1)
{
if (m_POS.Value() == 0)
{
- m_R.set_R(R_OFF);
+ m_R->set_R(R_OFF);
}
else
{
- m_R.set_R(R_ON);
+ m_R->set_R(R_ON);
}
- m_R.update_dev();
+ m_R->update_dev();
}
NETLIB_UPDATE_PARAM(switch1)
@@ -65,38 +65,38 @@ NETLIB_START(switch2)
register_param("POS", m_POS, 0);
- connect_late(m_R[0].m_N, m_R[1].m_N);
+ connect_late(m_R[0]->m_N, m_R[1]->m_N);
- register_subalias("1", m_R[0].m_P);
- register_subalias("2", m_R[1].m_P);
+ register_subalias("1", m_R[0]->m_P);
+ register_subalias("2", m_R[1]->m_P);
- register_subalias("Q", m_R[0].m_N);
+ register_subalias("Q", m_R[0]->m_N);
}
NETLIB_RESET(switch2)
{
- m_R[0].do_reset();
- m_R[1].do_reset();
+ m_R[0]->do_reset();
+ m_R[1]->do_reset();
- m_R[0].set_R(R_ON);
- m_R[1].set_R(R_OFF);
+ m_R[0]->set_R(R_ON);
+ m_R[1]->set_R(R_OFF);
}
NETLIB_UPDATE(switch2)
{
if (m_POS.Value() == 0)
{
- m_R[0].set_R(R_ON);
- m_R[1].set_R(R_OFF);
+ m_R[0]->set_R(R_ON);
+ m_R[1]->set_R(R_OFF);
}
else
{
- m_R[0].set_R(R_OFF);
- m_R[1].set_R(R_ON);
+ m_R[0]->set_R(R_OFF);
+ m_R[1]->set_R(R_ON);
}
- m_R[0].update_dev();
- m_R[1].update_dev();
+ m_R[0]->update_dev();
+ m_R[1]->update_dev();
}
NETLIB_UPDATE_PARAM(switch2)
diff --git a/src/lib/netlist/analog/nld_switches.h b/src/lib/netlist/analog/nld_switches.h
index 6cec34ceb4c..590761b01e6 100644
--- a/src/lib/netlist/analog/nld_switches.h
+++ b/src/lib/netlist/analog/nld_switches.h
@@ -30,13 +30,13 @@
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_DEVICE_WITH_PARAMS(switch1,
- NETLIB_NAME(R_base) m_R;
+ NETLIB_SUB(R_base) m_R;
param_int_t m_POS;
);
NETLIB_DEVICE_WITH_PARAMS(switch2,
- NETLIB_NAME(R_base) m_R[2];
+ NETLIB_SUB(R_base) m_R[2];
param_int_t m_POS;
);
diff --git a/src/lib/netlist/analog/nld_twoterm.cpp b/src/lib/netlist/analog/nld_twoterm.cpp
index 819c2c2e11e..867d90423ec 100644
--- a/src/lib/netlist/analog/nld_twoterm.cpp
+++ b/src/lib/netlist/analog/nld_twoterm.cpp
@@ -48,15 +48,15 @@ ATTR_COLD void generic_diode::save(pstring name, object_t &parent)
// nld_twoterm
// ----------------------------------------------------------------------------------------
-ATTR_COLD NETLIB_NAME(twoterm)::NETLIB_NAME(twoterm)(const family_t afamily)
- : device_t(afamily)
+ATTR_COLD NETLIB_NAME(twoterm)::NETLIB_NAME(twoterm)(const family_t afamily, netlist_t &anetlist, const pstring &name)
+ : device_t(afamily, anetlist, name)
{
m_P.m_otherterm = &m_N;
m_N.m_otherterm = &m_P;
}
-ATTR_COLD NETLIB_NAME(twoterm)::NETLIB_NAME(twoterm)()
- : device_t(TWOTERM)
+ATTR_COLD NETLIB_NAME(twoterm)::NETLIB_NAME(twoterm)(netlist_t &anetlist, const pstring &name)
+ : device_t(TWOTERM, anetlist, name)
{
m_P.m_otherterm = &m_N;
m_N.m_otherterm = &m_P;
@@ -137,11 +137,11 @@ NETLIB_START(POT)
register_sub("R1", m_R1);
register_sub("R2", m_R2);
- register_subalias("1", m_R1.m_P);
- register_subalias("2", m_R1.m_N);
- register_subalias("3", m_R2.m_N);
+ register_subalias("1", m_R1->m_P);
+ register_subalias("2", m_R1->m_N);
+ register_subalias("3", m_R2->m_N);
- connect_late(m_R2.m_P, m_R1.m_N);
+ connect_late(m_R2->m_P, m_R1->m_N);
register_param("R", m_R, 1.0 / netlist().gmin());
register_param("DIAL", m_Dial, 0.5);
@@ -151,14 +151,14 @@ NETLIB_START(POT)
NETLIB_RESET(POT)
{
- m_R1.do_reset();
- m_R2.do_reset();
+ m_R1->do_reset();
+ m_R2->do_reset();
}
NETLIB_UPDATE(POT)
{
- m_R1.update_dev();
- m_R2.update_dev();
+ m_R1->update_dev();
+ m_R2->update_dev();
}
NETLIB_UPDATE_PARAM(POT)
@@ -167,11 +167,11 @@ NETLIB_UPDATE_PARAM(POT)
if (m_DialIsLog.Value())
v = (nl_math::exp(v) - 1.0) / (nl_math::exp(1.0) - 1.0);
- m_R1.update_dev();
- m_R2.update_dev();
+ m_R1->update_dev();
+ m_R2->update_dev();
- m_R1.set_R(std::max(m_R.Value() * v, netlist().gmin()));
- m_R2.set_R(std::max(m_R.Value() * (NL_FCONST(1.0) - v), netlist().gmin()));
+ m_R1->set_R(std::max(m_R.Value() * v, netlist().gmin()));
+ m_R2->set_R(std::max(m_R.Value() * (NL_FCONST(1.0) - v), netlist().gmin()));
}
@@ -183,8 +183,8 @@ NETLIB_START(POT2)
{
register_sub("R1", m_R1);
- register_subalias("1", m_R1.m_P);
- register_subalias("2", m_R1.m_N);
+ register_subalias("1", m_R1->m_P);
+ register_subalias("2", m_R1->m_N);
register_param("R", m_R, 1.0 / netlist().gmin());
register_param("DIAL", m_Dial, 0.5);
@@ -195,12 +195,12 @@ NETLIB_START(POT2)
NETLIB_RESET(POT2)
{
- m_R1.do_reset();
+ m_R1->do_reset();
}
NETLIB_UPDATE(POT2)
{
- m_R1.update_dev();
+ m_R1->update_dev();
}
NETLIB_UPDATE_PARAM(POT2)
@@ -212,9 +212,9 @@ NETLIB_UPDATE_PARAM(POT2)
if (m_Reverse.Value())
v = 1.0 - v;
- m_R1.update_dev();
+ m_R1->update_dev();
- m_R1.set_R(std::max(m_R.Value() * v, netlist().gmin()));
+ m_R1->set_R(std::max(m_R.Value() * v, netlist().gmin()));
}
// ----------------------------------------------------------------------------------------
diff --git a/src/lib/netlist/analog/nld_twoterm.h b/src/lib/netlist/analog/nld_twoterm.h
index 9a716094163..bd61617af61 100644
--- a/src/lib/netlist/analog/nld_twoterm.h
+++ b/src/lib/netlist/analog/nld_twoterm.h
@@ -103,8 +103,8 @@ NETLIB_NAMESPACE_DEVICES_START()
class NETLIB_NAME(twoterm) : public device_t
{
public:
- ATTR_COLD NETLIB_NAME(twoterm)(const family_t afamily);
- ATTR_COLD NETLIB_NAME(twoterm)();
+ ATTR_COLD NETLIB_NAME(twoterm)(const family_t afamily, netlist_t &anetlist, const pstring &name);
+ ATTR_COLD NETLIB_NAME(twoterm)(netlist_t &anetlist, const pstring &name);
terminal_t m_P;
terminal_t m_N;
@@ -147,7 +147,8 @@ private:
class NETLIB_NAME(R_base) : public NETLIB_NAME(twoterm)
{
public:
- ATTR_COLD NETLIB_NAME(R_base)() : NETLIB_NAME(twoterm)(RESISTOR) { }
+ ATTR_COLD NETLIB_NAME(R_base)(netlist_t &anetlist, const pstring &name)
+ : NETLIB_NAME(twoterm)(RESISTOR, anetlist, name) { }
inline void set_R(const nl_double R)
{
@@ -169,8 +170,8 @@ NETLIB_DEVICE_WITH_PARAMS_DERIVED(R, R_base,
// -----------------------------------------------------------------------------
NETLIB_DEVICE_WITH_PARAMS(POT,
- NETLIB_NAME(R_base) m_R1;
- NETLIB_NAME(R_base) m_R2;
+ NETLIB_SUB(R_base) m_R1;
+ NETLIB_SUB(R_base) m_R2;
param_double_t m_R;
param_double_t m_Dial;
@@ -178,7 +179,7 @@ NETLIB_DEVICE_WITH_PARAMS(POT,
);
NETLIB_DEVICE_WITH_PARAMS(POT2,
- NETLIB_NAME(R_base) m_R1;
+ NETLIB_SUB(R_base) m_R1;
param_double_t m_R;
param_double_t m_Dial;
@@ -194,7 +195,8 @@ NETLIB_DEVICE_WITH_PARAMS(POT2,
class NETLIB_NAME(C) : public NETLIB_NAME(twoterm)
{
public:
- ATTR_COLD NETLIB_NAME(C)() : NETLIB_NAME(twoterm)(CAPACITOR), m_GParallel(0.0) { }
+ ATTR_COLD NETLIB_NAME(C)(netlist_t &anetlist, const pstring &name)
+ : NETLIB_NAME(twoterm)(CAPACITOR, anetlist, name), m_GParallel(0.0) { }
ATTR_HOT void step_time(const nl_double st) override;
@@ -291,7 +293,8 @@ private:
class NETLIB_NAME(D) : public NETLIB_NAME(twoterm)
{
public:
- ATTR_COLD NETLIB_NAME(D)() : NETLIB_NAME(twoterm)(DIODE) { }
+ ATTR_COLD NETLIB_NAME(D)(netlist_t &anetlist, const pstring &name)
+ : NETLIB_NAME(twoterm)(DIODE, anetlist, name) { }
NETLIB_UPDATE_TERMINALSI();
@@ -314,7 +317,8 @@ protected:
class NETLIB_NAME(VS) : public NETLIB_NAME(twoterm)
{
public:
- ATTR_COLD NETLIB_NAME(VS)() : NETLIB_NAME(twoterm)(VS) { }
+ ATTR_COLD NETLIB_NAME(VS)(netlist_t &anetlist, const pstring &name)
+ : NETLIB_NAME(twoterm)(VS, anetlist, name) { }
protected:
virtual void start() override;
@@ -332,7 +336,8 @@ protected:
class NETLIB_NAME(CS) : public NETLIB_NAME(twoterm)
{
public:
- ATTR_COLD NETLIB_NAME(CS)() : NETLIB_NAME(twoterm)(CS) { }
+ ATTR_COLD NETLIB_NAME(CS)(netlist_t &anetlist, const pstring &name)
+ : NETLIB_NAME(twoterm)(CS, anetlist, name) { }
protected:
virtual void start() override;
diff --git a/src/lib/netlist/devices/nld_4020.cpp b/src/lib/netlist/devices/nld_4020.cpp
index efb52d063b4..226d8c44c48 100644
--- a/src/lib/netlist/devices/nld_4020.cpp
+++ b/src/lib/netlist/devices/nld_4020.cpp
@@ -15,26 +15,26 @@ NETLIB_START(CD4020)
register_sub("supply", m_supply);
register_input("RESET", m_RESET);
- register_subalias("IP", sub.m_IP);
- register_subalias("Q1", sub.m_Q[0]);
- register_subalias("Q4", sub.m_Q[3]);
- register_subalias("Q5", sub.m_Q[4]);
- register_subalias("Q6", sub.m_Q[5]);
- register_subalias("Q7", sub.m_Q[6]);
- register_subalias("Q8", sub.m_Q[7]);
- register_subalias("Q9", sub.m_Q[8]);
- register_subalias("Q10", sub.m_Q[9]);
- register_subalias("Q11", sub.m_Q[10]);
- register_subalias("Q12", sub.m_Q[11]);
- register_subalias("Q13", sub.m_Q[12]);
- register_subalias("Q14", sub.m_Q[13]);
- register_subalias("VDD", m_supply.m_vdd);
- register_subalias("VSS", m_supply.m_vss);
+ register_subalias("IP", sub->m_IP);
+ register_subalias("Q1", sub->m_Q[0]);
+ register_subalias("Q4", sub->m_Q[3]);
+ register_subalias("Q5", sub->m_Q[4]);
+ register_subalias("Q6", sub->m_Q[5]);
+ register_subalias("Q7", sub->m_Q[6]);
+ register_subalias("Q8", sub->m_Q[7]);
+ register_subalias("Q9", sub->m_Q[8]);
+ register_subalias("Q10", sub->m_Q[9]);
+ register_subalias("Q11", sub->m_Q[10]);
+ register_subalias("Q12", sub->m_Q[11]);
+ register_subalias("Q13", sub->m_Q[12]);
+ register_subalias("Q14", sub->m_Q[13]);
+ register_subalias("VDD", m_supply->m_vdd);
+ register_subalias("VSS", m_supply->m_vss);
}
NETLIB_RESET(CD4020)
{
- sub.do_reset();
+ sub->do_reset();
}
@@ -76,15 +76,15 @@ NETLIB_UPDATE(CD4020)
{
if (INPLOGIC(m_RESET))
{
- sub.m_cnt = 0;
- sub.m_IP.inactivate();
+ sub->m_cnt = 0;
+ sub->m_IP.inactivate();
/* static */ const netlist_time reset_time = netlist_time::from_nsec(140);
- OUTLOGIC(sub.m_Q[0], 0, reset_time);
+ OUTLOGIC(sub->m_Q[0], 0, reset_time);
for (int i=3; i<14; i++)
- OUTLOGIC(sub.m_Q[i], 0, reset_time);
+ OUTLOGIC(sub->m_Q[i], 0, reset_time);
}
else
- sub.m_IP.activate_hl();
+ sub->m_IP.activate_hl();
}
inline NETLIB_FUNC_VOID(CD4020_sub, update_outputs, (const UINT16 cnt))
diff --git a/src/lib/netlist/devices/nld_4020.h b/src/lib/netlist/devices/nld_4020.h
index 78d7199db1b..759e7dc177f 100644
--- a/src/lib/netlist/devices/nld_4020.h
+++ b/src/lib/netlist/devices/nld_4020.h
@@ -57,8 +57,8 @@ NETLIB_SUBDEVICE(CD4020_sub,
NETLIB_DEVICE(CD4020,
NETLIB_LOGIC_FAMILY(CD4XXX)
- NETLIB_NAME(CD4020_sub) sub;
- NETLIB_NAME(vdd_vss) m_supply;
+ NETLIB_SUB(CD4020_sub) sub;
+ NETLIB_SUB(vdd_vss) m_supply;
logic_input_t m_RESET;
);
diff --git a/src/lib/netlist/devices/nld_4066.cpp b/src/lib/netlist/devices/nld_4066.cpp
index 535314c0aa4..7dd471c0ae0 100644
--- a/src/lib/netlist/devices/nld_4066.cpp
+++ b/src/lib/netlist/devices/nld_4066.cpp
@@ -19,15 +19,15 @@ NETLIB_START(CD4066_GATE)
NETLIB_RESET(CD4066_GATE)
{
- m_R.do_reset();
+ m_R->do_reset();
}
NETLIB_UPDATE(CD4066_GATE)
{
- nl_double sup = (m_supply.vdd() - m_supply.vss());
+ nl_double sup = (m_supply->vdd() - m_supply->vss());
nl_double low = NL_FCONST(0.45) * sup;
nl_double high = NL_FCONST(0.55) * sup;
- nl_double in = INPANALOG(m_control) - m_supply.vss();
+ nl_double in = INPANALOG(m_control) - m_supply->vss();
nl_double rON = m_base_r * NL_FCONST(5.0) / sup;
nl_double R = -1.0;
@@ -44,14 +44,14 @@ NETLIB_UPDATE(CD4066_GATE)
// We only need to update the net first if this is a time stepping net
if (1) // m_R.m_P.net().as_analog().solver()->is_timestep())
{
- m_R.update_dev();
- m_R.set_R(R);
- m_R.m_P.schedule_after(NLTIME_FROM_NS(1));
+ m_R->update_dev();
+ m_R->set_R(R);
+ m_R->m_P.schedule_after(NLTIME_FROM_NS(1));
}
else
{
- m_R.set_R(R);
- m_R.update_dev();
+ m_R->set_R(R);
+ m_R->update_dev();
}
}
}
diff --git a/src/lib/netlist/devices/nld_4066.h b/src/lib/netlist/devices/nld_4066.h
index abfe321a7c4..87378d6b6c1 100644
--- a/src/lib/netlist/devices/nld_4066.h
+++ b/src/lib/netlist/devices/nld_4066.h
@@ -37,9 +37,9 @@ NETLIB_DEVICE(CD4066_GATE,
public:
analog_input_t m_control;
- NETLIB_NAME(R) m_R;
+ NETLIB_SUB(R) m_R;
- NETLIB_NAME(vdd_vss) m_supply;
+ NETLIB_SUB(vdd_vss) m_supply;
param_double_t m_base_r;
);
diff --git a/src/lib/netlist/devices/nld_7402.cpp b/src/lib/netlist/devices/nld_7402.cpp
index 0e5695bebc9..5cd201e8d32 100644
--- a/src/lib/netlist/devices/nld_7402.cpp
+++ b/src/lib/netlist/devices/nld_7402.cpp
@@ -28,38 +28,38 @@ NETLIB_START(7402_dip)
register_sub("3", m_3);
register_sub("4", m_4);
- register_subalias("1", m_1.m_Q[0]);
- register_subalias("2", m_1.m_I[0]);
- register_subalias("3", m_1.m_I[1]);
+ register_subalias("1", m_1->m_Q[0]);
+ register_subalias("2", m_1->m_I[0]);
+ register_subalias("3", m_1->m_I[1]);
- register_subalias("4", m_2.m_Q[0]);
- register_subalias("5", m_2.m_I[0]);
- register_subalias("6", m_2.m_I[1]);
+ register_subalias("4", m_2->m_Q[0]);
+ register_subalias("5", m_2->m_I[0]);
+ register_subalias("6", m_2->m_I[1]);
- register_subalias("8", m_3.m_I[0]);
- register_subalias("9", m_3.m_I[1]);
- register_subalias("10", m_3.m_Q[0]);
+ register_subalias("8", m_3->m_I[0]);
+ register_subalias("9", m_3->m_I[1]);
+ register_subalias("10", m_3->m_Q[0]);
- register_subalias("11", m_4.m_I[0]);
- register_subalias("12", m_4.m_I[1]);
- register_subalias("13", m_4.m_Q[0]);
+ register_subalias("11", m_4->m_I[0]);
+ register_subalias("12", m_4->m_I[1]);
+ register_subalias("13", m_4->m_Q[0]);
}
NETLIB_UPDATE(7402_dip)
{
/* only called during startup */
- m_1.update_dev();
- m_2.update_dev();
- m_3.update_dev();
- m_4.update_dev();
+ m_1->update_dev();
+ m_2->update_dev();
+ m_3->update_dev();
+ m_4->update_dev();
}
NETLIB_RESET(7402_dip)
{
- m_1.do_reset();
- m_2.do_reset();
- m_3.do_reset();
- m_4.do_reset();
+ m_1->do_reset();
+ m_2->do_reset();
+ m_3->do_reset();
+ m_4->do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_7402.h b/src/lib/netlist/devices/nld_7402.h
index 1d11236488b..6f8ae8bc57b 100644
--- a/src/lib/netlist/devices/nld_7402.h
+++ b/src/lib/netlist/devices/nld_7402.h
@@ -54,10 +54,10 @@ NETLIB_SIGNAL(7402, 2, 1, 0);
NETLIB_DEVICE(7402_dip,
- NETLIB_NAME(7402) m_1;
- NETLIB_NAME(7402) m_2;
- NETLIB_NAME(7402) m_3;
- NETLIB_NAME(7402) m_4;
+ NETLIB_SUB(7402) m_1;
+ NETLIB_SUB(7402) m_2;
+ NETLIB_SUB(7402) m_3;
+ NETLIB_SUB(7402) m_4;
);
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_7404.cpp b/src/lib/netlist/devices/nld_7404.cpp
index 5bfd08c7d1e..2f1b712a479 100644
--- a/src/lib/netlist/devices/nld_7404.cpp
+++ b/src/lib/netlist/devices/nld_7404.cpp
@@ -46,45 +46,45 @@ NETLIB_START(7404_dip)
register_sub("5", m_5);
register_sub("6", m_6);
- register_subalias("1", m_1.m_I[0]);
- register_subalias("2", m_1.m_Q[0]);
+ register_subalias("1", m_1->m_I[0]);
+ register_subalias("2", m_1->m_Q[0]);
- register_subalias("3", m_2.m_I[0]);
- register_subalias("4", m_2.m_Q[0]);
+ register_subalias("3", m_2->m_I[0]);
+ register_subalias("4", m_2->m_Q[0]);
- register_subalias("5", m_3.m_I[0]);
- register_subalias("6", m_3.m_Q[0]);
+ register_subalias("5", m_3->m_I[0]);
+ register_subalias("6", m_3->m_Q[0]);
- register_subalias("8", m_4.m_Q[0]);
- register_subalias("9", m_4.m_I[0]);
+ register_subalias("8", m_4->m_Q[0]);
+ register_subalias("9", m_4->m_I[0]);
- register_subalias("10", m_5.m_Q[0]);
- register_subalias("11", m_5.m_I[0]);
+ register_subalias("10", m_5->m_Q[0]);
+ register_subalias("11", m_5->m_I[0]);
- register_subalias("12", m_6.m_Q[0]);
- register_subalias("13", m_6.m_I[0]);
+ register_subalias("12", m_6->m_Q[0]);
+ register_subalias("13", m_6->m_I[0]);
}
NETLIB_UPDATE(7404_dip)
{
/* only called during startup */
- m_1.update_dev();
- m_2.update_dev();
- m_3.update_dev();
- m_4.update_dev();
- m_5.update_dev();
- m_6.update_dev();
+ m_1->update_dev();
+ m_2->update_dev();
+ m_3->update_dev();
+ m_4->update_dev();
+ m_5->update_dev();
+ m_6->update_dev();
}
NETLIB_RESET(7404_dip)
{
- m_1.do_reset();
- m_2.do_reset();
- m_3.do_reset();
- m_4.do_reset();
- m_5.do_reset();
- m_6.do_reset();
+ m_1->do_reset();
+ m_2->do_reset();
+ m_3->do_reset();
+ m_4->do_reset();
+ m_5->do_reset();
+ m_6->do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_7404.h b/src/lib/netlist/devices/nld_7404.h
index 18e7fe8087d..197f36c3c0f 100644
--- a/src/lib/netlist/devices/nld_7404.h
+++ b/src/lib/netlist/devices/nld_7404.h
@@ -54,12 +54,12 @@ public:
NETLIB_DEVICE(7404_dip,
- NETLIB_NAME(7404) m_1;
- NETLIB_NAME(7404) m_2;
- NETLIB_NAME(7404) m_3;
- NETLIB_NAME(7404) m_4;
- NETLIB_NAME(7404) m_5;
- NETLIB_NAME(7404) m_6;
+ NETLIB_SUB(7404) m_1;
+ NETLIB_SUB(7404) m_2;
+ NETLIB_SUB(7404) m_3;
+ NETLIB_SUB(7404) m_4;
+ NETLIB_SUB(7404) m_5;
+ NETLIB_SUB(7404) m_6;
);
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_7408.cpp b/src/lib/netlist/devices/nld_7408.cpp
index a0a54d6cf82..5489ec3abdb 100644
--- a/src/lib/netlist/devices/nld_7408.cpp
+++ b/src/lib/netlist/devices/nld_7408.cpp
@@ -28,38 +28,38 @@ NETLIB_START(7408_dip)
register_sub("3", m_3);
register_sub("4", m_4);
- register_subalias("1", m_1.m_I[0]);
- register_subalias("2", m_1.m_I[1]);
- register_subalias("3", m_1.m_Q[0]);
+ register_subalias("1", m_1->m_I[0]);
+ register_subalias("2", m_1->m_I[1]);
+ register_subalias("3", m_1->m_Q[0]);
- register_subalias("4", m_2.m_I[0]);
- register_subalias("5", m_2.m_I[1]);
- register_subalias("6", m_2.m_Q[0]);
+ register_subalias("4", m_2->m_I[0]);
+ register_subalias("5", m_2->m_I[1]);
+ register_subalias("6", m_2->m_Q[0]);
- register_subalias("9", m_3.m_I[0]);
- register_subalias("10", m_3.m_I[1]);
- register_subalias("8", m_3.m_Q[0]);
+ register_subalias("9", m_3->m_I[0]);
+ register_subalias("10", m_3->m_I[1]);
+ register_subalias("8", m_3->m_Q[0]);
- register_subalias("12", m_4.m_I[0]);
- register_subalias("13", m_4.m_I[1]);
- register_subalias("11", m_4.m_Q[0]);
+ register_subalias("12", m_4->m_I[0]);
+ register_subalias("13", m_4->m_I[1]);
+ register_subalias("11", m_4->m_Q[0]);
}
NETLIB_UPDATE(7408_dip)
{
/* only called during startup */
- m_1.update_dev();
- m_2.update_dev();
- m_3.update_dev();
- m_4.update_dev();
+ m_1->update_dev();
+ m_2->update_dev();
+ m_3->update_dev();
+ m_4->update_dev();
}
NETLIB_RESET(7408_dip)
{
- m_1.do_reset();
- m_2.do_reset();
- m_3.do_reset();
- m_4.do_reset();
+ m_1->do_reset();
+ m_2->do_reset();
+ m_3->do_reset();
+ m_4->do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_7408.h b/src/lib/netlist/devices/nld_7408.h
index 9304d5c554d..327cfa44dd0 100644
--- a/src/lib/netlist/devices/nld_7408.h
+++ b/src/lib/netlist/devices/nld_7408.h
@@ -54,10 +54,10 @@ NETLIB_SIGNAL(7408, 2, 0, 1);
NETLIB_DEVICE(7408_dip,
- NETLIB_NAME(7408) m_1;
- NETLIB_NAME(7408) m_2;
- NETLIB_NAME(7408) m_3;
- NETLIB_NAME(7408) m_4;
+ NETLIB_SUB(7408) m_1;
+ NETLIB_SUB(7408) m_2;
+ NETLIB_SUB(7408) m_3;
+ NETLIB_SUB(7408) m_4;
);
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_7410.cpp b/src/lib/netlist/devices/nld_7410.cpp
index 9564ecd4e4f..8039afd9625 100644
--- a/src/lib/netlist/devices/nld_7410.cpp
+++ b/src/lib/netlist/devices/nld_7410.cpp
@@ -29,35 +29,35 @@ NETLIB_START(7410_dip)
register_sub("2", m_2);
register_sub("3", m_3);
- register_subalias("1", m_1.m_I[0]);
- register_subalias("2", m_1.m_I[1]);
- register_subalias("3", m_2.m_I[0]);
- register_subalias("4", m_2.m_I[1]);
- register_subalias("5", m_2.m_I[2]);
- register_subalias("6", m_2.m_Q[0]);
-
- register_subalias("8", m_3.m_Q[0]);
- register_subalias("9", m_3.m_I[0]);
- register_subalias("10", m_3.m_I[1]);
- register_subalias("11", m_3.m_I[2]);
-
- register_subalias("12", m_1.m_Q[0]);
- register_subalias("13", m_1.m_I[2]);
+ register_subalias("1", m_1->m_I[0]);
+ register_subalias("2", m_1->m_I[1]);
+ register_subalias("3", m_2->m_I[0]);
+ register_subalias("4", m_2->m_I[1]);
+ register_subalias("5", m_2->m_I[2]);
+ register_subalias("6", m_2->m_Q[0]);
+
+ register_subalias("8", m_3->m_Q[0]);
+ register_subalias("9", m_3->m_I[0]);
+ register_subalias("10", m_3->m_I[1]);
+ register_subalias("11", m_3->m_I[2]);
+
+ register_subalias("12", m_1->m_Q[0]);
+ register_subalias("13", m_1->m_I[2]);
}
NETLIB_UPDATE(7410_dip)
{
/* only called during startup */
- m_1.update_dev();
- m_2.update_dev();
- m_3.update_dev();
+ m_1->update_dev();
+ m_2->update_dev();
+ m_3->update_dev();
}
NETLIB_RESET(7410_dip)
{
- m_1.do_reset();
- m_2.do_reset();
- m_3.do_reset();
+ m_1->do_reset();
+ m_2->do_reset();
+ m_3->do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_7410.h b/src/lib/netlist/devices/nld_7410.h
index d6e97838c7b..db1fe5f3b4d 100644
--- a/src/lib/netlist/devices/nld_7410.h
+++ b/src/lib/netlist/devices/nld_7410.h
@@ -54,9 +54,9 @@ NETLIB_SIGNAL(7410, 3, 0, 0);
NETLIB_DEVICE(7410_dip,
- NETLIB_NAME(7410) m_1;
- NETLIB_NAME(7410) m_2;
- NETLIB_NAME(7410) m_3;
+ NETLIB_SUB(7410) m_1;
+ NETLIB_SUB(7410) m_2;
+ NETLIB_SUB(7410) m_3;
);
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_74107.cpp b/src/lib/netlist/devices/nld_74107.cpp
index 542c80a5b43..062e3690d0f 100644
--- a/src/lib/netlist/devices/nld_74107.cpp
+++ b/src/lib/netlist/devices/nld_74107.cpp
@@ -35,18 +35,18 @@ NETLIB_START(74107A)
{
register_sub("sub", sub);
- register_subalias("CLK", sub.m_clk);
+ register_subalias("CLK", sub->m_clk);
register_input("J", m_J);
register_input("K", m_K);
register_input("CLRQ", m_clrQ);
- register_subalias("Q", sub.m_Q);
- register_subalias("QQ", sub.m_QQ);
+ register_subalias("Q", sub->m_Q);
+ register_subalias("QQ", sub->m_QQ);
}
NETLIB_RESET(74107A)
{
- sub.reset();
+ sub->reset();
}
ATTR_HOT inline void NETLIB_NAME(74107Asub)::newstate(const netlist_sig_t state)
@@ -72,25 +72,25 @@ NETLIB_UPDATE(74107A)
switch (JK)
{
case 0:
- sub.m_Q1 = 0;
- sub.m_Q2 = 1;
- sub.m_F = 0;
- sub.m_clk.inactivate();
+ sub->m_Q1 = 0;
+ sub->m_Q2 = 1;
+ sub->m_F = 0;
+ sub->m_clk.inactivate();
break;
case 1: // (!INPLOGIC(m_J) & INPLOGIC(m_K))
- sub.m_Q1 = 0;
- sub.m_Q2 = 0;
- sub.m_F = 0;
+ sub->m_Q1 = 0;
+ sub->m_Q2 = 0;
+ sub->m_F = 0;
break;
case 2: // (INPLOGIC(m_J) & !INPLOGIC(m_K))
- sub.m_Q1 = 0;
- sub.m_Q2 = 0;
- sub.m_F = 1;
+ sub->m_Q1 = 0;
+ sub->m_Q2 = 0;
+ sub->m_F = 1;
break;
case 3: // (INPLOGIC(m_J) & INPLOGIC(m_K))
- sub.m_Q1 = 1;
- sub.m_Q2 = 0;
- sub.m_F = 0;
+ sub->m_Q1 = 1;
+ sub->m_Q2 = 0;
+ sub->m_F = 0;
break;
default:
break;
@@ -98,11 +98,11 @@ NETLIB_UPDATE(74107A)
if (!INPLOGIC(m_clrQ))
{
- sub.m_clk.inactivate();
- sub.newstate(0);
+ sub->m_clk.inactivate();
+ sub->newstate(0);
}
- else if (!sub.m_Q2)
- sub.m_clk.activate_hl();
+ else if (!sub->m_Q2)
+ sub->m_clk.activate_hl();
}
NETLIB_START(74107_dip)
@@ -110,38 +110,38 @@ NETLIB_START(74107_dip)
register_sub("1", m_1);
register_sub("2", m_2);
- register_subalias("1", m_1.m_J);
- register_subalias("2", m_1.sub.m_QQ);
- register_subalias("3", m_1.sub.m_Q);
+ register_subalias("1", m_1->m_J);
+ register_subalias("2", m_1->sub->m_QQ);
+ register_subalias("3", m_1->sub->m_Q);
- register_subalias("4", m_1.m_K);
- register_subalias("5", m_2.sub.m_Q);
- register_subalias("6", m_2.sub.m_QQ);
+ register_subalias("4", m_1->m_K);
+ register_subalias("5", m_2->sub->m_Q);
+ register_subalias("6", m_2->sub->m_QQ);
// register_subalias("7", ); ==> GND
- register_subalias("8", m_2.m_J);
- register_subalias("9", m_2.sub.m_clk);
- register_subalias("10", m_2.m_clrQ);
+ register_subalias("8", m_2->m_J);
+ register_subalias("9", m_2->sub->m_clk);
+ register_subalias("10", m_2->m_clrQ);
- register_subalias("11", m_2.m_K);
- register_subalias("12", m_1.sub.m_clk);
- register_subalias("13", m_1.m_clrQ);
+ register_subalias("11", m_2->m_K);
+ register_subalias("12", m_1->sub->m_clk);
+ register_subalias("13", m_1->m_clrQ);
// register_subalias("14", ); ==> VCC
}
NETLIB_RESET(74107_dip)
{
- m_1.do_reset();
- m_2.do_reset();
+ m_1->do_reset();
+ m_2->do_reset();
}
NETLIB_UPDATE(74107_dip)
{
/* only called during startup */
- m_1.update_dev();
- m_2.update_dev();
+ m_1->update_dev();
+ m_2->update_dev();
}
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_74107.h b/src/lib/netlist/devices/nld_74107.h
index b0b38ee66fd..bddb3e88f0a 100644
--- a/src/lib/netlist/devices/nld_74107.h
+++ b/src/lib/netlist/devices/nld_74107.h
@@ -92,7 +92,7 @@ NETLIB_SUBDEVICE(74107Asub,
NETLIB_DEVICE(74107A,
public:
- NETLIB_NAME(74107Asub) sub;
+ NETLIB_SUB(74107Asub) sub;
logic_input_t m_J;
logic_input_t m_K;
@@ -103,15 +103,15 @@ public:
class NETLIB_NAME(74107) : public NETLIB_NAME(74107A)
{
public:
- NETLIB_NAME(74107) ()
- : NETLIB_NAME(74107A) () {}
+ NETLIB_NAME(74107) (netlist_t &anetlist, const pstring &name)
+ : NETLIB_NAME(74107A) (anetlist, name) {}
};
NETLIB_DEVICE(74107_dip,
- NETLIB_NAME(74107) m_1;
- NETLIB_NAME(74107) m_2;
+ NETLIB_SUB(74107) m_1;
+ NETLIB_SUB(74107) m_2;
);
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_7411.cpp b/src/lib/netlist/devices/nld_7411.cpp
index 2db034577cb..23a1dd8ff33 100644
--- a/src/lib/netlist/devices/nld_7411.cpp
+++ b/src/lib/netlist/devices/nld_7411.cpp
@@ -27,35 +27,35 @@ NETLIB_START(7411_dip)
register_sub("2", m_2);
register_sub("3", m_3);
- register_subalias("1", m_1.m_I[0]);
- register_subalias("2", m_1.m_I[1]);
- register_subalias("3", m_2.m_I[0]);
- register_subalias("4", m_2.m_I[1]);
- register_subalias("5", m_2.m_I[2]);
- register_subalias("6", m_2.m_Q[0]);
-
- register_subalias("8", m_3.m_Q[0]);
- register_subalias("9", m_3.m_I[0]);
- register_subalias("10", m_3.m_I[1]);
- register_subalias("11", m_3.m_I[2]);
-
- register_subalias("12", m_1.m_Q[0]);
- register_subalias("13", m_1.m_I[2]);
+ register_subalias("1", m_1->m_I[0]);
+ register_subalias("2", m_1->m_I[1]);
+ register_subalias("3", m_2->m_I[0]);
+ register_subalias("4", m_2->m_I[1]);
+ register_subalias("5", m_2->m_I[2]);
+ register_subalias("6", m_2->m_Q[0]);
+
+ register_subalias("8", m_3->m_Q[0]);
+ register_subalias("9", m_3->m_I[0]);
+ register_subalias("10", m_3->m_I[1]);
+ register_subalias("11", m_3->m_I[2]);
+
+ register_subalias("12", m_1->m_Q[0]);
+ register_subalias("13", m_1->m_I[2]);
}
NETLIB_UPDATE(7411_dip)
{
/* only called during startup */
- m_1.update_dev();
- m_2.update_dev();
- m_3.update_dev();
+ m_1->update_dev();
+ m_2->update_dev();
+ m_3->update_dev();
}
NETLIB_RESET(7411_dip)
{
- m_1.do_reset();
- m_2.do_reset();
- m_3.do_reset();
+ m_1->do_reset();
+ m_2->do_reset();
+ m_3->do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_7411.h b/src/lib/netlist/devices/nld_7411.h
index 11d4d45a20f..d07594afd8b 100644
--- a/src/lib/netlist/devices/nld_7411.h
+++ b/src/lib/netlist/devices/nld_7411.h
@@ -55,9 +55,9 @@ NETLIB_SIGNAL(7411, 3, 0, 1);
NETLIB_DEVICE(7411_dip,
- NETLIB_NAME(7411) m_1;
- NETLIB_NAME(7411) m_2;
- NETLIB_NAME(7411) m_3;
+ NETLIB_SUB(7411) m_1;
+ NETLIB_SUB(7411) m_2;
+ NETLIB_SUB(7411) m_3;
);
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_74123.cpp b/src/lib/netlist/devices/nld_74123.cpp
index ccd8eba012e..059ea406751 100644
--- a/src/lib/netlist/devices/nld_74123.cpp
+++ b/src/lib/netlist/devices/nld_74123.cpp
@@ -31,10 +31,10 @@ NETLIB_START(74123)
register_input("_CV", m_CV); // internal
- register_subalias("GND", m_RN.m_R.m_N);
- register_subalias("VCC", m_RP.m_R.m_P);
- register_subalias("C", m_RN.m_R.m_N);
- register_subalias("RC", m_RN.m_R.m_P);
+ register_subalias("GND", m_RN->m_R->m_N);
+ register_subalias("VCC", m_RP->m_R->m_P);
+ register_subalias("C", m_RN->m_R->m_N);
+ register_subalias("RC", m_RN->m_R->m_P);
if (m_dev_type == 4538)
register_param("K", m_K, 0.4);
@@ -43,11 +43,11 @@ NETLIB_START(74123)
register_param("RI", m_RI, 400.0); // around 250 for HC series, 400 on LS/TTL, estimated from datasheets
- connect_late(m_RP_Q, m_RP.m_I);
- connect_late(m_RN_Q, m_RN.m_I);
+ connect_late(m_RP_Q, m_RP->m_I);
+ connect_late(m_RN_Q, m_RN->m_I);
- connect_late(m_RN.m_R.m_P, m_RP.m_R.m_N);
- connect_late(m_CV, m_RN.m_R.m_P);
+ connect_late(m_RN->m_R->m_P, m_RP->m_R->m_N);
+ connect_late(m_CV, m_RN->m_R->m_P);
save(NLNAME(m_last_trig));
save(NLNAME(m_state));
@@ -107,7 +107,7 @@ NETLIB_UPDATE(74123)
if (m_state == 1)
{
- const nl_double vLow = m_KP * TERMANALOG(m_RP.m_R.m_P);
+ const nl_double vLow = m_KP * TERMANALOG(m_RP->m_R->m_P);
if (INPANALOG(m_CV) < vLow)
{
OUTLOGIC(m_RN_Q, 0, NLTIME_FROM_NS(10)); // R_OFF
@@ -116,7 +116,7 @@ NETLIB_UPDATE(74123)
}
if (m_state == 2)
{
- const nl_double vHigh = TERMANALOG(m_RP.m_R.m_P) * (1.0 - m_KP);
+ const nl_double vHigh = TERMANALOG(m_RP->m_R->m_P) * (1.0 - m_KP);
if (INPANALOG(m_CV) > vHigh)
{
OUTLOGIC(m_RP_Q, 0, NLTIME_FROM_NS(10)); // R_OFF
@@ -132,11 +132,11 @@ NETLIB_RESET(74123)
{
m_KP = 1.0 / (1.0 + exp(m_K.Value()));
- m_RP.do_reset();
- m_RN.do_reset();
+ m_RP->do_reset();
+ m_RN->do_reset();
- //m_RP.set_R(R_OFF);
- //m_RN.set_R(R_OFF);
+ //m_RP->set_R(R_OFF);
+ //m_RN->set_R(R_OFF);
m_last_trig = 0;
m_state = 0;
@@ -147,122 +147,123 @@ NETLIB_START(74123_dip)
register_sub("1", m_1);
register_sub("2", m_2);
- register_subalias("1", m_1.m_A);
- register_subalias("2", m_1.m_B);
- register_subalias("3", m_1.m_CLRQ);
- register_subalias("4", m_1.m_QQ);
- register_subalias("5", m_2.m_Q);
- register_subalias("6", m_2.m_RN.m_R.m_N);
- register_subalias("7", m_2.m_RN.m_R.m_P);
- register_subalias("8", m_1.m_RN.m_R.m_N);
- connect_late(m_1.m_RN.m_R.m_N, m_2.m_RN.m_R.m_N);
-
- register_subalias("9", m_2.m_A);
- register_subalias("10", m_2.m_B);
- register_subalias("11", m_2.m_CLRQ);
- register_subalias("12", m_2.m_QQ);
- register_subalias("13", m_1.m_Q);
- register_subalias("14", m_1.m_RN.m_R.m_N);
- register_subalias("15", m_1.m_RN.m_R.m_P);
- register_subalias("16", m_1.m_RP.m_R.m_P);
- connect_late(m_1.m_RP.m_R.m_P, m_2.m_RP.m_R.m_P);
+ register_subalias("1", m_1->m_A);
+ register_subalias("2", m_1->m_B);
+ register_subalias("3", m_1->m_CLRQ);
+ register_subalias("4", m_1->m_QQ);
+ register_subalias("5", m_2->m_Q);
+ register_subalias("6", m_2->m_RN->m_R->m_N);
+ register_subalias("7", m_2->m_RN->m_R->m_P);
+ register_subalias("8", m_1->m_RN->m_R->m_N);
+ connect_late(m_1->m_RN->m_R->m_N, m_2->m_RN->m_R->m_N);
+
+ register_subalias("9", m_2->m_A);
+ register_subalias("10", m_2->m_B);
+ register_subalias("11", m_2->m_CLRQ);
+ register_subalias("12", m_2->m_QQ);
+ register_subalias("13", m_1->m_Q);
+ register_subalias("14", m_1->m_RN->m_R->m_N);
+ register_subalias("15", m_1->m_RN->m_R->m_P);
+ register_subalias("16", m_1->m_RP->m_R->m_P);
+ connect_late(m_1->m_RP->m_R->m_P, m_2->m_RP->m_R->m_P);
}
NETLIB_UPDATE(74123_dip)
{
/* only called during startup */
- m_1.update_dev();
- m_2.update_dev();
+ m_1->update_dev();
+ m_2->update_dev();
}
NETLIB_RESET(74123_dip)
{
- m_1.do_reset();
- m_2.do_reset();
+ m_1->do_reset();
+ m_2->do_reset();
}
NETLIB_START(9602_dip)
{
- m_1.m_dev_type = 9602;
- m_2.m_dev_type = 9602;
register_sub("1", m_1);
register_sub("2", m_2);
- register_subalias("1", m_1.m_RN.m_R.m_N); // C1
- register_subalias("2", m_1.m_RN.m_R.m_P); // RC1
- register_subalias("3", m_1.m_CLRQ);
- register_subalias("4", m_1.m_B);
- register_subalias("5", m_1.m_A);
- register_subalias("6", m_1.m_Q);
- register_subalias("7", m_1.m_QQ);
- register_subalias("8", m_1.m_RN.m_R.m_N);
- connect_late(m_1.m_RN.m_R.m_N, m_2.m_RN.m_R.m_N);
-
- register_subalias("9", m_2.m_QQ);
- register_subalias("10", m_2.m_Q);
- register_subalias("11", m_2.m_A);
- register_subalias("12", m_2.m_B);
- register_subalias("13", m_2.m_CLRQ);
- register_subalias("14", m_2.m_RN.m_R.m_P); // RC2
- register_subalias("15", m_2.m_RN.m_R.m_N); // C2
- register_subalias("16", m_1.m_RP.m_R.m_P);
- connect_late(m_1.m_RP.m_R.m_P, m_2.m_RP.m_R.m_P);
+ m_1->m_dev_type = 9602;
+ m_2->m_dev_type = 9602;
+
+ register_subalias("1", m_1->m_RN->m_R->m_N); // C1
+ register_subalias("2", m_1->m_RN->m_R->m_P); // RC1
+ register_subalias("3", m_1->m_CLRQ);
+ register_subalias("4", m_1->m_B);
+ register_subalias("5", m_1->m_A);
+ register_subalias("6", m_1->m_Q);
+ register_subalias("7", m_1->m_QQ);
+ register_subalias("8", m_1->m_RN->m_R->m_N);
+ connect_late(m_1->m_RN->m_R->m_N, m_2->m_RN->m_R->m_N);
+
+ register_subalias("9", m_2->m_QQ);
+ register_subalias("10", m_2->m_Q);
+ register_subalias("11", m_2->m_A);
+ register_subalias("12", m_2->m_B);
+ register_subalias("13", m_2->m_CLRQ);
+ register_subalias("14", m_2->m_RN->m_R->m_P); // RC2
+ register_subalias("15", m_2->m_RN->m_R->m_N); // C2
+ register_subalias("16", m_1->m_RP->m_R->m_P);
+ connect_late(m_1->m_RP->m_R->m_P, m_2->m_RP->m_R->m_P);
}
NETLIB_UPDATE(9602_dip)
{
/* only called during startup */
- m_1.update_dev();
- m_2.update_dev();
+ m_1->update_dev();
+ m_2->update_dev();
}
NETLIB_RESET(9602_dip)
{
- m_1.do_reset();
- m_2.do_reset();
+ m_1->do_reset();
+ m_2->do_reset();
}
NETLIB_START(4538_dip)
{
- m_1.m_dev_type = 4538;
- m_2.m_dev_type = 4538;
+ m_1->m_dev_type = 4538;
+ m_2->m_dev_type = 4538;
register_sub("1", m_1);
register_sub("2", m_2);
- register_subalias("1", m_1.m_RN.m_R.m_N); // C1
- register_subalias("2", m_1.m_RN.m_R.m_P); // RC1
- register_subalias("3", m_1.m_CLRQ);
- register_subalias("4", m_1.m_A);
- register_subalias("5", m_1.m_B);
- register_subalias("6", m_1.m_Q);
- register_subalias("7", m_1.m_QQ);
- register_subalias("8", m_1.m_RN.m_R.m_N);
- connect_late(m_1.m_RN.m_R.m_N, m_2.m_RN.m_R.m_N);
-
- register_subalias("9", m_2.m_QQ);
- register_subalias("10", m_2.m_Q);
- register_subalias("11", m_2.m_B);
- register_subalias("12", m_2.m_A);
- register_subalias("13", m_2.m_CLRQ);
- register_subalias("14", m_2.m_RN.m_R.m_P); // RC2
- register_subalias("15", m_2.m_RN.m_R.m_N); // C2
- register_subalias("16", m_1.m_RP.m_R.m_P);
- connect_late(m_1.m_RP.m_R.m_P, m_2.m_RP.m_R.m_P);
+ register_subalias("1", m_1->m_RN->m_R->m_N); // C1
+ register_subalias("2", m_1->m_RN->m_R->m_P); // RC1
+ register_subalias("3", m_1->m_CLRQ);
+ register_subalias("4", m_1->m_A);
+ register_subalias("5", m_1->m_B);
+ register_subalias("6", m_1->m_Q);
+ register_subalias("7", m_1->m_QQ);
+ register_subalias("8", m_1->m_RN->m_R->m_N);
+ connect_late(m_1->m_RN->m_R->m_N, m_2->m_RN->m_R->m_N);
+
+ register_subalias("9", m_2->m_QQ);
+ register_subalias("10", m_2->m_Q);
+ register_subalias("11", m_2->m_B);
+ register_subalias("12", m_2->m_A);
+ register_subalias("13", m_2->m_CLRQ);
+ register_subalias("14", m_2->m_RN->m_R->m_P); // RC2
+ register_subalias("15", m_2->m_RN->m_R->m_N); // C2
+ register_subalias("16", m_1->m_RP->m_R->m_P);
+ connect_late(m_1->m_RP->m_R->m_P, m_2->m_RP->m_R->m_P);
}
NETLIB_UPDATE(4538_dip)
{
/* only called during startup */
- m_1.update_dev();
- m_2.update_dev();
+ m_1->update_dev();
+ m_2->update_dev();
}
NETLIB_RESET(4538_dip)
{
- m_1.do_reset();
- m_2.do_reset();
+ m_1->do_reset();
+ m_2->do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_74123.h b/src/lib/netlist/devices/nld_74123.h
index 7539c9ce6c3..0379245aedd 100644
--- a/src/lib/netlist/devices/nld_74123.h
+++ b/src/lib/netlist/devices/nld_74123.h
@@ -60,8 +60,8 @@ NETLIB_NAMESPACE_DEVICES_START()
NETLIB_DEVICE(74123,
public:
- NETLIB_NAME(res_sw) m_RP;
- NETLIB_NAME(res_sw) m_RN;
+ NETLIB_SUB(res_sw) m_RP;
+ NETLIB_SUB(res_sw) m_RN;
logic_output_t m_RP_Q;
logic_output_t m_RN_Q;
@@ -89,8 +89,8 @@ public:
NETLIB_DEVICE(74123_dip,
- NETLIB_NAME(74123) m_1;
- NETLIB_NAME(74123) m_2;
+ NETLIB_SUB(74123) m_1;
+ NETLIB_SUB(74123) m_2;
);
@@ -103,8 +103,8 @@ NETLIB_DEVICE(74123_dip,
NETLIB_DEVICE(9602_dip,
- NETLIB_NAME(74123) m_1;
- NETLIB_NAME(74123) m_2;
+ NETLIB_SUB(74123) m_1;
+ NETLIB_SUB(74123) m_2;
);
@@ -117,8 +117,8 @@ NETLIB_DEVICE(9602_dip,
NETLIB_DEVICE(4538_dip,
NETLIB_LOGIC_FAMILY(CD4XXX)
- NETLIB_NAME(74123) m_1;
- NETLIB_NAME(74123) m_2;
+ NETLIB_SUB(74123) m_1;
+ NETLIB_SUB(74123) m_2;
);
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_74153.cpp b/src/lib/netlist/devices/nld_74153.cpp
index ab52808c4cc..5d0a6caf2f9 100644
--- a/src/lib/netlist/devices/nld_74153.cpp
+++ b/src/lib/netlist/devices/nld_74153.cpp
@@ -53,15 +53,15 @@ NETLIB_START(74153)
{
register_sub("sub", m_sub);
- register_subalias("C0", m_sub.m_C[0]);
- register_subalias("C1", m_sub.m_C[1]);
- register_subalias("C2", m_sub.m_C[2]);
- register_subalias("C3", m_sub.m_C[3]);
+ register_subalias("C0", m_sub->m_C[0]);
+ register_subalias("C1", m_sub->m_C[1]);
+ register_subalias("C2", m_sub->m_C[2]);
+ register_subalias("C3", m_sub->m_C[3]);
register_input("A", m_A);
register_input("B", m_B);
- register_subalias("G", m_sub.m_G);
+ register_subalias("G", m_sub->m_G);
- register_subalias("AY", m_sub.m_Y); //FIXME: Change netlists
+ register_subalias("AY", m_sub->m_Y); //FIXME: Change netlists
}
NETLIB_RESET(74153)
@@ -72,8 +72,8 @@ NETLIB_RESET(74153)
NETLIB_UPDATE(74153)
{
- m_sub.m_chan = (INPLOGIC(m_A) | (INPLOGIC(m_B)<<1));
- m_sub.update();
+ m_sub->m_chan = (INPLOGIC(m_A) | (INPLOGIC(m_B)<<1));
+ m_sub->update();
}
@@ -82,35 +82,35 @@ NETLIB_START(74153_dip)
register_sub("1", m_1);
register_sub("2", m_2);
- register_subalias("1", m_1.m_G);
- register_input("2", m_B); // m_2.m_B
- register_subalias("3", m_1.m_C[3]);
- register_subalias("4", m_1.m_C[2]);
- register_subalias("5", m_1.m_C[1]);
- register_subalias("6", m_1.m_C[0]);
- register_subalias("7", m_1.m_Y);
-
- register_subalias("9", m_2.m_Y);
- register_subalias("10", m_2.m_C[0]);
- register_subalias("11", m_2.m_C[1]);
- register_subalias("12", m_2.m_C[2]);
- register_subalias("13", m_2.m_C[3]);
-
- register_input("14", m_A); // m_2.m_B
- register_subalias("15", m_2.m_G);
+ register_subalias("1", m_1->m_G);
+ register_input("2", m_B); // m_2->m_B
+ register_subalias("3", m_1->m_C[3]);
+ register_subalias("4", m_1->m_C[2]);
+ register_subalias("5", m_1->m_C[1]);
+ register_subalias("6", m_1->m_C[0]);
+ register_subalias("7", m_1->m_Y);
+
+ register_subalias("9", m_2->m_Y);
+ register_subalias("10", m_2->m_C[0]);
+ register_subalias("11", m_2->m_C[1]);
+ register_subalias("12", m_2->m_C[2]);
+ register_subalias("13", m_2->m_C[3]);
+
+ register_input("14", m_A); // m_2->m_B
+ register_subalias("15", m_2->m_G);
}
NETLIB_UPDATE(74153_dip)
{
- m_2.m_chan = m_1.m_chan = (INPLOGIC(m_A) | (INPLOGIC(m_B)<<1));
- m_1.update();
- m_2.update();
+ m_2->m_chan = m_1->m_chan = (INPLOGIC(m_A) | (INPLOGIC(m_B)<<1));
+ m_1->update();
+ m_2->update();
}
NETLIB_RESET(74153_dip)
{
- m_1.do_reset();
- m_2.do_reset();
+ m_1->do_reset();
+ m_2->do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_74153.h b/src/lib/netlist/devices/nld_74153.h
index 54364ac5671..08d0c7a7bf9 100644
--- a/src/lib/netlist/devices/nld_74153.h
+++ b/src/lib/netlist/devices/nld_74153.h
@@ -73,15 +73,15 @@ NETLIB_SUBDEVICE(74153sub,
NETLIB_DEVICE(74153,
public:
- NETLIB_NAME(74153sub) m_sub;
+ NETLIB_SUB(74153sub) m_sub;
logic_input_t m_A;
logic_input_t m_B;
);
NETLIB_DEVICE(74153_dip,
- NETLIB_NAME(74153sub) m_1;
- NETLIB_NAME(74153sub) m_2;
+ NETLIB_SUB(74153sub) m_1;
+ NETLIB_SUB(74153sub) m_2;
logic_input_t m_A;
logic_input_t m_B;
);
diff --git a/src/lib/netlist/devices/nld_74175.cpp b/src/lib/netlist/devices/nld_74175.cpp
index ec9d49a923b..c025fd4a8ef 100644
--- a/src/lib/netlist/devices/nld_74175.cpp
+++ b/src/lib/netlist/devices/nld_74175.cpp
@@ -57,19 +57,19 @@ NETLIB_UPDATE(74175)
{
d |= (INPLOGIC(m_D[i]) << i);
}
- m_sub.m_clrq = INPLOGIC(m_CLRQ);
- if (!m_sub.m_clrq)
+ m_sub->m_clrq = INPLOGIC(m_CLRQ);
+ if (!m_sub->m_clrq)
{
for (int i=0; i<4; i++)
{
- OUTLOGIC(m_sub.m_Q[i], 0, delay_clear[0]);
- OUTLOGIC(m_sub.m_QQ[i], 1, delay_clear[1]);
+ OUTLOGIC(m_sub->m_Q[i], 0, delay_clear[0]);
+ OUTLOGIC(m_sub->m_QQ[i], 1, delay_clear[1]);
}
- m_sub.m_data = 0;
- } else if (d != m_sub.m_data)
+ m_sub->m_data = 0;
+ } else if (d != m_sub->m_data)
{
- m_sub.m_data = d;
- m_sub.m_CLK.activate_lh();
+ m_sub->m_data = d;
+ m_sub->m_CLK.activate_lh();
}
}
@@ -77,55 +77,55 @@ NETLIB_START(74175)
{
register_sub("sub", m_sub);
- register_subalias("CLK", m_sub.m_CLK);
+ register_subalias("CLK", m_sub->m_CLK);
register_input("CLRQ", m_CLRQ);
register_input("D1", m_D[0]);
- register_subalias("Q1", m_sub.m_Q[0]);
- register_subalias("Q1Q", m_sub.m_QQ[0]);
+ register_subalias("Q1", m_sub->m_Q[0]);
+ register_subalias("Q1Q", m_sub->m_QQ[0]);
register_input("D2", m_D[1]);
- register_subalias("Q2", m_sub.m_Q[1]);
- register_subalias("Q2Q", m_sub.m_QQ[1]);
+ register_subalias("Q2", m_sub->m_Q[1]);
+ register_subalias("Q2Q", m_sub->m_QQ[1]);
register_input("D3", m_D[2]);
- register_subalias("Q3", m_sub.m_Q[2]);
- register_subalias("Q3Q", m_sub.m_QQ[2]);
+ register_subalias("Q3", m_sub->m_Q[2]);
+ register_subalias("Q3Q", m_sub->m_QQ[2]);
register_input("D4", m_D[3]);
- register_subalias("Q4", m_sub.m_Q[3]);
- register_subalias("Q4Q", m_sub.m_QQ[3]);
+ register_subalias("Q4", m_sub->m_Q[3]);
+ register_subalias("Q4Q", m_sub->m_QQ[3]);
}
NETLIB_RESET(74175)
{
- m_sub.do_reset();
+ m_sub->do_reset();
}
NETLIB_START(74175_dip)
{
register_sub("sub", m_sub);
- register_subalias("9", m_sub.m_CLK);
+ register_subalias("9", m_sub->m_CLK);
register_input("1", m_CLRQ);
register_input("4", m_D[0]);
- register_subalias("2", m_sub.m_Q[0]);
- register_subalias("3", m_sub.m_QQ[0]);
+ register_subalias("2", m_sub->m_Q[0]);
+ register_subalias("3", m_sub->m_QQ[0]);
register_input("5", m_D[1]);
- register_subalias("7", m_sub.m_Q[1]);
- register_subalias("6", m_sub.m_QQ[1]);
+ register_subalias("7", m_sub->m_Q[1]);
+ register_subalias("6", m_sub->m_QQ[1]);
register_input("12", m_D[2]);
- register_subalias("10", m_sub.m_Q[2]);
- register_subalias("11", m_sub.m_QQ[2]);
+ register_subalias("10", m_sub->m_Q[2]);
+ register_subalias("11", m_sub->m_QQ[2]);
register_input("13", m_D[3]);
- register_subalias("15", m_sub.m_Q[3]);
- register_subalias("14", m_sub.m_QQ[3]);
+ register_subalias("15", m_sub->m_Q[3]);
+ register_subalias("14", m_sub->m_QQ[3]);
}
diff --git a/src/lib/netlist/devices/nld_74175.h b/src/lib/netlist/devices/nld_74175.h
index f74165a5839..4ec224c7da3 100644
--- a/src/lib/netlist/devices/nld_74175.h
+++ b/src/lib/netlist/devices/nld_74175.h
@@ -57,7 +57,7 @@ NETLIB_SUBDEVICE(74175_sub,
NETLIB_DEVICE(74175,
- NETLIB_NAME(74175_sub) m_sub;
+ NETLIB_SUB(74175_sub) m_sub;
logic_input_t m_D[4];
logic_input_t m_CLRQ;
);
diff --git a/src/lib/netlist/devices/nld_74192.cpp b/src/lib/netlist/devices/nld_74192.cpp
index c07affc8b6a..ebbf3c9b3b6 100644
--- a/src/lib/netlist/devices/nld_74192.cpp
+++ b/src/lib/netlist/devices/nld_74192.cpp
@@ -14,10 +14,10 @@ NETLIB_NAMESPACE_DEVICES_START()
NETLIB_START(74192)
{
register_sub("subABCD", m_ABCD);
- register_subalias("A", m_ABCD.m_A);
- register_subalias("B", m_ABCD.m_B);
- register_subalias("C", m_ABCD.m_C);
- register_subalias("D", m_ABCD.m_D);
+ register_subalias("A", m_ABCD->m_A);
+ register_subalias("B", m_ABCD->m_B);
+ register_subalias("C", m_ABCD->m_C);
+ register_subalias("D", m_ABCD->m_D);
register_input("CLEAR", m_CLEAR);
register_input("LOADQ", m_LOADQ);
register_input("CU", m_CU);
@@ -62,7 +62,7 @@ NETLIB_UPDATE(74192)
}
else if (!INPLOGIC(m_LOADQ))
{
- m_cnt = m_ABCD.read_ABCD();
+ m_cnt = m_ABCD->read_ABCD();
}
else
{
@@ -105,7 +105,7 @@ NETLIB_START(74192_dip)
{
NETLIB_NAME(74192)::start();
- register_subalias("1", m_ABCD.m_B);
+ register_subalias("1", m_ABCD->m_B);
register_subalias("2", m_Q[1]);
register_subalias("3", m_Q[0]);
register_subalias("4", m_CD);
@@ -113,13 +113,13 @@ NETLIB_START(74192_dip)
register_subalias("6", m_Q[2]);
register_subalias("7", m_Q[3]);
- register_subalias("9", m_ABCD.m_D);
- register_subalias("10", m_ABCD.m_C);
+ register_subalias("9", m_ABCD->m_D);
+ register_subalias("10", m_ABCD->m_C);
register_subalias("11", m_LOADQ);
register_subalias("12", m_CARRYQ);
register_subalias("13", m_BORROWQ);
register_subalias("14", m_CLEAR);
- register_subalias("15", m_ABCD.m_A);
+ register_subalias("15", m_ABCD->m_A);
}
diff --git a/src/lib/netlist/devices/nld_74192.h b/src/lib/netlist/devices/nld_74192.h
index a8b26335eb2..26126d96e06 100644
--- a/src/lib/netlist/devices/nld_74192.h
+++ b/src/lib/netlist/devices/nld_74192.h
@@ -43,7 +43,7 @@ NETLIB_NAMESPACE_DEVICES_START()
NETLIB_DEVICE(74192,
ATTR_HOT void update_outputs();
- NETLIB_NAME(9316_subABCD) m_ABCD;
+ NETLIB_SUB(9316_subABCD) m_ABCD;
logic_input_t m_CLEAR;
logic_input_t m_LOADQ;
logic_input_t m_CU;
diff --git a/src/lib/netlist/devices/nld_7420.cpp b/src/lib/netlist/devices/nld_7420.cpp
index 57a25b5d7b7..da38a60c19f 100644
--- a/src/lib/netlist/devices/nld_7420.cpp
+++ b/src/lib/netlist/devices/nld_7420.cpp
@@ -27,33 +27,33 @@ NETLIB_START(7420_dip)
register_sub("1", m_1);
register_sub("2", m_2);
- register_subalias("1", m_1.m_I[0]);
- register_subalias("2", m_1.m_I[1]);
+ register_subalias("1", m_1->m_I[0]);
+ register_subalias("2", m_1->m_I[1]);
- register_subalias("4", m_1.m_I[2]);
- register_subalias("5", m_1.m_I[3]);
- register_subalias("6", m_1.m_Q[0]);
+ register_subalias("4", m_1->m_I[2]);
+ register_subalias("5", m_1->m_I[3]);
+ register_subalias("6", m_1->m_Q[0]);
- register_subalias("8", m_2.m_Q[0]);
- register_subalias("9", m_2.m_I[0]);
- register_subalias("10", m_2.m_I[1]);
+ register_subalias("8", m_2->m_Q[0]);
+ register_subalias("9", m_2->m_I[0]);
+ register_subalias("10", m_2->m_I[1]);
- register_subalias("12", m_2.m_I[2]);
- register_subalias("13", m_2.m_I[3]);
+ register_subalias("12", m_2->m_I[2]);
+ register_subalias("13", m_2->m_I[3]);
}
NETLIB_UPDATE(7420_dip)
{
/* only called during startup */
- m_1.update_dev();
- m_2.update_dev();
+ m_1->update_dev();
+ m_2->update_dev();
}
NETLIB_RESET(7420_dip)
{
- m_1.do_reset();
- m_2.do_reset();
+ m_1->do_reset();
+ m_2->do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_7420.h b/src/lib/netlist/devices/nld_7420.h
index 2ce7020c7e5..af7cc79b5f9 100644
--- a/src/lib/netlist/devices/nld_7420.h
+++ b/src/lib/netlist/devices/nld_7420.h
@@ -57,8 +57,8 @@ NETLIB_SIGNAL(7420, 4, 0, 0);
NETLIB_DEVICE(7420_dip,
- NETLIB_NAME(7420) m_1;
- NETLIB_NAME(7420) m_2;
+ NETLIB_SUB(7420) m_1;
+ NETLIB_SUB(7420) m_2;
);
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_7425.cpp b/src/lib/netlist/devices/nld_7425.cpp
index c432960a02d..01e033d2f06 100644
--- a/src/lib/netlist/devices/nld_7425.cpp
+++ b/src/lib/netlist/devices/nld_7425.cpp
@@ -14,37 +14,37 @@ NETLIB_START(7425_dip)
register_sub("1", m_1);
register_sub("2", m_2);
- register_subalias("1", m_1.m_I[0]);
- register_subalias("2", m_1.m_I[1]);
+ register_subalias("1", m_1->m_I[0]);
+ register_subalias("2", m_1->m_I[1]);
//register_subalias("3", ); X1 ==> NC
- register_subalias("4", m_1.m_I[2]);
- register_subalias("5", m_1.m_I[3]);
- register_subalias("6", m_1.m_Q[0]);
+ register_subalias("4", m_1->m_I[2]);
+ register_subalias("5", m_1->m_I[3]);
+ register_subalias("6", m_1->m_Q[0]);
- register_subalias("8", m_2.m_Q[0]);
- register_subalias("9", m_2.m_I[0]);
- register_subalias("10", m_2.m_I[1]);
+ register_subalias("8", m_2->m_Q[0]);
+ register_subalias("9", m_2->m_I[0]);
+ register_subalias("10", m_2->m_I[1]);
//register_subalias("11", ); X2 ==> NC
- register_subalias("12", m_2.m_I[2]);
- register_subalias("13", m_2.m_I[3]);
+ register_subalias("12", m_2->m_I[2]);
+ register_subalias("13", m_2->m_I[3]);
}
NETLIB_UPDATE(7425_dip)
{
/* only called during startup */
- m_1.update_dev();
- m_2.update_dev();
+ m_1->update_dev();
+ m_2->update_dev();
}
NETLIB_RESET(7425_dip)
{
- m_1.do_reset();
- m_2.do_reset();
+ m_1->do_reset();
+ m_2->do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_7425.h b/src/lib/netlist/devices/nld_7425.h
index 816c0cba100..80331fa9068 100644
--- a/src/lib/netlist/devices/nld_7425.h
+++ b/src/lib/netlist/devices/nld_7425.h
@@ -54,8 +54,8 @@ NETLIB_SIGNAL(7425, 4, 1, 0);
NETLIB_DEVICE(7425_dip,
- NETLIB_NAME(7425) m_1;
- NETLIB_NAME(7425) m_2;
+ NETLIB_SUB(7425) m_1;
+ NETLIB_SUB(7425) m_2;
);
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_7427.cpp b/src/lib/netlist/devices/nld_7427.cpp
index fb193f74679..51616f1281e 100644
--- a/src/lib/netlist/devices/nld_7427.cpp
+++ b/src/lib/netlist/devices/nld_7427.cpp
@@ -29,35 +29,35 @@ NETLIB_START(7427_dip)
register_sub("2", m_2);
register_sub("3", m_3);
- register_subalias("1", m_1.m_I[0]);
- register_subalias("2", m_1.m_I[1]);
- register_subalias("3", m_2.m_I[0]);
- register_subalias("4", m_2.m_I[1]);
- register_subalias("5", m_2.m_I[2]);
- register_subalias("6", m_2.m_Q[0]);
-
- register_subalias("8", m_3.m_Q[0]);
- register_subalias("9", m_3.m_I[0]);
- register_subalias("10", m_3.m_I[1]);
- register_subalias("11", m_3.m_I[2]);
-
- register_subalias("12", m_1.m_Q[0]);
- register_subalias("13", m_1.m_I[2]);
+ register_subalias("1", m_1->m_I[0]);
+ register_subalias("2", m_1->m_I[1]);
+ register_subalias("3", m_2->m_I[0]);
+ register_subalias("4", m_2->m_I[1]);
+ register_subalias("5", m_2->m_I[2]);
+ register_subalias("6", m_2->m_Q[0]);
+
+ register_subalias("8", m_3->m_Q[0]);
+ register_subalias("9", m_3->m_I[0]);
+ register_subalias("10", m_3->m_I[1]);
+ register_subalias("11", m_3->m_I[2]);
+
+ register_subalias("12", m_1->m_Q[0]);
+ register_subalias("13", m_1->m_I[2]);
}
NETLIB_UPDATE(7427_dip)
{
/* only called during startup */
- m_1.update_dev();
- m_2.update_dev();
- m_3.update_dev();
+ m_1->update_dev();
+ m_2->update_dev();
+ m_3->update_dev();
}
NETLIB_RESET(7427_dip)
{
- m_1.do_reset();
- m_2.do_reset();
- m_3.do_reset();
+ m_1->do_reset();
+ m_2->do_reset();
+ m_3->do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_7427.h b/src/lib/netlist/devices/nld_7427.h
index 6ba726a17fc..16302e3fd54 100644
--- a/src/lib/netlist/devices/nld_7427.h
+++ b/src/lib/netlist/devices/nld_7427.h
@@ -54,9 +54,9 @@ NETLIB_SIGNAL(7427, 3, 1, 0);
NETLIB_DEVICE(7427_dip,
- NETLIB_NAME(7427) m_1;
- NETLIB_NAME(7427) m_2;
- NETLIB_NAME(7427) m_3;
+ NETLIB_SUB(7427) m_1;
+ NETLIB_SUB(7427) m_2;
+ NETLIB_SUB(7427) m_3;
);
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_74279.cpp b/src/lib/netlist/devices/nld_74279.cpp
index ca633cfa8be..6f8922cc018 100644
--- a/src/lib/netlist/devices/nld_74279.cpp
+++ b/src/lib/netlist/devices/nld_74279.cpp
@@ -127,40 +127,40 @@ NETLIB_START(74279_dip)
register_sub("3", m_3);
register_sub("4", m_4);
- register_subalias("1", m_1.m_I[2]); //R
- register_subalias("2", m_1.m_I[0]);
- register_subalias("3", m_1.m_I[1]);
- register_subalias("4", m_1.m_Q[0]);
-
- register_subalias("5", m_2.m_I[1]); //R
- register_subalias("6", m_2.m_I[0]);
- register_subalias("7", m_2.m_Q[0]);
-
- register_subalias("9", m_3.m_Q[0]);
- register_subalias("10", m_3.m_I[2]); //R
- register_subalias("11", m_3.m_I[0]);
- register_subalias("12", m_3.m_I[1]);
-
- register_subalias("13", m_4.m_Q[0]);
- register_subalias("14", m_4.m_I[1]); //R
- register_subalias("15", m_4.m_I[0]);
+ register_subalias("1", m_1->m_I[2]); //R
+ register_subalias("2", m_1->m_I[0]);
+ register_subalias("3", m_1->m_I[1]);
+ register_subalias("4", m_1->m_Q[0]);
+
+ register_subalias("5", m_2->m_I[1]); //R
+ register_subalias("6", m_2->m_I[0]);
+ register_subalias("7", m_2->m_Q[0]);
+
+ register_subalias("9", m_3->m_Q[0]);
+ register_subalias("10", m_3->m_I[2]); //R
+ register_subalias("11", m_3->m_I[0]);
+ register_subalias("12", m_3->m_I[1]);
+
+ register_subalias("13", m_4->m_Q[0]);
+ register_subalias("14", m_4->m_I[1]); //R
+ register_subalias("15", m_4->m_I[0]);
}
NETLIB_UPDATE(74279_dip)
{
/* only called during startup */
- m_1.update_dev();
- m_2.update_dev();
- m_3.update_dev();
- m_4.update_dev();
+ m_1->update_dev();
+ m_2->update_dev();
+ m_3->update_dev();
+ m_4->update_dev();
}
NETLIB_RESET(74279_dip)
{
- m_1.do_reset();
- m_2.do_reset();
- m_3.do_reset();
- m_4.do_reset();
+ m_1->do_reset();
+ m_2->do_reset();
+ m_3->do_reset();
+ m_4->do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_74279.h b/src/lib/netlist/devices/nld_74279.h
index aecd8435f6d..c134eaaa6a3 100644
--- a/src/lib/netlist/devices/nld_74279.h
+++ b/src/lib/netlist/devices/nld_74279.h
@@ -55,10 +55,10 @@ NETLIB_TRUTHTABLE(74279B, 4, 1, 0);
NETLIB_DEVICE(74279_dip,
- NETLIB_NAME(74279B) m_1;
- NETLIB_NAME(74279A) m_2;
- NETLIB_NAME(74279B) m_3;
- NETLIB_NAME(74279A) m_4;
+ NETLIB_SUB(74279B) m_1;
+ NETLIB_SUB(74279A) m_2;
+ NETLIB_SUB(74279B) m_3;
+ NETLIB_SUB(74279A) m_4;
);
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_7430.cpp b/src/lib/netlist/devices/nld_7430.cpp
index 31ea833cb27..29a9e048ba9 100644
--- a/src/lib/netlist/devices/nld_7430.cpp
+++ b/src/lib/netlist/devices/nld_7430.cpp
@@ -32,28 +32,28 @@ NETLIB_START(7430_dip)
{
register_sub("1", m_1);
- register_subalias("1", m_1.m_I[0]);
- register_subalias("2", m_1.m_I[1]);
- register_subalias("3", m_1.m_I[2]);
- register_subalias("4", m_1.m_I[3]);
- register_subalias("5", m_1.m_I[4]);
- register_subalias("6", m_1.m_I[5]);
+ register_subalias("1", m_1->m_I[0]);
+ register_subalias("2", m_1->m_I[1]);
+ register_subalias("3", m_1->m_I[2]);
+ register_subalias("4", m_1->m_I[3]);
+ register_subalias("5", m_1->m_I[4]);
+ register_subalias("6", m_1->m_I[5]);
- register_subalias("8", m_1.m_Q[0]);
+ register_subalias("8", m_1->m_Q[0]);
- register_subalias("11", m_1.m_I[6]);
- register_subalias("12", m_1.m_I[7]);
+ register_subalias("11", m_1->m_I[6]);
+ register_subalias("12", m_1->m_I[7]);
}
NETLIB_UPDATE(7430_dip)
{
/* only called during startup */
- m_1.update_dev();
+ m_1->update_dev();
}
NETLIB_RESET(7430_dip)
{
- m_1.do_reset();
+ m_1->do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_7430.h b/src/lib/netlist/devices/nld_7430.h
index 126aa491429..fbe4e4f1919 100644
--- a/src/lib/netlist/devices/nld_7430.h
+++ b/src/lib/netlist/devices/nld_7430.h
@@ -66,7 +66,7 @@ NETLIB_SIGNAL(7430, 8, 0, 0);
NETLIB_DEVICE(7430_dip,
- NETLIB_NAME(7430) m_1;
+ NETLIB_SUB(7430) m_1;
);
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_7432.cpp b/src/lib/netlist/devices/nld_7432.cpp
index d0b358482f8..fcf761e7473 100644
--- a/src/lib/netlist/devices/nld_7432.cpp
+++ b/src/lib/netlist/devices/nld_7432.cpp
@@ -28,38 +28,38 @@ NETLIB_START(7432_dip)
register_sub("3", m_3);
register_sub("4", m_4);
- register_subalias("3", m_1.m_Q[0]);
- register_subalias("1", m_1.m_I[0]);
- register_subalias("2", m_1.m_I[1]);
+ register_subalias("3", m_1->m_Q[0]);
+ register_subalias("1", m_1->m_I[0]);
+ register_subalias("2", m_1->m_I[1]);
- register_subalias("6", m_2.m_Q[0]);
- register_subalias("4", m_2.m_I[0]);
- register_subalias("5", m_2.m_I[1]);
+ register_subalias("6", m_2->m_Q[0]);
+ register_subalias("4", m_2->m_I[0]);
+ register_subalias("5", m_2->m_I[1]);
- register_subalias("9", m_3.m_I[0]);
- register_subalias("10", m_3.m_I[1]);
- register_subalias("8", m_3.m_Q[0]);
+ register_subalias("9", m_3->m_I[0]);
+ register_subalias("10", m_3->m_I[1]);
+ register_subalias("8", m_3->m_Q[0]);
- register_subalias("12", m_4.m_I[0]);
- register_subalias("13", m_4.m_I[1]);
- register_subalias("11", m_4.m_Q[0]);
+ register_subalias("12", m_4->m_I[0]);
+ register_subalias("13", m_4->m_I[1]);
+ register_subalias("11", m_4->m_Q[0]);
}
NETLIB_UPDATE(7432_dip)
{
/* only called during startup */
- m_1.update_dev();
- m_2.update_dev();
- m_3.update_dev();
- m_4.update_dev();
+ m_1->update_dev();
+ m_2->update_dev();
+ m_3->update_dev();
+ m_4->update_dev();
}
NETLIB_RESET(7432_dip)
{
- m_1.do_reset();
- m_2.do_reset();
- m_3.do_reset();
- m_4.do_reset();
+ m_1->do_reset();
+ m_2->do_reset();
+ m_3->do_reset();
+ m_4->do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_7432.h b/src/lib/netlist/devices/nld_7432.h
index f3655407143..6e928e0520b 100644
--- a/src/lib/netlist/devices/nld_7432.h
+++ b/src/lib/netlist/devices/nld_7432.h
@@ -53,10 +53,10 @@ NETLIB_SIGNAL(7432, 2, 1, 1);
NETLIB_DEVICE(7432_dip,
- NETLIB_NAME(7432) m_1;
- NETLIB_NAME(7432) m_2;
- NETLIB_NAME(7432) m_3;
- NETLIB_NAME(7432) m_4;
+ NETLIB_SUB(7432) m_1;
+ NETLIB_SUB(7432) m_2;
+ NETLIB_SUB(7432) m_3;
+ NETLIB_SUB(7432) m_4;
);
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_7437.cpp b/src/lib/netlist/devices/nld_7437.cpp
index 79fcaa5c4c5..bc1fdf83727 100644
--- a/src/lib/netlist/devices/nld_7437.cpp
+++ b/src/lib/netlist/devices/nld_7437.cpp
@@ -28,38 +28,38 @@ NETLIB_START(7437_dip)
register_sub("3", m_3);
register_sub("4", m_4);
- register_subalias("1", m_1.m_I[0]);
- register_subalias("2", m_1.m_I[1]);
- register_subalias("3", m_1.m_Q[0]);
+ register_subalias("1", m_1->m_I[0]);
+ register_subalias("2", m_1->m_I[1]);
+ register_subalias("3", m_1->m_Q[0]);
- register_subalias("4", m_2.m_I[0]);
- register_subalias("5", m_2.m_I[1]);
- register_subalias("6", m_2.m_Q[0]);
+ register_subalias("4", m_2->m_I[0]);
+ register_subalias("5", m_2->m_I[1]);
+ register_subalias("6", m_2->m_Q[0]);
- register_subalias("9", m_3.m_I[0]);
- register_subalias("10", m_3.m_I[1]);
- register_subalias("8", m_3.m_Q[0]);
+ register_subalias("9", m_3->m_I[0]);
+ register_subalias("10", m_3->m_I[1]);
+ register_subalias("8", m_3->m_Q[0]);
- register_subalias("12", m_4.m_I[0]);
- register_subalias("13", m_4.m_I[1]);
- register_subalias("11", m_4.m_Q[0]);
+ register_subalias("12", m_4->m_I[0]);
+ register_subalias("13", m_4->m_I[1]);
+ register_subalias("11", m_4->m_Q[0]);
}
NETLIB_UPDATE(7437_dip)
{
/* only called during startup */
- m_1.update_dev();
- m_2.update_dev();
- m_3.update_dev();
- m_4.update_dev();
+ m_1->update_dev();
+ m_2->update_dev();
+ m_3->update_dev();
+ m_4->update_dev();
}
NETLIB_RESET(7437_dip)
{
- m_1.do_reset();
- m_2.do_reset();
- m_3.do_reset();
- m_4.do_reset();
+ m_1->do_reset();
+ m_2->do_reset();
+ m_3->do_reset();
+ m_4->do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_7437.h b/src/lib/netlist/devices/nld_7437.h
index 6b2f193b374..0d7f421e2bc 100644
--- a/src/lib/netlist/devices/nld_7437.h
+++ b/src/lib/netlist/devices/nld_7437.h
@@ -56,10 +56,10 @@ NETLIB_SIGNAL(7437, 2, 0, 0);
NETLIB_DEVICE(7437_dip,
- NETLIB_NAME(7437) m_1;
- NETLIB_NAME(7437) m_2;
- NETLIB_NAME(7437) m_3;
- NETLIB_NAME(7437) m_4;
+ NETLIB_SUB(7437) m_1;
+ NETLIB_SUB(7437) m_2;
+ NETLIB_SUB(7437) m_3;
+ NETLIB_SUB(7437) m_4;
);
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_7448.cpp b/src/lib/netlist/devices/nld_7448.cpp
index 618b61d8c6e..9cc4e0ab94c 100644
--- a/src/lib/netlist/devices/nld_7448.cpp
+++ b/src/lib/netlist/devices/nld_7448.cpp
@@ -67,55 +67,55 @@ NETLIB_START(7448)
{
register_sub("sub", sub);
- register_subalias("A", sub.m_A);
- register_subalias("B", sub.m_B);
- register_subalias("C", sub.m_C);
- register_subalias("D", sub.m_D);
+ register_subalias("A", sub->m_A);
+ register_subalias("B", sub->m_B);
+ register_subalias("C", sub->m_C);
+ register_subalias("D", sub->m_D);
register_input("LTQ", m_LTQ);
register_input("BIQ", m_BIQ);
- register_subalias("RBIQ",sub.m_RBIQ);
+ register_subalias("RBIQ",sub->m_RBIQ);
- register_subalias("a", sub.m_Q[0]);
- register_subalias("b", sub.m_Q[1]);
- register_subalias("c", sub.m_Q[2]);
- register_subalias("d", sub.m_Q[3]);
- register_subalias("e", sub.m_Q[4]);
- register_subalias("f", sub.m_Q[5]);
- register_subalias("g", sub.m_Q[6]);
+ register_subalias("a", sub->m_Q[0]);
+ register_subalias("b", sub->m_Q[1]);
+ register_subalias("c", sub->m_Q[2]);
+ register_subalias("d", sub->m_Q[3]);
+ register_subalias("e", sub->m_Q[4]);
+ register_subalias("f", sub->m_Q[5]);
+ register_subalias("g", sub->m_Q[6]);
}
NETLIB_RESET(7448)
{
- sub.do_reset();
+ sub->do_reset();
}
NETLIB_UPDATE(7448)
{
if (INPLOGIC(m_BIQ) && !INPLOGIC(m_LTQ))
{
- sub.update_outputs(8);
+ sub->update_outputs(8);
}
else if (!INPLOGIC(m_BIQ))
{
- sub.update_outputs(15);
+ sub->update_outputs(15);
}
if (!INPLOGIC(m_BIQ) || (INPLOGIC(m_BIQ) && !INPLOGIC(m_LTQ)))
{
- sub.m_A.inactivate();
- sub.m_B.inactivate();
- sub.m_C.inactivate();
- sub.m_D.inactivate();
- sub.m_RBIQ.inactivate();
+ sub->m_A.inactivate();
+ sub->m_B.inactivate();
+ sub->m_C.inactivate();
+ sub->m_D.inactivate();
+ sub->m_RBIQ.inactivate();
} else {
- sub.m_RBIQ.activate();
- sub.m_D.activate();
- sub.m_C.activate();
- sub.m_B.activate();
- sub.m_A.activate();
- sub.update();
+ sub->m_RBIQ.activate();
+ sub->m_D.activate();
+ sub->m_C.activate();
+ sub->m_B.activate();
+ sub->m_A.activate();
+ sub->update();
}
}
@@ -191,21 +191,21 @@ NETLIB_START(7448_dip)
{
NETLIB_NAME(7448)::start();
- register_subalias("1", sub.m_B);
- register_subalias("2", sub.m_C);
+ register_subalias("1", sub->m_B);
+ register_subalias("2", sub->m_C);
register_subalias("3", m_LTQ);
register_subalias("4", m_BIQ);
- register_subalias("5",sub.m_RBIQ);
- register_subalias("6", sub.m_D);
- register_subalias("7", sub.m_A);
-
- register_subalias("9", sub.m_Q[4]); // e
- register_subalias("10", sub.m_Q[3]); // d
- register_subalias("11", sub.m_Q[2]); // c
- register_subalias("12", sub.m_Q[1]); // b
- register_subalias("13", sub.m_Q[0]); // a
- register_subalias("14", sub.m_Q[6]); // g
- register_subalias("15", sub.m_Q[5]); // f
+ register_subalias("5",sub->m_RBIQ);
+ register_subalias("6", sub->m_D);
+ register_subalias("7", sub->m_A);
+
+ register_subalias("9", sub->m_Q[4]); // e
+ register_subalias("10", sub->m_Q[3]); // d
+ register_subalias("11", sub->m_Q[2]); // c
+ register_subalias("12", sub->m_Q[1]); // b
+ register_subalias("13", sub->m_Q[0]); // a
+ register_subalias("14", sub->m_Q[6]); // g
+ register_subalias("15", sub->m_Q[5]); // f
}
#endif
diff --git a/src/lib/netlist/devices/nld_7448.h b/src/lib/netlist/devices/nld_7448.h
index e633858dad5..deaf9389cb0 100644
--- a/src/lib/netlist/devices/nld_7448.h
+++ b/src/lib/netlist/devices/nld_7448.h
@@ -68,7 +68,7 @@ NETLIB_SUBDEVICE(7448_sub,
NETLIB_DEVICE(7448,
public:
- NETLIB_NAME(7448_sub) sub;
+ NETLIB_SUB(7448_sub) sub;
logic_input_t m_LTQ;
logic_input_t m_BIQ;
diff --git a/src/lib/netlist/devices/nld_7450.cpp b/src/lib/netlist/devices/nld_7450.cpp
index 30d7916acf0..27a7fc92112 100644
--- a/src/lib/netlist/devices/nld_7450.cpp
+++ b/src/lib/netlist/devices/nld_7450.cpp
@@ -61,34 +61,34 @@ NETLIB_START(7450_dip)
register_sub("1", m_1);
register_sub("2", m_2);
- register_subalias("1", m_1.m_A);
- register_subalias("2", m_2.m_A);
- register_subalias("3", m_2.m_B);
- register_subalias("4", m_2.m_C);
- register_subalias("5", m_2.m_D);
- register_subalias("6", m_2.m_Q);
+ register_subalias("1", m_1->m_A);
+ register_subalias("2", m_2->m_A);
+ register_subalias("3", m_2->m_B);
+ register_subalias("4", m_2->m_C);
+ register_subalias("5", m_2->m_D);
+ register_subalias("6", m_2->m_Q);
//register_subalias("7",); GND
- register_subalias("8", m_1.m_Q);
- register_subalias("9", m_1.m_C);
- register_subalias("10", m_1.m_D);
- //register_subalias("11", m_1.m_X1);
- //register_subalias("12", m_1.m_X1Q);
- register_subalias("13", m_1.m_B);
+ register_subalias("8", m_1->m_Q);
+ register_subalias("9", m_1->m_C);
+ register_subalias("10", m_1->m_D);
+ //register_subalias("11", m_1->m_X1);
+ //register_subalias("12", m_1->m_X1Q);
+ register_subalias("13", m_1->m_B);
//register_subalias("14",); VCC
}
NETLIB_UPDATE(7450_dip)
{
/* only called during startup */
- m_1.update_dev();
- m_2.update_dev();
+ m_1->update_dev();
+ m_2->update_dev();
}
NETLIB_RESET(7450_dip)
{
- m_1.do_reset();
- m_2.do_reset();
+ m_1->do_reset();
+ m_2->do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_7450.h b/src/lib/netlist/devices/nld_7450.h
index 43b73636be3..ddcb61f0ed6 100644
--- a/src/lib/netlist/devices/nld_7450.h
+++ b/src/lib/netlist/devices/nld_7450.h
@@ -49,8 +49,8 @@ public:
NETLIB_DEVICE(7450_dip,
- NETLIB_NAME(7450) m_1;
- NETLIB_NAME(7450) m_2;
+ NETLIB_SUB(7450) m_1;
+ NETLIB_SUB(7450) m_2;
);
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_7474.cpp b/src/lib/netlist/devices/nld_7474.cpp
index 11088c89a79..2347e971f62 100644
--- a/src/lib/netlist/devices/nld_7474.cpp
+++ b/src/lib/netlist/devices/nld_7474.cpp
@@ -31,25 +31,25 @@ NETLIB_UPDATE(7474)
if (INPLOGIC(m_PREQ) && INPLOGIC(m_CLRQ))
{
m_D.activate();
- sub.m_nextD = INPLOGIC(m_D);
- sub.m_CLK.activate_lh();
+ sub->m_nextD = INPLOGIC(m_D);
+ sub->m_CLK.activate_lh();
}
else if (!INPLOGIC(m_PREQ))
{
- sub.newstate(1, 0);
- sub.m_CLK.inactivate();
+ sub->newstate(1, 0);
+ sub->m_CLK.inactivate();
m_D.inactivate();
}
else if (!INPLOGIC(m_CLRQ))
{
- sub.newstate(0, 1);
- sub.m_CLK.inactivate();
+ sub->newstate(0, 1);
+ sub->m_CLK.inactivate();
m_D.inactivate();
}
else
{
- sub.newstate(1, 1);
- sub.m_CLK.inactivate();
+ sub->newstate(1, 1);
+ sub->m_CLK.inactivate();
m_D.inactivate();
}
}
@@ -58,19 +58,19 @@ NETLIB_START(7474)
{
register_sub("sub", sub);
- register_subalias("CLK", sub.m_CLK);
+ register_subalias("CLK", sub->m_CLK);
register_input("D", m_D);
register_input("CLRQ", m_CLRQ);
register_input("PREQ", m_PREQ);
- register_subalias("Q", sub.m_Q);
- register_subalias("QQ", sub.m_QQ);
+ register_subalias("Q", sub->m_Q);
+ register_subalias("QQ", sub->m_QQ);
}
NETLIB_RESET(7474)
{
- sub.do_reset();
+ sub->do_reset();
}
NETLIB_START(7474sub)
@@ -95,33 +95,33 @@ NETLIB_START(7474_dip)
register_sub("1", m_1);
register_sub("2", m_2);
- register_subalias("1", m_1.m_CLRQ);
- register_subalias("2", m_1.m_D);
- register_subalias("3", m_1.sub.m_CLK);
- register_subalias("4", m_1.m_PREQ);
- register_subalias("5", m_1.sub.m_Q);
- register_subalias("6", m_1.sub.m_QQ);
+ register_subalias("1", m_1->m_CLRQ);
+ register_subalias("2", m_1->m_D);
+ register_subalias("3", m_1->sub->m_CLK);
+ register_subalias("4", m_1->m_PREQ);
+ register_subalias("5", m_1->sub->m_Q);
+ register_subalias("6", m_1->sub->m_QQ);
// register_subalias("7", ); ==> GND
- register_subalias("8", m_2.sub.m_QQ);
- register_subalias("9", m_2.sub.m_Q);
- register_subalias("10", m_2.m_PREQ);
- register_subalias("11", m_2.sub.m_CLK);
- register_subalias("12", m_2.m_D);
- register_subalias("13", m_2.m_CLRQ);
+ register_subalias("8", m_2->sub->m_QQ);
+ register_subalias("9", m_2->sub->m_Q);
+ register_subalias("10", m_2->m_PREQ);
+ register_subalias("11", m_2->sub->m_CLK);
+ register_subalias("12", m_2->m_D);
+ register_subalias("13", m_2->m_CLRQ);
// register_subalias("14", ); ==> VCC
}
NETLIB_RESET(7474_dip)
{
- m_1.do_reset();
- m_2.do_reset();
+ m_1->do_reset();
+ m_2->do_reset();
}
NETLIB_UPDATE(7474_dip)
{
- m_1.update_dev();
- m_2.update_dev();
+ m_1->update_dev();
+ m_2->update_dev();
}
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_7474.h b/src/lib/netlist/devices/nld_7474.h
index f98de117350..3eefd4f6556 100644
--- a/src/lib/netlist/devices/nld_7474.h
+++ b/src/lib/netlist/devices/nld_7474.h
@@ -68,7 +68,7 @@ NETLIB_SUBDEVICE(7474sub,
NETLIB_DEVICE(7474,
public:
- NETLIB_NAME(7474sub) sub;
+ NETLIB_SUB(7474sub) sub;
logic_input_t m_D;
logic_input_t m_CLRQ;
@@ -77,8 +77,8 @@ public:
NETLIB_DEVICE(7474_dip,
- NETLIB_NAME(7474) m_1;
- NETLIB_NAME(7474) m_2;
+ NETLIB_SUB(7474) m_1;
+ NETLIB_SUB(7474) m_2;
);
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_7486.cpp b/src/lib/netlist/devices/nld_7486.cpp
index 5957c2c0433..3b1697a5639 100644
--- a/src/lib/netlist/devices/nld_7486.cpp
+++ b/src/lib/netlist/devices/nld_7486.cpp
@@ -80,38 +80,38 @@ NETLIB_START(7486_dip)
register_sub("3", m_3);
register_sub("4", m_4);
- register_subalias("1", m_1.m_I[0]);
- register_subalias("2", m_1.m_I[1]);
- register_subalias("3", m_1.m_Q[0]);
+ register_subalias("1", m_1->m_I[0]);
+ register_subalias("2", m_1->m_I[1]);
+ register_subalias("3", m_1->m_Q[0]);
- register_subalias("4", m_2.m_I[0]);
- register_subalias("5", m_2.m_I[1]);
- register_subalias("6", m_2.m_Q[0]);
+ register_subalias("4", m_2->m_I[0]);
+ register_subalias("5", m_2->m_I[1]);
+ register_subalias("6", m_2->m_Q[0]);
- register_subalias("9", m_3.m_I[0]);
- register_subalias("10", m_3.m_I[1]);
- register_subalias("8", m_3.m_Q[0]);
+ register_subalias("9", m_3->m_I[0]);
+ register_subalias("10", m_3->m_I[1]);
+ register_subalias("8", m_3->m_Q[0]);
- register_subalias("12", m_4.m_I[0]);
- register_subalias("13", m_4.m_I[1]);
- register_subalias("11", m_4.m_Q[0]);
+ register_subalias("12", m_4->m_I[0]);
+ register_subalias("13", m_4->m_I[1]);
+ register_subalias("11", m_4->m_Q[0]);
}
NETLIB_UPDATE(7486_dip)
{
/* only called during startup */
- m_1.update_dev();
- m_2.update_dev();
- m_3.update_dev();
- m_4.update_dev();
+ m_1->update_dev();
+ m_2->update_dev();
+ m_3->update_dev();
+ m_4->update_dev();
}
NETLIB_RESET(7486_dip)
{
- m_1.do_reset();
- m_2.do_reset();
- m_3.do_reset();
- m_4.do_reset();
+ m_1->do_reset();
+ m_2->do_reset();
+ m_3->do_reset();
+ m_4->do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_7486.h b/src/lib/netlist/devices/nld_7486.h
index affc57b51ed..80c92fc243d 100644
--- a/src/lib/netlist/devices/nld_7486.h
+++ b/src/lib/netlist/devices/nld_7486.h
@@ -62,10 +62,10 @@ public:
NETLIB_DEVICE(7486_dip,
- NETLIB_NAME(7486) m_1;
- NETLIB_NAME(7486) m_2;
- NETLIB_NAME(7486) m_3;
- NETLIB_NAME(7486) m_4;
+ NETLIB_SUB(7486) m_1;
+ NETLIB_SUB(7486) m_2;
+ NETLIB_SUB(7486) m_3;
+ NETLIB_SUB(7486) m_4;
);
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_7493.cpp b/src/lib/netlist/devices/nld_7493.cpp
index b7979152f09..1fc89293b6f 100644
--- a/src/lib/netlist/devices/nld_7493.cpp
+++ b/src/lib/netlist/devices/nld_7493.cpp
@@ -17,26 +17,26 @@ NETLIB_START(7493)
register_sub("C", C);
register_sub("D", D);
- register_subalias("CLKA", A.m_I);
- register_subalias("CLKB", B.m_I);
+ register_subalias("CLKA", A->m_I);
+ register_subalias("CLKB", B->m_I);
register_input("R1", m_R1);
register_input("R2", m_R2);
- register_subalias("QA", A.m_Q);
- register_subalias("QB", B.m_Q);
- register_subalias("QC", C.m_Q);
- register_subalias("QD", D.m_Q);
+ register_subalias("QA", A->m_Q);
+ register_subalias("QB", B->m_Q);
+ register_subalias("QC", C->m_Q);
+ register_subalias("QD", D->m_Q);
- connect_late(C.m_I, B.m_Q);
- connect_late(D.m_I, C.m_Q);
+ connect_late(C->m_I, B->m_Q);
+ connect_late(D->m_I, C->m_Q);
}
NETLIB_RESET(7493)
{
- A.do_reset();
- B.do_reset();
- C.do_reset();
- D.do_reset();
+ A->do_reset();
+ B->do_reset();
+ C->do_reset();
+ D->do_reset();
}
NETLIB_START(7493ff)
@@ -71,20 +71,20 @@ NETLIB_UPDATE(7493)
if (r)
{
- A.m_I.inactivate();
- B.m_I.inactivate();
- OUTLOGIC(A.m_Q, 0, NLTIME_FROM_NS(40));
- OUTLOGIC(B.m_Q, 0, NLTIME_FROM_NS(40));
- OUTLOGIC(C.m_Q, 0, NLTIME_FROM_NS(40));
- OUTLOGIC(D.m_Q, 0, NLTIME_FROM_NS(40));
- A.m_reset = B.m_reset = C.m_reset = D.m_reset = 0;
- A.m_state = B.m_state = C.m_state = D.m_state = 0;
+ A->m_I.inactivate();
+ B->m_I.inactivate();
+ OUTLOGIC(A->m_Q, 0, NLTIME_FROM_NS(40));
+ OUTLOGIC(B->m_Q, 0, NLTIME_FROM_NS(40));
+ OUTLOGIC(C->m_Q, 0, NLTIME_FROM_NS(40));
+ OUTLOGIC(D->m_Q, 0, NLTIME_FROM_NS(40));
+ A->m_reset = B->m_reset = C->m_reset = D->m_reset = 0;
+ A->m_state = B->m_state = C->m_state = D->m_state = 0;
}
else
{
- A.m_I.activate_hl();
- B.m_I.activate_hl();
- A.m_reset = B.m_reset = C.m_reset = D.m_reset = 1;
+ A->m_I.activate_hl();
+ B->m_I.activate_hl();
+ A->m_reset = B->m_reset = C->m_reset = D->m_reset = 1;
}
}
@@ -92,7 +92,7 @@ NETLIB_START(7493_dip)
{
NETLIB_NAME(7493)::start();
- register_subalias("1", B.m_I);
+ register_subalias("1", B->m_I);
register_subalias("2", m_R1);
register_subalias("3", m_R2);
@@ -101,13 +101,13 @@ NETLIB_START(7493_dip)
// register_subalias("6", ); --> NC
// register_subalias("7", ); --> NC
- register_subalias("8", C.m_Q);
- register_subalias("9", B.m_Q);
+ register_subalias("8", C->m_Q);
+ register_subalias("9", B->m_Q);
// register_subalias("10", ); --> GND
- register_subalias("11", D.m_Q);
- register_subalias("12", A.m_Q);
+ register_subalias("11", D->m_Q);
+ register_subalias("12", A->m_Q);
// register_subalias("13", ); --> NC
- register_subalias("14", A.m_I);
+ register_subalias("14", A->m_I);
}
diff --git a/src/lib/netlist/devices/nld_7493.h b/src/lib/netlist/devices/nld_7493.h
index 39a969d3b02..e58fdc03c16 100644
--- a/src/lib/netlist/devices/nld_7493.h
+++ b/src/lib/netlist/devices/nld_7493.h
@@ -83,10 +83,10 @@ NETLIB_DEVICE(7493,
logic_input_t m_R1;
logic_input_t m_R2;
- NETLIB_NAME(7493ff) A;
- NETLIB_NAME(7493ff) B;
- NETLIB_NAME(7493ff) C;
- NETLIB_NAME(7493ff) D;
+ NETLIB_SUB(7493ff) A;
+ NETLIB_SUB(7493ff) B;
+ NETLIB_SUB(7493ff) C;
+ NETLIB_SUB(7493ff) D;
);
NETLIB_DEVICE_DERIVED_PURE(7493_dip, 7493);
diff --git a/src/lib/netlist/devices/nld_74ls629.cpp b/src/lib/netlist/devices/nld_74ls629.cpp
index a659fef032b..2310d1d2ef3 100644
--- a/src/lib/netlist/devices/nld_74ls629.cpp
+++ b/src/lib/netlist/devices/nld_74ls629.cpp
@@ -87,21 +87,21 @@ NETLIB_START(SN74LS629)
register_input("ENQ", m_ENQ);
register_input("RNG", m_RNG);
register_input("FC", m_FC);
- register_subalias("GND", m_R_FC.m_N);
+ register_subalias("GND", m_R_FC->m_N);
- connect_late(m_FC, m_R_FC.m_P);
- connect_late(m_RNG, m_R_RNG.m_P);
- connect_late(m_R_FC.m_N, m_R_RNG.m_N);
+ connect_late(m_FC, m_R_FC->m_P);
+ connect_late(m_RNG, m_R_RNG->m_P);
+ connect_late(m_R_FC->m_N, m_R_RNG->m_N);
- register_subalias("Y", m_clock.m_Y);
+ register_subalias("Y", m_clock->m_Y);
register_param("CAP", m_CAP, 1e-6);
}
NETLIB_RESET(SN74LS629)
{
- m_R_FC.set_R(90000.0);
- m_R_RNG.set_R(90000.0);
- m_clock.reset();
+ m_R_FC->set_R(90000.0);
+ m_R_RNG->set_R(90000.0);
+ m_clock->reset();
}
NETLIB_UPDATE(SN74LS629)
@@ -147,23 +147,23 @@ NETLIB_UPDATE(SN74LS629)
// FIXME: we need a possibility to remove entries from queue ...
// or an exact model ...
- m_clock.m_inc = netlist_time::from_double(0.5 / (double) freq);
+ m_clock->m_inc = netlist_time::from_double(0.5 / (double) freq);
//m_clock.update();
//NL_VERBOSE_OUT(("{1} {2} {3} {4}\n", name(), v_freq, v_rng, freq));
}
- if (!m_clock.m_enableq && INPLOGIC(m_ENQ))
+ if (!m_clock->m_enableq && INPLOGIC(m_ENQ))
{
- m_clock.m_enableq = 1;
- m_clock.m_out = m_clock.m_out ^ 1;
- OUTLOGIC(m_clock.m_Y, m_clock.m_out, netlist_time::from_nsec(1));
+ m_clock->m_enableq = 1;
+ m_clock->m_out = m_clock->m_out ^ 1;
+ OUTLOGIC(m_clock->m_Y, m_clock->m_out, netlist_time::from_nsec(1));
}
- else if (m_clock.m_enableq && !INPLOGIC(m_ENQ))
+ else if (m_clock->m_enableq && !INPLOGIC(m_ENQ))
{
- m_clock.m_enableq = 0;
- m_clock.m_out = m_clock.m_out ^ 1;
- OUTLOGIC(m_clock.m_Y, m_clock.m_out, netlist_time::from_nsec(1));
+ m_clock->m_enableq = 0;
+ m_clock->m_out = m_clock->m_out ^ 1;
+ OUTLOGIC(m_clock->m_Y, m_clock->m_out, netlist_time::from_nsec(1));
}
}
@@ -179,21 +179,21 @@ NETLIB_START(SN74LS629_dip)
register_sub("1", m_1);
register_sub("2", m_2);
- register_subalias("1", m_2.m_FC);
- register_subalias("2", m_1.m_FC);
- register_subalias("3", m_1.m_RNG);
+ register_subalias("1", m_2->m_FC);
+ register_subalias("2", m_1->m_FC);
+ register_subalias("3", m_1->m_RNG);
- register_subalias("6", m_1.m_ENQ);
- register_subalias("7", m_1.m_clock.m_Y);
+ register_subalias("6", m_1->m_ENQ);
+ register_subalias("7", m_1->m_clock->m_Y);
- register_subalias("8", m_1.m_R_FC.m_N);
- register_subalias("9", m_1.m_R_FC.m_N);
- connect_late(m_1.m_R_FC.m_N, m_2.m_R_FC.m_N);
+ register_subalias("8", m_1->m_R_FC->m_N);
+ register_subalias("9", m_1->m_R_FC->m_N);
+ connect_late(m_1->m_R_FC->m_N, m_2->m_R_FC->m_N);
- register_subalias("10", m_2.m_clock.m_Y);
+ register_subalias("10", m_2->m_clock->m_Y);
- register_subalias("11", m_2.m_ENQ);
- register_subalias("14", m_2.m_RNG);
+ register_subalias("11", m_2->m_ENQ);
+ register_subalias("14", m_2->m_RNG);
}
@@ -203,8 +203,8 @@ NETLIB_UPDATE(SN74LS629_dip)
NETLIB_RESET(SN74LS629_dip)
{
- m_1.do_reset();
- m_2.do_reset();
+ m_1->do_reset();
+ m_2->do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_74ls629.h b/src/lib/netlist/devices/nld_74ls629.h
index 433c2c32a11..e8f94c9ca75 100644
--- a/src/lib/netlist/devices/nld_74ls629.h
+++ b/src/lib/netlist/devices/nld_74ls629.h
@@ -48,9 +48,9 @@ NETLIB_SUBDEVICE(SN74LS629clk,
NETLIB_DEVICE_WITH_PARAMS(SN74LS629,
public:
- NETLIB_NAME(SN74LS629clk) m_clock;
- NETLIB_NAME(R_base) m_R_FC;
- NETLIB_NAME(R_base) m_R_RNG;
+ NETLIB_SUB(SN74LS629clk) m_clock;
+ NETLIB_SUB(R_base) m_R_FC;
+ NETLIB_SUB(R_base) m_R_RNG;
logic_input_t m_ENQ;
analog_input_t m_RNG;
@@ -65,8 +65,8 @@ public:
NETDEV_PARAMI(_name, 2.CAP, _cap2)
NETLIB_DEVICE(SN74LS629_dip,
- NETLIB_NAME(SN74LS629) m_1;
- NETLIB_NAME(SN74LS629) m_2;
+ NETLIB_SUB(SN74LS629) m_1;
+ NETLIB_SUB(SN74LS629) m_2;
);
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_9310.cpp b/src/lib/netlist/devices/nld_9310.cpp
index 586f1b47c05..6e856a9a4a7 100644
--- a/src/lib/netlist/devices/nld_9310.cpp
+++ b/src/lib/netlist/devices/nld_9310.cpp
@@ -14,33 +14,33 @@ NETLIB_NAMESPACE_DEVICES_START()
NETLIB_START(9310)
{
register_sub("subABCD", subABCD);
- sub.m_ABCD = &subABCD;
register_sub("sub", sub);
+ sub->m_ABCD = &(*subABCD);
- register_subalias("CLK", sub.m_CLK);
+ register_subalias("CLK", sub->m_CLK);
register_input("ENP", m_ENP);
register_input("ENT", m_ENT);
register_input("CLRQ", m_CLRQ);
register_input("LOADQ", m_LOADQ);
- register_subalias("A", subABCD.m_A);
- register_subalias("B", subABCD.m_B);
- register_subalias("C", subABCD.m_C);
- register_subalias("D", subABCD.m_D);
+ register_subalias("A", subABCD->m_A);
+ register_subalias("B", subABCD->m_B);
+ register_subalias("C", subABCD->m_C);
+ register_subalias("D", subABCD->m_D);
- register_subalias("QA", sub.m_QA);
- register_subalias("QB", sub.m_QB);
- register_subalias("QC", sub.m_QC);
- register_subalias("QD", sub.m_QD);
- register_subalias("RC", sub.m_RC);
+ register_subalias("QA", sub->m_QA);
+ register_subalias("QB", sub->m_QB);
+ register_subalias("QC", sub->m_QC);
+ register_subalias("QD", sub->m_QD);
+ register_subalias("RC", sub->m_RC);
}
NETLIB_RESET(9310)
{
- sub.do_reset();
- subABCD.do_reset();
+ sub->do_reset();
+ subABCD->do_reset();
}
NETLIB_START(9310_subABCD)
@@ -126,25 +126,25 @@ NETLIB_UPDATE(9310_sub)
NETLIB_UPDATE(9310)
{
- sub.m_loadq = INPLOGIC(m_LOADQ);
- sub.m_ent = INPLOGIC(m_ENT);
+ sub->m_loadq = INPLOGIC(m_LOADQ);
+ sub->m_ent = INPLOGIC(m_ENT);
const netlist_sig_t clrq = INPLOGIC(m_CLRQ);
- if ((!sub.m_loadq || (sub.m_ent & INPLOGIC(m_ENP))) && clrq)
+ if ((!sub->m_loadq || (sub->m_ent & INPLOGIC(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_CLK.activate_lh();
+ OUTLOGIC(sub->m_RC, sub->m_ent & (sub->m_cnt == MAXCNT), NLTIME_FROM_NS(27));
}
else
{
- sub.m_CLK.inactivate();
- if (!clrq && (sub.m_cnt>0))
+ sub->m_CLK.inactivate();
+ if (!clrq && (sub->m_cnt>0))
{
- sub.update_outputs_all(0, NLTIME_FROM_NS(36));
- sub.m_cnt = 0;
+ sub->update_outputs_all(0, NLTIME_FROM_NS(36));
+ sub->m_cnt = 0;
//return;
}
- OUTLOGIC(sub.m_RC, sub.m_ent & (sub.m_cnt == MAXCNT), NLTIME_FROM_NS(27));
+ OUTLOGIC(sub->m_RC, sub->m_ent & (sub->m_cnt == MAXCNT), NLTIME_FROM_NS(27));
}
}
@@ -206,21 +206,21 @@ NETLIB_START(9310_dip)
NETLIB_NAME(9310)::start();
register_subalias("1", m_CLRQ);
- register_subalias("2", sub.m_CLK);
- register_subalias("3", subABCD.m_A);
- register_subalias("4", subABCD.m_B);
- register_subalias("5", subABCD.m_C);
- register_subalias("6", subABCD.m_D);
+ register_subalias("2", sub->m_CLK);
+ register_subalias("3", subABCD->m_A);
+ register_subalias("4", subABCD->m_B);
+ register_subalias("5", subABCD->m_C);
+ register_subalias("6", subABCD->m_D);
register_subalias("7", m_ENP);
// register_subalias("8", ); --> GND
register_subalias("9", m_LOADQ);
register_subalias("10", m_ENT);
- register_subalias("11", sub.m_QD);
- register_subalias("12", sub.m_QC);
- register_subalias("13", sub.m_QB);
- register_subalias("14", sub.m_QA);
- register_subalias("15", sub.m_RC);
+ register_subalias("11", sub->m_QD);
+ register_subalias("12", sub->m_QC);
+ register_subalias("13", sub->m_QB);
+ register_subalias("14", sub->m_QA);
+ register_subalias("15", sub->m_RC);
// register_subalias("16", ); --> VCC
}
diff --git a/src/lib/netlist/devices/nld_9310.h b/src/lib/netlist/devices/nld_9310.h
index 00c39605ac2..af6834160d3 100644
--- a/src/lib/netlist/devices/nld_9310.h
+++ b/src/lib/netlist/devices/nld_9310.h
@@ -96,8 +96,8 @@ NETLIB_SUBDEVICE(9310_sub,
);
NETLIB_DEVICE(9310,
- NETLIB_NAME(9310_sub) sub;
- NETLIB_NAME(9310_subABCD) subABCD;
+ NETLIB_SUB(9310_sub) sub;
+ NETLIB_SUB(9310_subABCD) subABCD;
logic_input_t m_ENP;
logic_input_t m_ENT;
logic_input_t m_CLRQ;
diff --git a/src/lib/netlist/devices/nld_9312.cpp b/src/lib/netlist/devices/nld_9312.cpp
index 0821861dea4..eaf405dd685 100644
--- a/src/lib/netlist/devices/nld_9312.cpp
+++ b/src/lib/netlist/devices/nld_9312.cpp
@@ -130,41 +130,41 @@ NETLIB_START(9312_dip)
#if (1 && USE_TRUTHTABLE)
- register_subalias("13", m_sub.m_I[0]);
- register_subalias("12", m_sub.m_I[1]);
- register_subalias("11", m_sub.m_I[2]);
- register_subalias("10", m_sub.m_I[3]);
-
- register_subalias("1", m_sub.m_I[4]);
- register_subalias("2", m_sub.m_I[5]);
- register_subalias("3", m_sub.m_I[6]);
- register_subalias("4", m_sub.m_I[7]);
- register_subalias("5", m_sub.m_I[8]);
- register_subalias("6", m_sub.m_I[9]);
- register_subalias("7", m_sub.m_I[10]);
- register_subalias("9", m_sub.m_I[11]);
-
- register_subalias("15", m_sub.m_Q[0]); // Y
- register_subalias("14", m_sub.m_Q[1]); // YQ
+ register_subalias("13", m_sub->m_I[0]);
+ register_subalias("12", m_sub->m_I[1]);
+ register_subalias("11", m_sub->m_I[2]);
+ register_subalias("10", m_sub->m_I[3]);
+
+ register_subalias("1", m_sub->m_I[4]);
+ register_subalias("2", m_sub->m_I[5]);
+ register_subalias("3", m_sub->m_I[6]);
+ register_subalias("4", m_sub->m_I[7]);
+ register_subalias("5", m_sub->m_I[8]);
+ register_subalias("6", m_sub->m_I[9]);
+ register_subalias("7", m_sub->m_I[10]);
+ register_subalias("9", m_sub->m_I[11]);
+
+ register_subalias("15", m_sub->m_Q[0]); // Y
+ register_subalias("14", m_sub->m_Q[1]); // YQ
#else
- register_subalias("13", m_sub.m_C);
- register_subalias("12", m_sub.m_B);
- register_subalias("11", m_sub.m_A);
- register_subalias("10", m_sub.m_G);
+ register_subalias("13", m_sub->m_C);
+ register_subalias("12", m_sub->m_B);
+ register_subalias("11", m_sub->m_A);
+ register_subalias("10", m_sub->m_G);
- register_subalias("1", m_sub.m_D[0]);
- register_subalias("2", m_sub.m_D[1]);
- register_subalias("3", m_sub.m_D[2]);
- register_subalias("4", m_sub.m_D[3]);
- register_subalias("5", m_sub.m_D[4]);
- register_subalias("6", m_sub.m_D[5]);
- register_subalias("7", m_sub.m_D[6]);
- register_subalias("9", m_sub.m_D[7]);
+ register_subalias("1", m_sub->m_D[0]);
+ register_subalias("2", m_sub->m_D[1]);
+ register_subalias("3", m_sub->m_D[2]);
+ register_subalias("4", m_sub->m_D[3]);
+ register_subalias("5", m_sub->m_D[4]);
+ register_subalias("6", m_sub->m_D[5]);
+ register_subalias("7", m_sub->m_D[6]);
+ register_subalias("9", m_sub->m_D[7]);
- register_subalias("15", m_sub.m_Y); // Y
- register_subalias("14", m_sub.m_YQ); // YQ
+ register_subalias("15", m_sub->m_Y); // Y
+ register_subalias("14", m_sub->m_YQ); // YQ
#endif
}
@@ -172,11 +172,11 @@ NETLIB_START(9312_dip)
NETLIB_UPDATE(9312_dip)
{
/* only called during startup */
- m_sub.update_dev();
+ m_sub->update_dev();
}
NETLIB_RESET(9312_dip)
{
- m_sub.do_reset();
+ m_sub->do_reset();
}
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_9312.h b/src/lib/netlist/devices/nld_9312.h
index 2d982474377..9b2359057e8 100644
--- a/src/lib/netlist/devices/nld_9312.h
+++ b/src/lib/netlist/devices/nld_9312.h
@@ -73,7 +73,7 @@ public:
#endif
NETLIB_DEVICE(9312_dip,
- NETLIB_NAME(9312) m_sub;
+ NETLIB_SUB(9312) m_sub;
);
NETLIB_NAMESPACE_DEVICES_END()
diff --git a/src/lib/netlist/devices/nld_9316.cpp b/src/lib/netlist/devices/nld_9316.cpp
index 220487f1037..a8ce31c0125 100644
--- a/src/lib/netlist/devices/nld_9316.cpp
+++ b/src/lib/netlist/devices/nld_9316.cpp
@@ -13,34 +13,34 @@ NETLIB_NAMESPACE_DEVICES_START()
NETLIB_START(9316)
{
- register_sub("subABCD", subABCD);
- sub.m_ABCD = &subABCD;
register_sub("sub", sub);
+ register_sub("subABCD", subABCD);
+ sub->m_ABCD = &(*subABCD);
- register_subalias("CLK", sub.m_CLK);
+ register_subalias("CLK", sub->m_CLK);
register_input("ENP", m_ENP);
register_input("ENT", m_ENT);
register_input("CLRQ", m_CLRQ);
register_input("LOADQ", m_LOADQ);
- register_subalias("A", subABCD.m_A);
- register_subalias("B", subABCD.m_B);
- register_subalias("C", subABCD.m_C);
- register_subalias("D", subABCD.m_D);
+ register_subalias("A", subABCD->m_A);
+ register_subalias("B", subABCD->m_B);
+ register_subalias("C", subABCD->m_C);
+ register_subalias("D", subABCD->m_D);
- register_subalias("QA", sub.m_QA);
- register_subalias("QB", sub.m_QB);
- register_subalias("QC", sub.m_QC);
- register_subalias("QD", sub.m_QD);
- register_subalias("RC", sub.m_RC);
+ register_subalias("QA", sub->m_QA);
+ register_subalias("QB", sub->m_QB);
+ register_subalias("QC", sub->m_QC);
+ register_subalias("QD", sub->m_QD);
+ register_subalias("RC", sub->m_RC);
}
NETLIB_RESET(9316)
{
- sub.do_reset();
- subABCD.do_reset();
+ sub->do_reset();
+ subABCD->do_reset();
}
NETLIB_START(9316_subABCD)
@@ -121,25 +121,25 @@ NETLIB_UPDATE(9316_sub)
NETLIB_UPDATE(9316)
{
- sub.m_loadq = INPLOGIC(m_LOADQ);
- sub.m_ent = INPLOGIC(m_ENT);
+ sub->m_loadq = INPLOGIC(m_LOADQ);
+ sub->m_ent = INPLOGIC(m_ENT);
const netlist_sig_t clrq = INPLOGIC(m_CLRQ);
- if (((sub.m_loadq ^ 1) | (sub.m_ent & INPLOGIC(m_ENP))) & clrq)
+ if (((sub->m_loadq ^ 1) | (sub->m_ent & INPLOGIC(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_CLK.activate_lh();
+ OUTLOGIC(sub->m_RC, sub->m_ent & (sub->m_cnt == MAXCNT), NLTIME_FROM_NS(27));
}
else
{
- sub.m_CLK.inactivate();
- if (!clrq && (sub.m_cnt>0))
+ sub->m_CLK.inactivate();
+ if (!clrq && (sub->m_cnt>0))
{
- sub.update_outputs_all(0, NLTIME_FROM_NS(36));
- sub.m_cnt = 0;
+ sub->update_outputs_all(0, NLTIME_FROM_NS(36));
+ sub->m_cnt = 0;
//return;
}
- OUTLOGIC(sub.m_RC, sub.m_ent & (sub.m_cnt == MAXCNT), NLTIME_FROM_NS(27));
+ OUTLOGIC(sub->m_RC, sub->m_ent & (sub->m_cnt == MAXCNT), NLTIME_FROM_NS(27));
}
}
@@ -201,21 +201,21 @@ NETLIB_START(9316_dip)
NETLIB_NAME(9316)::start();
register_subalias("1", m_CLRQ);
- register_subalias("2", sub.m_CLK);
- register_subalias("3", subABCD.m_A);
- register_subalias("4", subABCD.m_B);
- register_subalias("5", subABCD.m_C);
- register_subalias("6", subABCD.m_D);
+ register_subalias("2", sub->m_CLK);
+ register_subalias("3", subABCD->m_A);
+ register_subalias("4", subABCD->m_B);
+ register_subalias("5", subABCD->m_C);
+ register_subalias("6", subABCD->m_D);
register_subalias("7", m_ENP);
// register_subalias("8", ); --> GND
register_subalias("9", m_LOADQ);
register_subalias("10", m_ENT);
- register_subalias("11", sub.m_QD);
- register_subalias("12", sub.m_QC);
- register_subalias("13", sub.m_QB);
- register_subalias("14", sub.m_QA);
- register_subalias("15", sub.m_RC);
+ register_subalias("11", sub->m_QD);
+ register_subalias("12", sub->m_QC);
+ register_subalias("13", sub->m_QB);
+ register_subalias("14", sub->m_QA);
+ register_subalias("15", sub->m_RC);
// register_subalias("16", ); --> VCC
}
diff --git a/src/lib/netlist/devices/nld_9316.h b/src/lib/netlist/devices/nld_9316.h
index e4d7a901c99..c006f0e98a8 100644
--- a/src/lib/netlist/devices/nld_9316.h
+++ b/src/lib/netlist/devices/nld_9316.h
@@ -101,8 +101,8 @@ NETLIB_SUBDEVICE(9316_sub,
);
NETLIB_DEVICE(9316,
- NETLIB_NAME(9316_sub) sub;
- NETLIB_NAME(9316_subABCD) subABCD;
+ NETLIB_SUB(9316_sub) sub;
+ NETLIB_SUB(9316_subABCD) subABCD;
logic_input_t m_ENP;
logic_input_t m_ENT;
logic_input_t m_CLRQ;
diff --git a/src/lib/netlist/devices/nld_cmos.h b/src/lib/netlist/devices/nld_cmos.h
index 61e1e8f7dae..d520a1d2761 100644
--- a/src/lib/netlist/devices/nld_cmos.h
+++ b/src/lib/netlist/devices/nld_cmos.h
@@ -16,8 +16,8 @@ NETLIB_NAMESPACE_DEVICES_START()
class nld_vdd_vss : public device_t
{
public:
- nld_vdd_vss ()
- : device_t()
+ nld_vdd_vss (netlist_t &anetlist, const pstring &name)
+ : device_t(anetlist, name)
{ }
analog_input_t m_vdd;
diff --git a/src/lib/netlist/devices/nld_mm5837.cpp b/src/lib/netlist/devices/nld_mm5837.cpp
index 82e774b4923..ce3d30a14f5 100644
--- a/src/lib/netlist/devices/nld_mm5837.cpp
+++ b/src/lib/netlist/devices/nld_mm5837.cpp
@@ -24,15 +24,15 @@ NETLIB_START(MM5837_dip)
/* output */
register_sub("RV", m_RV);
- register_terminal("_RV1", m_RV.m_P);
- register_terminal("_RV2", m_RV.m_N);
+ register_terminal("_RV1", m_RV->m_P);
+ register_terminal("_RV2", m_RV->m_N);
register_output("_Q", m_V0);
- connect_late(m_RV.m_N, m_V0);
+ connect_late(m_RV->m_N, m_V0);
/* device */
register_input("1", m_VDD);
register_input("2", m_VGG);
- register_subalias("3", m_RV.m_P);
+ register_subalias("3", m_RV->m_P);
register_input("4", m_VSS);
save(NLNAME(m_shift));
@@ -41,11 +41,11 @@ NETLIB_START(MM5837_dip)
NETLIB_RESET(MM5837_dip)
{
m_V0.initial(0.0);
- m_RV.do_reset();
- m_RV.set(NL_FCONST(1.0) / R_LOW, 0.0, 0.0);
+ m_RV->do_reset();
+ m_RV->set(NL_FCONST(1.0) / R_LOW, 0.0, 0.0);
m_shift = 0x1ffff;
- m_is_timestep = m_RV.m_P.net().solver()->is_timestep();
+ m_is_timestep = m_RV->m_P.net().solver()->is_timestep();
}
NETLIB_UPDATE(MM5837_dip)
@@ -70,9 +70,9 @@ NETLIB_UPDATE(MM5837_dip)
// We only need to update the net first if this is a time stepping net
if (m_is_timestep)
- m_RV.update_dev();
- m_RV.set(NL_FCONST(1.0) / R, V, 0.0);
- m_RV.m_P.schedule_after(NLTIME_FROM_NS(1));
+ m_RV->update_dev();
+ m_RV->set(NL_FCONST(1.0) / R, V, 0.0);
+ m_RV->m_P.schedule_after(NLTIME_FROM_NS(1));
}
}
diff --git a/src/lib/netlist/devices/nld_mm5837.h b/src/lib/netlist/devices/nld_mm5837.h
index 33b42640e92..7c77da5e11c 100644
--- a/src/lib/netlist/devices/nld_mm5837.h
+++ b/src/lib/netlist/devices/nld_mm5837.h
@@ -34,7 +34,7 @@ NETLIB_DEVICE(MM5837_dip,
analog_input_t m_VSS;
/* output stage */
- nld_twoterm m_RV;
+ std::unique_ptr<nld_twoterm> m_RV;
analog_output_t m_V0; /* could be gnd as well */
/* clock stage */
diff --git a/src/lib/netlist/devices/nld_ne555.cpp b/src/lib/netlist/devices/nld_ne555.cpp
index efa6d25aec8..17847977a93 100644
--- a/src/lib/netlist/devices/nld_ne555.cpp
+++ b/src/lib/netlist/devices/nld_ne555.cpp
@@ -17,7 +17,7 @@ NETLIB_NAMESPACE_DEVICES_START()
inline nl_double NETLIB_NAME(NE555)::clamp(const nl_double v, const nl_double a, const nl_double b)
{
nl_double ret = v;
- nl_double vcc = TERMANALOG(m_R1.m_P);
+ nl_double vcc = TERMANALOG(m_R1->m_P);
if (ret > vcc - a)
ret = vcc - a;
@@ -33,18 +33,18 @@ NETLIB_START(NE555)
register_sub("R3", m_R3);
register_sub("RDIS", m_RDIS);
- register_subalias("GND", m_R3.m_N); // Pin 1
+ register_subalias("GND", m_R3->m_N); // Pin 1
register_input("TRIG", m_TRIG); // Pin 2
register_output("OUT", m_OUT); // Pin 3
register_input("RESET", m_RESET); // Pin 4
- register_subalias("CONT", m_R1.m_N); // Pin 5
+ register_subalias("CONT", m_R1->m_N); // Pin 5
register_input("THRESH", m_THRES); // Pin 6
- register_subalias("DISCH", m_RDIS.m_P); // Pin 7
- register_subalias("VCC", m_R1.m_P); // Pin 8
+ register_subalias("DISCH", m_RDIS->m_P); // Pin 7
+ register_subalias("VCC", m_R1->m_P); // Pin 8
- connect_late(m_R1.m_N, m_R2.m_P);
- connect_late(m_R2.m_N, m_R3.m_P);
- connect_late(m_RDIS.m_N, m_R3.m_N);
+ connect_late(m_R1->m_N, m_R2->m_P);
+ connect_late(m_R2->m_N, m_R3->m_P);
+ connect_late(m_RDIS->m_N, m_R3->m_N);
save(NLNAME(m_last_out));
save(NLNAME(m_ff));
@@ -52,15 +52,15 @@ NETLIB_START(NE555)
NETLIB_RESET(NE555)
{
- m_R1.do_reset();
- m_R2.do_reset();
- m_R3.do_reset();
- m_RDIS.do_reset();
+ m_R1->do_reset();
+ m_R2->do_reset();
+ m_R3->do_reset();
+ m_RDIS->do_reset();
- m_R1.set_R(5000);
- m_R2.set_R(5000);
- m_R3.set_R(5000);
- m_RDIS.set_R(R_OFF);
+ m_R1->set_R(5000);
+ m_R2->set_R(5000);
+ m_R3->set_R(5000);
+ m_RDIS->set_R(R_OFF);
m_last_out = true;
}
@@ -69,9 +69,9 @@ NETLIB_UPDATE(NE555)
{
// FIXME: assumes GND is connected to 0V.
- nl_double vt = clamp(TERMANALOG(m_R2.m_P), 0.7, 1.4);
+ nl_double vt = clamp(TERMANALOG(m_R2->m_P), 0.7, 1.4);
bool bthresh = (INPANALOG(m_THRES) > vt);
- bool btrig = (INPANALOG(m_TRIG) > clamp(TERMANALOG(m_R2.m_N), 0.7, 1.4));
+ bool btrig = (INPANALOG(m_TRIG) > clamp(TERMANALOG(m_R2->m_N), 0.7, 1.4));
if (!btrig)
{
@@ -86,16 +86,16 @@ NETLIB_UPDATE(NE555)
if (m_last_out && !out)
{
- m_RDIS.update_dev();
- OUTANALOG(m_OUT, TERMANALOG(m_R3.m_N));
- m_RDIS.set_R(R_ON);
+ m_RDIS->update_dev();
+ OUTANALOG(m_OUT, TERMANALOG(m_R3->m_N));
+ m_RDIS->set_R(R_ON);
}
else if (!m_last_out && out)
{
- m_RDIS.update_dev();
+ m_RDIS->update_dev();
// FIXME: Should be delayed by 100ns
- OUTANALOG(m_OUT, TERMANALOG(m_R1.m_P));
- m_RDIS.set_R(R_OFF);
+ OUTANALOG(m_OUT, TERMANALOG(m_R1->m_P));
+ m_RDIS->set_R(R_OFF);
}
m_last_out = out;
}
@@ -105,14 +105,14 @@ NETLIB_START(NE555_dip)
{
NETLIB_NAME(NE555)::start();
- register_subalias("1", m_R3.m_N); // Pin 1
+ register_subalias("1", m_R3->m_N); // Pin 1
register_subalias("2", m_TRIG); // Pin 2
register_subalias("3", m_OUT); // Pin 3
register_subalias("4", m_RESET); // Pin 4
- register_subalias("5", m_R1.m_N); // Pin 5
+ register_subalias("5", m_R1->m_N); // Pin 5
register_subalias("6", m_THRES); // Pin 6
- register_subalias("7", m_RDIS.m_P); // Pin 7
- register_subalias("8", m_R1.m_P); // Pin 8
+ register_subalias("7", m_RDIS->m_P); // Pin 7
+ register_subalias("8", m_R1->m_P); // Pin 8
}
diff --git a/src/lib/netlist/devices/nld_ne555.h b/src/lib/netlist/devices/nld_ne555.h
index 11228ffd447..0029fd6c6ee 100644
--- a/src/lib/netlist/devices/nld_ne555.h
+++ b/src/lib/netlist/devices/nld_ne555.h
@@ -28,10 +28,10 @@
NETLIB_NAMESPACE_DEVICES_START()
NETLIB_DEVICE(NE555,
- NETLIB_NAME(R) m_R1;
- NETLIB_NAME(R) m_R2;
- NETLIB_NAME(R) m_R3;
- NETLIB_NAME(R) m_RDIS;
+ NETLIB_SUB(R) m_R1;
+ NETLIB_SUB(R) m_R2;
+ NETLIB_SUB(R) m_R3;
+ NETLIB_SUB(R) m_RDIS;
logic_input_t m_RESET;
analog_input_t m_THRES;
diff --git a/src/lib/netlist/devices/nld_signal.h b/src/lib/netlist/devices/nld_signal.h
index 0e659557e02..8805f9a8914 100644
--- a/src/lib/netlist/devices/nld_signal.h
+++ b/src/lib/netlist/devices/nld_signal.h
@@ -18,8 +18,8 @@
class NETLIB_NAME(_name) : public net_signal_t<_num_input, _check, _invert> \
{ \
public: \
- NETLIB_NAME(_name) () \
- : net_signal_t<_num_input, _check, _invert>() { } \
+ NETLIB_NAME(_name) (netlist_t &anetlist, const pstring &name) \
+ : net_signal_t<_num_input, _check, _invert>(anetlist, name) { } \
}
NETLIB_NAMESPACE_DEVICES_START()
@@ -32,8 +32,8 @@ template <int _numdev, int _check, int _invert>
class net_signal_t : public device_t
{
public:
- net_signal_t()
- : device_t(), m_active(1)
+ net_signal_t(netlist_t &anetlist, const pstring &name)
+ : device_t(anetlist, name), m_active(1)
{
}
diff --git a/src/lib/netlist/devices/nld_system.cpp b/src/lib/netlist/devices/nld_system.cpp
index 3e4565d09d2..77317f778e4 100644
--- a/src/lib/netlist/devices/nld_system.cpp
+++ b/src/lib/netlist/devices/nld_system.cpp
@@ -196,7 +196,7 @@ void nld_d_to_a_proxy::start()
{
nld_base_d_to_a_proxy::start();
- register_sub("RV", m_RV);
+ register_sub(m_RV);
register_terminal("1", m_RV.m_P);
register_terminal("2", m_RV.m_N);
@@ -248,8 +248,8 @@ NETLIB_START(res_sw)
register_param("RON", m_RON, 1.0);
register_param("ROFF", m_ROFF, 1.0E20);
- register_subalias("1", m_R.m_P);
- register_subalias("2", m_R.m_N);
+ register_subalias("1", m_R->m_P);
+ register_subalias("2", m_R->m_N);
save(NLNAME(m_last_state));
}
@@ -257,7 +257,7 @@ NETLIB_START(res_sw)
NETLIB_RESET(res_sw)
{
m_last_state = 0;
- m_R.set_R(m_ROFF.Value());
+ m_R->set_R(m_ROFF.Value());
}
NETLIB_UPDATE(res_sw)
@@ -269,17 +269,17 @@ NETLIB_UPDATE(res_sw)
const nl_double R = state ? m_RON.Value() : m_ROFF.Value();
// We only need to update the net first if this is a time stepping net
- if (0) // m_R.m_P.net().as_analog().solver()->is_timestep())
+ if (0) // m_R->m_P.net().as_analog().solver()->is_timestep())
{
- m_R.update_dev();
- m_R.set_R(R);
- m_R.m_P.schedule_after(NLTIME_FROM_NS(1));
+ m_R->update_dev();
+ m_R->set_R(R);
+ m_R->m_P.schedule_after(NLTIME_FROM_NS(1));
}
else
{
- m_R.set_R(R);
- m_R.m_P.schedule_after(NLTIME_FROM_NS(1));
- //m_R.update_dev();
+ m_R->set_R(R);
+ m_R->m_P.schedule_after(NLTIME_FROM_NS(1));
+ //m_R->update_dev();
}
}
}
diff --git a/src/lib/netlist/devices/nld_system.h b/src/lib/netlist/devices/nld_system.h
index 7b9cb7298e5..674e81e7608 100644
--- a/src/lib/netlist/devices/nld_system.h
+++ b/src/lib/netlist/devices/nld_system.h
@@ -156,8 +156,8 @@ NETLIB_DEVICE_WITH_PARAMS(analog_input,
class NETLIB_NAME(gnd) : public device_t
{
public:
- NETLIB_NAME(gnd)()
- : device_t(GND) { }
+ NETLIB_NAME(gnd)(netlist_t &anetlist, const pstring &name)
+ : device_t(GND, anetlist, name) { }
virtual ~NETLIB_NAME(gnd)() {}
@@ -189,8 +189,8 @@ private:
class NETLIB_NAME(dummy_input) : public device_t
{
public:
- NETLIB_NAME(dummy_input)()
- : device_t(DUMMY) { }
+ NETLIB_NAME(dummy_input)(netlist_t &anetlist, const pstring &name)
+ : device_t(DUMMY, anetlist, name) { }
virtual ~NETLIB_NAME(dummy_input)() {}
@@ -221,8 +221,11 @@ private:
class NETLIB_NAME(frontier) : public device_t
{
public:
- NETLIB_NAME(frontier)()
- : device_t(DUMMY) { }
+ NETLIB_NAME(frontier)(netlist_t &anetlist, const pstring &name)
+ : device_t(DUMMY, anetlist, name),
+ m_RIN(netlist(), "m_RIN"),
+ m_ROUT(netlist(), "m_ROUT")
+ { }
virtual ~NETLIB_NAME(frontier)() {}
@@ -274,8 +277,8 @@ private:
class NETLIB_NAME(function) : public device_t
{
public:
- NETLIB_NAME(function)()
- : device_t() { }
+ NETLIB_NAME(function)(netlist_t &anetlist, const pstring &name)
+ : device_t(anetlist, name) { }
virtual ~NETLIB_NAME(function)() {}
@@ -319,15 +322,15 @@ private:
class NETLIB_NAME(res_sw) : public device_t
{
public:
- NETLIB_NAME(res_sw)()
- : device_t() { }
+ NETLIB_NAME(res_sw)(netlist_t &anetlist, const pstring &name)
+ : device_t(anetlist, name) { }
virtual ~NETLIB_NAME(res_sw)() {}
param_double_t m_RON;
param_double_t m_ROFF;
logic_input_t m_I;
- NETLIB_NAME(R) m_R;
+ NETLIB_SUB(R) m_R;
protected:
@@ -347,8 +350,8 @@ private:
class nld_base_proxy : public device_t
{
public:
- nld_base_proxy(logic_t *inout_proxied, core_terminal_t *proxy_inout)
- : device_t()
+ nld_base_proxy(netlist_t &anetlist, const pstring &name, logic_t *inout_proxied, core_terminal_t *proxy_inout)
+ : device_t(anetlist, name)
{
m_logic_family = inout_proxied->logic_family();
m_term_proxied = inout_proxied;
@@ -380,8 +383,8 @@ private:
class nld_a_to_d_proxy : public nld_base_proxy
{
public:
- nld_a_to_d_proxy(logic_input_t *in_proxied)
- : nld_base_proxy(in_proxied, &m_I)
+ nld_a_to_d_proxy(netlist_t &anetlist, const pstring &name, logic_input_t *in_proxied)
+ : nld_base_proxy(anetlist, name, in_proxied, &m_I)
{
}
@@ -427,8 +430,8 @@ public:
virtual logic_input_t &in() { return m_I; }
protected:
- nld_base_d_to_a_proxy(logic_output_t *out_proxied, core_terminal_t &proxy_out)
- : nld_base_proxy(out_proxied, &proxy_out)
+ nld_base_d_to_a_proxy(netlist_t &anetlist, const pstring &name, logic_output_t *out_proxied, core_terminal_t &proxy_out)
+ : nld_base_proxy(anetlist, name, out_proxied, &proxy_out)
{
}
@@ -445,9 +448,9 @@ private:
class nld_d_to_a_proxy : public nld_base_d_to_a_proxy
{
public:
- nld_d_to_a_proxy(logic_output_t *out_proxied)
- : nld_base_d_to_a_proxy(out_proxied, m_RV.m_P)
- , m_RV(TWOTERM)
+ nld_d_to_a_proxy(netlist_t &anetlist, const pstring &name, logic_output_t *out_proxied)
+ : nld_base_d_to_a_proxy(anetlist, name, out_proxied, m_RV.m_P)
+ , m_RV(TWOTERM, anetlist,"RV")
, m_last_state(-1)
, m_is_timestep(false)
{
@@ -482,14 +485,14 @@ public:
class wrapper : public device_t
{
public:
- wrapper(const pstring &dev_name) : device_t(), m_dev_name(dev_name) { }
- protected:
- virtual void init(netlist_t &anetlist, const pstring &aname) override
+ wrapper(const pstring &dev_name, netlist_t &anetlist, const pstring &name)
+ : device_t(anetlist, name), m_dev_name(dev_name)
{
- anetlist.setup().namespace_push(aname);
+ anetlist.setup().namespace_push(name);
anetlist.setup().include(m_dev_name);
anetlist.setup().namespace_pop();
}
+ protected:
void start() override { }
void reset() override { }
void update() override { }
@@ -497,10 +500,9 @@ public:
pstring m_dev_name;
};
- ATTR_COLD device_t *Create() override
+ ATTR_COLD device_t *Create(netlist_t &anetlist, const pstring &name) override
{
- device_t *r = palloc(wrapper(this->name()));
- return r;
+ return palloc(wrapper(this->name(), anetlist, name));
}
private:
diff --git a/src/lib/netlist/devices/nld_truthtable.h b/src/lib/netlist/devices/nld_truthtable.h
index d84e3b56a13..328cb5bf69e 100644
--- a/src/lib/netlist/devices/nld_truthtable.h
+++ b/src/lib/netlist/devices/nld_truthtable.h
@@ -17,8 +17,8 @@
class NETLIB_NAME(_name) : public nld_truthtable_t<_nIN, _nOUT, _state> \
{ \
public: \
- NETLIB_NAME(_name)() \
- : nld_truthtable_t<_nIN, _nOUT, _state>(&m_ttbl, m_desc) { } \
+ NETLIB_NAME(_name)(netlist_t &anetlist, const pstring &name) \
+ : nld_truthtable_t<_nIN, _nOUT, _state>(anetlist, name, &m_ttbl, m_desc) { }\
private: \
static truthtable_t m_ttbl; \
static const char *m_desc[]; \
@@ -100,8 +100,10 @@ public:
struct truthtable_t
{
- truthtable_t() : m_initialized(false),
- m_desc(m_NO, m_NI, has_state, &m_initialized, m_outs, m_timing, m_timing_nt) {}
+ truthtable_t()
+ : m_initialized(false),
+ m_desc(m_NO, m_NI, has_state,
+ &m_initialized, m_outs, m_timing, m_timing_nt) {}
bool m_initialized;
UINT32 m_outs[m_size];
UINT8 m_timing[m_size * m_NO];
@@ -109,8 +111,8 @@ public:
truthtable_desc_t m_desc;
};
- nld_truthtable_t(truthtable_t *ttbl, const char *desc[])
- : device_t(), m_last_state(0), m_ign(0), m_active(1), m_ttp(ttbl)
+ nld_truthtable_t(netlist_t &anetlist, const pstring &name, truthtable_t *ttbl, const char *desc[])
+ : device_t(anetlist, name), m_last_state(0), m_ign(0), m_active(1), m_ttp(ttbl)
{
while (*desc != nullptr && **desc != 0 )
{
@@ -120,8 +122,8 @@ public:
}
- nld_truthtable_t(truthtable_t *ttbl, const pstring_vector_t &desc)
- : device_t(), m_last_state(0), m_ign(0), m_active(1), m_ttp(ttbl)
+ nld_truthtable_t(netlist_t &anetlist, const pstring &name, truthtable_t *ttbl, const pstring_vector_t &desc)
+ : device_t(anetlist, name), m_last_state(0), m_ign(0), m_active(1), m_ttp(ttbl)
{
m_desc = desc;
}
@@ -321,10 +323,10 @@ public:
const pstring &def_param)
: netlist_base_factory_truthtable_t(name, classname, def_param) { }
- device_t *Create() override
+ device_t *Create(netlist_t &anetlist, const pstring &name) override
{
typedef nld_truthtable_t<m_NI, m_NO, has_state> tt_type;
- device_t *r = palloc(tt_type(&m_ttbl, m_desc));
+ device_t *r = palloc(tt_type(anetlist, name, &m_ttbl, m_desc));
r->set_logic_family(m_family);
//r->init(setup, name);
return r;
diff --git a/src/lib/netlist/nl_base.cpp b/src/lib/netlist/nl_base.cpp
index 3cd6f6ba645..8daedc1ff7e 100644
--- a/src/lib/netlist/nl_base.cpp
+++ b/src/lib/netlist/nl_base.cpp
@@ -38,9 +38,9 @@ public:
m_R_high = 130.0;
m_is_static = true;
}
- virtual devices::nld_base_d_to_a_proxy *create_d_a_proxy(logic_output_t *proxied) const override
+ virtual devices::nld_base_d_to_a_proxy *create_d_a_proxy(netlist_t &anetlist, const pstring &name, logic_output_t *proxied) const override
{
- return palloc(devices::nld_d_to_a_proxy(proxied));
+ return palloc(devices::nld_d_to_a_proxy(anetlist, name, proxied));
}
};
@@ -59,9 +59,9 @@ public:
m_R_high = 10.0;
m_is_static = true;
}
- virtual devices::nld_base_d_to_a_proxy *create_d_a_proxy(logic_output_t *proxied) const override
+ virtual devices::nld_base_d_to_a_proxy *create_d_a_proxy(netlist_t &anetlist, const pstring &name, logic_output_t *proxied) const override
{
- return palloc(devices::nld_d_to_a_proxy(proxied));
+ return palloc(devices::nld_d_to_a_proxy(anetlist, name, proxied));
}
};
@@ -389,7 +389,7 @@ ATTR_HOT void netlist_t::process_queue(const netlist_time &delta)
// net_core_device_t
// ----------------------------------------------------------------------------------------
-ATTR_COLD core_device_t::core_device_t(const family_t afamily)
+ATTR_COLD core_device_t::core_device_t(const family_t afamily, netlist_t &anetlist, const pstring &name)
: object_t(DEVICE, afamily), logic_family_t()
#if (NL_KEEP_STATISTICS)
, stat_total_time(0)
@@ -397,23 +397,9 @@ ATTR_COLD core_device_t::core_device_t(const family_t afamily)
, stat_call_count(0)
#endif
{
-}
-
-ATTR_COLD void core_device_t::init(netlist_t &anetlist, const pstring &name)
-{
if (logic_family() == nullptr)
set_logic_family(this->default_logic_family());
init_object(anetlist, name);
-
-#if (NL_PMF_TYPE == NL_PMF_TYPE_GNUC_PMF)
- void (core_device_t::* pFunc)() = &core_device_t::update;
- m_static_update = pFunc;
-#elif (NL_PMF_TYPE == NL_PMF_TYPE_GNUC_PMF_CONV)
- void (core_device_t::* pFunc)() = &core_device_t::update;
- m_static_update = reinterpret_cast<net_update_delegate>((this->*pFunc));
-#elif (NL_PMF_TYPE == NL_PMF_TYPE_INTERNAL)
- m_static_update = pmfp::get_mfp<net_update_delegate>(&core_device_t::update, this);
-#endif
}
ATTR_COLD core_device_t::~core_device_t()
@@ -425,6 +411,15 @@ ATTR_COLD void core_device_t::start_dev()
#if (NL_KEEP_STATISTICS)
netlist().m_started_devices.add(this, false);
#endif
+#if (NL_PMF_TYPE == NL_PMF_TYPE_GNUC_PMF)
+ void (core_device_t::* pFunc)() = &core_device_t::update;
+ m_static_update = pFunc;
+#elif (NL_PMF_TYPE == NL_PMF_TYPE_GNUC_PMF_CONV)
+ void (core_device_t::* pFunc)() = &core_device_t::update;
+ m_static_update = reinterpret_cast<net_update_delegate>((this->*pFunc));
+#elif (NL_PMF_TYPE == NL_PMF_TYPE_INTERNAL)
+ m_static_update = pmfp::get_mfp<net_update_delegate>(&core_device_t::update, this);
+#endif
start();
}
@@ -453,14 +448,14 @@ ATTR_HOT netlist_sig_t core_device_t::INPLOGIC_PASSIVE(logic_input_t &inp)
// device_t
// ----------------------------------------------------------------------------------------
-device_t::device_t()
- : core_device_t(GENERIC),
+device_t::device_t(netlist_t &anetlist, const pstring &name)
+ : core_device_t(GENERIC, anetlist, name),
m_terminals()
{
}
-device_t::device_t(const family_t afamily)
- : core_device_t(afamily),
+device_t::device_t(const family_t afamily, netlist_t &anetlist, const pstring &name)
+ : core_device_t(afamily, anetlist, name),
m_terminals()
{
}
@@ -475,15 +470,8 @@ ATTR_COLD setup_t &device_t::setup()
return netlist().setup();
}
-ATTR_COLD void device_t::init(netlist_t &anetlist, const pstring &name)
-{
- core_device_t::init(anetlist, name);
-}
-
-
-ATTR_COLD void device_t::register_sub(const pstring &name, device_t &dev)
+ATTR_COLD void device_t::register_sub_p(device_t &dev)
{
- dev.init(netlist(), this->name() + "." + name);
// subdevices always first inherit the logic family of the parent
dev.set_logic_family(this->logic_family());
dev.start_dev();
diff --git a/src/lib/netlist/nl_base.h b/src/lib/netlist/nl_base.h
index a0c66a258af..9e762554835 100644
--- a/src/lib/netlist/nl_base.h
+++ b/src/lib/netlist/nl_base.h
@@ -185,6 +185,7 @@ typedef unsigned int netlist_sig_t;
#define NETLIB_NAMESPACE_DEVICES_END() }}
#define NETLIB_NAME(_chip) nld_ ## _chip
+#define NETLIB_SUB(_chip) std::unique_ptr< nld_ ## _chip >
#define NETLIB_NAME_STR_S(_s) # _s
#define NETLIB_NAME_STR(_chip) NETLIB_NAME_STR_S(nld_ ## _chip)
@@ -207,8 +208,8 @@ typedef unsigned int netlist_sig_t;
class _name : public _pclass \
{ \
public: \
- _name() \
- : _pclass() { } \
+ _name(netlist_t &anetlist, const pstring &name) \
+ : _pclass(anetlist, name) { } \
protected: \
_extra \
ATTR_HOT void update() override; \
@@ -230,8 +231,8 @@ typedef unsigned int netlist_sig_t;
class NETLIB_NAME(_name) : public device_t \
{ \
public: \
- NETLIB_NAME(_name) () \
- : device_t() \
+ NETLIB_NAME(_name) (netlist_t &anetlist, const pstring &name) \
+ : device_t(anetlist, name) \
{ } \
/*protected:*/ \
ATTR_HOT void update() override; \
@@ -326,7 +327,8 @@ namespace netlist
public:
logic_family_desc_t() : m_is_static(false) {}
virtual ~logic_family_desc_t() {}
- virtual devices::nld_base_d_to_a_proxy *create_d_a_proxy(logic_output_t *proxied) const = 0;
+ virtual devices::nld_base_d_to_a_proxy *create_d_a_proxy(netlist_t &anetlist, const pstring &name,
+ logic_output_t *proxied) const = 0;
nl_double m_low_thresh_V;
nl_double m_high_thresh_V;
@@ -1025,11 +1027,10 @@ namespace netlist
typedef pvector_t<core_device_t *> list_t;
- ATTR_COLD core_device_t(const family_t afamily);
+ ATTR_COLD core_device_t(const family_t afamily, netlist_t &anetlist, const pstring &name);
virtual ~core_device_t();
- virtual void init(netlist_t &anetlist, const pstring &name);
ATTR_HOT virtual void update_param() {}
ATTR_HOT void update_dev()
@@ -1117,16 +1118,28 @@ namespace netlist
P_PREVENT_COPYING(device_t)
public:
- ATTR_COLD device_t();
- ATTR_COLD device_t(const family_t afamily);
+ ATTR_COLD device_t(netlist_t &anetlist, const pstring &name);
+ ATTR_COLD device_t(const family_t afamily, netlist_t &anetlist, const pstring &name);
virtual ~device_t();
- virtual void init(netlist_t &anetlist, const pstring &name) override;
-
ATTR_COLD setup_t &setup();
- ATTR_COLD void register_sub(const pstring &name, device_t &dev);
+ template<class C>
+ void register_sub(const pstring &name, std::unique_ptr<C> &dev)
+ {
+ dev.reset(new C(this->netlist(), this->name() + "." + name));
+
+ register_sub_p(*dev);
+ }
+
+#if 1
+ void register_sub(device_t &dev)
+ {
+ register_sub_p(dev);
+ }
+#endif
+
ATTR_COLD void register_subalias(const pstring &name, core_terminal_t &term);
ATTR_COLD void register_subalias(const pstring &name, const pstring &aliased);
ATTR_COLD void register_terminal(const pstring &name, terminal_t &port);
@@ -1151,6 +1164,7 @@ namespace netlist
ATTR_COLD void register_param(const pstring &sname, C &param, const T initialVal);
private:
+ ATTR_COLD void register_sub_p(device_t &dev);
};
diff --git a/src/lib/netlist/nl_factory.cpp b/src/lib/netlist/nl_factory.cpp
index 397aa756ea3..76ef3c03016 100644
--- a/src/lib/netlist/nl_factory.cpp
+++ b/src/lib/netlist/nl_factory.cpp
@@ -71,19 +71,19 @@ void factory_list_t::error(const pstring &s)
m_setup.log().fatal("{1}", s);
}
-device_t *factory_list_t::new_device_by_name(const pstring &name)
+device_t *factory_list_t::new_device_by_name(const pstring &devname, netlist_t &anetlist, const pstring &name)
{
- base_factory_t *f = factory_by_name(name);
- return f->Create();
+ base_factory_t *f = factory_by_name(devname);
+ return f->Create(anetlist, name);
}
-base_factory_t * factory_list_t::factory_by_name(const pstring &name)
+base_factory_t * factory_list_t::factory_by_name(const pstring &devname)
{
- if (contains(name))
- return (*this)[name];
+ if (contains(devname))
+ return (*this)[devname];
else
{
- m_setup.log().fatal("Class {1} not found!\n", name);
+ m_setup.log().fatal("Class {1} not found!\n", devname);
return nullptr; // appease code analysis
}
}
diff --git a/src/lib/netlist/nl_factory.h b/src/lib/netlist/nl_factory.h
index f9977ae414a..642ccb3e64a 100644
--- a/src/lib/netlist/nl_factory.h
+++ b/src/lib/netlist/nl_factory.h
@@ -31,7 +31,7 @@ namespace netlist
virtual ~base_factory_t() {}
- virtual device_t *Create() = 0;
+ virtual device_t *Create(netlist_t &anetlist, const pstring &name) = 0;
ATTR_COLD const pstring &name() const { return m_name; }
ATTR_COLD const pstring &classname() const { return m_classname; }
@@ -54,10 +54,9 @@ namespace netlist
const pstring &def_param)
: base_factory_t(name, classname, def_param) { }
- ATTR_COLD device_t *Create() override
+ ATTR_COLD device_t *Create(netlist_t &anetlist, const pstring &name) override
{
- device_t *r = palloc(_device_class);
- //r->init(setup, name);
+ device_t *r = palloc(_device_class(anetlist, name));
return r;
}
};
@@ -83,8 +82,9 @@ namespace netlist
}
//ATTR_COLD device_t *new_device_by_classname(const pstring &classname) const;
- ATTR_COLD device_t *new_device_by_name(const pstring &name);
- ATTR_COLD base_factory_t * factory_by_name(const pstring &name);
+ // FIXME: legacy, should use factory_by_name
+ ATTR_COLD device_t *new_device_by_name(const pstring &devname, netlist_t &anetlist, const pstring &name);
+ ATTR_COLD base_factory_t * factory_by_name(const pstring &devname);
private:
void error(const pstring &s);
diff --git a/src/lib/netlist/nl_parser.cpp b/src/lib/netlist/nl_parser.cpp
index bcbc788dbce..5521608a111 100644
--- a/src/lib/netlist/nl_parser.cpp
+++ b/src/lib/netlist/nl_parser.cpp
@@ -360,8 +360,8 @@ void parser_t::device(const pstring &dev_type)
pstring devname = get_identifier();
- dev = f->Create();
- m_setup.register_dev(dev, devname);
+ dev = f->Create(m_setup.netlist(), m_setup.build_fqn(devname));
+ m_setup.register_dev(dev);
m_setup.log().debug("Parser: IC: {1}\n", devname);
diff --git a/src/lib/netlist/nl_setup.cpp b/src/lib/netlist/nl_setup.cpp
index 3e347356b5a..e158a5c8673 100644
--- a/src/lib/netlist/nl_setup.cpp
+++ b/src/lib/netlist/nl_setup.cpp
@@ -103,15 +103,11 @@ void setup_t::namespace_pop()
}
-device_t *setup_t::register_dev(device_t *dev, const pstring &name)
+device_t *setup_t::register_dev(device_t *dev)
{
- pstring fqn = build_fqn(name);
-
- dev->init(netlist(), fqn);
-
for (auto & d : netlist().m_devices)
if (d->name() == dev->name())
- log().fatal("Error adding {1} to device list. Duplicate name \n", name);
+ log().fatal("Error adding {1} to device list. Duplicate name \n", d->name());
netlist().m_devices.push_back(dev);
return dev;
@@ -136,11 +132,11 @@ device_t *setup_t::register_dev(const pstring &classname, const pstring &name)
}
else
{
- device_t *dev = factory().new_device_by_name(classname);
+ device_t *dev = factory().new_device_by_name(classname, netlist(), build_fqn(name));
//device_t *dev = factory().new_device_by_classname(classname);
if (dev == nullptr)
log().fatal("Class {1} not found!\n", classname);
- return register_dev(dev, name);
+ return register_dev(dev);
}
}
@@ -477,11 +473,12 @@ devices::nld_base_proxy *setup_t::get_d_a_proxy(core_terminal_t &out)
if (proxy == nullptr)
{
// create a new one ...
- devices::nld_base_d_to_a_proxy *new_proxy = out_cast.logic_family()->create_d_a_proxy(&out_cast);
pstring x = pfmt("proxy_da_{1}_{2}")(out.name())(m_proxy_cnt);
+ devices::nld_base_d_to_a_proxy *new_proxy =
+ out_cast.logic_family()->create_d_a_proxy(netlist(), x, &out_cast);
m_proxy_cnt++;
- register_dev(new_proxy, x);
+ register_dev(new_proxy);
new_proxy->start_dev();
/* connect all existing terminals to new net */
@@ -506,12 +503,12 @@ void setup_t::connect_input_output(core_terminal_t &in, core_terminal_t &out)
if (out.isFamily(terminal_t::ANALOG) && in.isFamily(terminal_t::LOGIC))
{
logic_input_t &incast = dynamic_cast<logic_input_t &>(in);
- devices::nld_a_to_d_proxy *proxy = palloc(devices::nld_a_to_d_proxy(&incast));
- incast.set_proxy(proxy);
pstring x = pfmt("proxy_ad_{1}_{2}")(in.name())( m_proxy_cnt);
+ devices::nld_a_to_d_proxy *proxy = palloc(devices::nld_a_to_d_proxy(netlist(), x, &incast));
+ incast.set_proxy(proxy);
m_proxy_cnt++;
- register_dev(proxy, x);
+ register_dev(proxy);
proxy->start_dev();
proxy->m_Q.net().register_con(in);
@@ -545,12 +542,12 @@ void setup_t::connect_terminal_input(terminal_t &term, core_terminal_t &inp)
{
logic_input_t &incast = dynamic_cast<logic_input_t &>(inp);
log().debug("connect_terminal_input: connecting proxy\n");
- devices::nld_a_to_d_proxy *proxy = palloc(devices::nld_a_to_d_proxy(&incast));
- incast.set_proxy(proxy);
pstring x = pfmt("proxy_ad_{1}_{2}")(inp.name())(m_proxy_cnt);
+ devices::nld_a_to_d_proxy *proxy = palloc(devices::nld_a_to_d_proxy(netlist(), x, &incast));
+ incast.set_proxy(proxy);
m_proxy_cnt++;
- register_dev(proxy, x);
+ register_dev(proxy);
proxy->start_dev();
connect_terminals(term, proxy->m_I);
@@ -829,9 +826,9 @@ void setup_t::start_devices()
pstring_vector_t loglist(env, ":");
for (pstring ll : loglist)
{
- device_t *nc = factory().new_device_by_name("LOG");
pstring name = "log_" + ll;
- register_dev(nc, name);
+ device_t *nc = factory().new_device_by_name("LOG", netlist(), name);
+ register_dev(nc);
register_link(name + ".I", ll);
log().debug(" dynamic link {1}: <{2}>\n",ll, name);
}
@@ -863,9 +860,10 @@ class logic_family_std_proxy_t : public logic_family_desc_t
{
public:
logic_family_std_proxy_t() { }
- virtual devices::nld_base_d_to_a_proxy *create_d_a_proxy(logic_output_t *proxied) const override
+ virtual devices::nld_base_d_to_a_proxy *create_d_a_proxy(netlist_t &anetlist,
+ const pstring &name, logic_output_t *proxied) const override
{
- return palloc(devices::nld_d_to_a_proxy(proxied));
+ return palloc(devices::nld_d_to_a_proxy(anetlist, name, proxied));
}
};
diff --git a/src/lib/netlist/nl_setup.h b/src/lib/netlist/nl_setup.h
index 7313ecabcad..147def65405 100644
--- a/src/lib/netlist/nl_setup.h
+++ b/src/lib/netlist/nl_setup.h
@@ -137,7 +137,7 @@ namespace netlist
pstring build_fqn(const pstring &obj_name) const;
- device_t *register_dev(device_t *dev, const pstring &name);
+ device_t *register_dev(device_t *dev);
device_t *register_dev(const pstring &classname, const pstring &name);
void remove_dev(const pstring &name);
diff --git a/src/lib/netlist/prg/nltool.cpp b/src/lib/netlist/prg/nltool.cpp
index 62a8af91b5a..99b395cb268 100644
--- a/src/lib/netlist/prg/nltool.cpp
+++ b/src/lib/netlist/prg/nltool.cpp
@@ -304,8 +304,7 @@ static void listdevices()
pstring out = pfmt("{1} {2}(<id>")(f->classname(),"-20")(f->name());
pstring terms("");
- netlist::device_t *d = f->Create();
- d->init(nt, pfmt("dummy{1}")(i));
+ netlist::device_t *d = f->Create(nt.setup().netlist(), pfmt("dummy{1}")(i));
d->start_dev();
// get the list of terminals ...
diff --git a/src/lib/netlist/solver/nld_matrix_solver.h b/src/lib/netlist/solver/nld_matrix_solver.h
index 89dec8eee65..ccea7dc065e 100644
--- a/src/lib/netlist/solver/nld_matrix_solver.h
+++ b/src/lib/netlist/solver/nld_matrix_solver.h
@@ -84,7 +84,8 @@ public:
DESCENDING
};
- matrix_solver_t(const eSortType sort, const solver_parameters_t *params);
+ matrix_solver_t(netlist_t &anetlist, const pstring &name,
+ const eSortType sort, const solver_parameters_t *params);
virtual ~matrix_solver_t();
void setup(analog_net_t::list_t &nets) { vsetup(nets); }
diff --git a/src/lib/netlist/solver/nld_ms_direct.h b/src/lib/netlist/solver/nld_ms_direct.h
index d6896cbe97d..bfbd0a66c7a 100644
--- a/src/lib/netlist/solver/nld_ms_direct.h
+++ b/src/lib/netlist/solver/nld_ms_direct.h
@@ -121,8 +121,8 @@ class matrix_solver_direct_t: public matrix_solver_t
friend class matrix_solver_t;
public:
- matrix_solver_direct_t(const solver_parameters_t *params, const int size);
- matrix_solver_direct_t(const eSortType sort, const solver_parameters_t *params, const int size);
+ matrix_solver_direct_t(netlist_t &anetlist, const pstring &name, const solver_parameters_t *params, const int size);
+ matrix_solver_direct_t(netlist_t &anetlist, const pstring &name, const eSortType sort, const solver_parameters_t *params, const int size);
virtual ~matrix_solver_direct_t();
@@ -415,8 +415,9 @@ inline int matrix_solver_direct_t<m_N, _storage_N>::vsolve_non_dynamic(const boo
}
template <unsigned m_N, unsigned _storage_N>
-matrix_solver_direct_t<m_N, _storage_N>::matrix_solver_direct_t(const solver_parameters_t *params, const int size)
-: matrix_solver_t(ASCENDING, params)
+matrix_solver_direct_t<m_N, _storage_N>::matrix_solver_direct_t(netlist_t &anetlist, const pstring &name,
+ const solver_parameters_t *params, const int size)
+: matrix_solver_t(anetlist, name, ASCENDING, params)
, m_dim(size)
{
#if (NL_USE_DYNAMIC_ALLOCATION)
@@ -432,8 +433,9 @@ matrix_solver_direct_t<m_N, _storage_N>::matrix_solver_direct_t(const solver_par
}
template <unsigned m_N, unsigned _storage_N>
-matrix_solver_direct_t<m_N, _storage_N>::matrix_solver_direct_t(const eSortType sort, const solver_parameters_t *params, const int size)
-: matrix_solver_t(sort, params)
+matrix_solver_direct_t<m_N, _storage_N>::matrix_solver_direct_t(netlist_t &anetlist, const pstring &name,
+ const eSortType sort, const solver_parameters_t *params, const int size)
+: matrix_solver_t(anetlist, name, sort, params)
, m_dim(size)
{
#if (NL_USE_DYNAMIC_ALLOCATION)
diff --git a/src/lib/netlist/solver/nld_ms_direct1.h b/src/lib/netlist/solver/nld_ms_direct1.h
index de359e5133f..a8e5baf8395 100644
--- a/src/lib/netlist/solver/nld_ms_direct1.h
+++ b/src/lib/netlist/solver/nld_ms_direct1.h
@@ -17,8 +17,8 @@ class matrix_solver_direct1_t: public matrix_solver_direct_t<1,1>
{
public:
- matrix_solver_direct1_t(const solver_parameters_t *params)
- : matrix_solver_direct_t<1, 1>(params, 1)
+ matrix_solver_direct1_t(netlist_t &anetlist, const pstring &name, const solver_parameters_t *params)
+ : matrix_solver_direct_t<1, 1>(anetlist, name, params, 1)
{}
virtual int vsolve_non_dynamic(const bool newton_raphson) override;
diff --git a/src/lib/netlist/solver/nld_ms_direct2.h b/src/lib/netlist/solver/nld_ms_direct2.h
index d6e3d665a9f..646291e6e55 100644
--- a/src/lib/netlist/solver/nld_ms_direct2.h
+++ b/src/lib/netlist/solver/nld_ms_direct2.h
@@ -17,8 +17,8 @@ class matrix_solver_direct2_t: public matrix_solver_direct_t<2,2>
{
public:
- matrix_solver_direct2_t(const solver_parameters_t *params)
- : matrix_solver_direct_t<2, 2>(params, 2)
+ matrix_solver_direct2_t(netlist_t &anetlist, const pstring &name, const solver_parameters_t *params)
+ : matrix_solver_direct_t<2, 2>(anetlist, name, params, 2)
{}
virtual int vsolve_non_dynamic(const bool newton_raphson) override;
diff --git a/src/lib/netlist/solver/nld_ms_gcr.h b/src/lib/netlist/solver/nld_ms_gcr.h
index 7670e036b8e..5d439496efa 100644
--- a/src/lib/netlist/solver/nld_ms_gcr.h
+++ b/src/lib/netlist/solver/nld_ms_gcr.h
@@ -30,8 +30,9 @@ class matrix_solver_GCR_t: public matrix_solver_t
{
public:
- matrix_solver_GCR_t(const solver_parameters_t *params, int size)
- : matrix_solver_t(matrix_solver_t::ASCENDING, params)
+ matrix_solver_GCR_t(netlist_t &anetlist, const pstring &name,
+ const solver_parameters_t *params, int size)
+ : matrix_solver_t(anetlist, name, matrix_solver_t::ASCENDING, params)
, m_dim(size)
, m_proc(nullptr)
{
diff --git a/src/lib/netlist/solver/nld_ms_gmres.h b/src/lib/netlist/solver/nld_ms_gmres.h
index 8663da061d6..9e5542f2a42 100644
--- a/src/lib/netlist/solver/nld_ms_gmres.h
+++ b/src/lib/netlist/solver/nld_ms_gmres.h
@@ -26,8 +26,8 @@ class matrix_solver_GMRES_t: public matrix_solver_direct_t<m_N, _storage_N>
{
public:
- matrix_solver_GMRES_t(const solver_parameters_t *params, int size)
- : matrix_solver_direct_t<m_N, _storage_N>(matrix_solver_t::ASCENDING, params, size)
+ matrix_solver_GMRES_t(netlist_t &anetlist, const pstring &name, const solver_parameters_t *params, int size)
+ : matrix_solver_direct_t<m_N, _storage_N>(anetlist, name, matrix_solver_t::ASCENDING, params, size)
, m_use_iLU_preconditioning(true)
, m_use_more_precise_stop_condition(false)
, m_accuracy_mult(1.0)
diff --git a/src/lib/netlist/solver/nld_ms_sm.h b/src/lib/netlist/solver/nld_ms_sm.h
index f38ee5a5783..c5d0e1105b6 100644
--- a/src/lib/netlist/solver/nld_ms_sm.h
+++ b/src/lib/netlist/solver/nld_ms_sm.h
@@ -52,7 +52,8 @@ class matrix_solver_sm_t: public matrix_solver_t
public:
- matrix_solver_sm_t(const solver_parameters_t *params, const int size);
+ matrix_solver_sm_t(netlist_t &anetlist, const pstring &name,
+ const solver_parameters_t *params, const int size);
virtual ~matrix_solver_sm_t();
@@ -324,8 +325,9 @@ inline int matrix_solver_sm_t<m_N, _storage_N>::vsolve_non_dynamic(const bool ne
}
template <unsigned m_N, unsigned _storage_N>
-matrix_solver_sm_t<m_N, _storage_N>::matrix_solver_sm_t(const solver_parameters_t *params, const int size)
-: matrix_solver_t(NOSORT, params)
+matrix_solver_sm_t<m_N, _storage_N>::matrix_solver_sm_t(netlist_t &anetlist, const pstring &name,
+ const solver_parameters_t *params, const int size)
+: matrix_solver_t(anetlist, name, NOSORT, params)
, m_dim(size)
{
#if (NL_USE_DYNAMIC_ALLOCATION)
diff --git a/src/lib/netlist/solver/nld_ms_sor.h b/src/lib/netlist/solver/nld_ms_sor.h
index f2df5f1237f..8d210cd79f7 100644
--- a/src/lib/netlist/solver/nld_ms_sor.h
+++ b/src/lib/netlist/solver/nld_ms_sor.h
@@ -24,8 +24,8 @@ class matrix_solver_SOR_t: public matrix_solver_direct_t<m_N, _storage_N>
{
public:
- matrix_solver_SOR_t(const solver_parameters_t *params, int size)
- : matrix_solver_direct_t<m_N, _storage_N>(matrix_solver_t::ASCENDING, params, size)
+ matrix_solver_SOR_t(netlist_t &anetlist, const pstring &name, const solver_parameters_t *params, int size)
+ : matrix_solver_direct_t<m_N, _storage_N>(anetlist, name, matrix_solver_t::ASCENDING, params, size)
, m_lp_fact(0)
{
}
diff --git a/src/lib/netlist/solver/nld_ms_sor_mat.h b/src/lib/netlist/solver/nld_ms_sor_mat.h
index eb59a7a94ac..99a66afd221 100644
--- a/src/lib/netlist/solver/nld_ms_sor_mat.h
+++ b/src/lib/netlist/solver/nld_ms_sor_mat.h
@@ -27,8 +27,8 @@ class matrix_solver_SOR_mat_t: public matrix_solver_direct_t<m_N, _storage_N>
public:
- matrix_solver_SOR_mat_t(const solver_parameters_t *params, int size)
- : matrix_solver_direct_t<m_N, _storage_N>(matrix_solver_t::DESCENDING, params, size)
+ matrix_solver_SOR_mat_t(netlist_t &anetlist, const pstring &name, const solver_parameters_t *params, int size)
+ : matrix_solver_direct_t<m_N, _storage_N>(anetlist, name, matrix_solver_t::DESCENDING, params, size)
, m_omega(params->m_sor)
, m_lp_fact(0)
, m_gs_fail(0)
diff --git a/src/lib/netlist/solver/nld_ms_w.h b/src/lib/netlist/solver/nld_ms_w.h
index 89f83dea6cc..e976fcf3184 100644
--- a/src/lib/netlist/solver/nld_ms_w.h
+++ b/src/lib/netlist/solver/nld_ms_w.h
@@ -58,7 +58,7 @@ class matrix_solver_w_t: public matrix_solver_t
friend class matrix_solver_t;
public:
- matrix_solver_w_t(const solver_parameters_t *params, const int size);
+ matrix_solver_w_t(netlist_t &anetlist, const pstring &name, const solver_parameters_t *params, const int size);
virtual ~matrix_solver_w_t();
@@ -389,8 +389,9 @@ inline int matrix_solver_w_t<m_N, _storage_N>::vsolve_non_dynamic(const bool new
}
template <unsigned m_N, unsigned _storage_N>
-matrix_solver_w_t<m_N, _storage_N>::matrix_solver_w_t(const solver_parameters_t *params, const int size)
-: matrix_solver_t(NOSORT, params)
+matrix_solver_w_t<m_N, _storage_N>::matrix_solver_w_t(netlist_t &anetlist, const pstring &name,
+ const solver_parameters_t *params, const int size)
+: matrix_solver_t(anetlist, name, NOSORT, params)
,m_cnt(0)
, m_dim(size)
{
diff --git a/src/lib/netlist/solver/nld_solver.cpp b/src/lib/netlist/solver/nld_solver.cpp
index 9fa0ee16c60..525cce76eee 100644
--- a/src/lib/netlist/solver/nld_solver.cpp
+++ b/src/lib/netlist/solver/nld_solver.cpp
@@ -94,8 +94,10 @@ ATTR_COLD void terms_t::set_pointers()
// matrix_solver
// ----------------------------------------------------------------------------------------
-ATTR_COLD matrix_solver_t::matrix_solver_t(const eSortType sort, const solver_parameters_t *params)
-: m_stat_calculations(0),
+ATTR_COLD matrix_solver_t::matrix_solver_t(netlist_t &anetlist, const pstring &name,
+ const eSortType sort, const solver_parameters_t *params)
+: device_t(anetlist, name),
+ m_stat_calculations(0),
m_stat_newton_raphson(0),
m_stat_vsolver_calls(0),
m_iterative_fail(0),
@@ -707,10 +709,11 @@ NETLIB_UPDATE(solver)
template <int m_N, int _storage_N>
matrix_solver_t * NETLIB_NAME(solver)::create_solver(int size, const bool use_specific)
{
+ pstring solvername = pfmt("Solver_{1}")(m_mat_solvers.size());
if (use_specific && m_N == 1)
- return palloc(matrix_solver_direct1_t(&m_params));
+ return palloc(matrix_solver_direct1_t(netlist(), solvername, &m_params));
else if (use_specific && m_N == 2)
- return palloc(matrix_solver_direct2_t(&m_params));
+ return palloc(matrix_solver_direct2_t(netlist(), solvername, &m_params));
else
{
if (size >= m_gs_threshold)
@@ -718,39 +721,39 @@ matrix_solver_t * NETLIB_NAME(solver)::create_solver(int size, const bool use_sp
if (pstring("SOR_MAT").equals(m_iterative_solver))
{
typedef matrix_solver_SOR_mat_t<m_N,_storage_N> solver_sor_mat;
- return palloc(solver_sor_mat(&m_params, size));
+ return palloc(solver_sor_mat(netlist(), solvername, &m_params, size));
}
else if (pstring("MAT_CR").equals(m_iterative_solver))
{
typedef matrix_solver_GCR_t<m_N,_storage_N> solver_mat;
- return palloc(solver_mat(&m_params, size));
+ return palloc(solver_mat(netlist(), solvername, &m_params, size));
}
else if (pstring("MAT").equals(m_iterative_solver))
{
typedef matrix_solver_direct_t<m_N,_storage_N> solver_mat;
- return palloc(solver_mat(&m_params, size));
+ return palloc(solver_mat(netlist(), solvername, &m_params, size));
}
else if (pstring("SM").equals(m_iterative_solver))
{
/* Sherman-Morrison Formula */
typedef matrix_solver_sm_t<m_N,_storage_N> solver_mat;
- return palloc(solver_mat(&m_params, size));
+ return palloc(solver_mat(netlist(), solvername, &m_params, size));
}
else if (pstring("W").equals(m_iterative_solver))
{
/* Woodbury Formula */
typedef matrix_solver_w_t<m_N,_storage_N> solver_mat;
- return palloc(solver_mat(&m_params, size));
+ return palloc(solver_mat(netlist(), solvername, &m_params, size));
}
else if (pstring("SOR").equals(m_iterative_solver))
{
typedef matrix_solver_SOR_t<m_N,_storage_N> solver_GS;
- return palloc(solver_GS(&m_params, size));
+ return palloc(solver_GS(netlist(), solvername, &m_params, size));
}
else if (pstring("GMRES").equals(m_iterative_solver))
{
typedef matrix_solver_GMRES_t<m_N,_storage_N> solver_GMRES;
- return palloc(solver_GMRES(&m_params, size));
+ return palloc(solver_GMRES(netlist(), solvername, &m_params, size));
}
else
{
@@ -761,7 +764,7 @@ matrix_solver_t * NETLIB_NAME(solver)::create_solver(int size, const bool use_sp
else
{
typedef matrix_solver_direct_t<m_N,_storage_N> solver_D;
- return palloc(solver_D(&m_params, size));
+ return palloc(solver_D(netlist(), solvername, &m_params, size));
}
}
}
@@ -900,7 +903,7 @@ ATTR_COLD void NETLIB_NAME(solver)::post_start()
break;
}
- register_sub(pfmt("Solver_{1}")(m_mat_solvers.size()), *ms);
+ register_sub(*ms);
ms->setup(grp);
diff --git a/src/lib/netlist/solver/nld_solver.h b/src/lib/netlist/solver/nld_solver.h
index 7d11086edac..969b378e5f4 100644
--- a/src/lib/netlist/solver/nld_solver.h
+++ b/src/lib/netlist/solver/nld_solver.h
@@ -54,8 +54,8 @@ class matrix_solver_t;
class NETLIB_NAME(solver) : public device_t
{
public:
- NETLIB_NAME(solver)()
- : device_t() { }
+ NETLIB_NAME(solver)(netlist_t &anetlist, const pstring &name)
+ : device_t(anetlist, name) { }
virtual ~NETLIB_NAME(solver)();