diff --git a/.gitattributes b/.gitattributes index e7ff0b5dff3..0e088536fd7 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2176,6 +2176,7 @@ src/emu/netlist/devices/nld_7425.c svneol=native#text/plain src/emu/netlist/devices/nld_7425.h svneol=native#text/plain src/emu/netlist/devices/nld_7427.c svneol=native#text/plain src/emu/netlist/devices/nld_7427.h svneol=native#text/plain +src/emu/netlist/devices/nld_7430.c svneol=native#text/plain src/emu/netlist/devices/nld_7430.h svneol=native#text/plain src/emu/netlist/devices/nld_7474.c svneol=native#text/plain src/emu/netlist/devices/nld_7474.h svneol=native#text/plain diff --git a/src/emu/machine/netlist.h b/src/emu/machine/netlist.h index 3e7bcb7e3e8..b67d12e5fd2 100644 --- a/src/emu/machine/netlist.h +++ b/src/emu/machine/netlist.h @@ -97,7 +97,7 @@ #define NETDEV_SOUND_OUT(_name, _v) \ NET_REGISTER_DEV(sound, _name) \ - PARAM_name.CHAN, _v) + PARAM(_name.CHAN, _v) class netlist_mame_device_t; diff --git a/src/emu/netlist/devices/nld_7430.c b/src/emu/netlist/devices/nld_7430.c new file mode 100644 index 00000000000..1d16fe0bc1f --- /dev/null +++ b/src/emu/netlist/devices/nld_7430.c @@ -0,0 +1,33 @@ +/* + * nld_7430.c + * + */ + +#include "nld_7430.h" + +NETLIB_START(7430_dip) +{ + register_sub(m_1, "1"); + + register_subalias("1", m_1.m_i[0]); + register_subalias("2", m_1.m_i[1]); + register_subalias("3", m_1.m_i[2]); + register_subalias("4", m_1.m_i[3]); + register_subalias("5", m_1.m_i[4]); + register_subalias("6", m_1.m_i[5]); + + register_subalias("8", m_1.m_Q); + + register_subalias("11", m_1.m_i[6]); + register_subalias("12", m_1.m_i[7]); +} + +NETLIB_UPDATE(7430_dip) +{ +} + +NETLIB_RESET(7430_dip) +{ + m_1.do_reset(); +} + diff --git a/src/emu/netlist/devices/nld_7430.h b/src/emu/netlist/devices/nld_7430.h index 2d9ff87f385..daba75e4d96 100644 --- a/src/emu/netlist/devices/nld_7430.h +++ b/src/emu/netlist/devices/nld_7430.h @@ -53,4 +53,11 @@ NETLIB_SIGNAL(7430, 8, 0, 0); +#define TTL_7430_DIP(_name) \ + NET_REGISTER_DEV(7430_dip, _name) + +NETLIB_DEVICE(7430_dip, + + NETLIB_NAME(7430) m_1; +); #endif /* NLD_7430_H_ */ diff --git a/src/emu/netlist/devices/nld_7490.c b/src/emu/netlist/devices/nld_7490.c index cb951b481f6..7ecc10ef456 100644 --- a/src/emu/netlist/devices/nld_7490.c +++ b/src/emu/netlist/devices/nld_7490.c @@ -7,7 +7,8 @@ NETLIB_START(7490) { - register_input("CLK", m_clk); + register_input("A", m_A); + register_input("B", m_B); register_input("R1", m_R1); register_input("R2", m_R2); register_input("R91", m_R91); @@ -27,6 +28,13 @@ NETLIB_RESET(7490) m_cnt = 0; } +static const netlist_time delay[4] = +{ + NLTIME_FROM_NS(18), + NLTIME_FROM_NS(36) - NLTIME_FROM_NS(18), + NLTIME_FROM_NS(54) - NLTIME_FROM_NS(18), + NLTIME_FROM_NS(72) - NLTIME_FROM_NS(18)}; + NETLIB_UPDATE(7490) { if (INPLOGIC(m_R91) & INPLOGIC(m_R92)) @@ -39,18 +47,66 @@ NETLIB_UPDATE(7490) m_cnt = 0; update_outputs(); } - else if (INP_HL(m_clk)) + else if (INP_HL(m_A)) { - m_cnt++; - if (m_cnt >= 10) - m_cnt = 0; - update_outputs(); + m_cnt ^= 1; + OUTLOGIC(m_Q[0], m_cnt & 1, delay[0]); } + else if (INP_HL(m_B)) + { + m_cnt += 2; + if (m_cnt >= 10) + m_cnt = 0; + update_outputs(); + } } NETLIB_FUNC_VOID(7490, update_outputs, (void)) { - const netlist_time delay[4] = { NLTIME_FROM_NS(18), NLTIME_FROM_NS(36), NLTIME_FROM_NS(54), NLTIME_FROM_NS(72) }; + for (int i=0; i<4; i++) OUTLOGIC(m_Q[i], (m_cnt >> i) & 1, delay[i]); } + +NETLIB_START(7490_dip) +{ + NETLIB_NAME(7490)::start(); +#if 0 + 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); +#endif +} + +/* +--------------+ + * B |1 ++ 14| A + * R01 |2 13| NC + * R02 |3 12| QA + * NC |4 7490 11| QD + * VCC |5 10| GND + * R91 |6 9| QB + * R92 |7 8| QC + * +--------------+ +*/ +NETLIB_UPDATE(7490_dip) +{ + NETLIB_NAME(7490)::update(); +} + +NETLIB_RESET(7490_dip) +{ + NETLIB_NAME(7490)::reset(); +} diff --git a/src/emu/netlist/devices/nld_7490.h b/src/emu/netlist/devices/nld_7490.h index 288f2cc8864..29ca2a19716 100644 --- a/src/emu/netlist/devices/nld_7490.h +++ b/src/emu/netlist/devices/nld_7490.h @@ -57,14 +57,18 @@ #include "../nl_base.h" -#define TTL_7490(_name, _CLK, _R1, _R2, _R91, _R92) \ +#define TTL_7490(_name, _A, _B, _R1, _R2, _R91, _R92) \ NET_REGISTER_DEV(7490, _name) \ - NET_CONNECT(_name, CLK, _CLK) \ + NET_CONNECT(_name, A, _A) \ + NET_CONNECT(_name, B, _B) \ NET_CONNECT(_name, R1, _R1) \ NET_CONNECT(_name, R2, _R2) \ NET_CONNECT(_name, R91, _R91) \ NET_CONNECT(_name, R92, _R92) +#define TTL_7490_DIP(_name) \ + NET_REGISTER_DEV(7490_dip, _name) + NETLIB_DEVICE(7490, ATTR_HOT void update_outputs(); @@ -73,11 +77,15 @@ NETLIB_DEVICE(7490, netlist_ttl_input_t m_R2; netlist_ttl_input_t m_R91; netlist_ttl_input_t m_R92; - netlist_ttl_input_t m_clk; + netlist_ttl_input_t m_A; + netlist_ttl_input_t m_B; UINT8 m_cnt; netlist_ttl_output_t m_Q[4]; ); +NETLIB_DEVICE_DERIVED(7490_dip, 7490, +); + #endif /* NLD_7490_H_ */ diff --git a/src/emu/netlist/devices/nld_7493.c b/src/emu/netlist/devices/nld_7493.c index ad7ff86b953..d3d4c2345ab 100644 --- a/src/emu/netlist/devices/nld_7493.c +++ b/src/emu/netlist/devices/nld_7493.c @@ -99,6 +99,7 @@ NETLIB_START(7493_dip) register_subalias("14", A.m_I); } + NETLIB_UPDATE(7493_dip) { NETLIB_NAME(7493)::update(); diff --git a/src/mame/drivers/pong.c b/src/mame/drivers/pong.c index bbf2a925766..a428f1d1b58 100644 --- a/src/mame/drivers/pong.c +++ b/src/mame/drivers/pong.c @@ -542,7 +542,7 @@ static NETLIST_START(pong_schematics) // ---------------------------------------------------------------------------------------- TTL_7402_NOR(ic_f5b, L, Missed) - TTL_7490(ic_c7, ic_f5b, SRST, SRST, low, low) + TTL_7490(ic_c7, ic_f5b, ic_c7.QA, SRST, SRST, low, low) TTL_74107(ic_c8a, ic_c7.QD, high, high, SRSTQ) SWITCH2(sw1a, high, ic_c7.QC) PARAM(sw1a.POS, 0) @@ -557,7 +557,7 @@ static NETLIST_START(pong_schematics) ALIAS(score1_10Q, ic_c8a.QQ) TTL_7402_NOR(ic_f5a, R, Missed) - TTL_7490(ic_d7, ic_f5a, SRST, SRST, low, low) + TTL_7490(ic_d7, ic_f5a, ic_d7.QA, SRST, SRST, low, low) TTL_74107(ic_c8b, ic_d7.QD, high, high, SRSTQ) SWITCH2(sw1b, high, ic_d7.QC) PARAM(sw1b.POS, 0) @@ -707,7 +707,7 @@ static NETLIST_START(pong_fast) NETLIST_END() -#ifdef TESTSOUND +#ifdef TEST_SOUND static NETLIST_START(test) /* @@ -837,7 +837,7 @@ MACHINE_CONFIG_END ROM_START( pong ) /* dummy to satisfy game entry*/ ROM_REGION( 0x10000, "maincpu", 0 ) /* enough for netlist */ - ROM_LOAD( "pong.netlist", 0x000000, 0x0043d9, CRC(64edd5a0) SHA1(9e661f2fba44f46015fdccffa7766dd4e61cdc7d) ) + ROM_LOAD( "pong.netlist", 0x000000, 17790 /*0x0043d9*/, CRC(64edd5a0) SHA1(9e661f2fba44f46015fdccffa7766dd4e61cdc7d) ) ROM_END ROM_START( pongf ) /* dummy to satisfy game entry*/