diff options
author | 2020-07-28 20:44:04 +0200 | |
---|---|---|
committer | 2020-07-28 20:44:07 +0200 | |
commit | c7359e0aea20d2b251d3a53e4b2a551aae8652f0 (patch) | |
tree | 80dd694b00f1eb14a5d3705143ea96a465f242a7 | |
parent | 179d03ac96d5caa5f91229fbdc87bad151c50ec6 (diff) |
netlist: Fix an issue during proxy hookup.
* Add cd4053 to netlist.lua
* Recreated nld_devinc.h
-rw-r--r-- | scripts/src/netlist.lua | 2 | ||||
-rw-r--r-- | src/lib/netlist/devices/nld_devinc.h | 31 | ||||
-rw-r--r-- | src/lib/netlist/nl_setup.cpp | 28 |
3 files changed, 41 insertions, 20 deletions
diff --git a/scripts/src/netlist.lua b/scripts/src/netlist.lua index 1fb67963c29..1f4c8cc1d85 100644 --- a/scripts/src/netlist.lua +++ b/scripts/src/netlist.lua @@ -140,6 +140,8 @@ project "netlist" MAME_DIR .. "src/lib/netlist/devices/nld_4013.h", MAME_DIR .. "src/lib/netlist/devices/nld_4020.cpp", MAME_DIR .. "src/lib/netlist/devices/nld_4020.h", + MAME_DIR .. "src/lib/netlist/devices/nld_4053.cpp", + MAME_DIR .. "src/lib/netlist/devices/nld_4053.h", MAME_DIR .. "src/lib/netlist/devices/nld_4066.cpp", MAME_DIR .. "src/lib/netlist/devices/nld_4066.h", MAME_DIR .. "src/lib/netlist/devices/nld_4316.cpp", diff --git a/src/lib/netlist/devices/nld_devinc.h b/src/lib/netlist/devices/nld_devinc.h index 7b27d60608d..7ff94019366 100644 --- a/src/lib/netlist/devices/nld_devinc.h +++ b/src/lib/netlist/devices/nld_devinc.h @@ -923,7 +923,7 @@ NET_REGISTER_DEVEXT(MM5837_DIP, __VA_ARGS__) // --------------------------------------------------------------------- -// Source: src/lib/netlist/macro/nlm_ttl74xx.cpp +// Source: TTL74XX_lib // --------------------------------------------------------------------- // usage : TTL_7400_GATE(name) #define TTL_7400_GATE(...) \ @@ -1104,6 +1104,9 @@ #define DM9312(...) \ NET_REGISTER_DEVEXT(DM9312, __VA_ARGS__) +// --------------------------------------------------------------------- +// Source: parser: TTL74XX_lib +// --------------------------------------------------------------------- // usage : TTL_7400_DIP(name) #define TTL_7400_DIP(...) \ NET_REGISTER_DEVEXT(TTL_7400_DIP, __VA_ARGS__) @@ -1245,12 +1248,16 @@ NET_REGISTER_DEVEXT(DM9312_DIP, __VA_ARGS__) // --------------------------------------------------------------------- -// Source: src/lib/netlist/macro/nlm_cd4xxx.cpp +// Source: CD4XXX_lib // --------------------------------------------------------------------- // usage : CD4001_GATE(name) #define CD4001_GATE(...) \ NET_REGISTER_DEVEXT(CD4001_GATE, __VA_ARGS__) +// usage : CD4011_GATE(name) +#define CD4011_GATE(...) \ + NET_REGISTER_DEVEXT(CD4011_GATE, __VA_ARGS__) + // usage : CD4069_GATE(name) #define CD4069_GATE(...) \ NET_REGISTER_DEVEXT(CD4069_GATE, __VA_ARGS__) @@ -1259,6 +1266,9 @@ #define CD4070_GATE(...) \ NET_REGISTER_DEVEXT(CD4070_GATE, __VA_ARGS__) +// --------------------------------------------------------------------- +// Source: parser: CD4XXX_lib +// --------------------------------------------------------------------- // usage : CD4001_DIP(name) #define CD4001_DIP(...) \ NET_REGISTER_DEVEXT(CD4001_DIP, __VA_ARGS__) @@ -1287,10 +1297,6 @@ #define CD4024_DIP(...) \ NET_REGISTER_DEVEXT(CD4024_DIP, __VA_ARGS__) -// usage : CD4016_DIP(name) -#define CD4016_DIP(...) \ - NET_REGISTER_DEVEXT(CD4016_DIP, __VA_ARGS__) - // usage : CD4053_DIP(name) #define CD4053_DIP(...) \ NET_REGISTER_DEVEXT(CD4053_DIP, __VA_ARGS__) @@ -1299,6 +1305,10 @@ #define CD4066_DIP(...) \ NET_REGISTER_DEVEXT(CD4066_DIP, __VA_ARGS__) +// usage : CD4016_DIP(name) +#define CD4016_DIP(...) \ + NET_REGISTER_DEVEXT(CD4016_DIP, __VA_ARGS__) + // usage : CD4316_DIP(name) #define CD4316_DIP(...) \ NET_REGISTER_DEVEXT(CD4316_DIP, __VA_ARGS__) @@ -1308,7 +1318,7 @@ NET_REGISTER_DEVEXT(CD4538_DIP, __VA_ARGS__) // --------------------------------------------------------------------- -// Source: src/lib/netlist/macro/nlm_opamp.cpp +// Source: parser: OPAMP_lib // --------------------------------------------------------------------- // usage : opamp_layout_4_4_11(name) #define opamp_layout_4_4_11(...) \ @@ -1383,12 +1393,15 @@ NET_REGISTER_DEVEXT(LM3900, __VA_ARGS__) // --------------------------------------------------------------------- -// Source: src/lib/netlist/macro/nlm_other.cpp +// Source: otheric_lib // --------------------------------------------------------------------- // usage : MC14584B_GATE(name) #define MC14584B_GATE(...) \ NET_REGISTER_DEVEXT(MC14584B_GATE, __VA_ARGS__) +// --------------------------------------------------------------------- +// Source: parser: otheric_lib +// --------------------------------------------------------------------- // usage : MC14584B_DIP(name) #define MC14584B_DIP(...) \ NET_REGISTER_DEVEXT(MC14584B_DIP, __VA_ARGS__) @@ -1398,7 +1411,7 @@ NET_REGISTER_DEVEXT(NE566_DIP, __VA_ARGS__) // --------------------------------------------------------------------- -// Source: src/lib/netlist/macro/nlm_roms.cpp +// Source: parser: ROMS_lib // --------------------------------------------------------------------- // usage : PROM_82S123_DIP(name) #define PROM_82S123_DIP(...) \ diff --git a/src/lib/netlist/nl_setup.cpp b/src/lib/netlist/nl_setup.cpp index ffddffeb594..a83723e00d6 100644 --- a/src/lib/netlist/nl_setup.cpp +++ b/src/lib/netlist/nl_setup.cpp @@ -733,9 +733,8 @@ devices::nld_base_proxy *setup_t::get_a_d_proxy(detail::core_terminal_t &inp) return iter_proxy->second; log().debug("connect_terminal_input: connecting proxy\n"); - pstring x = plib::pfmt("proxy_ad_{1}_{2}")(inp.name())(m_proxy_cnt); - auto new_proxy = incast.logic_family()->create_a_d_proxy(m_nlstate, x, &incast); - //auto new_proxy = plib::owned_ptr<devices::nld_a_to_d_proxy>::Create(netlist(), x, &incast); + auto new_proxy = incast.logic_family()->create_a_d_proxy(m_nlstate, + plib::pfmt("proxy_ad_{1}_{2}")(inp.name())(m_proxy_cnt), &incast); auto *ret(new_proxy.get()); @@ -748,20 +747,25 @@ devices::nld_base_proxy *setup_t::get_a_d_proxy(detail::core_terminal_t &inp) if (inp.has_net()) { - for (auto & p : inp.net().core_terms()) + for (detail::core_terminal_t * p : inp.net().core_terms()) { - p->clear_net(); // de-link from all nets ... - if (!connect(ret->proxy_term(), *p)) + // inp may already belongs to the logic net. Thus skip it here. + // It will be removed by the clear further down. + if (p != &inp) { - log().fatal(MF_CONNECTING_1_TO_2( - ret->proxy_term().name(), (*p).name())); - throw nl_exception(MF_CONNECTING_1_TO_2( - ret->proxy_term().name(), (*p).name())); - + p->clear_net(); // de-link from all nets ... + if (!connect(ret->proxy_term(), *p)) + { + log().fatal(MF_CONNECTING_1_TO_2( + ret->proxy_term().name(), (*p).name())); + throw nl_exception(MF_CONNECTING_1_TO_2( + ret->proxy_term().name(), (*p).name())); + } } } inp.net().core_terms().clear(); // clear the list } + inp.clear_net(); add_terminal(ret->out().net(), inp); m_nlstate.register_device(new_proxy->name(), std::move(new_proxy)); return ret; @@ -1012,7 +1016,9 @@ bool setup_t::connect(detail::core_terminal_t &t1_in, detail::core_terminal_t &t ret = connect_input_input(t1, t2); } else + { ret = false; + } return ret; } |