diff options
author | 2013-10-09 00:48:35 +0000 | |
---|---|---|
committer | 2013-10-09 00:48:35 +0000 | |
commit | 962a003665cb8ba1823883f952dba74c97238703 (patch) | |
tree | 497a880f11c25c8646852f38e117e246f75a21a7 /src/emu/machine/netlist.c | |
parent | 96c3c97df64a34a235296cfd864cd258ebd67b7a (diff) |
More netlist cleanups
Diffstat (limited to 'src/emu/machine/netlist.c')
-rw-r--r-- | src/emu/machine/netlist.c | 60 |
1 files changed, 18 insertions, 42 deletions
diff --git a/src/emu/machine/netlist.c b/src/emu/machine/netlist.c index c63deb1f92f..b92f68e2ef3 100644 --- a/src/emu/machine/netlist.c +++ b/src/emu/machine/netlist.c @@ -146,7 +146,7 @@ public: skipws(); devname = getname(','); - dev = net_create_device_by_name(dev_name, &m_setup, devname); + dev = net_create_device_by_name(dev_name, m_setup, devname); m_setup.register_dev(dev); skipws(); val = eval_param(); @@ -165,7 +165,7 @@ public: skipws(); devname = getname2(',', ')'); - dev = net_create_device_by_name(dev_type, &m_setup, devname); + dev = net_create_device_by_name(dev_type, m_setup, devname); m_setup.register_dev(dev); skipws(); VERBOSE_OUT(("Parser: IC: %s\n", devname)); @@ -300,7 +300,8 @@ private: class netdev_a_to_d_proxy : public net_device_t { public: - netdev_a_to_d_proxy(net_input_t &in_proxied) : net_device_t() + netdev_a_to_d_proxy(netlist_setup_t &setup, const char *name, net_input_t &in_proxied) + : net_device_t(setup, name) { assert_always(in_proxied.object_type(SIGNAL_MASK) == SIGNAL_DIGITAL, "Digital signal expected"); m_I.m_high_thresh_V = in_proxied.m_high_thresh_V; @@ -367,9 +368,10 @@ NETLIB_UPDATE_PARAM(netdev_analog_const) netlist_base_t::netlist_base_t() - //m_output_list(ttl_list_t<output_t *>(2048)), - //: m_divisor(32), m_gatedelay(100), m_clockfreq(1000000) - : m_div(1024) + : m_mainclock(NULL), + m_time_ps(NLTIME_FROM_MS(0)), + m_rem(0), + m_div(1024) { } @@ -636,8 +638,7 @@ void netlist_setup_t::resolve_inputs(void) { // fatalerror("connecting analog output %s with %s\n", out.netdev()->name(), in->netdev()->name()); // fatalerror("connecting analog output %s with %s\n", out.netdev()->name(), in->netdev()->name()); - netdev_a_to_d_proxy *proxy = new netdev_a_to_d_proxy(*in); - proxy->init(this, "abc"); + netdev_a_to_d_proxy *proxy = new netdev_a_to_d_proxy(*this, "abc", *in); proxy->start(); in->set_output(proxy->GETINPPTR(proxy->m_Q)); //Next check would not work with dynamic activation @@ -668,7 +669,7 @@ void netlist_setup_t::resolve_inputs(void) net_device_t *dev = entry->object(); if (dynamic_cast<netdev_mainclock*>(dev) != NULL) { - m_netlist.m_mainclock = dynamic_cast<netdev_mainclock*>(dev); + m_netlist.set_mainclock_dev(dynamic_cast<netdev_mainclock*>(dev)); } } @@ -759,28 +760,25 @@ ATTR_COLD void net_core_device_t::register_subdevice(net_core_device_t &subdev) // ---------------------------------------------------------------------------------------- -net_device_t::net_device_t() -: net_core_device_t(), m_variable_input_count(false) +net_device_t::net_device_t(netlist_setup_t &setup, const char *name) + : net_core_device_t(), + m_setup(setup), + m_variable_input_count(false) { + init_core(&setup.netlist(), name); } net_device_t::~net_device_t() { } -ATTR_COLD void net_device_t::init(netlist_setup_t *setup, const char *name) -{ - m_setup = setup; - init_core(&setup->netlist(), name); -} - void net_device_t::register_output(const net_core_device_t &dev, const char *name, net_output_t &port) { astring temp = dev.name(); temp.cat("."); temp.cat(name); port.set_netdev(&dev); - m_setup->register_output(temp, &port); + m_setup.register_output(temp, &port); } void net_device_t::register_output(const char *name, net_output_t &port) @@ -795,7 +793,7 @@ void net_device_t::register_input(net_core_device_t &dev, const char *name, net_ temp.cat(name); inp.init(&dev, type); m_inputs.add(core_strdup(temp.cstr())); - m_setup->register_input(temp, &inp); + m_setup.register_input(temp, &inp); } void net_device_t::register_input(const char *name, net_input_t &inp, net_input_t::net_input_state type) @@ -820,7 +818,7 @@ void net_device_t::register_param(net_core_device_t &dev, const char *name, net_ { param.set_netdev(dev); param.initial(initialVal); - m_setup->register_param(name, ¶m); + m_setup.register_param(name, ¶m); } void net_device_t::register_param(const char *name, net_param_t ¶m, double initialVal) @@ -909,28 +907,6 @@ ATTR_HOT inline void net_output_t::update_devs() m_last_Q = m_Q; } -ATTR_COLD void net_output_t::update_devs_force() -{ - net_input_t **s = m_cons; - int i = m_num_cons; - - m_Q = m_new_Q; - m_Q_analog = m_new_Q_analog; - while (i-- > 0) - { - if (((*s)->state() & net_input_t::INP_STATE_ACTIVE) != 0) -#if USE_DELEGATES - (*s)->h(); -#else - (*s)->netdev()->update(); -#endif - s++; - } - - m_in_queue = 2; /* mark as taken ... */ - m_last_Q = m_Q; -} - ATTR_COLD void net_output_t::register_con(net_input_t &input) { int i; |