diff options
author | couriersud <couriersud@arcor.de> | 2015-04-25 14:18:41 +0200 |
---|---|---|
committer | couriersud <couriersud@arcor.de> | 2015-04-25 14:18:41 +0200 |
commit | 66d555e3238019b372c7b0253dc9ae738db32269 (patch) | |
tree | 5e8ae17e1bad321aa007f4bb2d3f9da6ea6c95e7 | |
parent | 6ddcf53550caa32be40fbace515c4ee07f69ad9e (diff) |
Added 74175 and 82S16 devices to netlist. nl_breakout now compiles. (nw)
-rw-r--r-- | scripts/src/netlist.lua | 6 | ||||
-rw-r--r-- | src/emu/netlist/devices/net_lib.c | 6 | ||||
-rw-r--r-- | src/emu/netlist/devices/net_lib.h | 3 | ||||
-rw-r--r-- | src/emu/netlist/devices/nld_74175.c | 92 | ||||
-rw-r--r-- | src/emu/netlist/devices/nld_74175.h | 61 | ||||
-rw-r--r-- | src/emu/netlist/devices/nld_74279.c | 75 | ||||
-rw-r--r-- | src/emu/netlist/devices/nld_74279.h | 55 | ||||
-rw-r--r-- | src/emu/netlist/devices/nld_7474.h | 2 | ||||
-rw-r--r-- | src/emu/netlist/devices/nld_82S16.c | 90 | ||||
-rw-r--r-- | src/emu/netlist/devices/nld_82S16.h | 51 | ||||
-rw-r--r-- | src/emu/netlist/devices/nld_system.h | 1 | ||||
-rw-r--r-- | src/mame/drivers/nl_breakout.c | 4 |
12 files changed, 443 insertions, 3 deletions
diff --git a/scripts/src/netlist.lua b/scripts/src/netlist.lua index 4aebef1f091..1670ebb9ba6 100644 --- a/scripts/src/netlist.lua +++ b/scripts/src/netlist.lua @@ -81,12 +81,18 @@ files { MAME_DIR .. "src/emu/netlist/devices/nld_74123.h", MAME_DIR .. "src/emu/netlist/devices/nld_74153.c", MAME_DIR .. "src/emu/netlist/devices/nld_74153.h", + MAME_DIR .. "src/emu/netlist/devices/nld_74175.c", + MAME_DIR .. "src/emu/netlist/devices/nld_74175.h", MAME_DIR .. "src/emu/netlist/devices/nld_74192.c", MAME_DIR .. "src/emu/netlist/devices/nld_74192.h", MAME_DIR .. "src/emu/netlist/devices/nld_74193.c", MAME_DIR .. "src/emu/netlist/devices/nld_74193.h", + MAME_DIR .. "src/emu/netlist/devices/nld_74279.c", + MAME_DIR .. "src/emu/netlist/devices/nld_74279.h", MAME_DIR .. "src/emu/netlist/devices/nld_74ls629.c", MAME_DIR .. "src/emu/netlist/devices/nld_74ls629.h", + MAME_DIR .. "src/emu/netlist/devices/nld_82S16.c", + MAME_DIR .. "src/emu/netlist/devices/nld_82S16.h", MAME_DIR .. "src/emu/netlist/devices/nld_9310.c", MAME_DIR .. "src/emu/netlist/devices/nld_9310.h", MAME_DIR .. "src/emu/netlist/devices/nld_9312.c", diff --git a/src/emu/netlist/devices/net_lib.c b/src/emu/netlist/devices/net_lib.c index 1483f2d40cb..a40be7be574 100644 --- a/src/emu/netlist/devices/net_lib.c +++ b/src/emu/netlist/devices/net_lib.c @@ -117,9 +117,12 @@ void nl_initialize_factory(netlist_factory_t &factory) ENTRY(74107A, TTL_74107A, "+CLK,J,K,CLRQ") ENTRY(74123, TTL_74123, "-") ENTRY(74153, TTL_74153, "+C0,C1,C2,C3,A,B,G") + ENTRY(74175, TTL_74175, "-") ENTRY(74192, TTL_74192, "-") ENTRY(74193, TTL_74193, "-") + //ENTRY(74279, TTL_74279, "-") // only dip available ENTRY(SN74LS629, SN74LS629, "CAP") + ENTRY(82S16, TTL_82S16, "-") ENTRY(9310, TTL_9310, "-") ENTRY(9312, TTL_9312, "-") ENTRY(9316, TTL_9316, "+CLK,ENP,ENT,CLRQ,LOADQ,A,B,C,D") @@ -149,8 +152,11 @@ void nl_initialize_factory(netlist_factory_t &factory) ENTRY(74107_dip, TTL_74107_DIP, "-") ENTRY(74123_dip, TTL_74123_DIP, "-") ENTRY(74153_dip, TTL_74153_DIP, "-") + ENTRY(74175_dip, TTL_74175_DIP, "-") ENTRY(74192_dip, TTL_74192_DIP, "-") ENTRY(74193_dip, TTL_74193_DIP, "-") + ENTRY(74279_dip, TTL_74279_DIP, "-") + ENTRY(82S16_dip, TTL_82S16_DIP, "-") ENTRY(9602_dip, TTL_9602_DIP, "-") ENTRY(9310_dip, TTL_9310_DIP, "-") ENTRY(9312_dip, TTL_9312_DIP, "-") diff --git a/src/emu/netlist/devices/net_lib.h b/src/emu/netlist/devices/net_lib.h index bc8db7201a2..42efb0f19dd 100644 --- a/src/emu/netlist/devices/net_lib.h +++ b/src/emu/netlist/devices/net_lib.h @@ -78,9 +78,12 @@ #include "nld_74107.h" #include "nld_74123.h" #include "nld_74153.h" +#include "nld_74175.h" #include "nld_74192.h" #include "nld_74193.h" +#include "nld_74279.h" #include "nld_74ls629.h" +#include "nld_82S16.h" #include "nld_9310.h" #include "nld_9312.h" #include "nld_9316.h" diff --git a/src/emu/netlist/devices/nld_74175.c b/src/emu/netlist/devices/nld_74175.c new file mode 100644 index 00000000000..e7c8bc9379c --- /dev/null +++ b/src/emu/netlist/devices/nld_74175.c @@ -0,0 +1,92 @@ +/* + * nld_74175.c + * + */ + +#include "nld_74175.h" + +static const netlist_time delay[2] = { NLTIME_FROM_NS(40), NLTIME_FROM_NS(25) }; + +NETLIB_UPDATE(74175) +{ + if (!INPLOGIC(m_CLRQ)) + { + for (int i=0; i<4; i++) + { + OUTLOGIC(m_Q[i], 0, delay[0]); + OUTLOGIC(m_QQ[i], 1, delay[1]); + } + } + else if (!m_last && INPLOGIC(m_CLK)) + { + for (int i=0; i<4; i++) + { + UINT8 d = INPLOGIC(m_D[i]); + OUTLOGIC(m_Q[i], d, delay[d]); + OUTLOGIC(m_QQ[i], !d, delay[!d]); + } + } + m_last = INPLOGIC(m_CLK); +} + +NETLIB_START(74175) +{ + register_input("CLK", m_CLK); + register_input("CLRQ", m_CLRQ); + + register_input("D1", m_D[0]); + register_output("Q1", m_Q[0]); + register_output("Q1Q", m_QQ[0]); + + register_input("D2", m_D[1]); + register_output("Q2", m_Q[1]); + register_output("Q2Q", m_QQ[1]); + + register_input("D3", m_D[2]); + register_output("Q3", m_Q[2]); + register_output("Q3Q", m_QQ[2]); + + register_input("D4", m_D[3]); + register_output("Q4", m_Q[3]); + register_output("Q4Q", m_QQ[3]); + + save(NLNAME(m_last.ref())); +} + +NETLIB_RESET(74175) +{ +} + +NETLIB_START(74175_dip) +{ + register_input("9", m_CLK); + register_input("1", m_CLRQ); + + register_input("4", m_D[0]); + register_output("2", m_Q[0]); + register_output("3", m_QQ[0]); + + register_input("5", m_D[1]); + register_output("7", m_Q[1]); + register_output("6", m_QQ[1]); + + register_input("12", m_D[2]); + register_output("10", m_Q[2]); + register_output("11", m_QQ[2]); + + register_input("13", m_D[3]); + register_output("15", m_Q[3]); + register_output("14", m_QQ[3]); + + save(NLNAME(m_last.ref())); +} + +NETLIB_RESET(74175_dip) +{ + NETLIB_NAME(74175)::reset(); +} + +NETLIB_UPDATE(74175_dip) +{ + NETLIB_NAME(74175)::update(); +} diff --git a/src/emu/netlist/devices/nld_74175.h b/src/emu/netlist/devices/nld_74175.h new file mode 100644 index 00000000000..9c138755a50 --- /dev/null +++ b/src/emu/netlist/devices/nld_74175.h @@ -0,0 +1,61 @@ +// license:GPL-2.0+ +// copyright-holders:Couriersud +/* + * nld_74175.h + * + * DM74175: Quad D Flip-Flops with Clear + * + * +--------------+ + * CLR |1 ++ 16| VCC + * Q1 |2 15| Q4 + * Q1Q |3 14| Q4Q + * D1 |4 74175 13| D4 + * D2 |5 12| D3 + * Q2Q |6 11| Q3Q + * Q2 |7 10| Q3 + * GND |8 9| CLK + * +--------------+ + * + * +-----+-----+---++---+-----+ + * | CLR | CLK | D || Q | QQ | + * +=====+=====+===++===+=====+ + * | 0 | X | X || 0 | 1 | + * | 1 | R | 1 || 1 | 0 | + * | 1 | R | 0 || 0 | 1 | + * | 1 | 0 | X || Q0| Q0Q | + * +-----+-----+---++---+-----+ + * + * Q0 The output logic level of Q before the indicated input conditions were established + * + * R: 0 --> 1 + * + * Naming conventions follow National Semiconductor datasheet + * + */ + +#ifndef NLD_74175_H_ +#define NLD_74175_H_ + +#include "nld_signal.h" + +#define TTL_74175(_name) \ + NET_REGISTER_DEV(74175, _name) \ + +#define TTL_74175_DIP(_name) \ + NET_REGISTER_DEV(74175_dip, _name) + +NETLIB_DEVICE(74175, + + netlist_state_t<UINT8> m_last; + netlist_ttl_input_t m_D[4]; + netlist_ttl_input_t m_CLRQ; + netlist_ttl_input_t m_CLK; + netlist_ttl_output_t m_Q[4]; + netlist_ttl_output_t m_QQ[4]; +); + +NETLIB_DEVICE_DERIVED(74175_dip, 74175, + +); + +#endif /* NLD_74175_H_ */ diff --git a/src/emu/netlist/devices/nld_74279.c b/src/emu/netlist/devices/nld_74279.c new file mode 100644 index 00000000000..b920ac0498a --- /dev/null +++ b/src/emu/netlist/devices/nld_74279.c @@ -0,0 +1,75 @@ +/* + * nld_74279.c + * + */ + +#include "nld_74279.h" + +nld_74279A::truthtable_t nld_74279A::m_ttbl; + +const char *nld_74279A::m_desc[] = { + "S,R,PQ,PS,PR|Q", + "0,0,X,X,X|1|22", + "0,1,X,X,X|1|22", + "1,0,X,X,X|0|15", + "1,1,0,X,X|0|15", + "1,1,1,X,X|1|22", + "" +}; + +nld_74279B::truthtable_t nld_74279B::m_ttbl; + +const char *nld_74279B::m_desc[] = { + "S1,S2,R,PQ,PS1,PS2,PR|Q", + "0,X,0,X,X,X,X|1|22", + "X,0,0,X,X,X,X|1|22", + "0,X,1,X,X,X,X|1|22", + "X,0,1,X,X,X,X|1|22", + "1,1,0,X,X,X,X|0|15", + "1,1,1,0,X,X,X|0|15", + "1,1,1,1,X,X,X|1|22", + "" +}; + +NETLIB_START(74279_dip) +{ + register_sub(m_1, "1"); + register_sub(m_2, "2"); + register_sub(m_3, "3"); + register_sub(m_4, "4"); + + register_subalias("1", m_1.m_i[2]); //R + register_subalias("2", m_1.m_i[0]); + register_subalias("3", m_1.m_i[1]); + register_subalias("4", m_1.m_Q[0]); + + register_subalias("5", m_2.m_i[1]); //R + register_subalias("6", m_2.m_i[0]); + register_subalias("7", m_2.m_Q[0]); + + register_subalias("9", m_3.m_Q[0]); + register_subalias("10", m_3.m_i[2]); //R + register_subalias("11", m_3.m_i[0]); + register_subalias("12", m_3.m_i[1]); + + register_subalias("13", m_2.m_Q[0]); + register_subalias("14", m_2.m_i[1]); //R + register_subalias("15", m_2.m_i[0]); +} + +NETLIB_UPDATE(74279_dip) +{ + /* only called during startup */ + m_1.update_dev(); + m_2.update_dev(); + m_3.update_dev(); + m_4.update_dev(); +} + +NETLIB_RESET(74279_dip) +{ + m_1.do_reset(); + m_2.do_reset(); + m_3.do_reset(); + m_4.do_reset(); +} diff --git a/src/emu/netlist/devices/nld_74279.h b/src/emu/netlist/devices/nld_74279.h new file mode 100644 index 00000000000..ae5020394de --- /dev/null +++ b/src/emu/netlist/devices/nld_74279.h @@ -0,0 +1,55 @@ +// license:GPL-2.0+ +// copyright-holders:Couriersud +/* + * nld_74279.h + * + * DM74279: Triple 3-Input NAND Gates + * + * +--------------+ + * 1R |1 ++ 16| VCC + * 1S1 |2 15| 4S + * 1S2 |3 14| 4R + * 1Q |4 74279 13| 4Q + * 2R |5 12| 3S2 + * 2S |6 11| 3S1 + * 2Q |7 10| 3R + * GND |8 9| 3Q + * +--------------+ + * ___ + * + * +---+---+---++---+ + * |S1 |S2 | R || Q | + * +===+===+===++===+ + * | 0 | 0 | 0 || 1 | + * | 0 | 1 | 1 || 1 | + * | 1 | 0 | 1 || 1 | + * | 1 | 1 | 0 || 0 | + * | 1 | 1 | 1 ||QP | + * +---+---+---++---+ + * + * QP: Previous Q + * + * Naming conventions follow Fairchild Semiconductor datasheet + * + */ + +#ifndef NLD_74279_H_ +#define NLD_74279_H_ + +#include "nld_truthtable.h" + +NETLIB_TRUTHTABLE(74279A, 2, 1, 1); +NETLIB_TRUTHTABLE(74279B, 3, 1, 1); + +#define TTL_74279_DIP(_name) \ + NET_REGISTER_DEV(74279_dip, _name) + +NETLIB_DEVICE(74279_dip, + + NETLIB_NAME(74279B) m_1; + NETLIB_NAME(74279A) m_2; + NETLIB_NAME(74279B) m_3; + NETLIB_NAME(74279A) m_4; +); + +#endif /* NLD_74279_H_ */ diff --git a/src/emu/netlist/devices/nld_7474.h b/src/emu/netlist/devices/nld_7474.h index 1c209d3a4e0..3452400dd54 100644 --- a/src/emu/netlist/devices/nld_7474.h +++ b/src/emu/netlist/devices/nld_7474.h @@ -4,7 +4,7 @@ * nld_7474.h * * DM7474: Dual Positive-Edge-Triggered D Flip-Flops - * with Preset Clear and Complementary Outputs + * with Preset, Clear and Complementary Outputs * * +--------------+ * CLR1 |1 ++ 14| VCC diff --git a/src/emu/netlist/devices/nld_82S16.c b/src/emu/netlist/devices/nld_82S16.c new file mode 100644 index 00000000000..bb0f4206d93 --- /dev/null +++ b/src/emu/netlist/devices/nld_82S16.c @@ -0,0 +1,90 @@ +/* + * nld_82S16.c + * + */ + +#include "nld_82S16.h" + +static const netlist_time delay[2] = { NLTIME_FROM_NS(40), NLTIME_FROM_NS(25) }; + +// FIXME: timing! +// FIXME: optimize device (separate address decoder!) +NETLIB_UPDATE(82S16) +{ + if (INPLOGIC(m_CE1Q) || INPLOGIC(m_CE1Q) || INPLOGIC(m_CE1Q)) + { + // FIXME: Outputs are tristate. This needs to be properly implemented + OUTLOGIC(m_DOUTQ, 1, NLTIME_FROM_NS(40)); + } + else + { + int adr = 0; + for (int i=0; i<8; i++) + adr |= (INPLOGIC(m_A[i]) << i); + + if (!INPLOGIC(m_WEQ)) + m_ram[adr] = INPLOGIC(m_DIN); + OUTLOGIC(m_DOUTQ, m_ram[adr] ^ 1, NLTIME_FROM_NS(40)); + } +} + +NETLIB_START(82S16) +{ + register_input("A0", m_A[0]); + register_input("A1", m_A[1]); + register_input("A2", m_A[2]); + register_input("A3", m_A[3]); + register_input("A4", m_A[4]); + register_input("A5", m_A[5]); + register_input("A6", m_A[6]); + register_input("A7", m_A[7]); + + register_input("CE1Q", m_CE1Q); + register_input("CE2Q", m_CE2Q); + register_input("CE3Q", m_CE3Q); + + register_input("WEQ", m_WEQ); + register_input("DIN", m_DIN); + + register_output("DOUTQ",m_DOUTQ); + + save(NLNAME(m_ram)); +} + +NETLIB_RESET(82S16) +{ + for (int i=0; i<256; i++) + { + m_ram[i] = 0; + } +} + +NETLIB_START(82S16_dip) +{ + register_input("2", m_A[0]); + register_input("1", m_A[1]); + register_input("15", m_A[2]); + register_input("14", m_A[3]); + register_input("7", m_A[4]); + register_input("9", m_A[5]); + register_input("10", m_A[6]); + register_input("11", m_A[7]); + + register_input("3", m_CE1Q); + register_input("4", m_CE2Q); + register_input("5", m_CE3Q); + + register_input("12", m_WEQ); + register_input("13", m_DIN); + + register_output("6", m_DOUTQ);} + +NETLIB_RESET(82S16_dip) +{ + NETLIB_NAME(82S16)::reset(); +} + +NETLIB_UPDATE(82S16_dip) +{ + NETLIB_NAME(82S16)::update(); +} diff --git a/src/emu/netlist/devices/nld_82S16.h b/src/emu/netlist/devices/nld_82S16.h new file mode 100644 index 00000000000..652fbbc13a1 --- /dev/null +++ b/src/emu/netlist/devices/nld_82S16.h @@ -0,0 +1,51 @@ +// license:GPL-2.0+ +// copyright-holders:Couriersud +/* + * nld_82S16.h + * + * 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 + * + */ + +#ifndef NLD_82S16_H_ +#define NLD_82S16_H_ + +#include "../nl_base.h" + +#define TTL_82S16(_name) \ + NET_REGISTER_DEV(82S16, _name) \ + +#define TTL_82S16_DIP(_name) \ + NET_REGISTER_DEV(82S16_dip, _name) + +NETLIB_DEVICE(82S16, + + UINT8 m_ram[256]; + netlist_ttl_input_t m_A[8]; + netlist_ttl_input_t m_CE1Q; + netlist_ttl_input_t m_CE2Q; + netlist_ttl_input_t m_CE3Q; + netlist_ttl_input_t m_WEQ; + netlist_ttl_input_t m_DIN; + netlist_ttl_output_t m_DOUTQ; +); + +NETLIB_DEVICE_DERIVED(82S16_dip, 82S16, + +); + +#endif /* NLD_82S16_H_ */ diff --git a/src/emu/netlist/devices/nld_system.h b/src/emu/netlist/devices/nld_system.h index 644264eea13..fe14f58ab32 100644 --- a/src/emu/netlist/devices/nld_system.h +++ b/src/emu/netlist/devices/nld_system.h @@ -43,6 +43,7 @@ NET_REGISTER_DEV(frontier, _name) \ NET_C(_IN, _name.I) \ NET_C(_OUT, _name.Q) + // ----------------------------------------------------------------------------- // mainclock // ----------------------------------------------------------------------------- diff --git a/src/mame/drivers/nl_breakout.c b/src/mame/drivers/nl_breakout.c index be56fd611f4..bd4968a0134 100644 --- a/src/mame/drivers/nl_breakout.c +++ b/src/mame/drivers/nl_breakout.c @@ -67,8 +67,8 @@ // identify unknown devices in IDE -#if 0 -#define NETLIST_DEVELOPMENT 1 +#if 1 +#define NETLIST_DEVELOPMENT 0 #include "netlist/nl_dice_compat.h" #include "netlist/devices/net_lib.h" |