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*/ |