trunk/src/emu/netlist/nl_setup.c
| r31092 | r31093 | |
| 444 | 444 | } |
| 445 | 445 | else |
| 446 | 446 | { |
| 447 | | out.net().register_con(in); |
| 447 | if (in.has_net()) |
| 448 | out.net().merge_net(&in.net()); |
| 449 | else |
| 450 | out.net().register_con(in); |
| 448 | 451 | } |
| 449 | 452 | } |
| 450 | 453 | |
| r31092 | r31093 | |
| 482 | 485 | { |
| 483 | 486 | if (out.isFamily(netlist_terminal_t::ANALOG)) |
| 484 | 487 | { |
| 488 | NL_VERBOSE_OUT(("connect_terminal_output: %s %s\n", in.name().cstr(), out.name().cstr())); |
| 485 | 489 | /* no proxy needed, just merge existing terminal net */ |
| 486 | 490 | if (in.has_net()) |
| 487 | 491 | out.net().merge_net(&in.net()); |
| r31092 | r31093 | |
| 660 | 664 | |
| 661 | 665 | |
| 662 | 666 | netlist().log("looking for two terms connected to rail nets ...\n"); |
| 667 | // FIXME: doesn't find internal devices. This needs to be more clever |
| 663 | 668 | for (int i=0; i < netlist().m_devices.count(); i++) |
| 664 | 669 | { |
| 665 | 670 | NETLIB_NAME(twoterm) *t = dynamic_cast<NETLIB_NAME(twoterm) *>(netlist().m_devices[i]); |
| r31092 | r31093 | |
| 693 | 698 | for (int i=0; i < ll.count(); i++) |
| 694 | 699 | { |
| 695 | 700 | NL_VERBOSE_OUT(("%d: <%s>\n",i, ll[i].cstr())); |
| 696 | | printf("%d: <%s>\n",i, ll[i].cstr()); |
| 701 | NL_VERBOSE_OUT(("%d: <%s>\n",i, ll[i].cstr())); |
| 697 | 702 | netlist_device_t *nc = factory().new_device_by_classname("nld_log", *this); |
| 698 | 703 | pstring name = "log_" + ll[i]; |
| 699 | 704 | register_dev(nc, name); |
trunk/src/emu/netlist/nl_base.c
| r31092 | r31093 | |
| 57 | 57 | { |
| 58 | 58 | NL_VERBOSE_OUT(("on_pre_save\n")); |
| 59 | 59 | m_qsize = this->count(); |
| 60 | | NL_VERBOSE_OUT(("current time %f qsize %d\n", m_netlist.time().as_double(), m_qsize)); |
| 60 | NL_VERBOSE_OUT(("current time %f qsize %d\n", netlist().time().as_double(), m_qsize)); |
| 61 | 61 | for (int i = 0; i < m_qsize; i++ ) |
| 62 | 62 | { |
| 63 | 63 | m_times[i] = this->listptr()[i].exec_time().as_raw(); |
| r31092 | r31093 | |
| 72 | 72 | void netlist_queue_t::on_post_load() |
| 73 | 73 | { |
| 74 | 74 | this->clear(); |
| 75 | | NL_VERBOSE_OUT(("current time %f qsize %d\n", m_netlist.time().as_double(), m_qsize)); |
| 75 | NL_VERBOSE_OUT(("current time %f qsize %d\n", netlist().time().as_double(), m_qsize)); |
| 76 | 76 | for (int i = 0; i < m_qsize; i++ ) |
| 77 | 77 | { |
| 78 | 78 | netlist_net_t *n = netlist().find_net(&(m_name[i][0])); |
| r31092 | r31093 | |
| 334 | 334 | ATTR_COLD netlist_core_device_t::netlist_core_device_t(const family_t afamily) |
| 335 | 335 | : netlist_object_t(DEVICE, afamily) |
| 336 | 336 | { |
| 337 | | assert((afamily == GENERIC && logic_family() != NULL) || (afamily != GENERIC && logic_family() == NULL)); |
| 338 | 337 | } |
| 339 | 338 | |
| 340 | 339 | ATTR_COLD void netlist_core_device_t::init(netlist_base_t &anetlist, const pstring &name) |
| r31092 | r31093 | |
| 781 | 780 | |
| 782 | 781 | ATTR_HOT void netlist_terminal_t::schedule_solve() |
| 783 | 782 | { |
| 784 | | net().as_analog().solver()->update_forced(); |
| 783 | // FIXME: Remove this after we found a way to remove *ALL* twoterms connected to railnets only. |
| 784 | if (net().as_analog().solver() != NULL) |
| 785 | net().as_analog().solver()->update_forced(); |
| 785 | 786 | } |
| 786 | 787 | |
| 787 | 788 | ATTR_HOT void netlist_terminal_t::schedule_after(const netlist_time &after) |
| 788 | 789 | { |
| 789 | | net().as_analog().solver()->update_after(after); |
| 790 | // FIXME: Remove this after we found a way to remove *ALL* twoterms connected to railnets only. |
| 791 | if (net().as_analog().solver() != NULL) |
| 792 | net().as_analog().solver()->update_after(after); |
| 790 | 793 | } |
| 791 | 794 | |
| 792 | 795 | ATTR_COLD void netlist_terminal_t::reset() |