diff options
Diffstat (limited to 'src/lib/netlist/nl_setup.cpp')
-rw-r--r-- | src/lib/netlist/nl_setup.cpp | 34 |
1 files changed, 14 insertions, 20 deletions
diff --git a/src/lib/netlist/nl_setup.cpp b/src/lib/netlist/nl_setup.cpp index 35807c000bb..6b554a701ee 100644 --- a/src/lib/netlist/nl_setup.cpp +++ b/src/lib/netlist/nl_setup.cpp @@ -18,6 +18,7 @@ #include "devices/net_lib.h" #include "devices/nld_system.h" #include "analog/nld_twoterm.h" +#include "solver/nld_solver.h" static NETLIST_START(base) TTL_INPUT(ttlhigh, 1) @@ -215,22 +216,22 @@ void setup_t::register_object(device_t &dev, const pstring &name, object_t &obj) case terminal_t::OUTPUT: { core_terminal_t &term = dynamic_cast<core_terminal_t &>(obj); - if (obj.isType(terminal_t::OUTPUT)) + if (term.isType(terminal_t::OUTPUT)) { - if (obj.isFamily(terminal_t::LOGIC)) + if (term.is_logic()) { logic_output_t &port = dynamic_cast<logic_output_t &>(term); port.set_logic_family(dev.logic_family()); dynamic_cast<logic_output_t &>(term).init_object(dev, dev.name() + "." + name); } - else if (obj.isFamily(terminal_t::ANALOG)) + else if (term.is_analog()) dynamic_cast<analog_output_t &>(term).init_object(dev, dev.name() + "." + name); else log().fatal("Error adding {1} {2} to terminal list, neither LOGIC nor ANALOG\n", objtype_as_astr(term), term.name()); } - else if (obj.isType(terminal_t::INPUT)) + else if (term.isType(terminal_t::INPUT)) { - if (obj.isFamily(terminal_t::LOGIC)) + if (term.is_logic()) { logic_input_t &port = dynamic_cast<logic_input_t &>(term); port.set_logic_family(dev.logic_family()); @@ -487,7 +488,7 @@ param_t *setup_t::find_param(const pstring ¶m_in, bool required) // FIXME avoid dynamic cast here devices::nld_base_proxy *setup_t::get_d_a_proxy(core_terminal_t &out) { - nl_assert(out.isFamily(terminal_t::LOGIC)); + nl_assert(out.is_logic()); logic_output_t &out_cast = dynamic_cast<logic_output_t &>(out); devices::nld_base_proxy *proxy = out_cast.get_proxy(); @@ -522,7 +523,7 @@ devices::nld_base_proxy *setup_t::get_d_a_proxy(core_terminal_t &out) 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)) + if (out.is_analog() && in.is_logic()) { logic_input_t &incast = dynamic_cast<logic_input_t &>(in); pstring x = pfmt("proxy_ad_{1}_{2}")(in.name())( m_proxy_cnt); @@ -537,7 +538,7 @@ void setup_t::connect_input_output(core_terminal_t &in, core_terminal_t &out) out.net().register_con(proxy->m_I); } - else if (out.isFamily(terminal_t::LOGIC) && in.isFamily(terminal_t::ANALOG)) + else if (out.is_logic() && in.is_analog()) { devices::nld_base_proxy *proxy = get_d_a_proxy(out); @@ -556,11 +557,11 @@ void setup_t::connect_input_output(core_terminal_t &in, core_terminal_t &out) void setup_t::connect_terminal_input(terminal_t &term, core_terminal_t &inp) { - if (inp.isFamily(terminal_t::ANALOG)) + if (inp.is_analog()) { connect_terminals(inp, term); } - else if (inp.isFamily(terminal_t::LOGIC)) + else if (inp.is_logic()) { logic_input_t &incast = dynamic_cast<logic_input_t &>(inp); log().debug("connect_terminal_input: connecting proxy\n"); @@ -588,7 +589,7 @@ void setup_t::connect_terminal_input(terminal_t &term, core_terminal_t &inp) void setup_t::connect_terminal_output(terminal_t &in, core_terminal_t &out) { - if (out.isFamily(terminal_t::ANALOG)) + if (out.is_analog()) { log().debug("connect_terminal_output: {1} {2}\n", in.name(), out.name()); /* no proxy needed, just merge existing terminal net */ @@ -597,7 +598,7 @@ void setup_t::connect_terminal_output(terminal_t &in, core_terminal_t &out) else out.net().register_con(in); } - else if (out.isFamily(terminal_t::LOGIC)) + else if (out.is_logic()) { log().debug("connect_terminal_output: connecting proxy\n"); devices::nld_base_proxy *proxy = get_d_a_proxy(out); @@ -640,7 +641,7 @@ void setup_t::connect_terminals(core_terminal_t &t1, core_terminal_t &t2) static core_terminal_t &resolve_proxy(core_terminal_t &term) { - if (term.isFamily(core_terminal_t::LOGIC)) + if (term.is_logic()) { logic_t &out = dynamic_cast<logic_t &>(term); if (out.has_proxy()) @@ -853,13 +854,6 @@ void setup_t::start_devices() } } - /* create devices */ - - for (auto & e : m_device_factory) - { - auto dev = std::shared_ptr<device_t>(e.second->Create(netlist(), e.first)); - register_dev_s(dev); - } netlist().start(); } |