// license:CC0
// copyright-holders:Couriersud
// thanks-to:Sean Riddle
#include "netlist/devices/net_lib.h"
/* ----------------------------------------------------------------------------
* Gamemachine schematics
* ---------------------------------------------------------------------------*/
NETLIST_START(gamemachine)
/* Standard stuff */
SOLVER(Solver, 48000)
PARAM(Solver.ACCURACY, 1e-7)
ANALOG_INPUT(V5, 5)
/* Schematics: http://seanriddle.com/gamemachineaudio.JPG
*
* 3870 datasheet: http://nice.kaze.com/MK3870.pdf
*
* The 3870 has mask-programmable outputs (page VIII-7 in datasheet).
*
* Given the schematics, in this case the OPENDRAIN configuration is the
* most probable.
*
*/
NET_MODEL("OPENDRAIN FAMILY(OVL=0.0 OVH=0.0 ORL=1.0 ORH=1e12)")
NET_MODEL("TYPE6K FAMILY(OVL=0.05 OVH=0.05 ORL=1.0 ORH=6000)")
NET_MODEL("DIRECTDRIVE FAMILY(OVL=0.05 OVH=0.05 ORL=1.0 ORH=1000)")
LOGIC_INPUT(P08, 1, "OPENDRAIN")
LOGIC_INPUT(P09, 1, "OPENDRAIN")
LOGIC_INPUT(P10, 1, "OPENDRAIN")
LOGIC_INPUT(P11, 1, "OPENDRAIN")
LOGIC_INPUT(P12, 1, "OPENDRAIN")
LOGIC_INPUT(P13, 1, "OPENDRAIN")
LOGIC_INPUT(P14, 1, "OPENDRAIN")
LOGIC_INPUT(P15, 1, "OPENDRAIN")
NET_C(V5, P08.VCC, P09.VCC, P10.VCC, P11.VCC, P12.VCC, P13.VCC, P14.VCC, P15.VCC)
NET_C(GND, P08.GND, P09.GND, P10.GND, P11.GND, P12.GND, P13.GND, P14.GND, P15.GND)
RES(R1, RES_K(2.4))
RES(R2, RES_K(10))
RES(R3, RES_K(4.3))
RES(R4, RES_K(150))
RES(R5, RES_K(240))
RES(R6, RES_K(2.4))
RES(SPK1, 8)
CAP(C1, CAP_P(50))
CAP(C2, CAP_U(0.001))
CAP(C3, CAP_U(0.002))
CAP(C4, CAP_U(0.005))
CAP(C5, CAP_U(0.010))
CAP(C6, CAP_P(50))
CAP(C7, CAP_U(0.01))
CAP(C8, CAP_U(470))
QBJT_EB(Q1, "9013")
MC1455P_DIP(IC1)
NET_C(P08.Q, R2.2, IC1.4)
NET_C(P09.Q, C8.2)
NET_C(P15.Q, R1.2)
NET_C(C1.1, P10.Q)
NET_C(C2.1, P11.Q)
NET_C(C3.1, P12.Q)
NET_C(C4.1, P13.Q)
NET_C(C5.1, P14.Q)
NET_C(C1.2, C2.2, C3.2, C4.2, C5.2, C6.2, IC1.2, IC1.6, R5.2)
NET_C(GND, C6.1, IC1.1, Q1.E)
NET_C(R5.1, R4.2, IC1.7)
NET_C(V5, R4.1, R2.1, IC1.8, SPK1.1, R3.1)
NET_C(C7.1, R6.1, IC1.3)
NET_C(C7.2, R6.2, Q1.B)
NET_C(Q1.C, SPK1.2)
NET_C(C8.1, R1.1, R3.2, IC1.5)
NETLIST_END()