From 3a95d1e4fd4b5d0ccdb48cd6db9f90f2cd65f08d Mon Sep 17 00:00:00 2001 From: couriersud Date: Tue, 29 Sep 2020 22:35:18 +0200 Subject: netlist: Convert driver filenames to lower case. --- scripts/src/netlist.lua | 12 +- src/lib/netlist/buildVS/netlistlib.vcxproj | 12 +- src/lib/netlist/buildVS/netlistlib.vcxproj.filters | 28 ++--- src/lib/netlist/core/setup.h | 4 +- src/lib/netlist/devices/nld_2102A.cpp | 94 --------------- src/lib/netlist/devices/nld_2102a.cpp | 94 +++++++++++++++ src/lib/netlist/devices/nld_82S115.cpp | 97 ---------------- src/lib/netlist/devices/nld_82S16.cpp | 127 --------------------- src/lib/netlist/devices/nld_82s115.cpp | 97 ++++++++++++++++ src/lib/netlist/devices/nld_82s16.cpp | 127 +++++++++++++++++++++ .../netlist/macro/modules/nlmod_ICL8038_DIP.cpp | 61 ---------- src/lib/netlist/macro/modules/nlmod_NE556_DIP.cpp | 24 ---- src/lib/netlist/macro/modules/nlmod_RTEST.cpp | 12 -- .../netlist/macro/modules/nlmod_icl8038_dip.cpp | 61 ++++++++++ src/lib/netlist/macro/modules/nlmod_ne556_dip.cpp | 24 ++++ src/lib/netlist/macro/modules/nlmod_rtest.cpp | 12 ++ src/lib/netlist/nl_base.cpp | 6 +- src/lib/netlist/nl_setup.cpp | 2 +- src/lib/netlist/plib/poptions.h | 10 +- 19 files changed, 453 insertions(+), 451 deletions(-) delete mode 100644 src/lib/netlist/devices/nld_2102A.cpp create mode 100755 src/lib/netlist/devices/nld_2102a.cpp delete mode 100644 src/lib/netlist/devices/nld_82S115.cpp delete mode 100644 src/lib/netlist/devices/nld_82S16.cpp create mode 100755 src/lib/netlist/devices/nld_82s115.cpp create mode 100755 src/lib/netlist/devices/nld_82s16.cpp delete mode 100644 src/lib/netlist/macro/modules/nlmod_ICL8038_DIP.cpp delete mode 100644 src/lib/netlist/macro/modules/nlmod_NE556_DIP.cpp delete mode 100644 src/lib/netlist/macro/modules/nlmod_RTEST.cpp create mode 100755 src/lib/netlist/macro/modules/nlmod_icl8038_dip.cpp create mode 100755 src/lib/netlist/macro/modules/nlmod_ne556_dip.cpp create mode 100755 src/lib/netlist/macro/modules/nlmod_rtest.cpp diff --git a/scripts/src/netlist.lua b/scripts/src/netlist.lua index f695f298da0..ff21a35cde3 100644 --- a/scripts/src/netlist.lua +++ b/scripts/src/netlist.lua @@ -131,7 +131,7 @@ project "netlist" MAME_DIR .. "src/lib/netlist/devices/net_lib.cpp", MAME_DIR .. "src/lib/netlist/devices/net_lib.h", MAME_DIR .. "src/lib/netlist/devices/nld_9316_base.hxx", - MAME_DIR .. "src/lib/netlist/devices/nld_2102A.cpp", + MAME_DIR .. "src/lib/netlist/devices/nld_2102a.cpp", MAME_DIR .. "src/lib/netlist/devices/nld_tms4800.cpp", MAME_DIR .. "src/lib/netlist/devices/nld_4006.cpp", MAME_DIR .. "src/lib/netlist/devices/nld_4013.cpp", @@ -173,8 +173,8 @@ project "netlist" MAME_DIR .. "src/lib/netlist/devices/nld_74393.cpp", MAME_DIR .. "src/lib/netlist/devices/nld_74365.cpp", MAME_DIR .. "src/lib/netlist/devices/nld_74ls629.cpp", - MAME_DIR .. "src/lib/netlist/devices/nld_82S16.cpp", - MAME_DIR .. "src/lib/netlist/devices/nld_82S115.cpp", + MAME_DIR .. "src/lib/netlist/devices/nld_82s16.cpp", + MAME_DIR .. "src/lib/netlist/devices/nld_82s115.cpp", MAME_DIR .. "src/lib/netlist/devices/nld_8277.cpp", MAME_DIR .. "src/lib/netlist/devices/nld_9310.cpp", MAME_DIR .. "src/lib/netlist/devices/nld_9316.cpp", @@ -205,9 +205,9 @@ project "netlist" MAME_DIR .. "src/lib/netlist/macro/nlm_otheric_lib.cpp", MAME_DIR .. "src/lib/netlist/macro/nlm_roms_lib.cpp", - MAME_DIR .. "src/lib/netlist/macro/modules/nlmod_RTEST.cpp", - MAME_DIR .. "src/lib/netlist/macro/modules/nlmod_NE556_DIP.cpp", - MAME_DIR .. "src/lib/netlist/macro/modules/nlmod_ICL8038_DIP.cpp", + MAME_DIR .. "src/lib/netlist/macro/modules/nlmod_rtest.cpp", + MAME_DIR .. "src/lib/netlist/macro/modules/nlmod_ne556_dip.cpp", + MAME_DIR .. "src/lib/netlist/macro/modules/nlmod_icl8038_dip.cpp", MAME_DIR .. "src/lib/netlist/generated/static_solvers.cpp", MAME_DIR .. "src/lib/netlist/generated/nld_devinc.h", diff --git a/src/lib/netlist/buildVS/netlistlib.vcxproj b/src/lib/netlist/buildVS/netlistlib.vcxproj index 85a6087fbf6..1344d71ba50 100755 --- a/src/lib/netlist/buildVS/netlistlib.vcxproj +++ b/src/lib/netlist/buildVS/netlistlib.vcxproj @@ -114,7 +114,7 @@ - + @@ -160,8 +160,8 @@ - - + + @@ -179,9 +179,9 @@ - - - + + + diff --git a/src/lib/netlist/buildVS/netlistlib.vcxproj.filters b/src/lib/netlist/buildVS/netlistlib.vcxproj.filters index cb55a2d862e..68df009f9ec 100755 --- a/src/lib/netlist/buildVS/netlistlib.vcxproj.filters +++ b/src/lib/netlist/buildVS/netlistlib.vcxproj.filters @@ -87,9 +87,6 @@ Source Files - - Source Files - Source Files @@ -129,9 +126,6 @@ Source Files - - Source Files - Source Files @@ -189,9 +183,6 @@ Source Files - - Source Files - Source Files @@ -291,9 +282,6 @@ Source Files - - Source Files - Source Files @@ -303,10 +291,22 @@ Source Files - + + Source Files + + + Source Files + + + Source Files + + + Source Files + + Source Files - + Source Files diff --git a/src/lib/netlist/core/setup.h b/src/lib/netlist/core/setup.h index ba783c52130..1c8fc5742f9 100644 --- a/src/lib/netlist/core/setup.h +++ b/src/lib/netlist/core/setup.h @@ -304,8 +304,9 @@ namespace netlist { public: - explicit source_pattern_t(const pstring &pat) + explicit source_pattern_t(const pstring &pat, bool force_lowercase) : m_pattern(pat) + , m_force_lowercase(force_lowercase) { } @@ -314,6 +315,7 @@ namespace netlist private: pstring m_pattern; + bool m_force_lowercase; }; class source_mem_t : public source_netlist_t diff --git a/src/lib/netlist/devices/nld_2102A.cpp b/src/lib/netlist/devices/nld_2102A.cpp deleted file mode 100644 index 91c7c6b7ee0..00000000000 --- a/src/lib/netlist/devices/nld_2102A.cpp +++ /dev/null @@ -1,94 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Ryan Holtz -/* - * nld_2102A.cpp - * - * 2102: 1024 x 1-bit Static RAM - * - * +--------------+ - * A6 |1 ++ 16| A7 - * A5 |2 15| A8 - * RWQ |3 14| A9 - * A1 |4 82S16 13| CEQ - * A2 |5 12| DO - * A3 |6 11| DI - * A4 |7 10| VCC - * A0 |8 9| GND - * +--------------+ - * - * - * Naming conventions follow Intel datasheet - * - */ - -#include "nl_base.h" - -#define ADDR2BYTE(a) ((a) >> 3) -#define ADDR2BIT(a) ((a) & 0x7) - -namespace netlist -{ - namespace devices - { - NETLIB_OBJECT(2102A) - { - NETLIB_CONSTRUCTOR(2102A) - , m_A(*this, {"A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9" }, NETLIB_DELEGATE(inputs)) - , m_CEQ(*this, "CEQ", NETLIB_DELEGATE(inputs)) - , m_RWQ(*this, "RWQ", NETLIB_DELEGATE(inputs)) - , m_DI(*this, "DI", NETLIB_DELEGATE(inputs)) - , m_DO(*this, "DO") - , m_ram(*this, "m_ram", 0) - , m_RAM(*this, "m_RAM", &m_ram[0]) - , m_power_pins(*this) - { - } - - NETLIB_RESETI() - { - m_RAM.set(&m_ram[0]); - for (std::size_t i=0; i<128; i++) - m_ram[i] = 0; - } - - NETLIB_HANDLERI(inputs) - { - netlist_time max_delay = NLTIME_FROM_NS(350); - - if (!m_CEQ()) - { - unsigned a = 0; - for (std::size_t i=0; i<10; i++) - { - a |= (m_A[i]() << i); - } - const unsigned byte = ADDR2BYTE(a); - const unsigned bit = ADDR2BIT(a); - - if (!m_RWQ()) - { - m_ram[byte] &= ~(static_cast(1) << bit); - m_ram[byte] |= (static_cast(m_DI()) << bit); - } - - m_DO.push((m_ram[byte] >> bit) & 1, max_delay); - } - } - - private: - object_array_t m_A; - logic_input_t m_CEQ; - logic_input_t m_RWQ; - logic_input_t m_DI; - - logic_output_t m_DO; - - state_container> m_ram; // 1024x1 bits - param_ptr_t m_RAM; - nld_power_pins m_power_pins; - }; - - NETLIB_DEVICE_IMPL(2102A, "RAM_2102A", "+CEQ,+A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+RWQ,+DI,@VCC,@GND") - - } //namespace devices -} // namespace netlist diff --git a/src/lib/netlist/devices/nld_2102a.cpp b/src/lib/netlist/devices/nld_2102a.cpp new file mode 100755 index 00000000000..91c7c6b7ee0 --- /dev/null +++ b/src/lib/netlist/devices/nld_2102a.cpp @@ -0,0 +1,94 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +/* + * nld_2102A.cpp + * + * 2102: 1024 x 1-bit Static RAM + * + * +--------------+ + * A6 |1 ++ 16| A7 + * A5 |2 15| A8 + * RWQ |3 14| A9 + * A1 |4 82S16 13| CEQ + * A2 |5 12| DO + * A3 |6 11| DI + * A4 |7 10| VCC + * A0 |8 9| GND + * +--------------+ + * + * + * Naming conventions follow Intel datasheet + * + */ + +#include "nl_base.h" + +#define ADDR2BYTE(a) ((a) >> 3) +#define ADDR2BIT(a) ((a) & 0x7) + +namespace netlist +{ + namespace devices + { + NETLIB_OBJECT(2102A) + { + NETLIB_CONSTRUCTOR(2102A) + , m_A(*this, {"A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9" }, NETLIB_DELEGATE(inputs)) + , m_CEQ(*this, "CEQ", NETLIB_DELEGATE(inputs)) + , m_RWQ(*this, "RWQ", NETLIB_DELEGATE(inputs)) + , m_DI(*this, "DI", NETLIB_DELEGATE(inputs)) + , m_DO(*this, "DO") + , m_ram(*this, "m_ram", 0) + , m_RAM(*this, "m_RAM", &m_ram[0]) + , m_power_pins(*this) + { + } + + NETLIB_RESETI() + { + m_RAM.set(&m_ram[0]); + for (std::size_t i=0; i<128; i++) + m_ram[i] = 0; + } + + NETLIB_HANDLERI(inputs) + { + netlist_time max_delay = NLTIME_FROM_NS(350); + + if (!m_CEQ()) + { + unsigned a = 0; + for (std::size_t i=0; i<10; i++) + { + a |= (m_A[i]() << i); + } + const unsigned byte = ADDR2BYTE(a); + const unsigned bit = ADDR2BIT(a); + + if (!m_RWQ()) + { + m_ram[byte] &= ~(static_cast(1) << bit); + m_ram[byte] |= (static_cast(m_DI()) << bit); + } + + m_DO.push((m_ram[byte] >> bit) & 1, max_delay); + } + } + + private: + object_array_t m_A; + logic_input_t m_CEQ; + logic_input_t m_RWQ; + logic_input_t m_DI; + + logic_output_t m_DO; + + state_container> m_ram; // 1024x1 bits + param_ptr_t m_RAM; + nld_power_pins m_power_pins; + }; + + NETLIB_DEVICE_IMPL(2102A, "RAM_2102A", "+CEQ,+A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+A9,+RWQ,+DI,@VCC,@GND") + + } //namespace devices +} // namespace netlist diff --git a/src/lib/netlist/devices/nld_82S115.cpp b/src/lib/netlist/devices/nld_82S115.cpp deleted file mode 100644 index f1e49bd9f83..00000000000 --- a/src/lib/netlist/devices/nld_82S115.cpp +++ /dev/null @@ -1,97 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Ryan Holtz -/* - * nld_82S115.cpp - * - * 82S115: 4K-bit TTL bipolar PROM (512 x 8) - * - * +--------------+ - * A3 |1 ++ 24| VCC - * A4 |2 23| A2 - * A5 |3 22| A1 - * A6 |4 82S115 21| A0 - * A7 |5 20| CE1Q - * A8 |6 19| CE2 - * O1 |7 18| STROBE - * O2 |8 17| O8 - * O3 |9 16| O7 - * O4 |10 15| O6 - * FE2 |11 14| O5 - * GND |12 13| FE1 - * +--------------+ - * - * - * Naming conventions follow Signetics datasheet - * - */ - -#include "nl_base.h" - -namespace netlist -{ - namespace devices - { - NETLIB_OBJECT(82S115) - { - NETLIB_CONSTRUCTOR(82S115) - , m_A(*this, {"A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8"}, NETLIB_DELEGATE(inputs)) - , m_CE1Q(*this, "CE1Q", NETLIB_DELEGATE(inputs)) - , m_CE2(*this, "CE2", NETLIB_DELEGATE(inputs)) - , m_STROBE(*this, "STROBE", NETLIB_DELEGATE(inputs)) - , m_O(*this, {"O1", "O2", "O3", "O4", "O5", "O6", "O7", "O8"}) - , m_last_O(*this, "m_last_O", 0) - , m_ROM(*this, "ROM") - , m_power_pins(*this) - { - } - - NETLIB_RESETI() - { - m_last_O = 0; - } - - private: - // FIXME: timing! - NETLIB_HANDLERI(inputs) - { - unsigned o = 0; - - if (!m_CE1Q() && m_CE2()) - { - if (m_STROBE()) - { - unsigned a = 0; - for (std::size_t i=0; i<9; i++) - a |= (m_A[i]() << i); - - o = m_ROM[a]; - } - else - { - o = m_last_O; - } - } - - m_last_O = o; - - // FIXME: Outputs are tristate. This needs to be properly implemented - for (std::size_t i=0; i<8; i++) - m_O[i].push((o >> i) & 1, NLTIME_FROM_NS(40)); // FIXME: Timing - } - - object_array_t m_A; - logic_input_t m_CE1Q; - logic_input_t m_CE2; - logic_input_t m_STROBE; - object_array_t m_O; - - state_var m_last_O; - - param_rom_t m_ROM; // 4096 bits, 512x8 - nld_power_pins m_power_pins; - }; - - NETLIB_DEVICE_IMPL(82S115, "PROM_82S115", "+CE1Q,+CE2,+A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+STROBE,@VCC,@GND") - - } //namespace devices -} // namespace netlist diff --git a/src/lib/netlist/devices/nld_82S16.cpp b/src/lib/netlist/devices/nld_82S16.cpp deleted file mode 100644 index 2fc92adfe30..00000000000 --- a/src/lib/netlist/devices/nld_82S16.cpp +++ /dev/null @@ -1,127 +0,0 @@ -// license:GPL-2.0+ -// copyright-holders:Couriersud -/* - * nld_82S16.cpp - * - * - * DM82S16: 256 Bit bipolar ram - * - * +--------------+ - * A1 |1 ++ 16| VCC - * A0 |2 15| A2 - * CE1Q |3 14| A3 - * CE2Q |4 82S16 13| DIN - * CE3Q |5 12| WEQ - * DOUTQ |6 11| A7 - * A4 |7 10| A6 - * GND |8 9| A5 - * +--------------+ - * - * - * Naming conventions follow Signetics datasheet - * - */ - -#include "nl_base.h" - -namespace netlist -{ - namespace devices - { - NETLIB_OBJECT(82S16) - { - NETLIB_CONSTRUCTOR(82S16) - , m_A(*this, {"A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7"}, NETLIB_DELEGATE(addr)) - , m_CE1Q(*this, "CE1Q", NETLIB_DELEGATE(enq)) - , m_CE2Q(*this, "CE2Q", NETLIB_DELEGATE(enq)) - , m_CE3Q(*this, "CE3Q", NETLIB_DELEGATE(enq)) - , m_WEQ(*this, "WEQ", NETLIB_DELEGATE(inputs)) - , m_DIN(*this, "DIN", NETLIB_DELEGATE(inputs)) - , m_DOUTQ(*this, "DOUTQ") - , m_ram(*this, "m_ram", 0) - , m_addr(*this, "m_addr", 0) - , m_enq(*this, "m_enq", 0) - , m_power_pins(*this) - { - } - - NETLIB_RESETI() - { - for (std::size_t i=0; i<4; i++) - { - m_ram[i] = 0; - } - m_addr = 0; - m_enq = 0; - } - - private: - // FIXME: timing! - // FIXME: optimize device (separate address decoder!) - NETLIB_HANDLERI(inputs) - { - if (!m_enq) - { - const decltype(m_addr)::value_type adr(m_addr); - if (!m_WEQ()) - { - m_ram[adr >> 6] = (m_ram[adr >> 6] - & ~(static_cast(1) << (adr & 0x3f))) - | (static_cast(m_DIN()) << (adr & 0x3f)); - } - m_DOUTQ.push(((m_ram[adr >> 6] >> (adr & 0x3f)) & 1) ^ 1, NLTIME_FROM_NS(20)); - } - } - - NETLIB_HANDLERI(addr) - { - uint8_t adr = 0; - for (std::size_t i=0; i<8; i++) - { - //m_A[i].activate(); - adr |= (m_A[i]() << i); - } - m_addr = adr; - inputs(); - } - NETLIB_HANDLERI(enq) - { - const decltype(m_enq)::value_type last = m_enq; - m_enq = m_CE1Q() || m_CE2Q() || m_CE3Q(); - if (!last && m_enq) - { - // FIXME: Outputs are tristate. This needs to be properly implemented - m_DOUTQ.push(1, NLTIME_FROM_NS(20)); - for (std::size_t i=0; i<8; i++) - m_A[i].inactivate(); - m_WEQ.inactivate(); - m_DIN.inactivate(); - } - else if (last && !m_enq) - { - for (std::size_t i=0; i<8; i++) - m_A[i].activate(); - m_WEQ.activate(); - m_DIN.activate(); - inputs(); - } - } - - object_array_t m_A; - logic_input_t m_CE1Q; - logic_input_t m_CE2Q; - logic_input_t m_CE3Q; - logic_input_t m_WEQ; - logic_input_t m_DIN; - logic_output_t m_DOUTQ; - - state_container> m_ram; // 256 bits - state_var_u8 m_addr; // 256 bits - state_var_sig m_enq; - nld_power_pins m_power_pins; - }; - - NETLIB_DEVICE_IMPL(82S16, "TTL_82S16", "") - - } //namespace devices -} // namespace netlist diff --git a/src/lib/netlist/devices/nld_82s115.cpp b/src/lib/netlist/devices/nld_82s115.cpp new file mode 100755 index 00000000000..f1e49bd9f83 --- /dev/null +++ b/src/lib/netlist/devices/nld_82s115.cpp @@ -0,0 +1,97 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +/* + * nld_82S115.cpp + * + * 82S115: 4K-bit TTL bipolar PROM (512 x 8) + * + * +--------------+ + * A3 |1 ++ 24| VCC + * A4 |2 23| A2 + * A5 |3 22| A1 + * A6 |4 82S115 21| A0 + * A7 |5 20| CE1Q + * A8 |6 19| CE2 + * O1 |7 18| STROBE + * O2 |8 17| O8 + * O3 |9 16| O7 + * O4 |10 15| O6 + * FE2 |11 14| O5 + * GND |12 13| FE1 + * +--------------+ + * + * + * Naming conventions follow Signetics datasheet + * + */ + +#include "nl_base.h" + +namespace netlist +{ + namespace devices + { + NETLIB_OBJECT(82S115) + { + NETLIB_CONSTRUCTOR(82S115) + , m_A(*this, {"A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8"}, NETLIB_DELEGATE(inputs)) + , m_CE1Q(*this, "CE1Q", NETLIB_DELEGATE(inputs)) + , m_CE2(*this, "CE2", NETLIB_DELEGATE(inputs)) + , m_STROBE(*this, "STROBE", NETLIB_DELEGATE(inputs)) + , m_O(*this, {"O1", "O2", "O3", "O4", "O5", "O6", "O7", "O8"}) + , m_last_O(*this, "m_last_O", 0) + , m_ROM(*this, "ROM") + , m_power_pins(*this) + { + } + + NETLIB_RESETI() + { + m_last_O = 0; + } + + private: + // FIXME: timing! + NETLIB_HANDLERI(inputs) + { + unsigned o = 0; + + if (!m_CE1Q() && m_CE2()) + { + if (m_STROBE()) + { + unsigned a = 0; + for (std::size_t i=0; i<9; i++) + a |= (m_A[i]() << i); + + o = m_ROM[a]; + } + else + { + o = m_last_O; + } + } + + m_last_O = o; + + // FIXME: Outputs are tristate. This needs to be properly implemented + for (std::size_t i=0; i<8; i++) + m_O[i].push((o >> i) & 1, NLTIME_FROM_NS(40)); // FIXME: Timing + } + + object_array_t m_A; + logic_input_t m_CE1Q; + logic_input_t m_CE2; + logic_input_t m_STROBE; + object_array_t m_O; + + state_var m_last_O; + + param_rom_t m_ROM; // 4096 bits, 512x8 + nld_power_pins m_power_pins; + }; + + NETLIB_DEVICE_IMPL(82S115, "PROM_82S115", "+CE1Q,+CE2,+A0,+A1,+A2,+A3,+A4,+A5,+A6,+A7,+A8,+STROBE,@VCC,@GND") + + } //namespace devices +} // namespace netlist diff --git a/src/lib/netlist/devices/nld_82s16.cpp b/src/lib/netlist/devices/nld_82s16.cpp new file mode 100755 index 00000000000..2fc92adfe30 --- /dev/null +++ b/src/lib/netlist/devices/nld_82s16.cpp @@ -0,0 +1,127 @@ +// license:GPL-2.0+ +// copyright-holders:Couriersud +/* + * nld_82S16.cpp + * + * + * DM82S16: 256 Bit bipolar ram + * + * +--------------+ + * A1 |1 ++ 16| VCC + * A0 |2 15| A2 + * CE1Q |3 14| A3 + * CE2Q |4 82S16 13| DIN + * CE3Q |5 12| WEQ + * DOUTQ |6 11| A7 + * A4 |7 10| A6 + * GND |8 9| A5 + * +--------------+ + * + * + * Naming conventions follow Signetics datasheet + * + */ + +#include "nl_base.h" + +namespace netlist +{ + namespace devices + { + NETLIB_OBJECT(82S16) + { + NETLIB_CONSTRUCTOR(82S16) + , m_A(*this, {"A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7"}, NETLIB_DELEGATE(addr)) + , m_CE1Q(*this, "CE1Q", NETLIB_DELEGATE(enq)) + , m_CE2Q(*this, "CE2Q", NETLIB_DELEGATE(enq)) + , m_CE3Q(*this, "CE3Q", NETLIB_DELEGATE(enq)) + , m_WEQ(*this, "WEQ", NETLIB_DELEGATE(inputs)) + , m_DIN(*this, "DIN", NETLIB_DELEGATE(inputs)) + , m_DOUTQ(*this, "DOUTQ") + , m_ram(*this, "m_ram", 0) + , m_addr(*this, "m_addr", 0) + , m_enq(*this, "m_enq", 0) + , m_power_pins(*this) + { + } + + NETLIB_RESETI() + { + for (std::size_t i=0; i<4; i++) + { + m_ram[i] = 0; + } + m_addr = 0; + m_enq = 0; + } + + private: + // FIXME: timing! + // FIXME: optimize device (separate address decoder!) + NETLIB_HANDLERI(inputs) + { + if (!m_enq) + { + const decltype(m_addr)::value_type adr(m_addr); + if (!m_WEQ()) + { + m_ram[adr >> 6] = (m_ram[adr >> 6] + & ~(static_cast(1) << (adr & 0x3f))) + | (static_cast(m_DIN()) << (adr & 0x3f)); + } + m_DOUTQ.push(((m_ram[adr >> 6] >> (adr & 0x3f)) & 1) ^ 1, NLTIME_FROM_NS(20)); + } + } + + NETLIB_HANDLERI(addr) + { + uint8_t adr = 0; + for (std::size_t i=0; i<8; i++) + { + //m_A[i].activate(); + adr |= (m_A[i]() << i); + } + m_addr = adr; + inputs(); + } + NETLIB_HANDLERI(enq) + { + const decltype(m_enq)::value_type last = m_enq; + m_enq = m_CE1Q() || m_CE2Q() || m_CE3Q(); + if (!last && m_enq) + { + // FIXME: Outputs are tristate. This needs to be properly implemented + m_DOUTQ.push(1, NLTIME_FROM_NS(20)); + for (std::size_t i=0; i<8; i++) + m_A[i].inactivate(); + m_WEQ.inactivate(); + m_DIN.inactivate(); + } + else if (last && !m_enq) + { + for (std::size_t i=0; i<8; i++) + m_A[i].activate(); + m_WEQ.activate(); + m_DIN.activate(); + inputs(); + } + } + + object_array_t m_A; + logic_input_t m_CE1Q; + logic_input_t m_CE2Q; + logic_input_t m_CE3Q; + logic_input_t m_WEQ; + logic_input_t m_DIN; + logic_output_t m_DOUTQ; + + state_container> m_ram; // 256 bits + state_var_u8 m_addr; // 256 bits + state_var_sig m_enq; + nld_power_pins m_power_pins; + }; + + NETLIB_DEVICE_IMPL(82S16, "TTL_82S16", "") + + } //namespace devices +} // namespace netlist diff --git a/src/lib/netlist/macro/modules/nlmod_ICL8038_DIP.cpp b/src/lib/netlist/macro/modules/nlmod_ICL8038_DIP.cpp deleted file mode 100644 index 05a4d300099..00000000000 --- a/src/lib/netlist/macro/modules/nlmod_ICL8038_DIP.cpp +++ /dev/null @@ -1,61 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Ryan Holtz - -#include "devices/net_lib.h" - -// -// ICL8038 is broadly similar to a 566 VCO, and can be simulated partially as such. -// - -NETLIST_START(ICL8038_DIP) - VCVS(VI, 1) - CCCS(CI1, -1) - CCCS(CI2, 2) - SYS_COMPD(COMP) - SYS_DSW2(SW) - VCVS(VO, 1) - RES(R_SHUNT, RES_R(50)) - - PARAM(VO.RO, 50) - PARAM(COMP.MODEL, "FAMILY(TYPE=CUSTOM IVL=0.16 IVH=0.4 OVL=0.01 OVH=0.01 ORL=50 ORH=50)") - PARAM(SW.GOFF, 0) // This has to be zero to block current sources - - NET_C(VI.OP, CI1.IN, CI2.IN) - NET_C(CI1.OP, VO.IP) - NET_C(COMP.Q, SW.I) - NET_C(CI2.OP, SW.2) - NET_C(COMP.VCC, R_SHUNT.1) - NET_C(SW.1, R_SHUNT.2) - NET_C(SW.3, VO.IP) - NET_C(VO.OP, COMP.IN) - - // Avoid singular Matrix due to G=0 switch - RES(RX1, 1e10) - RES(RX2, 1e10) - NET_C(RX1.1, SW.1) - NET_C(RX2.1, SW.3) - - NET_C(COMP.GND, RX1.2, RX2.2) - - RES(R1, 5000) - RES(R2, 5000) - RES(R3, 5000) - - // Square output wave - VCVS(V_SQR, 1) - NET_C(COMP.Q, V_SQR.IP) - - NET_C(COMP.GND, SW.GND, VI.ON, VI.IN, CI1.ON, CI2.ON, VO.IN, VO.ON, R2.2, V_SQR.IN, V_SQR.ON) - NET_C(COMP.VCC, SW.VCC, R1.2) - NET_C(COMP.IP, R1.1, R2.1, R3.1) - NET_C(COMP.Q, R3.2) - - ALIAS(11, VI.ON) // GND - ALIAS(9, V_SQR.OP) // Square out - ALIAS(3, VO.OP) // Triag out - ALIAS(8, VI.IP) // VC - ALIAS(4, CI1.IP) // R1 - ALIAS(5, CI2.IP) // R2 - ALIAS(10, VO.IP) // C1 - ALIAS(6, COMP.VCC) // V+ -NETLIST_END() diff --git a/src/lib/netlist/macro/modules/nlmod_NE556_DIP.cpp b/src/lib/netlist/macro/modules/nlmod_NE556_DIP.cpp deleted file mode 100644 index 7f278a18b6d..00000000000 --- a/src/lib/netlist/macro/modules/nlmod_NE556_DIP.cpp +++ /dev/null @@ -1,24 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Ryan Holtz -// - -#include "devices/net_lib.h" - -NETLIST_START(NE556_DIP) - NE555(A) - NE555(B) - - NET_C(A.GND, B.GND) - NET_C(A.VCC, B.VCC) - - DIPPINS( /* +--------------+ */ - A.DISCH, /* 1DISCH |1 ++ 14| VCC */ A.VCC, - A.THRESH, /* 1THRES |2 13| 2DISCH */ B.DISCH, - A.CONT, /* 1CONT |3 12| 2THRES */ B.THRESH, - A.RESET, /* 1RESET |4 NE556 11| 2CONT */ B.CONT, - A.OUT, /* 1OUT |5 10| 2RESET */ B.RESET, - A.TRIG, /* 1TRIG |6 9| 2OUT */ B.OUT, - A.GND, /* GND |7 8| 2TRIG */ B.TRIG - /* +--------------+ */ - ) -NETLIST_END() diff --git a/src/lib/netlist/macro/modules/nlmod_RTEST.cpp b/src/lib/netlist/macro/modules/nlmod_RTEST.cpp deleted file mode 100644 index c2ad129c6e3..00000000000 --- a/src/lib/netlist/macro/modules/nlmod_RTEST.cpp +++ /dev/null @@ -1,12 +0,0 @@ -// license:CC0 -// copyright-holders:Couriersud - -#include "devices/net_lib.h" - -NETLIST_START(RTEST) - - RES(R1, RES_K(10)) - ALIAS(1, R1.1) - ALIAS(2, R1.2) - -NETLIST_END() diff --git a/src/lib/netlist/macro/modules/nlmod_icl8038_dip.cpp b/src/lib/netlist/macro/modules/nlmod_icl8038_dip.cpp new file mode 100755 index 00000000000..05a4d300099 --- /dev/null +++ b/src/lib/netlist/macro/modules/nlmod_icl8038_dip.cpp @@ -0,0 +1,61 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz + +#include "devices/net_lib.h" + +// +// ICL8038 is broadly similar to a 566 VCO, and can be simulated partially as such. +// + +NETLIST_START(ICL8038_DIP) + VCVS(VI, 1) + CCCS(CI1, -1) + CCCS(CI2, 2) + SYS_COMPD(COMP) + SYS_DSW2(SW) + VCVS(VO, 1) + RES(R_SHUNT, RES_R(50)) + + PARAM(VO.RO, 50) + PARAM(COMP.MODEL, "FAMILY(TYPE=CUSTOM IVL=0.16 IVH=0.4 OVL=0.01 OVH=0.01 ORL=50 ORH=50)") + PARAM(SW.GOFF, 0) // This has to be zero to block current sources + + NET_C(VI.OP, CI1.IN, CI2.IN) + NET_C(CI1.OP, VO.IP) + NET_C(COMP.Q, SW.I) + NET_C(CI2.OP, SW.2) + NET_C(COMP.VCC, R_SHUNT.1) + NET_C(SW.1, R_SHUNT.2) + NET_C(SW.3, VO.IP) + NET_C(VO.OP, COMP.IN) + + // Avoid singular Matrix due to G=0 switch + RES(RX1, 1e10) + RES(RX2, 1e10) + NET_C(RX1.1, SW.1) + NET_C(RX2.1, SW.3) + + NET_C(COMP.GND, RX1.2, RX2.2) + + RES(R1, 5000) + RES(R2, 5000) + RES(R3, 5000) + + // Square output wave + VCVS(V_SQR, 1) + NET_C(COMP.Q, V_SQR.IP) + + NET_C(COMP.GND, SW.GND, VI.ON, VI.IN, CI1.ON, CI2.ON, VO.IN, VO.ON, R2.2, V_SQR.IN, V_SQR.ON) + NET_C(COMP.VCC, SW.VCC, R1.2) + NET_C(COMP.IP, R1.1, R2.1, R3.1) + NET_C(COMP.Q, R3.2) + + ALIAS(11, VI.ON) // GND + ALIAS(9, V_SQR.OP) // Square out + ALIAS(3, VO.OP) // Triag out + ALIAS(8, VI.IP) // VC + ALIAS(4, CI1.IP) // R1 + ALIAS(5, CI2.IP) // R2 + ALIAS(10, VO.IP) // C1 + ALIAS(6, COMP.VCC) // V+ +NETLIST_END() diff --git a/src/lib/netlist/macro/modules/nlmod_ne556_dip.cpp b/src/lib/netlist/macro/modules/nlmod_ne556_dip.cpp new file mode 100755 index 00000000000..7f278a18b6d --- /dev/null +++ b/src/lib/netlist/macro/modules/nlmod_ne556_dip.cpp @@ -0,0 +1,24 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +// + +#include "devices/net_lib.h" + +NETLIST_START(NE556_DIP) + NE555(A) + NE555(B) + + NET_C(A.GND, B.GND) + NET_C(A.VCC, B.VCC) + + DIPPINS( /* +--------------+ */ + A.DISCH, /* 1DISCH |1 ++ 14| VCC */ A.VCC, + A.THRESH, /* 1THRES |2 13| 2DISCH */ B.DISCH, + A.CONT, /* 1CONT |3 12| 2THRES */ B.THRESH, + A.RESET, /* 1RESET |4 NE556 11| 2CONT */ B.CONT, + A.OUT, /* 1OUT |5 10| 2RESET */ B.RESET, + A.TRIG, /* 1TRIG |6 9| 2OUT */ B.OUT, + A.GND, /* GND |7 8| 2TRIG */ B.TRIG + /* +--------------+ */ + ) +NETLIST_END() diff --git a/src/lib/netlist/macro/modules/nlmod_rtest.cpp b/src/lib/netlist/macro/modules/nlmod_rtest.cpp new file mode 100755 index 00000000000..c2ad129c6e3 --- /dev/null +++ b/src/lib/netlist/macro/modules/nlmod_rtest.cpp @@ -0,0 +1,12 @@ +// license:CC0 +// copyright-holders:Couriersud + +#include "devices/net_lib.h" + +NETLIST_START(RTEST) + + RES(R1, RES_K(10)) + ALIAS(1, R1.1) + ALIAS(2, R1.2) + +NETLIST_END() diff --git a/src/lib/netlist/nl_base.cpp b/src/lib/netlist/nl_base.cpp index 52cad23e9ba..2baf96d73fc 100644 --- a/src/lib/netlist/nl_base.cpp +++ b/src/lib/netlist/nl_base.cpp @@ -140,9 +140,9 @@ namespace netlist //m_setup->parser().register_source("../macro/nlm_{1}.cpp"); #else #if 1 - m_setup->parser().register_source("src/lib/netlist/macro/nlm_{1}.cpp"); - m_setup->parser().register_source("src/lib/netlist/generated/nlm_{1}.cpp"); - m_setup->parser().register_source("src/lib/netlist/macro/modules/nlmod_{1}.cpp"); + m_setup->parser().register_source("src/lib/netlist/macro/nlm_{1}.cpp", true); + m_setup->parser().register_source("src/lib/netlist/generated/nlm_{1}.cpp", true); + m_setup->parser().register_source("src/lib/netlist/macro/modules/nlmod_{1}.cpp", true); m_setup->parser().include("base_lib"); #else // FIXME: This is very slow - need optimized parsing scanning diff --git a/src/lib/netlist/nl_setup.cpp b/src/lib/netlist/nl_setup.cpp index 09c84642c75..8392f156117 100644 --- a/src/lib/netlist/nl_setup.cpp +++ b/src/lib/netlist/nl_setup.cpp @@ -1733,7 +1733,7 @@ plib::istream_uptr source_file_t::stream(const pstring &name) plib::istream_uptr source_pattern_t::stream(const pstring &name) { - pstring filename = plib::pfmt(m_pattern)(name); + pstring filename = plib::pfmt(m_pattern)(m_force_lowercase ? plib::lcase(name) : name); auto f = std::make_unique(plib::filesystem::u8path(filename)); if (f->is_open()) { diff --git a/src/lib/netlist/plib/poptions.h b/src/lib/netlist/plib/poptions.h index 714a357da86..a0368ebdc09 100644 --- a/src/lib/netlist/plib/poptions.h +++ b/src/lib/netlist/plib/poptions.h @@ -261,12 +261,12 @@ namespace plib { return nullptr; } - option *getopt_short(const pstring &arg) const; - option *getopt_long(const pstring &arg) const; + option *getopt_short(const pstring &arg) const; + option *getopt_long(const pstring &arg) const; - std::vector m_opts; - pstring m_app; - option_args * m_other_args; + std::vector m_opts; + pstring m_app; + option_args * m_other_args; }; } // namespace plib -- cgit v1.2.3-70-g09d2