From fbb8ee0fe89ed8b56a23418fb38621e74d7bab68 Mon Sep 17 00:00:00 2001 From: MooglyGuy Date: Sat, 24 Dec 2016 22:09:59 +0100 Subject: [PATCH] -netlist: Added 82S123 256-bit (32x8) TTL bipolar PROM. [Ryan Holtz] --- scripts/src/netlist.lua | 2 + src/lib/netlist/build/makefile | 1 + src/lib/netlist/devices/net_lib.cpp | 5 +- src/lib/netlist/devices/net_lib.h | 1 + src/lib/netlist/devices/nld_74192.h | 12 +- src/lib/netlist/devices/nld_82S123.cpp | 84 +++++++ src/lib/netlist/devices/nld_82S123.h | 42 ++++ src/lib/netlist/devices/nld_9312.h | 16 +- src/mame/machine/nl_stuntcyc.cpp | 301 ++++++++++++++++++++++++- 9 files changed, 451 insertions(+), 13 deletions(-) create mode 100644 src/lib/netlist/devices/nld_82S123.cpp create mode 100644 src/lib/netlist/devices/nld_82S123.h diff --git a/scripts/src/netlist.lua b/scripts/src/netlist.lua index 8462bc0a1a0..95b6a652d28 100644 --- a/scripts/src/netlist.lua +++ b/scripts/src/netlist.lua @@ -151,6 +151,8 @@ project "netlist" MAME_DIR .. "src/lib/netlist/devices/nld_82S16.h", MAME_DIR .. "src/lib/netlist/devices/nld_82S115.cpp", MAME_DIR .. "src/lib/netlist/devices/nld_82S115.h", + MAME_DIR .. "src/lib/netlist/devices/nld_82S123.cpp", + MAME_DIR .. "src/lib/netlist/devices/nld_82S123.h", MAME_DIR .. "src/lib/netlist/devices/nld_82S126.cpp", MAME_DIR .. "src/lib/netlist/devices/nld_82S126.h", MAME_DIR .. "src/lib/netlist/devices/nld_9310.cpp", diff --git a/src/lib/netlist/build/makefile b/src/lib/netlist/build/makefile index 04802af0c37..44c981fd332 100644 --- a/src/lib/netlist/build/makefile +++ b/src/lib/netlist/build/makefile @@ -96,6 +96,7 @@ NLOBJS := \ $(NLOBJ)/devices/nld_74ls629.o \ $(NLOBJ)/devices/nld_82S16.o \ $(NLOBJ)/devices/nld_82S115.o \ + $(NLOBJ)/devices/nld_82S123.o \ $(NLOBJ)/devices/nld_82S126.o \ $(NLOBJ)/devices/nld_9310.o \ $(NLOBJ)/devices/nld_9312.o \ diff --git a/src/lib/netlist/devices/net_lib.cpp b/src/lib/netlist/devices/net_lib.cpp index 3e654dab2d1..69c7cf6360b 100644 --- a/src/lib/netlist/devices/net_lib.cpp +++ b/src/lib/netlist/devices/net_lib.cpp @@ -138,6 +138,7 @@ static void initialize_factory(factory_list_t &factory) ENTRYX(SN74LS629, SN74LS629, "CAP") ENTRYX(82S16, TTL_82S16, "-") ENTRYX(82S115, PROM_82S115, "-") + ENTRYX(82S123, PROM_82S123, "-") ENTRYX(82S126, PROM_82S126, "-") ENTRYX(9310, TTL_9310, "-") ENTRYX(9312, TTL_9312, "-") @@ -181,7 +182,9 @@ static void initialize_factory(factory_list_t &factory) ENTRYX(74279_dip, TTL_74279_DIP, "-") ENTRYX(74365_dip, TTL_74365_DIP, "-") ENTRYX(82S16_dip, TTL_82S16_DIP, "-") - ENTRYX(82S126_dip, TTL_82S126_DIP, "-") + ENTRYX(82S115_dip, PROM_82S115_DIP, "-") + ENTRYX(82S123_dip, PROM_82S123_DIP, "-") + ENTRYX(82S126_dip, PROM_82S126_DIP, "-") ENTRYX(9602_dip, TTL_9602_DIP, "-") ENTRYX(9310_dip, TTL_9310_DIP, "-") ENTRYX(9312_dip, TTL_9312_DIP, "-") diff --git a/src/lib/netlist/devices/net_lib.h b/src/lib/netlist/devices/net_lib.h index d2140992372..c9c0b6b3917 100644 --- a/src/lib/netlist/devices/net_lib.h +++ b/src/lib/netlist/devices/net_lib.h @@ -43,6 +43,7 @@ #include "nld_74ls629.h" #include "nld_82S16.h" #include "nld_82S115.h" +#include "nld_82S123.h" #include "nld_82S126.h" #include "nld_9310.h" #include "nld_9312.h" diff --git a/src/lib/netlist/devices/nld_74192.h b/src/lib/netlist/devices/nld_74192.h index fc5778044eb..1afb152961a 100644 --- a/src/lib/netlist/devices/nld_74192.h +++ b/src/lib/netlist/devices/nld_74192.h @@ -31,8 +31,16 @@ #include "nl_setup.h" -#define TTL_74192(name) \ - NET_REGISTER_DEV(TTL_74192, name) +#define TTL_74192(name, cA, cB, cC, cD, cCLEAR, cLOADQ, cCU, cCD) \ + NET_REGISTER_DEV(TTL_74192, name) \ + NET_CONNECT(name, A, cA) \ + NET_CONNECT(name, B, cB) \ + NET_CONNECT(name, C, cC) \ + NET_CONNECT(name, D, cD) \ + NET_CONNECT(name, CLEAR, cCLEAR) \ + NET_CONNECT(name, LOADQ, cLOADQ) \ + NET_CONNECT(name, CU, cCU) \ + NET_CONNECT(name, CD, cCD) #define TTL_74192_DIP(name) \ NET_REGISTER_DEV(TTL_74192_DIP, name) diff --git a/src/lib/netlist/devices/nld_82S123.cpp b/src/lib/netlist/devices/nld_82S123.cpp new file mode 100644 index 00000000000..c4a54dd79c5 --- /dev/null +++ b/src/lib/netlist/devices/nld_82S123.cpp @@ -0,0 +1,84 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +/* + * nld_82S123.cpp + * + */ + +#include "nld_82S123.h" + +namespace netlist +{ + namespace devices + { + NETLIB_OBJECT(82S123) + { + NETLIB_CONSTRUCTOR(82S123) + , m_A(*this, {{"A0", "A1", "A2", "A3", "A4"}}) + , m_CEQ(*this, "CEQ") + , m_O(*this, {{"O1", "O2", "O3", "O4", "O5", "O6", "O7", "O8"}}) + , m_ROM(*this, "m_ROM", nullptr) + { + } + + NETLIB_UPDATEI(); + + protected: + object_array_t m_A; + logic_input_t m_CEQ; + object_array_t m_O; + + param_ptr_t m_ROM; // 256 bits, 32x8 + }; + + NETLIB_OBJECT_DERIVED(82S123_dip, 82S123) + { + NETLIB_CONSTRUCTOR_DERIVED(82S123_dip, 82S123) + { + register_subalias("1", m_O[0]); + register_subalias("2", m_O[1]); + register_subalias("3", m_O[2]); + register_subalias("4", m_O[3]); + register_subalias("5", m_O[4]); + register_subalias("6", m_O[5]); + register_subalias("7", m_O[6]); + register_subalias("8", m_O[7]); + + register_subalias("15", m_CEQ); + + register_subalias("10", m_A[0]); + register_subalias("11", m_A[1]); + register_subalias("12", m_A[2]); + register_subalias("13", m_A[3]); + register_subalias("14", m_A[4]); + } + }; + + // FIXME: timing! + NETLIB_UPDATE(82S123) + { + unsigned o = 0xff; + + netlist_time delay = NLTIME_FROM_NS(35); + if (!m_CEQ()) + { + unsigned a = 0; + for (std::size_t i=0; i<5; i++) + a |= (m_A[i]() << i); + + if (m_ROM() != nullptr) + o = ((std::uint_fast8_t*)(m_ROM()))[a]; + + delay = NLTIME_FROM_NS(50); + } + + // FIXME: Outputs are tristate. This needs to be properly implemented + for (std::size_t i=0; i<8; i++) + m_O[i].push((o >> i) & 1, delay); + } + + NETLIB_DEVICE_IMPL(82S123) + NETLIB_DEVICE_IMPL(82S123_dip) + + } //namespace devices +} // namespace netlist diff --git a/src/lib/netlist/devices/nld_82S123.h b/src/lib/netlist/devices/nld_82S123.h new file mode 100644 index 00000000000..08130009ec7 --- /dev/null +++ b/src/lib/netlist/devices/nld_82S123.h @@ -0,0 +1,42 @@ +// license:BSD-3-Clause +// copyright-holders:Ryan Holtz +/* + * nld_82S123.h + * + * 82S23: 256-bit (32x8) TTL bipolar PROM with open-collector outputs + * 82S123: 256-bit (32x8) TTL bipolar PROM with tri-state outputs + * + * +--------------+ + * O1 |1 ++ 16| VCC + * O2 |2 15| CEQ + * O3 |3 14| A4 + * O4 |4 82S123 13| A3 + * O5 |5 12| A2 + * O6 |6 11| A1 + * O7 |7 10| A0 + * GND |8 9| O8 + * +--------------+ + * + * + * Naming conventions follow Philips datasheet + * + */ + +#ifndef NLD_82S123_H_ +#define NLD_82S123_H_ + +#include "nl_setup.h" + +#define PROM_82S123(name, cCEQ, cA0, cA1, cA2, cA3, cA4) \ + NET_REGISTER_DEV(PROM_82S123, name) \ + NET_CONNECT(name, CEQ, cCEQ) \ + NET_CONNECT(name, A0, cA0) \ + NET_CONNECT(name, A1, cA1) \ + NET_CONNECT(name, A2, cA2) \ + NET_CONNECT(name, A3, cA3) \ + NET_CONNECT(name, A4, cA4) + +#define PROM_82S123_DIP(name) \ + NET_REGISTER_DEV(PROM_82S123_DIP, name) + +#endif /* NLD_82S123_H_ */ diff --git a/src/lib/netlist/devices/nld_9312.h b/src/lib/netlist/devices/nld_9312.h index a787b38e604..c5f4104edd4 100644 --- a/src/lib/netlist/devices/nld_9312.h +++ b/src/lib/netlist/devices/nld_9312.h @@ -39,8 +39,20 @@ #include "nl_setup.h" -#define TTL_9312(name) \ - NET_REGISTER_DEV(TTL_9312, name) +#define TTL_9312(name, cA, cB, cC, cD0, cD1, cD2, cD3, cD4, cD5, cD6, cD7, cSTROBE) \ + NET_REGISTER_DEV(TTL_9312, name) \ + NET_CONNECT(name, A, cA) \ + NET_CONNECT(name, B, cB) \ + NET_CONNECT(name, C, cC) \ + NET_CONNECT(name, D0, cD0) \ + NET_CONNECT(name, D1, cD1) \ + NET_CONNECT(name, D2, cD2) \ + NET_CONNECT(name, D3, cD3) \ + NET_CONNECT(name, D4, cD4) \ + NET_CONNECT(name, D5, cD5) \ + NET_CONNECT(name, D6, cD6) \ + NET_CONNECT(name, D7, cD7) \ + NET_CONNECT(name, STROBE, cSTROBE) #define TTL_9312_DIP(name) \ NET_REGISTER_DEV(TTL_9312_DIP, name) diff --git a/src/mame/machine/nl_stuntcyc.cpp b/src/mame/machine/nl_stuntcyc.cpp index 6d2a335f3db..a1cfbab439a 100644 --- a/src/mame/machine/nl_stuntcyc.cpp +++ b/src/mame/machine/nl_stuntcyc.cpp @@ -67,14 +67,14 @@ NETLIST_START(stuntcyc) ALIAS( 64V, K3.QC) ALIAS(128V, K3.QD) - TTL_74107(K4_2, 128V, P, P, VRESETQ) + TTL_74107(K4_2, 128V, P, P, VRESET_Q) ALIAS(256V, K4_2.Q) ALIAS(256V_Q, K4_2.QQ) TTL_7410_NAND(M5_3, 256V, 2V, 1V) TTL_7474(M3_2, HRESET, M5_3.Q, P, P) ALIAS(VRESET, M3_2.QQ) - ALIAS(VRESETQ, M3_2.Q) + ALIAS(VRESET_Q, M3_2.Q) TTL_7402_NOR(J5_2, H6_3.Q, J5_1.Q) TTL_7402_NOR(J5_1, 32H, J5_2.Q) @@ -89,7 +89,7 @@ NETLIST_START(stuntcyc) ALIAS(COMPSYNC_Q, J4_1.Q) TTL_7474(N4_1, HWINDOW, HSYNC, RAMP_WINDOW_HIT_Q, N4_1.QQ) - TTL_7474(M3_1, N4_1.Q, M3_1.QQ, CYCLE_RESETQ, P) + TTL_7474(M3_1, N4_1.Q, M3_1.QQ, CYCLE_RESET_Q, P) ALIAS(DIRECTION, M3_1.Q) ALIAS(DIRECTION_Q, M3_1.QQ) @@ -98,8 +98,8 @@ NETLIST_START(stuntcyc) TTL_7474(J2_1, N4_1.Q, P, J2_2.QQ, P) TTL_7408_AND(H5_2, 256V_Q, VSYNC_Q) - TTL_9316(K1, HSYNC, P, H5_2.Q, V_COUNTER_RESETQ, L2_3.Q, Av, Bv, Cv, Dv) - TTL_9316(K2, HSYNC, K1.RC, J2_2.QQ, V_COUNTER_RESETQ, L2_3.Q, GND, GND, GND, GND) + TTL_9316(K1, HSYNC, P, H5_2.Q, V_COUNTER_RESET_Q, L2_3.Q, Av, Bv, Cv, Dv) + TTL_9316(K2, HSYNC, K1.RC, J2_2.QQ, V_COUNTER_RESET_Q, L2_3.Q, GND, GND, GND, GND) TTL_7400_NAND(L2_3, K1.RC, K2.RC) TTL_7402_NOR(D4_3, DIRECTION, H6) @@ -117,9 +117,10 @@ NETLIST_START(stuntcyc) TTL_74165(F2, CLOCK, GND, HSYNC_Q, F2.QH, HF1.O1, HF1.O2, HF1.O3, HF1.O4, HF1.O5, HF1.O6, HF1.O7, HF1.O8) TTL_7474(D2_1, CLOCK, F2.QH, OBJECT_ZONE, P) + ALIAS(OBJECTS_Q, D2_1.QQ) - TTL_7450_ANDORINVERT(D1_1, E1.QA, DIRECTION, E2.QD, DIRECTION_Q) - TTL_7474(D2_2, H1, D1_1.Q, P, V_WINDOW) + TTL_7450_ANDORINVERT(D1_2, E1.QA, DIRECTION, E2.QD, DIRECTION_Q) + TTL_7474(D2_2, H1, D1_2.Q, P, V_WINDOW) ALIAS(CYCLE, D2_2.QQ) ALIAS(CYCLE_Q, D2_2.Q) @@ -148,6 +149,50 @@ NETLIST_START(stuntcyc) NET_C(creditsw.1, GND) NET_C(creditsw.2, P) + TTL_7474(F8_1, END_GAME, F8_2.QQ, H9_3.Q, H8_2.QQ) + TTL_7474(F8_2, F8_1.QQ, P, ATTRACT_Q, P) + ALIAS(FREE_COIN, F8_2.Q) + ALIAS(FREE_COIN_Q, F8_2.QQ) + + SWITCH2(freegamesw) + NET_C(freegamesw.1, P) + NET_C(freegamesw.2, GND) + TTL_7410_NAND(H9_3, ATTRACT_Q, freegamesw.Q, FREE_GAME) + + /* Antenna to suppress player attempts at glitching in a credit via a piezo spark */ + /* Has a diode to clamp negative voltages - omitted here */ + + TTL_INPUT(ANTENNA, 0) + + QBJT_SW(Q9, "2N3643") + RES(R9, 330) + RES(R10, 100) + CAP(C3, CAP_U(0.1)) + NET_C(ANTENNA, Q9.B) + NET_C(Q9.E, GND) + + NET_C(R10.1, C3.1, Q9.C, R9.1) + NET_C(R10.2, GND) + NET_C(C3.2, GND) + QBJT_SW(Q10, "2N3643") + NET_C(Q10.B, R10.1) + NET_C(Q10.E, GND) + + DIODE(D2, "1N914") + RES(R7, 100) + RES(R8, 330) + CAP(C2, CAP_U(0.1)) + QBJT_SW(Q11, "2N3644") + + NET_C(D3.A, R8.1, Q10.C) + ALIAS(COIN_Q, D3.K) + + NET_C(R8.2, R7.2, C2.2, Q11.B) + NET_C(R7.1, C2.1, Q11.E, V5) + NET_C(R9.2, Q11.C) + + TTL_7486_XOR(C8_4, Q11.C, P) + /* Start buttons, etc. */ SWITCH(START1) RES(R11, RES_K(1)) @@ -183,7 +228,7 @@ NETLIST_START(stuntcyc) TTL_7474(H8_1, ATTRACT, GND, H9_2.Q, H9_1.Q) ALIAS(2_PLAYER_MODE, H8_1.Q) ALIAS(2_PLAYER_MODE_Q, H8_1.QQ) - TTL_7400_NAND(J8_4, 2_PLAYER_MODE, V_RAMPS) + TTL_7400_NAND(J8_4, 2_PLAYER_MODE, V_RAMP) TTL_7400_NAND(J8_3, START, J8_4.Q) TTL_74193(E8, P, P, P, P, QQ, E8.CARRYQ, COIN_Q, J8_3.Q) @@ -194,5 +239,245 @@ NETLIST_START(stuntcyc) ALIAS(CREDIT_Q, F9_3.Q) TTL_7402_NOR(F9_2, CREDIT_Q, CREDIT_Q) ALIAS(CREDIT, F9_2.Q) + + /* Score Window */ + + TTL_7402_NOR(L1_4, 64V, 128V) + TTL_7410_NAND(H4_1, 16V, 32V, L1_4.Q) + ALIAS(V_SCORE_Q, H4_1.Q) + + TTL_7486_XOR(J4_2, 32H, 256H) + ALIAS(32H_XOR_256H, J4_2.Q) + + TTL_7486_XOR(J4_3, 128H, 256H) + ALIAS(128H_XOR_256H, J4_3.Q) + + TTL_7486_XOR(J4_4, 64H, 256H_Q) + TTL_7410_NAND(H4_3, J4_3.Q, J4_2.Q, J4_4.Q) + ALIAS(H_SCORE_Q, H4_3.Q) + + TTL_7402_NOR(J3_1, V_SCORE_Q, H_SCORE_Q) + ALIAS(SCORE_WINDOW, J3_1.Q) + + /* Video Generation */ + + TTL_7400_NAND(H2_4, 8V, 32V) + TTL_7474(H3_2, VSYNC_Q, P, H2_4.Q, P) + TTL_7474(H3_1, 1V, 32V, P, H3_2.QQ) + TTL_7402_NOR(J3_4, H3_2.QQ, HSYNC) + TTL_7400_NAND(H2_3, J3_4.Q, 128H_XOR_256H) + TTL_7410_NAND(H4_2, 1H, H3_1.QQ, 32V) + ALIAS(ROAD_Q, H4_2.Q) + + TTL_7402_NOR(J3_2, 256H_Q, H2_3.Q) + TTL_7402_NOR(J3_3, H2_3.Q, 256H) + TTL_7486_XOR(C8_3, PLAYER_CONTROL, 256H) + TTL_7450_ANDORINVERT(F3_2, RETURN_THROTTLE, J3_2.Q, J3_3.Q, FREE_PLAY) + TTL_7450_ANDORINVERT(F3_1, RETURN_THROTTLE_Q, J3_2.Q, FREE_PLAY_Q, J3_3.Q) + + TTL_7427_NOR(K5_3, 64H, 32H_XOR_256H, V_SCORE_Q) + TTL_7400_NAND(F4_4, 128H_XOR_256H, K5_3.Q) + + TTL_7402_NOR(D4_1, PLAYER_CONTROL, CYCLE_Q) + TTL_7402_NOR(D4_2, F4_4.Q, C8_3.Q) + TTL_7404_INVERT(D3_3, F3_2.Q) + TTL_7427_NOR(E4_3, D3_3.Q, D4_2.Q, D4_1.Q) + TTL_7410_NAND(E3_1, SCORE_1_Q, OBJECTS_Q, E4_3.Q) + ALIAS(WHITE_VIDEO, E3_1.Q) + + TTL_7402_NOR(F4_2, PLAYER_CONTROL, CYCLE) + TTL_7404_INVERT(D3_1, F4_4.Q) + TTL_7402_NOR(F4_3, C8_3.Q, D3_1.Q) + TTL_7410_NAND(E3_2, F4_2.Q, F4_3.Q, F3_1.Q) + TTL_7400_NAND(F4_1, RAMPS_Q, ROAD_Q) + TTL_7427_NOR(E4_2, F4_1.Q, SCORE_2, E3_2.Q) + ALIAS(BLACK_VIDEO, E4_2.Q) + + RES(R13, RES_K(1)) + NET_C(R13.1, E3_1.Q) + RES(R14, RES_K(1)) + NET_C(R14.1, V5) + RES(R15, RES_K(1)) + NET_C(R15.1, E4_2.Q) + RES(R107, RES_K(1)) + + DIODE(D17, "1N914") + NET_C(D17.K, COMP_SYNC_Q) + NET_C(D17.A, R107.1, R13.2, R14.2, R15.2) + + ALIAS(VIDEO_OUT, R107.2) + + /* Horizontal movement */ + + TTL_7474(C2_1, SPEED_PULSES, P, C2_2.QQ, P) + TTL_7474(C2_2, A3_2.Q, C2_1.Q, P, P) + TTL_7493(C1, C2_1.Q, C1.QA, FLIP, FLIP) + ALIAS(MOTOR_PULSE, C1.QA) + ALIAS(R4, C1.QD) + + TTL_7400_NAND(B2_2, DIRECTION_Q, C2_2.Q) + TTL_9316(C3, HF_CLOCK, P, P, H_COUNTER_RESET_Q, A3_2.Q, C2_2.Q, B2_2.Q, P, P) + TTL_9316(B3, HF_CLOCK, C3.RC, P, H_COUNTER_RESET_Q, A3_2.Q, GND, P, P, GND) + ALIAS(H1, C3.QA) + ALIAS(H2, C3.QB) + ALIAS(H3, C3.QC) + ALIAS(H4, C3.QD) + ALIAS(H5, B3.QA) + ALIAS(H6, B3.QB) + ALIAS(H7, B3.QC) + ALIAS(H8, B3.QD) + + TTL_7408_AND(B5_3, H5, H6) + ALIAS(H5_AND_H6, B5_3.Q) + + TTL_74107(B4_2, B3.RC, P, P, H_COUNTER_RESET_Q) + TTL_74107(B4_1, B4_2.Q, P, P, H_COUNTER_RESET_Q) + + TTL_7410_NAND(C4_1, B4_1.QQ, B3.RC, B4_2.Q) + TTL_7404_INVERT(D3_6, C4_1.Q) + TTL_7400_NAND(A3_2, D3_6.Q, C3.RC) + + TTL_7410_NAND(C4_3, B4_2.Q, H8, B4_1.Q) + TTL_7427_NOR(E4_1, H5_AND_H6, H7, C4_3.Q) + ALIAS(H_WINDOW, E4_1.Q) + + TTL_7474(A4_1, H4, E4_1.Q, P, P) + TTL_7474(A4_2, H2, H4, A4_1.Q, P) + ALIAS(H_WINDOW_DELAYED, A4_1.Q) + + TTL_7402_NOR(A8_4, H4, A4_2.QQ) + TTL_7404_INVERT(D3_4, A8_4.Q) + TTL_7400_NAND(B2_4, DIRECTION, D3_4.Q) + TTL_7400_NAND(B2_1, DIRECTION_Q, D3_4.Q) + ALIAS(MS_1, B2_4.Q) + ALIAS(MS_2, B2_1.Q) + + /* Scoring, etc. logic */ + + TTL_7400_NAND(A3_1, C4_2.Q, CYCLE_RESET_A_Q) + TTL_7410_NAND(C4_2, A3_1.Q, BAD_JUMP_Q, FLIP_Q) + TTL_7410_NAND(D6_3, E5.QA, VRESET, 2PLM_Q) + TTL_7474(C5_1, A3_1.Q, GND, D6_3.Q, COMP_SCORE_Q) + TTL_7400_NAND(D5_3, OUT_OF_SEQ_RESET_Q, C5_1.Q) + + TTL_INPUT(MISS_SW_B0, 1) + TTL_INPUT(MISS_SW_B1, 1) + TTL_INPUT(MISS_SW_B2, 1) + TTL_74193(E5, GND, MISS_SW_B0, MISS_SW_B1, MISS_SW_B2, GND, START_Q, P, D5_3.Q) + ALIAS(END_GAME_Q, E5.BORROWQ) + + TTL_7408_AND(H5_4, ATTRACT_Q, 128V) + TTL_7474(C5_2, GOOD_JUMP_Q, MAX_SCORE_Q, H5_4.Q, P) + + TTL_7402_NOR(A8_2, E5.QA, C5_2.QQ) + TTL_74192(B8, GND, GND, GND, P, GND, START_W, A8_2.Q, P) + TTL_7474(A9_2, B8.CARRYQ, A9_2.QQ, START_Q, P) + TTL_7402_NOR(A8_3, A9_2.Q, B8.QD) + ALIAS(A, B8.QA) + ALIAS(B, B8.QB) + ALIAS(C, B8.QC) + ALIAS(D, B8.QD) + ALIAS(E, A9_2.Q) + ALIAS(F, A8_3.Q) + + TTL_7408_AND(B5_2, E5.QA, C5_2.Q) + TTL_74192(B9, GND, GND, GND, P, GND, START_W, B5_2.Q, P) + TTL_7474(A9_1, B9.CARRYQ, A9_1.QQ, START_Q, P) + TTL_7402_NOR(A8_1, A9_1.Q, B9.QD) + ALIAS(G, B9.QA) + ALIAS(H, B9.QB) + ALIAS(J, B9.QC) + ALIAS(K, B9.QD) + ALIAS(L, A9_1.Q) + ALIAS(M, A8_1.Q) + + TTL_7400_NAND(D5_4, E5.QA, 2_PLAYER_MODE) + TTL_7404_INVERT(H6_4, PLAYER_CONTROL_Q) + ALIAS(PLAYER_CONTROL, H6_4.Q) + + TTL_7404_INVERT(D3_2, 128V) + TTL_7450_ANDORINVERT(D1_1, D3_2.Q, 256H_Q, D5_4.Q, 128V) + + TTL_9322(B7, D1_1.Q, A, G, B, H, D, K, C, J, GND) + TTL_9322(A7, D1_1.Q, E, L, M, F, GND, GND, GND, GND, GND) + ALIAS(S1, B7.Y1) + ALIAS(S2, B7.Y2) + ALIAS(S3, B7.Y4) + ALIAS(S4, B7.Y3) + ALIAS(S5, A7.Y1) + ALIAS(S6, A7.Y2) + + TTL_9322(C7, 16H, S5, S1, S6, S2, GND, S4, GND, S3, GND) + TTL_7448(C6, C7.Y1, C7.Y2, C7.Y4, C7.Y3, P, SCORE_WINDOW, 16H) + TTL_9312(B6, 2H, 4H, 8H, C6.f, GND, GND, C6.b, C6.e, GND, GND, C6.c, 8H) + TTL_9312(A6, 2V, 4V, 8V, C6.a, GND, GND, C6.h, GND, GND, GND, C6.d, 8H) + TTL_7408_AND(B5_4, A6.YQ, B6.YQ) + TTL_7474(A5_1, CLOCK, B5_4.Q, P, P) + ALIAS(COMP_SCORE_Q, A5_1.Q) + + TTL_7400_NAND(M7_2, 128H, A5_1.QQ) + ALIAS(SCORE_1_Q, M7_2.Q) + + TTL_7402_NOR(K6_1, A5_1.Q, 128H) + ALIAS(SCORE_2, K6_1.Q) + + PROM_82S123(D7, GND, S1, S2, S3, S4, S5) + ALIAS(MAX_SCORE_Q, D7.D5) + + TTL_7410_NAND(D6_1, 256H_Q, 128H, 128H) + TTL_7427_NOR(D8_3, 64H, 32H, D6_1.Q) + TTL_7486_XOR(C8_2, D6_1.Q, D7.D4) + ALIAS(FIXED_RAMP_ZONE, D8_3.Q) + + TTL_INPUT(FREESCORE_SW_B0, 0) + TTL_INPUT(FREESCORE_SW_B1, 0) + TTL_INPUT(FREESCORE_SW_B2, 0) + TTL_INPUT(FREESCORE_SW_B3, 1) + TTL_7402_NOR(K6_4, D7.D4, OBJECT_ZONE_Q) + TTL_7485(E6, D7.D0, D7.D1, D7.D2, D7.D3, 8H, 16H, 32H, 64H, GND, C8_2.Q, GND) + TTL_7485(E7, D7.D0, D7.D1, D7.D2, D7.D3, FREESCORE_SW_B0, FREESCORE_SW_B1, FREESCORE_SW_B2, FREESCORE_SW_B3, GND, K6_4.Q, GND) + ALIAS(FREE_GAME, E7.EQOUT) + + TTL_7474(F6_1, CLOCK_Q, E6.EQOUT, 128H_XOR_256H, P) + TTL_9316(H7, 1H, H6_1.Q, P, P, F6_1.QQ, P, P, GND, GND) + TTL_7404_INVERT(H6_1, H7.RC) + TTL_7474(A5_2, H7.RC, P, HRESET_Q, P) + TTL_7474(J7_1, H_WINDOW, A5_2.QQ, BAD_JUMP_Q, P) + TTL_7474(K7_1, JUMP_Q, J7_1.Q, CYCLE_RESET_A_Q, P) + TTL_7474(K7_2, JUMP_Q, J7_1.QQ, CYCLE_RESET_A_Q, OBJECT_HIT_Q) + ALIAS(BAD_JUMP, K7_2.Q) + ALIAS(BAD_JUMP_Q, K7_2.QQ) + + TTL_7404_INVERT(H6_2, FIXED_RAMP_ZONE) + TTL_7474(J7_2, H6_2.Q, V_RAMP, H7.RC, P) + ALIAS(OBJECT_ZONE, J7_2.Q) + ALIAS(OBJECT_ZONE_Q, J7_2.QQ) + ALIAS(FIXED_RAMP_ZONE_Q, H6_2.Q) + + TTL_7408_AND(H5_3, F6_1.QQ, H7.RC) + TTL_7408_AND(H5_1, FIXED_RAMP_ZONE_Q, H7.RC) + + TTL_7486_XOR(M2_2, 1V, H5_3.Q) + TTL_7486_XOR(M2_4, 2V, H5_3.Q) + TTL_7486_XOR(M2_1, 4V, H5_3.Q) + + TTL_7493(N1, 2H, N1.QA, H5_1.Q, H5_1.Q) + TTL_7485(N2, M2_2.Q, M2_4.Q, M2_1.Q, GND, N1.QA, N1.QB, N1.QC, N1.QD, GND, GND, GND) + TTL_7486_XOR(M2_3, N2.GTOUT, H5_3.Q) + TTL_7400_NAND(L2_1, 16V, 64V) + TTL_7402_NOR(L1_1, L2_1.Q, 32V) + TTL_7400_NAND(L2_4, CYCLE_RESET, VRESET) + TTL_7410_NAND(E3_3, 8V, 128V, L1_1.Q) + TTL_7404_INVERT(N3_4, E3_3.Q) + TTL_7474(M1_1, 8V, L1_1.Q, L2_4.Q, M1_1.QQ) + TTL_7474(M1_2, 1H, M2_3.Q, V_RAMP, P) + TTL_7400_NAND(L2_2, M1_1.QQ, L1_1.Q) + TTL_7402_NOR(L1_2, H5_1.Q, M1_2.QQ) + ALIAS(V_RAMP, N3_4.Q) + ALIAS(V_COUNTER_RESET_Q, L2_2.Q) + ALIAS(RAMPS, L1_2.Q) + + TTL_7402_NOR(L1_3, RAMPS, RAMPS) + ALIAS(RAMPS_Q, L1_3.Q) #endif NETLIST_END()