-netlist: Added 82S123 256-bit (32x8) TTL bipolar PROM. [Ryan Holtz]

This commit is contained in:
MooglyGuy 2016-12-24 22:09:59 +01:00
parent ca57d427fb
commit fbb8ee0fe8
9 changed files with 451 additions and 13 deletions

View File

@ -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",

View File

@ -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 \

View File

@ -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, "-")

View File

@ -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"

View File

@ -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)

View File

@ -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<logic_input_t, 5> m_A;
logic_input_t m_CEQ;
object_array_t<logic_output_t, 8> 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

View File

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

View File

@ -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)

View File

@ -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()