summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--scripts/src/netlist.lua2
-rw-r--r--src/lib/netlist/devices/nld_devinc.h31
-rw-r--r--src/lib/netlist/nl_setup.cpp28
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;
}