trunk/src/emu/netlist/nl_base.c
| r30982 | r30983 | |
| 460 | 460 | , m_time(netlist_time::zero) |
| 461 | 461 | , m_active(0) |
| 462 | 462 | , m_in_queue(2) |
| 463 | | , m_last_Analog(0.0) |
| 464 | 463 | , m_cur_Analog(0.0) |
| 465 | 464 | { |
| 466 | 465 | }; |
| r30982 | r30983 | |
| 488 | 487 | if (m_active == 1 && m_in_queue > 0) |
| 489 | 488 | { |
| 490 | 489 | m_last_Q = m_cur_Q; |
| 491 | | m_last_Analog = m_cur_Analog; // FIXME: Needed here ? |
| 492 | 490 | railterminal().netdev().inc_active(); |
| 493 | 491 | m_cur_Q = m_new_Q; |
| 494 | 492 | } |
| r30982 | r30983 | |
| 504 | 502 | else |
| 505 | 503 | { |
| 506 | 504 | m_cur_Q = m_last_Q = m_new_Q; |
| 507 | | m_last_Analog = m_cur_Analog; |
| 508 | 505 | m_in_queue = 2; |
| 509 | 506 | } |
| 510 | 507 | } |
| r30982 | r30983 | |
| 543 | 540 | save(NAME(m_time)); |
| 544 | 541 | save(NAME(m_active)); |
| 545 | 542 | save(NAME(m_in_queue)); |
| 546 | | save(NAME(m_last_Analog)); |
| 547 | 543 | save(NAME(m_cur_Analog)); |
| 548 | 544 | save(NAME(m_last_Q)); |
| 549 | 545 | save(NAME(m_cur_Q)); |
| r30982 | r30983 | |
| 593 | 589 | break; |
| 594 | 590 | } |
| 595 | 591 | m_last_Q = m_cur_Q; |
| 596 | | m_last_Analog = m_cur_Analog; |
| 597 | 592 | } |
| 598 | 593 | |
| 599 | 594 | ATTR_COLD void netlist_net_t::reset() |
| r30982 | r30983 | |
| 605 | 600 | m_last_Q = 0; |
| 606 | 601 | m_new_Q = 0; |
| 607 | 602 | m_cur_Q = 0; |
| 608 | | m_last_Analog = 0.0; |
| 609 | 603 | m_cur_Analog = 0.0; |
| 610 | 604 | |
| 611 | 605 | /* rebuild m_list */ |
| r30982 | r30983 | |
| 865 | 859 | { |
| 866 | 860 | this->set_net(m_my_net); |
| 867 | 861 | |
| 868 | | net().as_analog().m_last_Analog = 0.97; |
| 869 | 862 | net().as_analog().m_cur_Analog = 0.98; |
| 870 | 863 | } |
| 871 | 864 | |
| 872 | 865 | ATTR_COLD void netlist_analog_output_t::initial(const double val) |
| 873 | 866 | { |
| 874 | | net().as_analog().m_cur_Analog = val * 0.98; |
| 875 | 867 | net().as_analog().m_cur_Analog = val * 0.99; |
| 876 | 868 | } |
| 877 | 869 | |