// license:CC0
// copyright-holders:Aaron Giles
//
// Netlist for Star Hawk
//
// Derived from the schematics in the Star Hawk manual.
//
// Special thanks to:
// * Jay Gallagher for verifying PCB components
//
// Known problems/issues:
//
// * The VCOs require high solver frequencies (100x+) to reach the
// correct pitches. For this reason, HLE'ed versions are
// provided that work correctly even at 48kHz.
//
#include "netlist/devices/net_lib.h"
#include "nl_cinemat_common.h"
//
// Optimizations
//
#define HLE_SHIP_VCO (1)
#define HLE_LAZER_VCOS (1)
//
// Debugging/test - should be off for release
//
#define SLOW_SHIP_WOBBLE (0)
//
// Main netlist
//
NETLIST_START(starhawk)
#if (HLE_LAZER_VCOS && HLE_SHIP_VCO)
SOLVER(Solver, 1000)
#else
SOLVER(Solver, 48000000)
#endif
PARAM(Solver.DYNAMIC_TS, 1)
PARAM(Solver.DYNAMIC_MIN_TIMESTEP, 2e-5)
TTL_INPUT(I_OUT_0, 0) // active high
TTL_INPUT(I_OUT_1, 0) // active high
TTL_INPUT(I_OUT_2, 0) // active high
TTL_INPUT(I_OUT_3, 0) // active high
TTL_INPUT(I_OUT_4, 0) // active high
TTL_INPUT(I_OUT_7, 0) // active high
NET_C(GND, I_OUT_0.GND, I_OUT_1.GND, I_OUT_2.GND, I_OUT_3.GND, I_OUT_4.GND, I_OUT_7.GND)
NET_C(I_V5, I_OUT_0.VCC, I_OUT_1.VCC, I_OUT_2.VCC, I_OUT_3.VCC, I_OUT_4.VCC, I_OUT_7.VCC)
CINEMAT_LOCAL_MODELS
ANALOG_INPUT(I_V5, 5)
ANALOG_INPUT(I_V15, 15)
ANALOG_INPUT(I_VM15, -15)
RES(R1, RES_K(10))
RES(R2, RES_K(10))
RES(R3, RES_K(20))
RES(R4, RES_K(10))
RES(R5, RES_K(1))
RES(R6, RES_K(150))
RES(R7, 330)
RES(R8, RES_K(10))
RES(R9, RES_K(47))
RES(R10, RES_K(150))
RES(R11, RES_K(100))
RES(R12, RES_K(47))
RES(R13, RES_K(10))
RES(R14, RES_K(2.7))
RES(R15, RES_K(2.7))
RES(R16, RES_K(30))
RES(R17, RES_K(510))
RES(R18, RES_K(10))
RES(R19, RES_K(33))
// RES(R20, 150) -- part of final amp (not emulated)
// RES(R21, RES_K(22)) -- part of final amp (not emulated)
RES(R22, RES_K(1))
// RES(R23, RES_K(10)) -- part of final amp (not emulated)
// RES(R24, 150) -- part of final amp (not emulated)
// POT(R25, RES_K(100))-- part of final amp (not emulated)
RES(R26, RES_K(1))
RES(R27, RES_K(1))
RES(R28, RES_K(510))
RES(R29, RES_K(10)) // PCB verified
// RES(R30, ???)
RES(R31, RES_K(47)) // PCB verified
RES(R32, RES_M(3.3)) // PCB verified
RES(R33, RES_M(1))
RES(R34, RES_K(47))
RES(R35, RES_M(1))
RES(R36, RES_M(1))
RES(R37, RES_M(1))
RES(R38, RES_M(1))
RES(R39, 150)
RES(R40, RES_K(10))
RES(R41, RES_K(20))
RES(R42, RES_K(1))
RES(R43, RES_M(1))
RES(R44, RES_K(10))
RES(R45, RES_K(10))
RES(R46, 150)
RES(R47, RES_K(20))
RES(R48, RES_M(1))
RES(R49, RES_K(10))
RES(R50, RES_K(1))
RES(R51, RES_K(10))
RES(R52, RES_K(20))
RES(R53, RES_K(39))
RES(R54, RES_K(82))
RES(R55, RES_K(2.2))
RES(R56, RES_K(1))
RES(R57, RES_K(10))
RES(R58, RES_K(20))
RES(R59, RES_K(39))
RES(R60, RES_K(82))
// CAP(C1, CAP_U(2.2))
// CAP(C2, CAP_U(2.2))
// CAP(C3, CAP_U(3.3))
// CAP(C4, CAP_U(3.3))
CAP(C5, CAP_P(100))
CAP(C6, CAP_U(3.3))
CAP(C7, CAP_U(0.01))
CAP(C8, CAP_U(1))
CAP(C9, CAP_U(0.022))
CAP(C10, CAP_U(0.15)) // 15?
CAP(C11, CAP_U(0.15))
CAP(C12, CAP_U(15))
CAP(C13, CAP_U(0.0033))
CAP(C14, CAP_U(0.0047))
CAP(C15, CAP_U(1))
// CAP(C16, CAP_P(470)) -- part of final amp (not emulated)
CAP(C17, CAP_U(22))
// CAP(C18, CAP_P(470)) -- part of final amp (not emulated)
// CAP(C19, CAP_P(470)) -- part of final amp (not emulated)
CAP(C20, CAP_U(1))
#if (SLOW_SHIP_WOBBLE)
CAP(C21, CAP_U(22)) // discovered by accident, makes HLE analysis easier
#else
CAP(C21, CAP_U(0.22)) // PCB verified
#endif
CAP(C22, CAP_U(0.1))
CAP(C23, CAP_U(0.0027))
CAP(C24, CAP_U(0.1))
CAP(C25, CAP_U(0.0027))
CAP(C26, CAP_U(1))
CAP(C27, CAP_U(0.1))
// CAP(C39, CAP_U(1))
// CAP(C40, CAP_U(1))
D_1N914(CR1)
D_1N914(CR2)
D_1N914(CR3)
D_1N914(CR4)
D_1N914(CR5)
D_1N914(CR6)
D_1N914(CR7)
D_1N914(CR8)
D_1N914(CR9)
D_1N914(CR10)
Q_2N3906(Q1) // PNP
// Q_2N6292(Q2) // NPN -- part of final amp (not emulated)
// Q_2N6107(Q3) // PNP -- part of final amp (not emulated)
#if (!HLE_LAZER_VCOS)
Q_2N3904(Q4) // NPN
Q_2N3904(Q5) // NPN
#endif
TL182_DIP(IC3A) // Analog switch
NET_C(IC3A.6, I_V15)
NET_C(IC3A.7, I_V5)
NET_C(IC3A.8, GND)
NET_C(IC3A.9, I_VM15)
// TTL_7815_DIP(IC2D) // +15V Regulator -- not needed
// TTL_7915_DIP(IC2C) // -15V Regulator -- not needed
TL081_DIP(IC4A) // Op. Amp.
NET_C(IC4A.4, I_VM15)
NET_C(IC4A.7, I_V15)
TL081_DIP(IC4B) // Op. Amp.
NET_C(IC4B.4, I_VM15)
NET_C(IC4B.7, I_V15)
// TL081_DIP(IC4C) // Op. Amp. -- part of final amp (not emulated)
// NET_C(IC4C.4, I_VM15)
// NET_C(IC4C.7, I_V15)
TTL_74LS393_DIP(IC4E) // Dual 4-Stage Binary Counter
NET_C(IC4E.7, GND)
NET_C(IC4E.14, I_V5)
TL081_DIP(IC5A) // Op. Amp.
NET_C(IC5A.4, I_VM15)
NET_C(IC5A.7, I_V15)
TL081_DIP(IC5B) // Op. Amp.
NET_C(IC5B.4, I_VM15)
NET_C(IC5B.7, I_V15)
LM556_DIP(IC5D)
PROM_74S287_DIP(IC5E) // 1024-bit PROM -- dump needed
PARAM(IC5E.A.ROM, "2085.5e8e")
NET_C(IC5E.8, GND)
NET_C(IC5E.16, I_V5)
CA3080_DIP(IC6A) // Trnscndt. Op. Amp.
NET_C(IC6A.7, I_V15)
NET_C(IC6A.4, I_VM15)
TL081_DIP(IC6B) // Op. Amp.
NET_C(IC6B.4, I_VM15)
NET_C(IC6B.7, I_V15)
TTL_74LS04_DIP(IC6C) // Hex Inverting Gates
NET_C(IC6C.7, GND)
NET_C(IC6C.14, I_V5)
LM556_DIP(IC6D)
TL081_DIP(IC6E) // Op. Amp.
NET_C(IC6E.4, I_VM15)
NET_C(IC6E.7, I_V15)
TL081_DIP(IC6F) // Op. Amp.
NET_C(IC6F.4, I_VM15)
NET_C(IC6F.7, I_V15)
TTL_7406_DIP(IC7C) // Hex inverter -- currently using a clone of 7416, no open collector behavior
NET_C(IC7C.7, GND)
NET_C(IC7C.14, I_V5)
TTL_74LS393_DIP(IC7E) // Dual 4-Stage Binary Counter
NET_C(IC7E.7, GND)
NET_C(IC7E.14, I_V5)
TTL_74LS164_DIP(IC8C) // 8-bit Shift Reg.
NET_C(IC8C.7, GND)
NET_C(IC8C.14, I_V5)
TTL_74LS164_DIP(IC8D) // 8-bit Shift Reg.
NET_C(IC8D.7, GND)
NET_C(IC8D.14, I_V5)
PROM_74S287_DIP(IC8E) // 1024-bit PROM -- dump needed
PARAM(IC8E.A.ROM, "2085.5e8e")
NET_C(IC8E.8, GND)
NET_C(IC8E.16, I_V5)
TTL_74LS164_DIP(IC9C) // 8-bit Shift Reg.
NET_C(IC9C.7, GND)
NET_C(IC9C.14, I_V5)
TTL_74LS164_DIP(IC9D) // 8-bit Shift Reg.
NET_C(IC9D.7, GND)
NET_C(IC9D.14, I_V5)
TTL_74LS163_DIP(IC9E) // Binary Counter (schems say can sub a 74161)
NET_C(IC9E.8, GND)
NET_C(IC9E.16, I_V5)
TTL_74LS86_DIP(IC10C) // Quad 2-Input XOR Gates
NET_C(IC10C.7, GND)
NET_C(IC10C.14, I_V5)
TTL_74LS21_DIP(IC10D) // Dual 4-Input AND Gates
NET_C(IC10D.7, GND)
NET_C(IC10D.14, I_V5)
TTL_74LS393_DIP(IC10E) // Dual 4-Stage Binary Counter
NET_C(IC10E.7, GND)
NET_C(IC10E.14, I_V5)
//
// Top-left noise generator
//
NET_C(I_V5, R1.2, IC6D.14, IC6D.4, R3.2)
NET_C(R1.1, IC6D.1, R2.2)
NET_C(R2.1, IC6D.2, IC6D.6, C7.2)
NET_C(C7.1, GND)
NET_C(IC6D.7, GND)
NET_C(IC6D.3, C8.1, R3.1, R4.1)
NET_C(C8.2, GND)
NET_C(R4.2, IC8D.4)
NET_C(IC6D.5, IC8D.8, IC9D.8, IC10E.1, IC9E.2)
NET_C(IC9E.9, IC9E.7, IC9E.10, I_V5)
NET_C(IC9E.1, I_V5)
NET_C(IC9E.15, IC10E.13, IC8C.8, IC9C.8)
NET_C(IC10E.2, IC8D.3)
NET_C(IC10E.3, IC10D.1)
NET_C(IC10E.4, IC10D.2)
NET_C(IC10E.5, IC10D.4)
NET_C(IC10E.6, IC10D.5)
NET_C(IC10D.6, IC10C.5)
NET_C(IC10C.4, IC10C.11)
NET_C(IC10C.6, IC8D.1, IC8D.2)
NET_C(IC8D.9, I_V5)
NET_C(IC8D.13, IC9D.1, IC9D.2)
NET_C(IC9D.10, IC10C.13)
NET_C(IC9D.12, IC10C.12)
NET_C(IC9D.13, R8.2)
NET_C(IC9D.9, I_V5)
NET_C(R8.1, C10.2, R9.1)
NET_C(C10.1, GND)
NET_C(R9.2, CR1.K, CR2.A)
NET_C(IC10E.12, IC8C.3)
NET_C(IC10E.8, IC10D.9)
NET_C(IC10E.9, IC10D.10)
NET_C(IC10E.10, IC10D.12)
NET_C(IC10E.11, IC10D.13)
NET_C(IC10D.8, IC10C.1)
NET_C(IC10C.2, IC10C.8)
NET_C(IC10C.3, IC8C.1, IC8C.2)
NET_C(IC8C.9, I_V5)
NET_C(IC8C.13, IC9C.1, IC9C.2)
NET_C(IC9C.10, IC10C.10)
NET_C(IC9C.12, IC10C.9)
NET_C(IC9C.13, R10.1)
NET_C(IC9C.9, I_V5)
NET_C(R10.2, C11.2, R11.1)
NET_C(C11.1, GND)
NET_C(R11.2, CR2.K, CR1.A, C12.1)
NET_C(C12.2, IC6B.2, R12.1, C13.1)
NET_C(IC6B.3, GND)
NET_C(IC6B.6, C13.2, R12.2, R13.1)
NET_C(R13.2, C15.1)
NET_C(C15.2, R14.2, IC6A.2)
NET_C(R14.1, GND)
NET_C(IC6A.3, R15.2)
NET_C(R15.1, GND)
NET_C(IC6A.5, R16.2)
//
// Explosion
//
NET_C(I_OUT_0, IC6C.11)
NET_C(IC6C.10, R5.1)
NET_C(R5.2, C5.2, IC6D.8)
NET_C(C5.1, GND)
NET_C(IC6D.10, R6.2, I_V5)
NET_C(IC6D.12, IC6D.13, R6.1, C6.1)
NET_C(C6.2, GND)
NET_C(IC6D.9, Q1.E)
NET_C(Q1.B, R7.2)
NET_C(R7.1, GND)
NET_C(Q1.C, R17.2, C17.1, R16.1)
NET_C(R17.1, GND)
NET_C(C17.2, I_VM15)
//
// On/off switches
//
NET_C(I_OUT_3, IC3A.5, IC6C.3)
NET_C(I_OUT_4, IC3A.10)
NET_C(IC3A.1, IC4A.2, R18.1, C14.1)
NET_C(IC4A.3, GND)
NET_C(C14.2, R18.2, IC4A.6, R19.1)
NET_C(R19.2, IC3A.14, IC6A.6)
#if (HLE_SHIP_VCO)
//
// This VCO is tricky to simulate, as there is both a frequency aspect
// and an envelope aspect. The frequency is relatively straightforward.
// Pick up the voltage from the anode of CR4 and map to a frequency
// with a polynominal derived from the LLE implementation.
//
// Here is the mapping I get for CR4.A vs. IC3A.5 (using a -0.1-0.1 threshold):
// R2 = 0.99832: HP = (-0.000160539*A0) + 0.0000331984
// R2 = 0.99927: HP = (0.00000397232*A0*A0) - (0.000129210*A0) + 0.000083240
// R2 = 0.99927: HP = (-0.000000185528*A0*A0*A0) + (0.00000154157*A0*A0) - (0.000138889*A0) + 0.000071961
// R2 = 0.99929: HP = (-0.000000215021*A0*A0*A0*A0) - (0.00000393775*A0*A0*A0) - (0.0000213646*A0*A0) - (0.000196307*A0) + 0.0000221998
// R2 = 0.99931: HP = (0.000000153378*A0*A0*A0*A0*A0) + (0.00000317059*A0*A0*A0*A0) + (0.0000244935*A0*A0*A0) + (0.000091436*A0*A0) + (0.0000138241*A0) + 0.000169151
//
VARCLOCK(SHIPCLK, 1, "max(0.000001,min(0.1,(0.00000397232*A0*A0) - (0.000129210*A0) + 0.000083240))")
NET_C(SHIPCLK.GND, GND)
NET_C(SHIPCLK.VCC, I_V5)
NET_C(SHIPCLK.A0, CR4.A)
//
// The envelope is trickier. When the signal is OFF (3A pin 5 is HIGH),
// the envelope tracks the voltage from CR4. When the signal is ON
// (3A pin 5 is LOW), the raw clock from SHIPCLK is clamped to -1..1
// and scaled down by a constant factor with a small additional
// envelope from the CR4 anode voltage.
//
AFUNC(SHIPENV, 3, "if(A2>2.5, -A1, (0.07-(0.005*A1))*if(A0>2.5,1,-1))")
NET_C(SHIPENV.A0, SHIPCLK.Q)
NET_C(SHIPENV.A1, CR4.A)
NET_C(SHIPENV.A2, IC3A.5)
NET_C(SHIPENV.Q, IC3A.2)
NET_C(R34.2, R35.1)
NET_C(R35.2, CR4.K)
NET_C(R36.1, IC5B.6, R38.2, CR4.A)
NET_C(GND, R34.1, R36.2, R37.1, R37.2, C9.1, C9.2, CR5.A, CR5.K, IC4B.2, IC4B.3, IC5A.2, IC5A.3)
#else
NET_C(IC3A.2, C9.2)
NET_C(C9.1, IC4B.2, R34.1)
NET_C(IC4B.6, R34.2, R35.1)
NET_C(IC4B.3, R35.2, CR4.K, CR5.A)
NET_C(R36.1, IC5B.6, R38.2, CR4.A)
NET_C(R36.2, IC5A.2, R37.1)
NET_C(IC5A.3, GND)
NET_C(R37.2, IC5A.6, CR5.K)
#endif
NET_C(IC3A.13, R22.1)
NET_C(R22.2, GND)
ALIAS(OUTPUT, R22.1)
//
// K exit
//
NET_C(I_OUT_7, IC7C.1)
NET_C(IC7C.2, R27.1, CR6.A)
NET_C(R27.2, I_V5)
NET_C(IC6C.4, IC7C.11)
NET_C(IC7C.10, CR3.A, R26.1)
NET_C(R26.2, I_V15, IC5D.14, IC5D.4, R29.2)
NET_C(CR3.K, R28.2)
NET_C(R28.1, CR6.K, C20.1, R33.1)
NET_C(C20.2, GND)
NET_C(R33.2, C27.1, R38.1, IC5B.2)
NET_C(IC5D.1, R29.1, R31.2)
NET_C(IC5D.2, IC5D.6, R31.1, R32.1, C21.1)
NET_C(R32.2, C27.2)
NET_C(C21.2, GND)
NET_C(IC5B.3, GND)
NET_C(IC5D.7, GND)
// pin 5 (OUTPUT) of the 555 timer is not connected;
// use this kludge to simulate that
RES(RDUMMY, RES_K(100))
NET_C(IC5D.5, RDUMMY.1)
NET_C(RDUMMY.2, GND)
//
// Lazer 1
//
NET_C(I_OUT_1, IC6C.5)
NET_C(IC6C.6, IC8E.14, IC7C.9)
NET_C(IC7C.8, R39.1)
NET_C(R39.2, C22.2, CR7.K)
NET_C(C22.1, GND)
#if (HLE_LAZER_VCOS)
//
// This VCO is very difficult to simulate without cranking the speed up
// and killing performance. Even at 1000x frequency, we still get failures
// to converge. Here we clip the circuit at the diode CR7 and substitute
// a VARCLOCK that directly drives the counter at 7E, skipping the analog
// to TTL conversion logic after the VCO.
//
// Here is the mapping I get for C22.2 vs. IC7E.1 half-period:
//
// R2 = 0.97399: HP = (0.00000249069*A0) + 0.00000439991
// R2 = 0.99638: HP = (0.000000142614*A0*A0) + (0.00000104196*A0) + 0.00000471406
// R2 = 0.99932: HP = (0.0000000174880*A0*A0*A0) - (0.000000159311*A0*A0) + (0.00000222025*A0) + 0.00000455815
// R2 = 0.99978: HP = (0.00000000229608*A0*A0*A0*A0) - (0.0000000377974*A0*A0*A0) + (0.000000245492*A0*A0) + (0.00000134883*A0) + 0.00000465357
// R2 = 0.99985: HP = (0.000000000286259*A0*A0*A0*A0*A0) - (0.00000000650969*A0*A0*A0*A0) + (0.0000000560876*A0*A0*A0) - (0.000000154720*A0*A0) + (0.00000190838*A0) + 0.0000045976
//
// One additional wrinkle is that when we clip the circuit, the voltage
// input to the VCO changes from a curve to linear, so to compute the
// mapping below, we had to map the C22.2 value from the clipped circuit
// against the frequency. Fortunately, the relationship still held, and
// in fact became almost linear.
//
// Here is the mapping for the clipped C22.2 vs. the original IC7E.1:
// R2 = 0.99947: HP = (0.000226684*A0) - 0.0000178774
// R2 = 0.99947: HP = (-0.0000111790*A0*A0) + (0.000230333*A0) - 0.0000181329
// R2 = 0.99958: HP = (-0.00124814*A0*A0*A0) + (0.000641071*A0*A0) + (0.000124020*A0) - 0.0000127688
// R2 = 0.99976: HP = (0.0197918*A0*A0*A0*A0) - (0.0148601*A0*A0*A0) + (0.00399181*A0*A0) - (0.000225308*A0) + 0.000000287255
// R2 = 0.99979: HP = (-0.095062*A0*A0*A0*A0*A0) + (0.093556*A0*A0*A0*A0) - (0.0361209*A0*A0*A0) + (0.00677578*A0*A0) - (0.000384926*A0) + 0.00000324102
//
VARCLOCK(LAZER1CLK, 1, "max(0.000001,min(0.1,(0.000226684*A0) - 0.0000178774))")
NET_C(LAZER1CLK.GND, GND)
NET_C(LAZER1CLK.VCC, I_V5)
NET_C(LAZER1CLK.Q, IC7E.1)
NET_C(LAZER1CLK.A0, C22.2)
NET_C(GND, R40.1, R40.2, R41.1, R41.2, R42.1, R42.2, R43.1, R43.2, R44.1, R44.2, C23.1, C23.2, CR7.A, CR8.A, CR8.K, IC6C.9, IC6F.2, IC6F.3)
#else
NET_C(CR7.A, IC6F.3, CR8.K, R43.1)
NET_C(CR8.A, GND)
NET_C(IC6F.2, C23.2, R40.1)
NET_C(C23.1, GND)
NET_C(IC6F.6, R40.2, R43.2, R41.1)
NET_C(R41.2, R44.2, Q4.B)
NET_C(R44.1, GND)
NET_C(Q4.E, GND)
NET_C(Q4.C, R42.1, IC6C.9)
NET_C(R42.2, I_V5)
NET_C(IC6C.8, IC7E.1)
#endif
NET_C(IC7E.2, IC7E.12, GND)
NET_C(IC7E.3, IC8E.7)
NET_C(IC7E.4, IC8E.4)
NET_C(IC7E.5, IC8E.6)
NET_C(IC7E.6, IC8E.5, IC7E.13)
NET_C(IC7E.8, IC8E.15)
NET_C(IC7E.10, IC8E.2)
NET_C(IC7E.11, IC8E.3)
NET_C(IC8E.1, GND)
NET_C(IC8E.13, GND)
NET_C(IC8E.12, R51.1)
NET_C(IC8E.11, R52.1)
NET_C(IC8E.10, R53.1)
NET_C(IC8E.9, R54.1)
NET_C(R51.2, R52.2, R53.2, R54.2, R55.1, R56.2)
NET_C(R56.1, GND)
NET_C(R55.2, C26.1)
NET_C(C26.2, IC6A.6)
//
// Lazer 2
//
NET_C(I_OUT_2, IC6C.1)
NET_C(IC6C.2, IC5E.14, IC7C.13)
NET_C(IC7C.12, R46.1)
NET_C(R46.2, C24.2, CR9.K)
NET_C(C24.1, GND)
#if (HLE_LAZER_VCOS)
//
// This VCO is identical to the one above, just using different components
//
VARCLOCK(LAZER2CLK, 1, "max(0.000001,min(0.1,(0.000226684*A0) - 0.0000178774))")
NET_C(LAZER2CLK.GND, GND)
NET_C(LAZER2CLK.VCC, I_V5)
NET_C(LAZER2CLK.Q, IC4E.1)
NET_C(LAZER2CLK.A0, C24.2)
NET_C(GND, R45.1, R45.2, R47.1, R47.2, R48.1, R48.2, R49.1, R49.2, R50.1, R50.2, C25.1, C25.2, CR9.A, CR10.A, CR10.K, IC6C.13, IC6E.2, IC6E.3)
#else
NET_C(CR9.A, IC6E.3, CR10.K, R48.1)
NET_C(CR10.A, GND)
NET_C(IC6E.2, C25.2, R45.1)
NET_C(C25.1, GND)
NET_C(IC6E.6, R45.2, R48.2, R47.1)
NET_C(R47.2, R49.2, Q5.B)
NET_C(R49.1, GND)
NET_C(Q5.E, GND)
NET_C(Q5.C, R50.1, IC6C.13)
NET_C(R50.2, I_V5)
NET_C(IC6C.12, IC4E.1)
#endif
NET_C(IC4E.2, IC4E.12, GND)
NET_C(IC4E.3, IC5E.7)
NET_C(IC4E.4, IC5E.4)
NET_C(IC4E.5, IC5E.6)
NET_C(IC4E.6, IC5E.5, IC4E.13)
NET_C(IC4E.8, IC5E.15)
NET_C(IC4E.10, IC5E.2)
NET_C(IC4E.11, IC5E.3)
NET_C(IC5E.1, GND)
NET_C(IC5E.13, GND)
NET_C(IC5E.12, R57.1)
NET_C(IC5E.11, R58.1)
NET_C(IC5E.10, R59.1)
NET_C(IC5E.9, R60.1)
NET_C(R57.2, R58.2, R59.2, R60.2, R55.1)
//
// Unconnected inputs
//
NET_C(GND, IC5D.8, IC5D.9, IC5D.10, IC5D.12, IC5D.13, IC7C.3, IC7C.5, IC9E.3, IC9E.4, IC9E.5, IC9E.6)
//
// Unconnected outputs
//
HINT(IC4E.9, NC) // Q3
#if (HLE_LAZER_VCOS)
HINT(IC6C.8, NC) // QD
HINT(IC6C.12, NC) // QF
#endif
HINT(IC7C.4, NC) // QB
HINT(IC7C.6, NC) // QC
HINT(IC7E.9, NC) // Q3
HINT(IC8C.4, NC) // Q1
HINT(IC8C.5, NC) // Q2
HINT(IC8C.6, NC) // Q3
HINT(IC8C.10, NC) // Q4
HINT(IC8C.11, NC) // Q5
HINT(IC8C.12, NC) // Q6
HINT(IC8D.5, NC) // Q2
HINT(IC8D.6, NC) // Q3
HINT(IC8D.10, NC) // Q4
HINT(IC8D.11, NC) // Q5
HINT(IC8D.12, NC) // Q6
HINT(IC9C.3, NC) // Q0
HINT(IC9C.4, NC) // Q1
HINT(IC9C.5, NC) // Q2
HINT(IC9C.6, NC) // Q3
HINT(IC9C.11, NC) // Q5
HINT(IC9D.3, NC) // Q0
HINT(IC9D.4, NC) // Q1
HINT(IC9D.5, NC) // Q2
HINT(IC9D.6, NC) // Q3
HINT(IC9D.11, NC) // Q5
HINT(IC9E.11, NC) // Q3
HINT(IC9E.12, NC) // Q2
HINT(IC9E.13, NC) // Q1
HINT(IC9E.14, NC) // Q0
NETLIST_END()