1 // license:GPL-2.0+
2 // copyright-holders: Couriersud
3 
4 /***************************************************************************
5 
6   Netlist (pong) included from pong.c
7 
8 ***************************************************************************/
9 
10 //#ifndef __PLIB_PREPROCESSOR__
11 	#define NL_PROHIBIT_BASEH_INCLUDE   1
12 	#include "netlist/devices/net_lib.h"
13 //#endif
14 
15 #define FAST_CLOCK  (1)
16 
17 NETLIST_START(pongf)
18 
19 	SOLVER(Solver, 5000)
20 	PARAM(Solver.PARALLEL, 0) // Don't do parallel solvers
21 	PARAM(Solver.VNTOL, 1e-4) // works and is sufficient
22 	PARAM(Solver.DYNAMIC_LTE, 1e-1) // Aggressive timestepping
23 	PARAM(Solver.METHOD, "MAT_CR")
24 	PARAM(Solver.DYNAMIC_TS, 1)
25 	PARAM(Solver.DYNAMIC_MIN_TIMESTEP, 2e-5)
26 	PARAM(NETLIST.USE_DEACTIVATE, 1)
27 
28 	ANALOG_INPUT(V5, 5)
29 	ALIAS(VCC, V5)          // we need VCC for TTL chips
30 
31 	TTL_INPUT(high, 1)
32 	TTL_INPUT(low, 0)
33 
34 #if (FAST_CLOCK)
35 	/* abstracting this, performance increases by 60%
36 	 * No surprise, the clock is extremely expensive */
37 	MAINCLOCK(clk, 7159000.0)
38 #else
39 	/* this is the clock circuit in schematics. */
40 	MAINCLOCK(xclk, 14318000.0) //7159000.0*2
41 	TTL_74107(ic_f6a, xclk, high, high, high)
42 	ALIAS(clk, ic_f6a.Q)
43 #endif
44 
45 	/* 3V Logic - Just a resistor - the value is not given in schematics */
46 
47 	RES(R3V, 50)   // Works ...
48 	NET_C(R3V.1, V5)
49 	ALIAS(V3, R3V.2)
50 
51 	/* Coin, antenna and startup circuit */
52 
53 	ANALOG_INPUT(STOPG, 0)
54 
55 	ALIAS(SRSTQ, c9f.Q)
56 	ALIAS(SRST, c9c.Q)
57 
58 	/* SRSTQ has a diode to +3V to protect against overvoltage - omitted */
59 
60 	TTL_INPUT(antenna, 0)
61 
62 	ALIAS(runQ, Q1.C)
63 
64 	TTL_7404_INVERT(e4d, STOPG)
65 
66 	TTL_7404_INVERT(c9f, c9c.Q)
67 	TTL_7404_INVERT(c9c, c9f.Q)
68 
69 	SWITCH2(coinsw)
70 	NET_C(c9c.Q, coinsw.1)
71 	NET_C(c9f.Q, coinsw.2)
72 
73 	NET_C(coinsw.Q, GND)
74 
75 	/* Antenna circuit */
76 	/* Has a diode to clamp negative voltages - omitted here */
77 
78 	QBJT_SW(Q3, "BC237B")
79 	NET_C(antenna, Q3.B)
80 	NET_C(GND, Q3.E)
81 	RES(RX5, 100)
82 	CAP(CX1, CAP_U(0.1))
83 
84 	NET_C(RX5.1, CX1.1)
85 	NET_C(RX5.1, Q3.C)
86 	NET_C(RX5.2, GND)
87 	NET_C(CX1.2, GND)
88 	QBJT_SW(Q1, "BC237B")
89 	NET_C(Q1.B, RX5.1)
90 	NET_C(Q1.E, GND)
91 
92 	DIODE(D3, "1N914")
93 	NET_C(D3.A, Q1.C)
94 	NET_C(D3.K, SRSTQ)
95 
96 	DIODE(D2, "1N914")
97 	RES(RX4, 220)
98 	NET_C(D2.K, e4d.Q)
99 	NET_C(D2.A, RX4.1)
100 	NET_C(RX4.2, Q3.C)
101 
102 	RES(RX1, 100)
103 	RES(RX2, 100)
104 	RES(RX3, 330)
105 	CAP(CX2, CAP_U(0.1))
106 
107 	NET_C(RX3.2, D3.A)
108 	NET_C(RX3.1, RX1.2)
109 	NET_C(RX1.1, V3)
110 
111 	NET_C(RX1.1, CX2.1)
112 	NET_C(RX1.2, CX2.2)
113 
114 	QBJT_SW(Q2, "BC556B")
115 	NET_C(Q2.E, V3)
116 	NET_C(Q2.B, RX1.2)
117 	NET_C(Q2.C, RX2.2)
118 
119 	NET_C(RX2.1, D2.A)
120 
121 	/* hit logic */
122 
123 	TTL_7404_INVERT(hitQ, hit)
124 	TTL_7400_NAND(hit, hit1Q, hit2Q)
125 
126 	TTL_7402_NOR(attractQ, StopG, runQ)
127 	TTL_7404_INVERT(attract, attractQ)
128 
129 	TTL_7420_NAND(ic_h6a, hvidQ, hvidQ, hvidQ, hvidQ)
130 	ALIAS(hvid, ic_h6a.Q)
131 
132 	TTL_7400_NAND(ic_e6c, hvid, hblank)
133 	ALIAS(MissQ, ic_e6c.Q)
134 
135 	TTL_7404_INVERT(ic_d1e, MissQ)
136 	TTL_7400_NAND(ic_e1a, ic_d1e.Q, attractQ)
137 	ALIAS(Missed, ic_e1a.Q)
138 
139 	TTL_7400_NAND(rstspeed, SRSTQ, MissQ)
140 	TTL_7400_NAND(StopG, StopG1Q, StopG2Q)
141 	ALIAS(L, ic_h3b.Q)
142 	ALIAS(R, ic_h3b.QQ)
143 
144 	TTL_7400_NAND(hit1Q, pad1, ic_g1b.Q)
145 	TTL_7400_NAND(hit2Q, pad2, ic_g1b.Q)
146 
147 	TTL_7400_NAND(ic_g3c, 128H, ic_h3a.QQ)
148 	TTL_7427_NOR(ic_g2c, ic_g3c.Q, 256H, vpad1Q)
149 	ALIAS(pad1, ic_g2c.Q)
150 	TTL_7427_NOR(ic_g2a, ic_g3c.Q, 256HQ, vpad2Q)
151 	ALIAS(pad2, ic_g2a.Q)
152 
153 	// ----------------------------------------------------------------------------------------
154 	// horizontal counter
155 	// ----------------------------------------------------------------------------------------
156 	TTL_7493(ic_f8, clk, ic_f8.QA, ic_e7b.QQ, ic_e7b.QQ)    // f8, f9, f6b
157 	TTL_7493(ic_f9, ic_f8.QD, ic_f9.QA, ic_e7b.QQ, ic_e7b.QQ)   // f8, f9, f6b
158 	TTL_74107(ic_f6b, ic_f9.QD, high, high, ic_e7b.Q)
159 	TTL_7430_NAND(ic_f7, ic_f8.QB, ic_f8.QC, ic_f9.QC, ic_f9.QD, ic_f6b.Q, high, high, high)
160 	TTL_7474(ic_e7b, clk, ic_f7, high, high)
161 
162 	ALIAS(hreset, ic_e7b.QQ)
163 	ALIAS(hresetQ, ic_e7b.Q)
164 	ALIAS(  4H, ic_f8.QC)
165 	ALIAS(  8H, ic_f8.QD)
166 	ALIAS( 16H, ic_f9.QA)
167 	ALIAS( 32H, ic_f9.QB)
168 	ALIAS( 64H, ic_f9.QC)
169 	ALIAS(128H, ic_f9.QD)
170 	ALIAS(256H, ic_f6b.Q)
171 	ALIAS(256HQ, ic_f6b.QQ)
172 
173 	// ----------------------------------------------------------------------------------------
174 	// vertical counter
175 	// ----------------------------------------------------------------------------------------
176 	TTL_7493(ic_e8, hreset, ic_e8.QA, ic_e7a.QQ, ic_e7a.QQ) // e8, e9, d9b
177 	TTL_7493(ic_e9, ic_e8.QD,ic_e9.QA,  ic_e7a.QQ, ic_e7a.QQ)   // e8, e9, d9b
178 	TTL_74107(ic_d9b, ic_e9.QD, high, high, ic_e7a.Q)
179 	TTL_7474(ic_e7a, hreset, e7a_data, high, high)
180 	TTL_7410_NAND(e7a_data, ic_e8.QA, ic_e8.QC, ic_d9b.Q)
181 
182 	ALIAS(vreset, ic_e7a.QQ)
183 	ALIAS(  4V, ic_e8.QC)
184 	ALIAS(  8V, ic_e8.QD)
185 	ALIAS( 16V, ic_e9.QA)
186 	ALIAS( 32V, ic_e9.QB)
187 	ALIAS( 64V, ic_e9.QC)
188 	ALIAS(128V, ic_e9.QD)
189 	ALIAS(256V,  ic_d9b.Q)
190 	ALIAS(256VQ, ic_d9b.QQ)
191 
192 
193 	// ----------------------------------------------------------------------------------------
194 	// hblank flip flop
195 	// ----------------------------------------------------------------------------------------
196 
197 	TTL_7400_NAND(ic_g5b, 16H, 64H)
198 
199 	// the time critical one
200 	TTL_7400_NAND(ic_h5c, ic_h5b.Q, hresetQ)
201 	TTL_7400_NAND(ic_h5b, ic_h5c.Q, ic_g5b.Q)
202 
203 	ALIAS(hblank,  ic_h5c.Q)
204 	ALIAS(hblankQ,  ic_h5b.Q)
205 	TTL_7400_NAND(hsyncQ, hblank, 32H)
206 
207 	// ----------------------------------------------------------------------------------------
208 	// vblank flip flop
209 	// ----------------------------------------------------------------------------------------
210 	TTL_7402_NOR(ic_f5c, ic_f5d.Q, vreset)
211 	TTL_7402_NOR(ic_f5d, ic_f5c.Q, 16V)
212 
213 	ALIAS(vblank,  ic_f5d.Q)
214 	ALIAS(vblankQ, ic_f5c.Q)
215 
216 	TTL_7400_NAND(ic_h5a, 8V, 8V)
217 	TTL_7410_NAND(ic_g5a, vblank, 4V, ic_h5a.Q)
218 	ALIAS(vsyncQ, ic_g5a.Q)
219 
220 	// ----------------------------------------------------------------------------------------
221 	// move logic
222 	// ----------------------------------------------------------------------------------------
223 
224 	TTL_7400_NAND(ic_e1d, hit_sound, ic_e1c.Q)
225 	TTL_7400_NAND(ic_e1c, ic_f1.QC, ic_f1.QD)
226 	TTL_7493(ic_f1, ic_e1d.Q, ic_f1.QA, rstspeed, rstspeed)
227 
228 	TTL_7402_NOR(ic_g1d, ic_f1.QC, ic_f1.QD)
229 	TTL_7400_NAND(ic_h1a, ic_g1d.Q, ic_g1d.Q)
230 	TTL_7400_NAND(ic_h1d, ic_e1c.Q, ic_h1a.Q)
231 
232 	TTL_7400_NAND(ic_h1c, ic_h1d.Q, vreset)
233 	TTL_7400_NAND(ic_h1b, ic_h1a.Q, vreset)
234 	TTL_7402_NOR(ic_g1c, 256HQ, vreset)
235 
236 	TTL_74107(ic_h2a, ic_g1c.Q, ic_h2b.Q, low, ic_h1b.Q)
237 	TTL_74107(ic_h2b, ic_g1c.Q, high, move, ic_h1c.Q)
238 
239 	TTL_7400_NAND(ic_h4a, ic_h2b.Q, ic_h2a.Q)
240 	ALIAS(move, ic_h4a.Q)
241 
242 	TTL_7400_NAND(ic_c1d, SC, attract)
243 	TTL_7404_INVERT(ic_d1a, ic_c1d.Q)
244 	TTL_7474(ic_h3b, ic_d1a.Q, ic_h3b.QQ, hit1Q, hit2Q)
245 
246 	TTL_7400_NAND(ic_h4d, ic_h3b.Q, move)
247 	TTL_7400_NAND(ic_h4b, ic_h3b.QQ, move)
248 	TTL_7400_NAND(ic_h4c, ic_h4d.Q, ic_h4b.Q)
249 	ALIAS(Aa, ic_h4c.Q)
250 	ALIAS(Ba, ic_h4b.Q)
251 
252 	// ----------------------------------------------------------------------------------------
253 	// hvid circuit
254 	// ----------------------------------------------------------------------------------------
255 
256 	TTL_7400_NAND(hball_resetQ, Serve, attractQ)
257 
258 	TTL_9316(ic_g7, clk, high, hblankQ, hball_resetQ, ic_g5c.Q, Aa, Ba, low, high)
259 	TTL_9316(ic_h7, clk, ic_g7.RC, high, hball_resetQ, ic_g5c.Q, low, low, low, high)
260 	TTL_74107(ic_g6b, ic_h7.RC, high, high, hball_resetQ)
261 	TTL_7410_NAND(ic_g5c, ic_g6b.Q, ic_h7.RC, ic_g7.RC)
262 	TTL_7420_NAND(ic_h6b, ic_g6b.Q, ic_h7.RC, ic_g7.QC, ic_g7.QD)
263 	ALIAS(hvidQ, ic_h6b.Q)
264 
265 	// ----------------------------------------------------------------------------------------
266 	// vvid circuit
267 	// ----------------------------------------------------------------------------------------
268 
269 	TTL_9316(ic_b3, hsyncQ, high, vblankQ, high, ic_b2b.Q, a6, b6, c6, d6)
270 	TTL_9316(ic_a3, hsyncQ, ic_b3.RC, high, high, ic_b2b.Q, low, low, low, low)
271 	TTL_7400_NAND(ic_b2b, ic_a3.RC, ic_b3.RC)
272 	TTL_7410_NAND(ic_e2b, ic_a3.RC, ic_b3.QC, ic_b3.QD)
273 	ALIAS(vvidQ, ic_e2b.Q)
274 	TTL_7404_INVERT(vvid, vvidQ)    // D2D
275 	ALIAS(vpos256, ic_a3.RC)
276 	ALIAS(vpos32, ic_a3.QB)
277 	ALIAS(vpos16, ic_a3.QA)
278 
279 	// ----------------------------------------------------------------------------------------
280 	// vball ctrl circuit
281 	// ----------------------------------------------------------------------------------------
282 
283 	TTL_7450_ANDORINVERT(ic_a6a, b1, 256HQ, b2, 256H)
284 	TTL_7450_ANDORINVERT(ic_a6b, c1, 256HQ, c2, 256H)
285 	TTL_7450_ANDORINVERT(ic_b6b, d1, 256HQ, d2, 256H)
286 
287 	TTL_7474(ic_a5b, hit, ic_a6a, attractQ, high)
288 	TTL_7474(ic_a5a, hit, ic_a6b, attractQ, high)
289 	TTL_7474(ic_b5a, hit, ic_b6b, attractQ, high)
290 	TTL_74107(ic_h2x, vblank, vvid, vvid, hitQ) // two marked at position h2a ==> this h2x
291 
292 	TTL_7486_XOR(ic_a4c, ic_a5b.Q, ic_h2x.Q)
293 	TTL_7486_XOR(ic_a4b, ic_a5a.Q, ic_h2x.Q)
294 
295 	TTL_7450_ANDORINVERT(ic_b6a, ic_b5a.Q, ic_h2x.Q, ic_b5a.QQ, ic_h2x.QQ)
296 
297 	TTL_7404_INVERT(ic_c4a, ic_b6a)
298 
299 	TTL_7483(ic_b4, ic_a4c, ic_a4b, ic_b6a, low, ic_c4a, high, high, low, low)
300 	ALIAS(a6, ic_b4.S1)
301 	ALIAS(b6, ic_b4.S2)
302 	ALIAS(c6, ic_b4.S3)
303 	ALIAS(d6, ic_b4.S4)
304 
305 	// ----------------------------------------------------------------------------------------
306 	// serve monoflop
307 	// ----------------------------------------------------------------------------------------
308 
309 	TTL_7404_INVERT(f4_trig, rstspeed)
310 
311 	RES(ic_f4_serve_R, RES_K(330))
312 	CAP(ic_f4_serve_C, CAP_U(4.7))
313 	NE555(ic_f4_serve)
314 
315 	NET_C(ic_f4_serve.VCC, V5)
316 	NET_C(ic_f4_serve.GND, GND)
317 	NET_C(ic_f4_serve.RESET, V5)
318 	NET_C(ic_f4_serve_R.1, V5)
319 	NET_C(ic_f4_serve_R.2, ic_f4_serve.THRESH)
320 	NET_C(ic_f4_serve_R.2, ic_f4_serve.DISCH)
321 	NET_C(f4_trig, ic_f4_serve.TRIG)
322 	NET_C(ic_f4_serve_R.2, ic_f4_serve_C.1)
323 	NET_C(GND, ic_f4_serve_C.2)
324 
325 	TTL_7427_NOR(ic_e5a, ic_f4_serve.OUT, StopG, runQ)
326 	TTL_7474(ic_b5b_serve, pad1, ic_e5a, ic_e5a, high)
327 
328 	ALIAS(Serve, ic_b5b_serve.QQ)
329 	ALIAS(ServeQ, ic_b5b_serve.Q)
330 
331 	// ----------------------------------------------------------------------------------------
332 	// score logic
333 	// ----------------------------------------------------------------------------------------
334 
335 	TTL_7474(ic_h3a, 4H, 128H, high, attractQ)
336 
337 	// ----------------------------------------------------------------------------------------
338 	// sound logic
339 	// ----------------------------------------------------------------------------------------
340 	TTL_7474(ic_c2a, vpos256, high, hitQ, high)
341 	TTL_74107(ic_f3_topbot, vblank, vvid, vvidQ, ServeQ)
342 
343 	// ----------------------------------------------------------------------------------------
344 	// monoflop with NE555 determines duration of score sound
345 	// ----------------------------------------------------------------------------------------
346 
347 	RES(ic_g4_R, RES_K(220))
348 	CAP(ic_g4_C, CAP_U(1))
349 	NE555(ic_g4_sc)
350 	ALIAS(SC, ic_g4_sc.OUT)
351 
352 	NET_C(ic_g4_sc.VCC, V5)
353 	NET_C(ic_g4_sc.GND, GND)
354 	NET_C(ic_g4_sc.RESET, V5)
355 	NET_C(ic_g4_R.1, V5)
356 	NET_C(ic_g4_R.2, ic_g4_sc.THRESH)
357 	NET_C(ic_g4_R.2, ic_g4_sc.DISCH)
358 	NET_C(MissQ, ic_g4_sc.TRIG)
359 	NET_C(ic_g4_R.2, ic_g4_C.1)
360 	NET_C(GND, ic_g4_C.2)
361 
362 	ALIAS(hit_sound_en, ic_c2a.QQ)
363 	TTL_7400_NAND(hit_sound, hit_sound_en, vpos16)
364 	TTL_7400_NAND(score_sound, SC, vpos32)
365 	TTL_7400_NAND(topbothitsound, ic_f3_topbot.Q, vpos32)
366 
367 	TTL_7410_NAND(ic_c4b, topbothitsound, hit_sound, score_sound)
368 	TTL_7400_NAND(ic_c1b, ic_c4b.Q, attractQ)
369 	ALIAS(sound, ic_c1b.Q)
370 
371 
372 	// ----------------------------------------------------------------------------------------
373 	// paddle1 logic 1
374 	// ----------------------------------------------------------------------------------------
375 
376 	POT(ic_b9_POT, RES_K(1))     // This is a guess!!
377 	PARAM(ic_b9_POT.DIALLOG, 1)  // Log Dial ...
378 	RES(ic_b9_RPRE, 470)
379 
380 	NET_C(ic_b9_POT.1, V5)
381 	NET_C(ic_b9_POT.3, GND)
382 	NET_C(ic_b9_POT.2, ic_b9_RPRE.1)
383 	NET_C(ic_b9_RPRE.2, ic_b9.CONT)
384 
385 	RES(ic_b9_R, RES_K(81))        // Adjustment pot
386 	CAP(ic_b9_C, CAP_U(0.1))
387 	DIODE(ic_b9_D, "1N914")
388 	NE555(ic_b9)
389 
390 	NET_C(ic_b9.VCC, V5)
391 	NET_C(ic_b9.GND, GND)
392 	NET_C(ic_b9.RESET, V5)
393 	NET_C(ic_b9_R.1, V5)
394 	NET_C(ic_b9_R.2, ic_b9.THRESH)
395 	NET_C(ic_b9_R.2, ic_b9_D.A)
396 	NET_C(ic_b9_D.K, ic_b9.DISCH)
397 	NET_C(256VQ, ic_b9.TRIG)
398 	NET_C(ic_b9_R.2, ic_b9_C.1)
399 	NET_C(GND, ic_b9_C.2)
400 
401 	TTL_7404_INVERT(ic_c9b, ic_b9.OUT)
402 	TTL_7400_NAND(ic_b7b, ic_a7b.Q, hsyncQ)
403 	TTL_7493(ic_b8, ic_b7b.Q, ic_b8.QA, ic_b9.OUT, ic_b9.OUT)
404 	TTL_7400_NAND(ic_b7a, ic_c9b.Q, ic_a7b.Q)
405 	TTL_7420_NAND(ic_a7b, ic_b8.QA, ic_b8.QB, ic_b8.QC, ic_b8.QD)
406 	ALIAS(vpad1Q, ic_b7a.Q)
407 
408 	ALIAS(b1, ic_b8.QB)
409 	ALIAS(c1, ic_b8.QC)
410 	ALIAS(d1, ic_b8.QD)
411 
412 	// ----------------------------------------------------------------------------------------
413 	// paddle1 logic 2
414 	// ----------------------------------------------------------------------------------------
415 
416 	POT(ic_a9_POT, RES_K(1))     // This is a guess!!
417 	PARAM(ic_a9_POT.DIALLOG, 1)  // Log Dial ...
418 	RES(ic_a9_RPRE, 470)
419 
420 	NET_C(ic_a9_POT.1, V5)
421 	NET_C(ic_a9_POT.3, GND)
422 	NET_C(ic_a9_POT.2, ic_a9_RPRE.1)
423 	NET_C(ic_a9_RPRE.2, ic_a9.CONT)
424 
425 	RES(ic_a9_R, RES_K(81))        // Adjustment pot
426 	CAP(ic_a9_C, CAP_U(0.1))
427 	DIODE(ic_a9_D, "1N914")
428 	NE555(ic_a9)
429 
430 	NET_C(ic_a9.VCC, V5)
431 	NET_C(ic_a9.GND, GND)
432 	NET_C(ic_a9.RESET, V5)
433 	NET_C(ic_a9_R.1, V5)
434 	NET_C(ic_a9_R.2, ic_a9.THRESH)
435 	NET_C(ic_a9_R.2, ic_a9_D.A)
436 	NET_C(ic_a9_D.K, ic_a9.DISCH)
437 	NET_C(256VQ, ic_a9.TRIG)
438 	NET_C(ic_a9_R.2, ic_a9_C.1)
439 	NET_C(GND, ic_a9_C.2)
440 
441 	TTL_7404_INVERT(ic_c9a, ic_a9.OUT)
442 	TTL_7400_NAND(ic_b7c, ic_a7a.Q, hsyncQ)
443 	TTL_7493(ic_a8, ic_b7c.Q, ic_a8.QA, ic_a9.OUT, ic_a9.OUT)
444 	TTL_7400_NAND(ic_b7d, ic_c9a.Q, ic_a7a.Q)
445 	TTL_7420_NAND(ic_a7a, ic_a8.QA, ic_a8.QB, ic_a8.QC, ic_a8.QD)
446 	ALIAS(vpad2Q, ic_b7d.Q)
447 
448 	ALIAS(b2, ic_a8.QB)
449 	ALIAS(c2, ic_a8.QC)
450 	ALIAS(d2, ic_a8.QD)
451 
452 	// ----------------------------------------------------------------------------------------
453 	// C5-EN Logic
454 	// ----------------------------------------------------------------------------------------
455 
456 	TTL_7404_INVERT(ic_e3a, 128H)
457 	TTL_7427_NOR( ic_e3b, 256H, 64H, ic_e3a.Q)
458 	TTL_7410_NAND(ic_e2c, 256H, 64H, ic_e3a.Q)
459 	TTL_7404_INVERT(ic_e3c, ic_e2c.Q)
460 	TTL_7402_NOR(ic_d2c, ic_e3c.Q, ic_e3b.Q)
461 	TTL_7404_INVERT(ic_g1a, 32V)
462 	TTL_7425_NOR(ic_f2a, ic_g1a.Q, 64V, 128V, ic_d2c.Q)
463 	ALIAS(c5_en, ic_f2a.Q)
464 
465 	// ----------------------------------------------------------------------------------------
466 	// Score logic ...
467 	// ----------------------------------------------------------------------------------------
468 
469 	TTL_7402_NOR(ic_f5b, L, Missed)
470 	TTL_7490(ic_c7, ic_f5b, ic_c7.QA, SRST, SRST, low, low)
471 	TTL_74107(ic_c8a, ic_c7.QD, high, high, SRSTQ)
472 	SWITCH2(sw1a)
473 	PARAM(sw1a.POS, 0)
474 
475 	NET_C(sw1a.1, V5)
476 	NET_C(sw1a.2, ic_c7.QC)
477 
478 	TTL_7410_NAND(ic_d8a, ic_c7.QA, sw1a.Q, ic_c8a.Q)       // would be nand2 for 11 instead of 15 points, need a switch dev!
479 
480 	ALIAS(StopG1Q, ic_d8a.Q)
481 	ALIAS(score1_1, ic_c7.QA)
482 	ALIAS(score1_2, ic_c7.QB)
483 	ALIAS(score1_4, ic_c7.QC)
484 	ALIAS(score1_8, ic_c7.QD)
485 	ALIAS(score1_10, ic_c8a.Q)
486 	ALIAS(score1_10Q, ic_c8a.QQ)
487 
488 	TTL_7402_NOR(ic_f5a, R, Missed)
489 	TTL_7490(ic_d7, ic_f5a, ic_d7.QA, SRST, SRST, low, low)
490 	TTL_74107(ic_c8b, ic_d7.QD, high, high, SRSTQ)
491 	SWITCH2(sw1b)
492 	PARAM(sw1b.POS, 0)
493 
494 	NET_C(sw1b.1, V5)
495 	NET_C(sw1b.2, ic_d7.QC)
496 
497 
498 	TTL_7410_NAND(ic_d8b, ic_d7.QA, sw1b.Q, ic_c8b.Q)       // would be nand2 for 11 instead of 15 points, need a switch dev!
499 
500 	ALIAS(StopG2Q, ic_d8b.Q)
501 	ALIAS(score2_1, ic_d7.QA)
502 	ALIAS(score2_2, ic_d7.QB)
503 	ALIAS(score2_4, ic_d7.QC)
504 	ALIAS(score2_8, ic_d7.QD)
505 	ALIAS(score2_10, ic_c8b.Q)
506 	ALIAS(score2_10Q, ic_c8b.QQ)
507 
508 	// ----------------------------------------------------------------------------------------
509 	// Score display
510 	// ----------------------------------------------------------------------------------------
511 
512 	TTL_74153(ic_d6a, score1_10Q, score1_4, score2_10Q, score2_4, 32H, 64H, low)
513 	TTL_74153(ic_d6b, score1_10Q, score1_8, score2_10Q, score2_8, 32H, 64H, low)
514 
515 	TTL_74153(ic_c6a, high, score1_1, high, score2_1, 32H, 64H, low)
516 	TTL_74153(ic_c6b, score1_10Q, score1_2, score2_10Q, score2_2, 32H, 64H, low)
517 
518 	TTL_7448(ic_c5, ic_c6a.AY, ic_c6b.AY, ic_d6a.AY, ic_d6b.AY, high, c5_en, high)
519 
520 	TTL_7404_INVERT(ic_e4b, 16H)
521 	TTL_7427_NOR(ic_e5c, ic_e4b.Q, 8H, 4H)
522 	ALIAS(scoreFE, ic_e5c.Q)
523 
524 	TTL_7400_NAND(ic_c3d, 8H, 4H)
525 	//TTL_7400_NAND(ic_c3d, 4H, 8H)
526 	TTL_7402_NOR(ic_d2b, ic_e4b.Q, ic_c3d.Q)
527 	ALIAS(scoreBC, ic_d2b.Q)
528 
529 	TTL_7427_NOR(ic_e5b, ic_e4b.Q, 8V, 4V)
530 	ALIAS(scoreA, ic_e5b.Q)
531 
532 	TTL_7410_NAND(ic_e2a, 16H, 8V, 4V)
533 	TTL_7404_INVERT(ic_e4a, ic_e2a.Q)
534 	ALIAS(scoreGD, ic_e4a.Q)
535 
536 	TTL_7404_INVERT(ic_e4c, 16V)
537 
538 	TTL_7410_NAND(ic_d4a, ic_e4c.Q, ic_c5.f, scoreFE)
539 	TTL_7410_NAND(ic_d5c,      16V, ic_c5.e, scoreFE)
540 	TTL_7410_NAND(ic_c4c, ic_e4c.Q, ic_c5.b, scoreBC)
541 	TTL_7410_NAND(ic_d5a,      16V, ic_c5.c, scoreBC)
542 	TTL_7410_NAND(ic_d4c, ic_e4c.Q, ic_c5.a, scoreA)
543 	TTL_7410_NAND(ic_d4b, ic_e4c.Q, ic_c5.g, scoreGD)
544 	TTL_7410_NAND(ic_d5b,      16V, ic_c5.d, scoreGD)
545 
546 	TTL_7430_NAND(ic_d3, ic_d4a, ic_d5c, ic_c4c, ic_d5a, ic_d4c, ic_d4b, ic_d5b, high)
547 	ALIAS(score, ic_d3.Q)       //FIXME
548 
549 	// net
550 	TTL_74107(ic_f3b, clk, 256H, 256HQ, high)
551 	TTL_7400_NAND(ic_g3b, ic_f3b.QQ, 256H)
552 	TTL_7427_NOR(ic_g2b, ic_g3b.Q, vblank, 4V)
553 	ALIAS(net, ic_g2b.Q)
554 
555 	// ----------------------------------------------------------------------------------------
556 	// video
557 	// ----------------------------------------------------------------------------------------
558 
559 	TTL_7402_NOR(ic_g1b, hvidQ, vvidQ)
560 	TTL_7425_NOR(ic_f2b, ic_g1b.Q, pad1, pad2, net)
561 	TTL_7404_INVERT(ic_e4e, ic_f2b.Q)
562 	ALIAS(video, ic_e4e.Q)
563 
564 	TTL_7486_XOR(ic_a4d, hsyncQ, vsyncQ)
565 	TTL_7404_INVERT(ic_e4f, ic_a4d.Q)
566 
567 	RES(RV1, RES_K(1))
568 	RES(RV2, RES_K(1.2))
569 	RES(RV3, RES_K(22))
570 	NET_C(video, RV1.1)
571 	NET_C(score, RV2.1)
572 	NET_C(ic_e4f.Q, RV3.1)
573 	NET_C(RV1.2, RV2.2)
574 	NET_C(RV2.2, RV3.2)
575 
576 	ALIAS(videomix, RV3.2)
577 
578 	// ----------------------------------------------------------------------------------------
579 	// power terminals
580 	// ----------------------------------------------------------------------------------------
581 
582 	NET_C(VCC, high.VCC, low.VCC, antenna.VCC)
583 	NET_C(GND, high.GND, low.GND, antenna.GND)
584 
585 NETLIST_END()
586