From 120ba389dd819af7f3a9be67bed5665c44a9df20 Mon Sep 17 00:00:00 2001 From: Couriersud Date: Sun, 19 Jan 2014 21:36:10 +0000 Subject: [PATCH] Added some pin assignment devices (*_dip). DICE connects package pins, not logical entities. No WN --- .gitattributes | 1 + src/emu/netlist/devices/net_lib.c | 11 ++++--- src/emu/netlist/devices/nld_7400.c | 43 +++++++++++++++++++++++++ src/emu/netlist/devices/nld_7400.h | 37 +++------------------ src/emu/netlist/devices/nld_7404.c | 6 ++-- src/emu/netlist/devices/nld_7404.h | 4 +-- src/emu/netlist/devices/nld_74107.c | 50 +++++++++++++++++++++++++---- src/emu/netlist/devices/nld_74107.h | 23 +++++++++---- src/emu/netlist/devices/nld_74153.c | 6 ++-- src/emu/netlist/devices/nld_74153.h | 4 +-- src/emu/netlist/devices/nld_7493.c | 32 ++++++++++++++++++ src/emu/netlist/devices/nld_7493.h | 7 ++++ src/emu/netlist/netlist.mak | 1 + src/emu/netlist/nl_parser.c | 4 +-- src/emu/netlist/nl_parser.h | 2 +- 15 files changed, 167 insertions(+), 64 deletions(-) create mode 100644 src/emu/netlist/devices/nld_7400.c diff --git a/.gitattributes b/.gitattributes index 8843eb77995..fad34636b44 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2160,6 +2160,7 @@ src/emu/netlist/analog/nld_twoterm.c svneol=native#text/plain src/emu/netlist/analog/nld_twoterm.h svneol=native#text/plain src/emu/netlist/devices/net_lib.c svneol=native#text/plain src/emu/netlist/devices/net_lib.h svneol=native#text/plain +src/emu/netlist/devices/nld_7400.c svneol=native#text/plain src/emu/netlist/devices/nld_7400.h svneol=native#text/plain src/emu/netlist/devices/nld_7402.h svneol=native#text/plain src/emu/netlist/devices/nld_7404.c svneol=native#text/plain diff --git a/src/emu/netlist/devices/net_lib.c b/src/emu/netlist/devices/net_lib.c index 17e82ea716e..a75725838d0 100644 --- a/src/emu/netlist/devices/net_lib.c +++ b/src/emu/netlist/devices/net_lib.c @@ -266,8 +266,9 @@ void netlist_factory_t::initialize() ENTRY(switch2, SWITCH2, "+i1,i2") ENTRY(nicRSFF, NETDEV_RSFF, "+S,R") ENTRY(7400, TTL_7400_NAND, "+A,B") + ENTRY(7400_dip, TTL_7400_DIP, "-") ENTRY(7402, TTL_7402_NOR, "+A,B") - ENTRY(nic7404, TTL_7404_INVERT, "+A") + ENTRY(7404, TTL_7404_INVERT, "+A") ENTRY(7410, TTL_7410_NAND, "+A,B,C") ENTRY(7420, TTL_7420_NAND, "+A,B,C,D") ENTRY(7425, TTL_7425_NOR, "+A,B,C,D") @@ -280,9 +281,11 @@ void netlist_factory_t::initialize() ENTRY(7483, TTL_7483, "+A1,A2,A3,A4,B1,B2,B3,B4,C0") ENTRY(7490, TTL_7490, "+CLK,R1,R2,R91,R92") ENTRY(7493, TTL_7493, "+CLKA,CLKB,R1,R2") - ENTRY(nic74107, TTL_74107, "+CLK,J,K,CLRQ") - ENTRY(nic74107A, TTL_74107A, "+CLK,J,K,CLRQ") - ENTRY(nic74153, TTL_74153, "+C0,C1,C2,C3,A,B,G") + ENTRY(7493_dip, TTL_7493_DIP, "-") + ENTRY(74107, TTL_74107, "+CLK,J,K,CLRQ") + ENTRY(74107_dip, TTL_74107_DIP, "-") + ENTRY(74107A, TTL_74107A, "+CLK,J,K,CLRQ") + ENTRY(74153, TTL_74153, "+C0,C1,C2,C3,A,B,G") ENTRY(9316, TTL_9316, "+CLK,ENP,ENT,CLRQ,LOADQ,A,B,C,D") ENTRY(NE555, NE555, "-") } diff --git a/src/emu/netlist/devices/nld_7400.c b/src/emu/netlist/devices/nld_7400.c new file mode 100644 index 00000000000..874874ae8b6 --- /dev/null +++ b/src/emu/netlist/devices/nld_7400.c @@ -0,0 +1,43 @@ +/* + * nld_7400.c + * + */ + +#include "nld_7400.h" + +NETLIB_START(7400_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[0]); + register_subalias("2", m_1.m_i[1]); + register_subalias("3", m_1.m_Q); + + register_subalias("4", m_2.m_i[0]); + register_subalias("5", m_2.m_i[1]); + register_subalias("6", m_2.m_Q); + + register_subalias("9", m_3.m_i[0]); + register_subalias("10", m_3.m_i[1]); + register_subalias("8", m_3.m_Q); + + register_subalias("12", m_4.m_i[0]); + register_subalias("13", m_4.m_i[1]); + register_subalias("11", m_4.m_Q); +} + +NETLIB_UPDATE(7400_dip) +{ +} + +NETLIB_RESET(7400_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_7400.h b/src/emu/netlist/devices/nld_7400.h index b9b06ec484f..e5b356eecb2 100644 --- a/src/emu/netlist/devices/nld_7400.h +++ b/src/emu/netlist/devices/nld_7400.h @@ -41,7 +41,10 @@ NETLIB_SIGNAL(7400, 2, 0, 0); -NETLIB_DEVICE(7400pin, +#define TTL_7400_DIP(_name) \ + NET_REGISTER_DEV(7400_dip, _name) + +NETLIB_DEVICE(7400_dip, NETLIB_NAME(7400) m_1; NETLIB_NAME(7400) m_2; @@ -49,36 +52,4 @@ NETLIB_DEVICE(7400pin, NETLIB_NAME(7400) m_4; ); -inline NETLIB_START(7400pin) -{ - 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[0]); - register_subalias("2", m_1.m_i[1]); - register_subalias("3", m_1.m_Q); - - register_subalias("4", m_2.m_i[0]); - register_subalias("5", m_2.m_i[1]); - register_subalias("6", m_2.m_Q); - - register_subalias("9", m_3.m_i[0]); - register_subalias("10", m_3.m_i[1]); - register_subalias("8", m_3.m_Q); - - register_subalias("12", m_4.m_i[0]); - register_subalias("13", m_4.m_i[1]); - register_subalias("11", m_4.m_Q); -} - -inline NETLIB_RESET(7400pin) -{ - m_1.do_reset(); - m_2.do_reset(); - m_3.do_reset(); - m_4.do_reset(); -} - #endif /* NLD_7400_H_ */ diff --git a/src/emu/netlist/devices/nld_7404.c b/src/emu/netlist/devices/nld_7404.c index d8e2191afe9..4f1e6e21dcf 100644 --- a/src/emu/netlist/devices/nld_7404.c +++ b/src/emu/netlist/devices/nld_7404.c @@ -5,18 +5,18 @@ #include "nld_7404.h" -NETLIB_START(nic7404) +NETLIB_START(7404) { register_input("A", m_I); register_output("Q", m_Q); } -NETLIB_RESET(nic7404) +NETLIB_RESET(7404) { m_Q.initial(1); } -NETLIB_UPDATE(nic7404) +NETLIB_UPDATE(7404) { static const netlist_time delay[2] = { NLTIME_FROM_NS(15), NLTIME_FROM_NS(22) }; UINT8 t = (INPLOGIC(m_I)) ^ 1; diff --git a/src/emu/netlist/devices/nld_7404.h b/src/emu/netlist/devices/nld_7404.h index 5432a1dd9f7..c4d775a55c2 100644 --- a/src/emu/netlist/devices/nld_7404.h +++ b/src/emu/netlist/devices/nld_7404.h @@ -32,13 +32,13 @@ #include "nld_signal.h" -NETLIB_DEVICE(nic7404, +NETLIB_DEVICE(7404, netlist_ttl_input_t m_I; netlist_ttl_output_t m_Q; ); #define TTL_7404_INVERT(_name, _A) \ - NET_REGISTER_DEV(nic7404, _name) \ + NET_REGISTER_DEV(7404, _name) \ NET_CONNECT(_name, A, _A) #endif /* NLD_7404_H_ */ diff --git a/src/emu/netlist/devices/nld_74107.c b/src/emu/netlist/devices/nld_74107.c index d7414a96ca9..9de85750957 100644 --- a/src/emu/netlist/devices/nld_74107.c +++ b/src/emu/netlist/devices/nld_74107.c @@ -5,7 +5,7 @@ #include "nld_74107.h" -NETLIB_START(nic74107Asub) +NETLIB_START(74107Asub) { register_input("CLK", m_clk); register_output("Q", m_Q); @@ -16,7 +16,7 @@ NETLIB_START(nic74107Asub) save(NAME(m_F)); } -NETLIB_RESET(nic74107Asub) +NETLIB_RESET(74107Asub) { m_clk.set_state(netlist_input_t::STATE_INP_HL); m_Q.initial(0); @@ -27,7 +27,7 @@ NETLIB_RESET(nic74107Asub) m_F = 0; } -NETLIB_START(nic74107A) +NETLIB_START(74107A) { register_sub(sub, "sub"); @@ -40,12 +40,12 @@ NETLIB_START(nic74107A) } -NETLIB_RESET(nic74107A) +NETLIB_RESET(74107A) { sub.reset(); } -ATTR_HOT inline void NETLIB_NAME(nic74107Asub)::newstate(const netlist_sig_t state) +ATTR_HOT inline void NETLIB_NAME(74107Asub)::newstate(const netlist_sig_t state) { const netlist_time delay[2] = { NLTIME_FROM_NS(40), NLTIME_FROM_NS(25) }; @@ -53,7 +53,7 @@ ATTR_HOT inline void NETLIB_NAME(nic74107Asub)::newstate(const netlist_sig_t sta OUTLOGIC(m_QQ, state ^ 1, delay[state]); } -NETLIB_UPDATE(nic74107Asub) +NETLIB_UPDATE(74107Asub) { const netlist_sig_t t = m_Q.net().Q(); newstate((!t & m_Q1) | (t & m_Q2) | m_F); @@ -61,7 +61,7 @@ NETLIB_UPDATE(nic74107Asub) m_clk.inactivate(); } -NETLIB_UPDATE(nic74107A) +NETLIB_UPDATE(74107A) { const UINT8 JK = (INPLOGIC(m_J) << 1) | INPLOGIC(m_K); @@ -100,3 +100,39 @@ NETLIB_UPDATE(nic74107A) else if (!sub.m_Q2) sub.m_clk.activate_hl(); } + +NETLIB_START(74107_dip) +{ + register_sub(m_1, "1"); + register_sub(m_2, "2"); + + register_subalias("1", m_1.m_J); + register_subalias("2", m_1.sub.m_QQ); + register_subalias("3", m_1.sub.m_Q); + + register_subalias("4", m_1.m_K); + register_subalias("5", m_2.sub.m_Q); + register_subalias("6", m_2.sub.m_QQ); + + // register_subalias("7", ); ==> GND + + register_subalias("8", m_2.m_J); + register_subalias("9", m_2.sub.m_clk); + register_subalias("10", m_2.m_clrQ); + + register_subalias("11", m_2.m_K); + register_subalias("12", m_1.sub.m_clk); + register_subalias("13", m_1.m_clrQ); + + // register_subalias("14", ); ==> VCC +} + +NETLIB_RESET(74107_dip) +{ + m_1.do_reset(); + m_2.do_reset(); +} + +NETLIB_UPDATE(74107_dip) +{ +} diff --git a/src/emu/netlist/devices/nld_74107.h b/src/emu/netlist/devices/nld_74107.h index 8ede64efbbd..a19edf862cf 100644 --- a/src/emu/netlist/devices/nld_74107.h +++ b/src/emu/netlist/devices/nld_74107.h @@ -62,7 +62,7 @@ #include "../nl_base.h" #define TTL_74107A(_name, _CLK, _J, _K, _CLRQ) \ - NET_REGISTER_DEV(nic74107A, _name) \ + NET_REGISTER_DEV(74107A, _name) \ NET_CONNECT(_name, CLK, _CLK) \ NET_CONNECT(_name, J, _J) \ NET_CONNECT(_name, K, _K) \ @@ -71,7 +71,7 @@ #define TTL_74107(_name, _CLK, _J, _K, _CLRQ) \ TTL_74107A(_name, _CLK, _J, _K, _CLRQ) -NETLIB_SUBDEVICE(nic74107Asub, +NETLIB_SUBDEVICE(74107Asub, netlist_ttl_input_t m_clk; netlist_ttl_output_t m_Q; @@ -85,8 +85,9 @@ NETLIB_SUBDEVICE(nic74107Asub, ); -NETLIB_DEVICE(nic74107A, - NETLIB_NAME(nic74107Asub) sub; +NETLIB_DEVICE(74107A, +public: + NETLIB_NAME(74107Asub) sub; netlist_ttl_input_t m_J; netlist_ttl_input_t m_K; @@ -94,13 +95,21 @@ NETLIB_DEVICE(nic74107A, ); -class NETLIB_NAME(nic74107) : public NETLIB_NAME(nic74107A) +class NETLIB_NAME(74107) : public NETLIB_NAME(74107A) { public: - NETLIB_NAME(nic74107) () - : NETLIB_NAME(nic74107A) () {} + NETLIB_NAME(74107) () + : NETLIB_NAME(74107A) () {} }; +#define TTL_74107_DIP(_name) \ + NET_REGISTER_DEV(74107_dip, _name) + +NETLIB_DEVICE(74107_dip, + + NETLIB_NAME(74107) m_1; + NETLIB_NAME(74107) m_2; +); #endif /* NLD_74107_H_ */ diff --git a/src/emu/netlist/devices/nld_74153.c b/src/emu/netlist/devices/nld_74153.c index 528ee935671..da2cf6229b5 100644 --- a/src/emu/netlist/devices/nld_74153.c +++ b/src/emu/netlist/devices/nld_74153.c @@ -5,7 +5,7 @@ #include "nld_74153.h" -NETLIB_START(nic74153) +NETLIB_START(74153) { register_input("C0", m_C[0]); register_input("C1", m_C[1]); @@ -18,7 +18,7 @@ NETLIB_START(nic74153) register_output("AY", m_Y); //FIXME: Change netlists } -NETLIB_RESET(nic74153) +NETLIB_RESET(74153) { } @@ -27,7 +27,7 @@ NETLIB_RESET(nic74153) * Convert this to sub-devices at some time. */ -NETLIB_UPDATE(nic74153) +NETLIB_UPDATE(74153) { const netlist_time delay[2] = { NLTIME_FROM_NS(23), NLTIME_FROM_NS(18) }; if (!INPLOGIC(m_G)) diff --git a/src/emu/netlist/devices/nld_74153.h b/src/emu/netlist/devices/nld_74153.h index b3437930149..66623cd1096 100644 --- a/src/emu/netlist/devices/nld_74153.h +++ b/src/emu/netlist/devices/nld_74153.h @@ -48,7 +48,7 @@ #include "../nl_base.h" #define TTL_74153(_name, _C0, _C1, _C2, _C3, _A, _B, _G) \ - NET_REGISTER_DEV(nic74153, _name) \ + NET_REGISTER_DEV(74153, _name) \ NET_CONNECT(_name, C0, _C0) \ NET_CONNECT(_name, C1, _C1) \ NET_CONNECT(_name, C2, _C2) \ @@ -57,7 +57,7 @@ NET_CONNECT(_name, B, _B) \ NET_CONNECT(_name, G, _G) -NETLIB_DEVICE(nic74153, +NETLIB_DEVICE(74153, netlist_ttl_input_t m_C[4]; netlist_ttl_input_t m_A; netlist_ttl_input_t m_B; diff --git a/src/emu/netlist/devices/nld_7493.c b/src/emu/netlist/devices/nld_7493.c index 20851d934d9..ad7ff86b953 100644 --- a/src/emu/netlist/devices/nld_7493.c +++ b/src/emu/netlist/devices/nld_7493.c @@ -76,3 +76,35 @@ NETLIB_UPDATE(7493) B.m_I.activate_hl(); } } + +NETLIB_START(7493_dip) +{ + NETLIB_NAME(7493)::start(); + + register_subalias("1", B.m_I); + register_subalias("2", m_R1); + register_subalias("3", m_R2); + + // register_subalias("4", ); --> NC + // register_subalias("5", ); --> VCC + // register_subalias("6", ); --> NC + // register_subalias("7", ); --> NC + + register_subalias("8", C.m_Q); + register_subalias("9", B.m_Q); + // register_subalias("10", ); --> GND + register_subalias("11", D.m_Q); + register_subalias("12", A.m_Q); + // register_subalias("13", ); --> NC + register_subalias("14", A.m_I); +} + +NETLIB_UPDATE(7493_dip) +{ + NETLIB_NAME(7493)::update(); +} + +NETLIB_RESET(7493_dip) +{ + NETLIB_NAME(7493)::reset(); +} diff --git a/src/emu/netlist/devices/nld_7493.h b/src/emu/netlist/devices/nld_7493.h index cc961c389f1..0bf182e27c0 100644 --- a/src/emu/netlist/devices/nld_7493.h +++ b/src/emu/netlist/devices/nld_7493.h @@ -66,6 +66,9 @@ NET_CONNECT(_name, R1, _R1) \ NET_CONNECT(_name, R2, _R2) +#define TTL_7493_DIP(_name) \ + NET_REGISTER_DEV(7493_dip, _name) + NETLIB_SUBDEVICE(7493ff, netlist_ttl_input_t m_I; netlist_ttl_output_t m_Q; @@ -83,4 +86,8 @@ NETLIB_DEVICE(7493, NETLIB_NAME(7493ff) D; ); +NETLIB_DEVICE_DERIVED(7493_dip, 7493, +); + + #endif /* NLD_7493_H_ */ diff --git a/src/emu/netlist/netlist.mak b/src/emu/netlist/netlist.mak index 1cea6f87e52..7a044539a0a 100644 --- a/src/emu/netlist/netlist.mak +++ b/src/emu/netlist/netlist.mak @@ -33,6 +33,7 @@ NETLISTOBJS+= \ $(NETLISTOBJ)/analog/nld_solver.o \ $(NETLISTOBJ)/analog/nld_switches.o \ $(NETLISTOBJ)/analog/nld_twoterm.o \ + $(NETLISTOBJ)/devices/nld_7400.o \ $(NETLISTOBJ)/devices/nld_7404.o \ $(NETLISTOBJ)/devices/nld_7474.o \ $(NETLISTOBJ)/devices/nld_7483.o \ diff --git a/src/emu/netlist/nl_parser.c b/src/emu/netlist/nl_parser.c index 0c1e15e72cd..1b15245ea4f 100644 --- a/src/emu/netlist/nl_parser.c +++ b/src/emu/netlist/nl_parser.c @@ -61,7 +61,7 @@ void netlist_parser::parse(const char *buf) else if (n == "NETLIST_END") netdev_netlist_end(); else - DIODEevice(n); + device(n); } } @@ -125,7 +125,7 @@ void netlist_parser::netdev_param() check_char(')'); } -void netlist_parser::DIODEevice(const pstring &dev_type) +void netlist_parser::device(const pstring &dev_type) { pstring devname; net_device_t_base_factory *f = m_setup.factory().factory_by_name(dev_type, m_setup); diff --git a/src/emu/netlist/nl_parser.h b/src/emu/netlist/nl_parser.h index ce1d517cee5..36ba9ab5914 100644 --- a/src/emu/netlist/nl_parser.h +++ b/src/emu/netlist/nl_parser.h @@ -21,7 +21,7 @@ public: void net_alias(); void netdev_param(); void net_c(); - void DIODEevice(const pstring &dev_type); + void device(const pstring &dev_type); void netdev_netlist_start(); void netdev_netlist_end(); void net_model();