Esempio n. 1
0
// identify unknown devices in IDE

#define NETLIST_DEVELOPMENT 0

#include "netlist/nl_dice_compat.h"

#define SLOW_BUT_ACCURATE 0

//2 555 timers
static Astable555Desc b2_555_desc(OHM(560.0), M_OHM(1.8), U_FARAD(0.1));

static Mono555Desc c9_555_desc(OHM(47000.0), U_FARAD(1.0)); // R33, C21

static CapacitorDesc c32_desc(U_FARAD(0.1));
static CapacitorDesc c36_desc(N_FARAD(1.0));    //0.001uF = 1nF
static CapacitorDesc c37_desc(P_FARAD(330.0));

static Mono9602Desc n8_desc(K_OHM(33.0), U_FARAD(100.0), K_OHM(5.6), P_FARAD(0)); // No capacitor on 2nd 9602
static Mono9602Desc f3_desc(K_OHM(47.0), U_FARAD(1.0), K_OHM(47.0), U_FARAD(1.0));

static Mono9602Desc a7_desc(K_OHM(68.0), U_FARAD(1.0), K_OHM(22.0), U_FARAD(10.0));
static Mono9602Desc a8_desc(K_OHM(27.0), U_FARAD(1.0), K_OHM(27.0), U_FARAD(1.0));

CIRCUIT_LAYOUT( breakout )

#if (SLOW_BUT_ACCURATE)
	SOLVER(Solver, 48000)
	PARAM(Solver.ACCURACY, 1e-8) // less accuracy and diode will not work
	PARAM(Solver.GS_THRESHOLD, 6)
#else
	SOLVER(Solver, 48000)
Esempio n. 2
0
#include "netlist/nl_dice_compat.h"
#include "netlist/devices/net_lib.h"
#include "netlist/analog/nld_twoterm.h"

//2 555 timers
static Astable555Desc b2_555_desc(OHM(560.0), M_OHM(1.8), U_FARAD(0.1));

static Mono555Desc c9_555_desc(OHM(47.0), U_FARAD(1.0));	// R33, C21

//check these values
//static Paddle1HorizontalDesc pad1_desc(15047.0, 47.0, &c9_555_desc);

static CapacitorDesc c32_desc(U_FARAD(0.1));
static CapacitorDesc c36_desc(N_FARAD(1.0));	//0.001uF = 1nF
static CapacitorDesc c37_desc(P_FARAD(330.0));
static BufferDesc pad_en_buf_desc(DELAY_NS(15.0), DELAY_NS(15.0)); // Prevents 12ns glitch on PAD_EN_n signal from resetting C9. TODO: is this accurate?

#if 0
static VIDEO_DESC( breakout )
    VIDEO_RESISTANCE(1, K_OHM(0.0))
    VIDEO_RESISTANCE(2, K_OHM(3.9))
    VIDEO_RESISTANCE(3, K_OHM(3.9))
    VIDEO_RESISTANCE(4, K_OHM(3.9))
    VIDEO_RESISTANCE(5, K_OHM(3.9))
    VIDEO_RESISTANCE(6, K_OHM(3.9))
    //VIDEO_RESISTANCE(Video::HBLANK_PIN, K_OHM(0.0))
    VIDEO_ORIENTATION(ROTATE_90)
    VIDEO_CONTRAST(4.0)

    // Values guessed based on screenshots. TODO: Make more accurate
    //             X,         Y,   W,        H,    R,    G,    B
Esempio n. 3
0
static Mono555Desc _12a_555_desc(K_OHM(220.0), U_FARAD(3.3));
static Mono555Desc _3b_555_desc(K_OHM(100.0), U_FARAD(4.7));
static Mono555Desc _14g_555_desc(K_OHM(330.0), U_FARAD(0.22));
static Astable555Desc _9d_555_desc(K_OHM(40.0), K_OHM(15.0), U_FARAD(22.0));

static Paddle1VerticalDesc pad1_desc(4000.0, 94000.0, &_5h_555_desc);
static Paddle2VerticalDesc pad2_desc(4000.0, 94000.0, &_3f_555_desc);
static Paddle3VerticalDesc pad3_desc(4000.0, 94000.0, &_3h_555_desc);
static Paddle4VerticalDesc pad4_desc(4000.0, 94000.0, &_5f_555_desc);

static CapacitorDesc c1_desc(U_FARAD(0.001));
static CapacitorDesc c2_desc(U_FARAD(0.001));
static CapacitorDesc c3_desc(U_FARAD(0.001));
static CapacitorDesc c4_desc(U_FARAD(0.001));
static CapacitorDesc c5_desc(U_FARAD(0.001));
static CapacitorDesc c6_desc(P_FARAD(100.0));
static CapacitorDesc c7_desc(U_FARAD(0.01));

static BufferDesc buf1_desc(DELAY_NS(25.0), DELAY_NS(25.0)); // 25 ns buffer to prevent resonance in RC circuits
static BufferDesc buf2_desc(DELAY_NS(25.0), DELAY_NS(25.0)); // 25 ns buffer to prevent resonance in RC circuits

static SeriesRCDesc rc1_desc(OHM(220.0), U_FARAD(350.0));
static SeriesRCDesc rc2_desc(OHM(220.0), U_FARAD(470.0));

static PotentimeterAstable555Desc pot1_desc("playtime", "Play Time", K_OHM(35.0), K_OHM(10.0), K_OHM(60.0), _9d_555_desc);

// Hack to improve performance
static CHIP_LOGIC( diode_matrix_custom_n )
{
    DIODE_LAYOUT* d_l = (DIODE_LAYOUT*)custom_data;
Esempio n. 4
0
    6, "F",
    7, "G",
    8, "H",
    9, "I",
    10, "J",
    11, "K",
    12, "L",
    13, "M",
    14, "N",
    15, "O"
);
#endif

static Mono9602Desc b1_desc(K_OHM(9.1), U_FARAD(100.0), K_OHM(9.1), U_FARAD(100.0));
static Mono9602Desc c1_desc(K_OHM(15.0), U_FARAD(5.0), K_OHM(15.0), U_FARAD(5.0));
static Mono9602Desc e1_desc(K_OHM(33.0), U_FARAD(47.0), K_OHM(27.0), P_FARAD(100.0));
static Mono555Desc d9_555_desc(K_OHM(610.0), U_FARAD(100.0));

static DipswitchDesc dipswitch1_desc("coinage", "Coinage", 0, "1 Coin / 1 Credit", "1 Coin / 2 Credits");
static DipswitchDesc dipswitch2_desc("plane_type", "Plane Type", 0, "Airplane", "UFO");
static PotentimeterMono555Desc pot1_desc("playtime", "Play Time", K_OHM(830.0), K_OHM(220.0), K_OHM(1220.0), d9_555_desc);

static RomDesc k1_desc("antiaircraft", "aa.k1", 0x9DE772D5);

// 100 ms period +/- 25% (Guess). TODO: Determine actual functionality
static CUSTOM_LOGIC( RANDOM_CLOCK_GEN )
{
    // Output should be high at start, so push event immediately
    if(chip->circuit->global_time == 0)
    {
        chip->pending_event = chip->circuit->queue_push(chip, 1);