trunk/src/emu/netlist/devices/nld_legacy.c
r26884 | r26885 | |
4 | 4 | */ |
5 | 5 | |
6 | 6 | #include "nld_legacy.h" |
| 7 | #include "netlist/nl_setup.h" |
7 | 8 | |
8 | | NETLIB_START(nicMultiSwitch) |
9 | | { |
10 | | static const char *sIN[8] = { "i1", "i2", "i3", "i4", "i5", "i6", "i7", "i8" }; |
11 | | int i; |
12 | | |
13 | | m_position = 0; |
14 | | m_low.initial(0); |
15 | | |
16 | | for (i=0; i<8; i++) |
17 | | { |
18 | | register_input(sIN[i], m_I[i]); |
19 | | m_low.net().register_con(m_I[i]); |
20 | | //m_I[i].set_net(m_low.m_net); |
21 | | } |
22 | | register_param("POS", m_POS, 0); |
23 | | register_output("Q", m_Q); |
24 | | |
25 | | save(NAME(m_position)); |
26 | | |
27 | | } |
28 | | |
29 | | NETLIB_UPDATE(nicMultiSwitch) |
30 | | { |
31 | | assert(m_position<8); |
32 | | OUTANALOG(m_Q, INPANALOG(m_I[m_position]), NLTIME_FROM_NS(1)); |
33 | | } |
34 | | |
35 | | NETLIB_UPDATE_PARAM(nicMultiSwitch) |
36 | | { |
37 | | m_position = m_POS.Value(); |
38 | | //update(); |
39 | | } |
40 | | |
41 | 9 | NETLIB_START(nicRSFF) |
42 | 10 | { |
43 | 11 | register_input("S", m_S); |
trunk/src/emu/netlist/devices/nld_legacy.h
r26884 | r26885 | |
14 | 14 | #define NLD_LEGACY_H_ |
15 | 15 | |
16 | 16 | #include "../nl_base.h" |
| 17 | #include "nld_twoterm.h" |
17 | 18 | |
18 | 19 | // ---------------------------------------------------------------------------------------- |
19 | 20 | // Macros |
r26884 | r26885 | |
24 | 25 | NET_CONNECT(_name, S, _S) \ |
25 | 26 | NET_CONNECT(_name, R, _R) |
26 | 27 | |
27 | | #define NETDEV_SWITCH2(_name, _i1, _i2) \ |
28 | | NET_REGISTER_DEV(nicMultiSwitch, _name) \ |
29 | | NET_CONNECT(_name, i1, _i1) \ |
30 | | NET_CONNECT(_name, i2, _i2) |
31 | | |
32 | 28 | // ---------------------------------------------------------------------------------------- |
33 | 29 | // Devices ... |
34 | 30 | // ---------------------------------------------------------------------------------------- |
r26884 | r26885 | |
41 | 37 | netlist_ttl_output_t m_QQ; |
42 | 38 | ); |
43 | 39 | |
44 | | NETLIB_DEVICE_WITH_PARAMS(nicMultiSwitch, |
45 | | netlist_analog_input_t m_I[8]; |
46 | 40 | |
47 | | netlist_analog_output_t m_Q; |
48 | | netlist_analog_output_t m_low; |
49 | | |
50 | | netlist_param_int_t m_POS; |
51 | | |
52 | | int m_position; |
53 | | ); |
54 | | |
55 | | |
56 | | |
57 | | |
58 | 41 | #endif /* NLD_LEGACY_H_ */ |
trunk/src/mame/drivers/pong.c
r26884 | r26885 | |
111 | 111 | NETDEV_PARAM(xclk.FREQ, 7159000.0*2) |
112 | 112 | #endif |
113 | 113 | |
114 | | NETDEV_LOGIC_INPUT(SRST) |
115 | | NETDEV_ANALOG_INPUT(P2) |
| 114 | /* 3V Logic - Just a resistor - the value is not given in schematics */ |
116 | 115 | |
| 116 | NETDEV_R(R3V, 50) // Works ... |
| 117 | NET_C(R3V.1, V5) |
| 118 | NET_ALIAS(V3, R3V.2) |
| 119 | |
| 120 | /* Coin, antenna and startup circuit */ |
| 121 | |
| 122 | NETDEV_ANALOG_CONST(STOPG, 0) |
| 123 | NET_ALIAS(SRSTQ, RYf.2) |
| 124 | NET_ALIAS(SRST, RYc.2) |
| 125 | |
| 126 | /* SRSTQ has a diode to +3V to protect against overvoltage - omitted */ |
| 127 | |
| 128 | NETDEV_LOGIC_INPUT(antenna) |
| 129 | |
| 130 | NET_ALIAS(runQ, Q1.C) |
| 131 | |
| 132 | TTL_7404_INVERT(e4d, STOPG) |
| 133 | |
| 134 | NETDEV_R(RYf, 50) // output impedance |
| 135 | NETDEV_R(RYc, 50) // output impedance |
| 136 | |
| 137 | TTL_7404_INVERT(c9f, RYc.2) |
| 138 | TTL_7404_INVERT(c9c, RYf.2) |
| 139 | NET_C(c9f.Q, RYf.1) |
| 140 | NET_C(c9c.Q, RYc.1) |
| 141 | |
| 142 | NETDEV_SWITCH2(coinsw, RYc.2, RYf.2) |
| 143 | |
| 144 | NET_C(coinsw.Q, GND) |
| 145 | |
| 146 | /* Antenna circuit */ |
| 147 | /* Has a diode to clamp negative voltages - omitted here */ |
| 148 | |
| 149 | NETDEV_QNPN(Q3, BC237B) |
| 150 | NET_C(antenna, Q3.B) |
| 151 | NET_C(GND, Q3.E) |
| 152 | NETDEV_R(RX5, 100) |
| 153 | NETDEV_C(CX1, CAP_U(0.1)) |
| 154 | |
| 155 | NET_C(RX5.1, CX1.1) |
| 156 | NET_C(RX5.1, Q3.C) |
| 157 | NET_C(RX5.2, GND) |
| 158 | NET_C(CX1.2, GND) |
| 159 | NETDEV_QNPN(Q1, BC237B) |
| 160 | NET_C(Q1.B, RX5.1) |
| 161 | NET_C(Q1.E, GND) |
| 162 | |
| 163 | NETDEV_D(D3, 1N914) |
| 164 | NET_C(D3.A, Q1.C) |
| 165 | NET_C(D3.K, SRSTQ) |
| 166 | |
| 167 | NETDEV_D(D2, 1N914) |
| 168 | NETDEV_R(RX4, 220) |
| 169 | NET_C(D2.K, e4d.Q) |
| 170 | NET_C(D2.A, RX4.1) |
| 171 | NET_C(RX4.2, Q3.C) |
| 172 | |
| 173 | NETDEV_R(RX1, 100) |
| 174 | NETDEV_R(RX2, 100) |
| 175 | NETDEV_R(RX3, 330) |
| 176 | NETDEV_C(CX2, CAP_U(0.1)) |
| 177 | |
| 178 | NET_C(RX3.2, D3.A) |
| 179 | NET_C(RX3.1, RX1.2) |
| 180 | NET_C(RX1.1, V3) |
| 181 | |
| 182 | NET_C(RX1.1, CX2.1) |
| 183 | NET_C(RX1.2, CX2.2) |
| 184 | |
| 185 | NETDEV_QPNP(Q2, BC556B) |
| 186 | NET_C(Q2.E, V3) |
| 187 | NET_C(Q2.B, RX1.2) |
| 188 | NET_C(Q2.C, RX2.2) |
| 189 | |
| 190 | NET_C(RX2.1, D2.A) |
| 191 | |
| 192 | /* hit logic */ |
| 193 | |
117 | 194 | TTL_7404_INVERT(hitQ, hit) |
118 | 195 | TTL_7400_NAND(hit, hit1Q, hit2Q) |
119 | 196 | |
r26884 | r26885 | |
130 | 207 | TTL_7400_NAND(ic_e1a, ic_d1e.Q, attractQ) |
131 | 208 | NET_ALIAS(Missed, ic_e1a.Q) |
132 | 209 | |
133 | | // runQ is basically the output of a RS flipflop |
134 | | // This is realized with discrete components in the real thing |
135 | | NETDEV_RSFF(runQ_ff, SRST, StopG) |
136 | | NET_ALIAS(runQ, runQ_ff.QQ) |
137 | | |
138 | 210 | TTL_7400_NAND(rstspeed, SRSTQ, MissQ) |
139 | 211 | TTL_7400_NAND(StopG, StopG1Q, StopG2Q) |
140 | 212 | NET_ALIAS(L, ic_h3b.Q) |
r26884 | r26885 | |
143 | 215 | TTL_7400_NAND(hit1Q, pad1, ic_g1b.Q) |
144 | 216 | TTL_7400_NAND(hit2Q, pad2, ic_g1b.Q) |
145 | 217 | |
146 | | TTL_7404_INVERT(SRSTQ, SRST) |
147 | | |
148 | 218 | TTL_7400_NAND(ic_g3c, 128H, ic_h3a.QQ) |
149 | 219 | TTL_7427_NOR(ic_g2c, ic_g3c.Q, 256H, vpad1Q) |
150 | 220 | NET_ALIAS(pad1, ic_g2c.Q) |
r26884 | r26885 | |
668 | 738 | PORT_BIT( 0xff, 0x00, IPT_PADDLE ) PORT_SENSITIVITY(2) PORT_KEYDELTA(100) PORT_CENTERDELTA(0) PORT_PLAYER(2) NETLIST_ANALOG_PORT_CHANGED("maincpu", "pot1") |
669 | 739 | |
670 | 740 | PORT_START("IN0") /* fake as well */ |
671 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) NETLIST_LOGIC_PORT_CHANGED("maincpu", "srst") |
| 741 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) NETLIST_LOGIC_PORT_CHANGED("maincpu", "coinsw") |
| 742 | |
672 | 743 | PORT_DIPNAME( 0x06, 0x00, "Game Won" ) PORT_DIPLOCATION("SW1A:1,SW1B:1") PORT_CHANGED_MEMBER(DEVICE_SELF, pong_state, input_changed, IC_SWITCH) |
673 | 744 | PORT_DIPSETTING( 0x00, "11" ) |
674 | 745 | PORT_DIPSETTING( 0x06, "15" ) |
675 | 746 | |
| 747 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Antenna") NETLIST_LOGIC_PORT_CHANGED("maincpu", "antenna") |
| 748 | |
676 | 749 | PORT_START("VR1") |
677 | 750 | PORT_ADJUSTER( 50, "VR1 - 50k, Paddle 1 adjustment" ) NETLIST_ANALOG_PORT_CHANGED("maincpu", "vr0") |
678 | 751 | PORT_START("VR2") |
r26884 | r26885 | |
692 | 765 | MCFG_NETLIST_ANALOG_INPUT("maincpu", "pot1", "ic_a9_POT.DIAL") |
693 | 766 | MCFG_NETLIST_LOGIC_INPUT("maincpu", "sw1a", "sw1a.POS", 0, 0x01) |
694 | 767 | MCFG_NETLIST_LOGIC_INPUT("maincpu", "sw1b", "sw1b.POS", 0, 0x01) |
695 | | MCFG_NETLIST_LOGIC_INPUT("maincpu", "srst", "SRST.OUT", 0, 0x01) |
| 768 | MCFG_NETLIST_LOGIC_INPUT("maincpu", "coinsw", "coinsw.POS", 0, 0x01) |
| 769 | MCFG_NETLIST_LOGIC_INPUT("maincpu", "antenna", "antenna.OUT", 0, 0x01) |
696 | 770 | |
697 | 771 | /* video hardware */ |
698 | 772 | |
r26884 | r26885 | |
723 | 797 | |
724 | 798 | ROM_START( pong ) /* dummy to satisfy game entry*/ |
725 | 799 | ROM_REGION( 0x10000, "maincpu", 0 ) /* enough for netlist */ |
726 | | ROM_LOAD( "pong.netlist", 0x000000, 0x003f24, CRC(cc99883b) SHA1(87ea6ec8772db7bf4047695d4c3513fa1a52b6b8) ) |
| 800 | ROM_LOAD( "pong.netlist", 0x000000, 0x0043d9, CRC(64edd5a0) SHA1(9e661f2fba44f46015fdccffa7766dd4e61cdc7d) ) |
727 | 801 | ROM_END |
728 | 802 | |
729 | 803 | ROM_START( pongf ) /* dummy to satisfy game entry*/ |