Esempio n. 1
0
contractor mk_contractor_gsl(box const & box, shared_ptr<ode_constraint> const ctr, contractor const & eval_ctc, ode_direction const dir, bool const use_cache, double const timeout) {
    if (!use_cache) {
        return contractor(make_shared<contractor_gsl>(box, ctr, eval_ctc, dir, timeout));
    }
    if (dir == ode_direction::FWD) {
        static unordered_map<shared_ptr<ode_constraint>, contractor> gsl_fwd_ctc_cache;
        auto it = gsl_fwd_ctc_cache.find(ctr);
        if (it == gsl_fwd_ctc_cache.end()) {
            contractor ctc(make_shared<contractor_gsl>(box, ctr, eval_ctc, dir, timeout));
            gsl_fwd_ctc_cache.emplace(ctr, ctc);
            return ctc;
        } else {
            return it->second;
        }
    } else {
        static unordered_map<shared_ptr<ode_constraint>, contractor> gsl_bwd_ctc_cache;
        auto it = gsl_bwd_ctc_cache.find(ctr);
        if (it == gsl_bwd_ctc_cache.end()) {
            contractor ctc(make_shared<contractor_gsl>(box, ctr, eval_ctc, dir, timeout));
            gsl_bwd_ctc_cache.emplace(ctr, ctc);
            return ctc;
        } else {
            return it->second;
        }
    }
}
Esempio n. 2
0
void ts802_state::ts802(machine_config &config)
{
	/* basic machine hardware */
	Z80(config, m_maincpu, 16_MHz_XTAL / 4);
	m_maincpu->set_addrmap(AS_PROGRAM, &ts802_state::ts802_mem);
	m_maincpu->set_addrmap(AS_IO, &ts802_state::ts802_io);
	//m_maincpu->set_daisy_config(daisy_chain_intf); // causes problems

	/* Devices */
	GENERIC_TERMINAL(config, m_terminal, 0);
	m_terminal->set_keyboard_callback(FUNC(ts802_state::kbd_put));

	z80dma_device& dma(Z80DMA(config, "dma", 16_MHz_XTAL / 4));
	dma.out_busreq_callback().set_inputline(m_maincpu, INPUT_LINE_HALT);
	dma.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
	dma.in_mreq_callback().set(FUNC(ts802_state::memory_read_byte));
	dma.out_mreq_callback().set(FUNC(ts802_state::memory_write_byte));
	dma.in_iorq_callback().set(FUNC(ts802_state::io_read_byte));
	dma.out_iorq_callback().set(FUNC(ts802_state::io_write_byte));

	z80dart_device& dart1(Z80DART(config, "dart1", 16_MHz_XTAL / 4));
	dart1.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);

	z80dart_device& dart2(Z80DART(config, "dart2", 16_MHz_XTAL / 4));
	dart2.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);

	z80ctc_device& ctc(Z80CTC(config, "ctc", 16_MHz_XTAL / 4));
	ctc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);

	FD1793(config, "fdc", 4'000'000 / 2);                  // unknown clock
	FLOPPY_CONNECTOR(config, "fdc:0", ts802_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true);
}
Esempio n. 3
0
void QAniTransferFunctionInstance::load(QFile & file) {
	file.read((char *)&m_resolution, 4);
	file.read((char *)&m_tfResolutionChange, 4);
	m_tfDrawArrayChange = new float[m_resolution];
	file.read((char *)m_tfDrawArrayChange, 4 * m_resolution);

	int size;
	file.read((char *)&size, 4);
	for (int i = 0; i < size; ++i) {
		double mean,sigma,height;
		file.read((char *)&mean, 8);
		file.read((char *)&sigma, 8);
		file.read((char *)&height, 8);
		GaussianObjectChange goc(mean, sigma, height);
		m_gaussianObjectChange.push_back(goc);
	}
	file.read((char *)&size, 4);
	for (int i = 0; i < size; ++i) {
		float x;
		Vector4 color;
		file.read((char *)&x, 4);
		file.read((char *)((double*)color), 32);
		ColorTickChange ctc(x, color);
		m_tfColorTickChange.push_back(ctc);
	}
}
Esempio n. 4
0
QAniTransferFunctionInstance::QAniTransferFunctionInstance(QAniKeyframe* s, QAniKeyframe* e) : QAniInstance(QAniInstance::TransferFunction, s, e) {
	QAniTransferFunctionKeyframe * start = (QAniTransferFunctionKeyframe*)s;
	QAniTransferFunctionKeyframe * end = (QAniTransferFunctionKeyframe*)e;
	m_resolution = start->getResolution();
	m_tfResolutionChange = end->getResolution() - start->getResolution();
	if (m_tfResolutionChange == 0) {
		m_tfDrawArrayChange = new float[start->getResolution()];
		for (int i = 0; i < start->getResolution(); ++i) {
			m_tfDrawArrayChange[i] = end->getDrawArray()[i] - start->getDrawArray()[i];
		}
	}
	else m_tfDrawArrayChange = NULL;

	int idx = (start->getGaussians()->size() < end->getGaussians()->size() ?
			   start->getGaussians()->size() : end->getGaussians()->size());
	m_gaussianObjectChange.clear();
	for (int i = 0; i < idx; ++i) {
		GaussianObjectChange goc((*end->getGaussians())[i].m_mean - (*start->getGaussians())[i].m_mean,
					 (*end->getGaussians())[i].m_sigma - (*start->getGaussians())[i].m_sigma,
					 (*end->getGaussians())[i].m_heightFactor - (*start->getGaussians())[i].m_heightFactor);
		m_gaussianObjectChange.push_back(goc);
	}
	idx = (start->getColors()->size() < end->getColors()->size() ?
		   start->getColors()->size() : end->getColors()->size());
	m_tfColorTickChange.clear();
	for (int i = 0; i < idx; ++i) {
		Vector4 color((*end->getColors())[i].m_color.redF() - (*start->getColors())[i].m_color.redF(),
			      (*end->getColors())[i].m_color.greenF() - (*start->getColors())[i].m_color.greenF(),
			      (*end->getColors())[i].m_color.blueF() - (*start->getColors())[i].m_color.blueF(),
			      (*end->getColors())[i].m_color.alphaF() - (*start->getColors())[i].m_color.alphaF());
		ColorTickChange ctc((*end->getColors())[i].m_resX - (*start->getColors())[i].m_resX, color);
		m_tfColorTickChange.push_back(ctc);
	}
}
Esempio n. 5
0
void czk80_state::czk80(machine_config &config)
{
	/* basic machine hardware */
	Z80(config, m_maincpu, 16_MHz_XTAL / 4);
	m_maincpu->set_addrmap(AS_PROGRAM, &czk80_state::czk80_mem);
	m_maincpu->set_addrmap(AS_IO, &czk80_state::czk80_io);
	m_maincpu->set_daisy_config(daisy_chain);

	GENERIC_TERMINAL(config, m_terminal, 0);
	m_terminal->set_keyboard_callback(FUNC(czk80_state::kbd_put));
	UPD765A(config, m_fdc, 8_MHz_XTAL, true, true);
	FLOPPY_CONNECTOR(config, "fdc:0", czk80_floppies, "525dd", floppy_image_device::default_floppy_formats);

	z80ctc_device& ctc(Z80CTC(config, "ctc", 16_MHz_XTAL / 4));
	ctc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
	ctc.zc_callback<0>().set(FUNC(czk80_state::ctc_z0_w));
	ctc.zc_callback<1>().set(FUNC(czk80_state::ctc_z1_w));
	ctc.zc_callback<2>().set(FUNC(czk80_state::ctc_z2_w));

	z80dart_device& dart(Z80DART(config, "dart", 16_MHz_XTAL / 4));
	//dart.out_txda_callback().set("rs232", FUNC(rs232_port_device::write_txd));
	//dart.out_dtra_callback().set("rs232", FUNC(rs232_port_device::write_dtr));
	//dart.out_rtsa_callback().set("rs232", FUNC(rs232_port_device::write_rts));
	dart.out_int_callback().set_inputline("maincpu", INPUT_LINE_IRQ0);

	z80pio_device& pio(Z80PIO(config, "pio", 16_MHz_XTAL / 4));
	pio.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
}
Esempio n. 6
0
/* static */
bool CTC::ComputeCTCTargets(const GenericVector<int>& labels, int null_char,
                            const GENERIC_2D_ARRAY<float>& outputs,
                            NetworkIO* targets) {
  std::unique_ptr<CTC> ctc(new CTC(labels, null_char, outputs));
  if (!ctc->ComputeLabelLimits()) {
    return false;  // Not enough time.
  }
  // Generate simple targets purely from the truth labels by spreading them
  // evenly over time.
  GENERIC_2D_ARRAY<float> simple_targets;
  ctc->ComputeSimpleTargets(&simple_targets);
  // Add the simple targets as a starter bias to the network outputs.
  float bias_fraction = ctc->CalculateBiasFraction();
  simple_targets *= bias_fraction;
  ctc->outputs_ += simple_targets;
  NormalizeProbs(&ctc->outputs_);
  // Run regular CTC on the biased outputs.
  // Run forward and backward
  GENERIC_2D_ARRAY<double> log_alphas, log_betas;
  ctc->Forward(&log_alphas);
  ctc->Backward(&log_betas);
  // Normalize and come out of log space with a clipped softmax over time.
  log_alphas += log_betas;
  ctc->NormalizeSequence(&log_alphas);
  ctc->LabelsToClasses(log_alphas, targets);
  NormalizeProbs(targets);
  return true;
}
Esempio n. 7
0
void vdm7932x_state::vdm7932x(machine_config &config) // all clocks unverified
{
	Z80(config, m_maincpu, 24.0734_MHz_XTAL / 8); // UA880D
	m_maincpu->set_addrmap(AS_PROGRAM, &vdm7932x_state::mem_map);
	m_maincpu->set_addrmap(AS_IO, &vdm7932x_state::io_map);
	m_maincpu->set_daisy_config(daisy_chain);

	I8031(config, m_subcpu, 24.0734_MHz_XTAL / 4); // Intel P8031AH (for keyboard?)
	m_subcpu->port_in_cb<3>().set(FUNC(vdm7932x_state::i8031_p3_r));
	m_subcpu->set_addrmap(AS_PROGRAM, &vdm7932x_state::sub_map);
	m_subcpu->set_addrmap(AS_IO, &vdm7932x_state::subx_map);

	PIT8253(config, "pit", 0); // UM8253-5

	z80ctc_device &ctc(Z80CTC(config, "ctc", 24.0734_MHz_XTAL / 8)); // UA857D
	ctc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);

	z80sio_device &sio(Z80SIO(config, "sio", 24.0734_MHz_XTAL / 8)); // UA8560D
	sio.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);

	i8255_device &ppi1(I8255A(config, "ppi1")); // КР580ВВ55А (on separate card)
	ppi1.out_pc_callback().set(FUNC(vdm7932x_state::ppi1_pc_w));

	I8255A(config, "ppi2"); // КР580ВВ55А (on separate card)
}
Esempio n. 8
0
contractor mk_contractor_eval(box const & box, nonlinear_constraint const * const ctr) {
    static thread_local unordered_map<nonlinear_constraint const *, contractor> cache;
    auto const it = cache.find(ctr);
    if (it == cache.cend()) {
        contractor ctc(make_shared<contractor_eval>(box, ctr));
        cache.emplace(ctr, ctc);
        return ctc;
    } else {
        return it->second;
    }
}
Esempio n. 9
0
DefaultSolver::DefaultSolver(System& sys, double prec) : Solver(rec(ctc(sys,prec)),
		rec(new SmearSumRelative(sys, prec)),
		rec(new CellStack())),
		sys(sys) {

	srand(1);

	data = *memory(); // keep track of my data

	*memory() = NULL; // reset (for next DefaultSolver to be created)
}
Esempio n. 10
0
void TestCtcFwdBwd::atan2_issue134() {
	Variable x, y, z;
	Function f(y, x, z, z - atan2(y, x));
	NumConstraint c(f);
	CtcFwdBwd ctc(c);

	IntervalVector box(3);
	box[0] = Interval(1,1);
	box[1] = Interval(0,0);
	box[2] = Interval(-100,100);
	ctc.contract(box);
	check(box[2],Interval::HALF_PI);
}
Esempio n. 11
0
void TestCtcFwdBwd::sqrt_issue28() {
	Variable x;
	Function f(x,sqrt(x));
	NumConstraint c(f);

	CtcFwdBwd ctc(c);

	IntervalVector box(1,Interval(-2,-1));

	ctc.contract(box);

	TEST_ASSERT(box.is_empty());
}
Esempio n. 12
0
contractor mk_contractor_eval(shared_ptr<nonlinear_constraint> const ctr, bool const use_cache) {
    if (!use_cache) {
        return contractor(make_shared<contractor_eval>(ctr));
    }
    static unordered_map<shared_ptr<nonlinear_constraint>, contractor> eval_ctc_cache;
    auto const it = eval_ctc_cache.find(ctr);
    if (it == eval_ctc_cache.end()) {
        contractor ctc(make_shared<contractor_eval>(ctr));
        eval_ctc_cache.emplace(ctr, ctc);
        return ctc;
    } else {
        return it->second;
    }
}
Esempio n. 13
0
void a5105_state::a5105(machine_config &config)
{
	/* basic machine hardware */
	Z80(config, m_maincpu, XTAL(15'000'000) / 4);
	m_maincpu->set_addrmap(AS_PROGRAM, &a5105_state::a5105_mem);
	m_maincpu->set_addrmap(AS_IO, &a5105_state::a5105_io);
	m_maincpu->set_daisy_config(a5105_daisy_chain);

	/* video hardware */
	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
	m_screen->set_refresh_hz(50);
	m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
	m_screen->set_screen_update("upd7220", FUNC(upd7220_device::screen_update));
	m_screen->set_size(40*8, 32*8);
	m_screen->set_visarea(0, 40*8-1, 0, 25*8-1);
	GFXDECODE(config, m_gfxdecode, m_palette, gfx_a5105);
	PALETTE(config, m_palette, FUNC(a5105_state::a5105_palette), 16);

	/* sound hardware */
	SPEAKER(config, "mono").front_center();
	WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25);
	BEEP(config, "beeper", 500).add_route(ALL_OUTPUTS, "mono", 0.50);

	/* Devices */
	UPD7220(config, m_hgdc, XTAL(15'000'000) / 16); // unk clock
	m_hgdc->set_addrmap(0, &a5105_state::upd7220_map);
	m_hgdc->set_display_pixels(FUNC(a5105_state::hgdc_display_pixels));
	m_hgdc->set_draw_text(FUNC(a5105_state::hgdc_draw_text));

	z80ctc_device& ctc(Z80CTC(config, "z80ctc", XTAL(15'000'000) / 4));
	ctc.intr_callback().set_inputline(m_maincpu, 0);
	ctc.zc_callback<0>().set("z80ctc", FUNC(z80ctc_device::trg2));
	ctc.zc_callback<2>().set("z80ctc", FUNC(z80ctc_device::trg3));

	z80pio_device& pio(Z80PIO(config, "z80pio", XTAL(15'000'000) / 4));
	pio.in_pb_callback().set(FUNC(a5105_state::pio_pb_r));
	pio.out_int_callback().set_inputline(m_maincpu, 0);

	CASSETTE(config, m_cass);

	UPD765A(config, m_fdc, 8'000'000, true, true);
	FLOPPY_CONNECTOR(config, "upd765a:0", a5105_floppies, "525qd", a5105_state::floppy_formats);
	FLOPPY_CONNECTOR(config, "upd765a:1", a5105_floppies, "525qd", a5105_state::floppy_formats);
	FLOPPY_CONNECTOR(config, "upd765a:2", a5105_floppies, "525qd", a5105_state::floppy_formats);
	FLOPPY_CONNECTOR(config, "upd765a:3", a5105_floppies, "525qd", a5105_state::floppy_formats);

	/* internal ram */
	RAM(config, RAM_TAG).set_default_size("64K");
}
Esempio n. 14
0
// Note: we set the precision for Newton to the minimum of the precisions.
DefaultSolver::DefaultSolver(System& sys, const Vector& eps_x_min, double eps_x_max, double random_seed) : Solver(sys, rec(ctc(sys,eps_x_min.min())),
		get_square_eq_sys(sys)!=NULL?
				rec(new SmearSumRelative(*get_square_eq_sys(sys), eps_x_min)) :
				rec(new RoundRobin(eps_x_min)),
		rec(new CellStack()), eps_x_min, Vector(sys.nb_var,eps_x_max)),
		sys(sys) {

	RNG::srand(random_seed);

	data = *memory(); // keep track of my data

	*memory() = NULL; // reset (for next DefaultSolver to be created)

	square_eq_system = -1;
}
Esempio n. 15
0
void pve500_state::pve500(machine_config &config)
{
	/* Main CPU */
	TMPZ84C015(config, m_maincpu, 12_MHz_XTAL / 2); // TMPZ84C015BF-6
	m_maincpu->set_addrmap(AS_PROGRAM, &pve500_state::maincpu_prg);
	m_maincpu->set_addrmap(AS_IO, &pve500_state::maincpu_io);
	m_maincpu->set_daisy_config(maincpu_daisy_chain);
	m_maincpu->out_dtra_callback().set(FUNC(pve500_state::GPI_w));
	m_maincpu->out_dtrb_callback().set(m_buzzer, FUNC(beep_device::set_state)).invert();
	m_maincpu->out_txda_callback().set("recorder", FUNC(rs232_port_device::write_txd));
	m_maincpu->out_txdb_callback().set("player1", FUNC(rs232_port_device::write_txd));

	z80ctc_device& ctc(Z80CTC(config, "external_ctc", 12_MHz_XTAL / 2));
	ctc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);

	z80sio0_device& sio(Z80SIO0(config, "external_sio", 12_MHz_XTAL / 2));
	sio.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
	sio.out_txda_callback().set("player2", FUNC(rs232_port_device::write_txd));
	sio.out_txdb_callback().set("edl_inout", FUNC(rs232_port_device::write_txd));

	/* Secondary CPU */
	TMPZ84C015(config, m_subcpu, 12_MHz_XTAL / 2); /* TMPZ84C015BF-6 */
	m_subcpu->set_addrmap(AS_PROGRAM, &pve500_state::subcpu_prg);
	m_subcpu->set_addrmap(AS_IO, &pve500_state::subcpu_io);
	m_subcpu->out_dtra_callback().set(FUNC(pve500_state::cxdio_reset_w));
	m_subcpu->out_dtrb_callback().set(FUNC(pve500_state::external_monitor_w));
	m_subcpu->out_txda_callback().set("switcher", FUNC(rs232_port_device::write_txd));
	m_subcpu->out_txdb_callback().set("serial_mixer", FUNC(rs232_port_device::write_txd));

	// PIO callbacks
	m_subcpu->in_pa_callback().set(FUNC(pve500_state::eeprom_r));
	m_subcpu->out_pa_callback().set(FUNC(pve500_state::eeprom_w));

	// ICG3: I/O Expander
	CXD1095(config, m_cxdio, 0);
	m_cxdio->out_porta_cb().set(FUNC(pve500_state::io_sc_w));
	m_cxdio->out_portb_cb().set(FUNC(pve500_state::io_le_w));
	m_cxdio->in_portc_cb().set(FUNC(pve500_state::io_ky_r));
	m_cxdio->out_portd_cb().set(FUNC(pve500_state::io_ld_w));
	m_cxdio->out_porte_cb().set(FUNC(pve500_state::io_sel_w));

	/* Search Dial MCUs */
	MB88201(config, "dial_mcu_left", 4_MHz_XTAL).set_disable(); /* PLAYER DIAL MCU */
	MB88201(config, "dial_mcu_right", 4_MHz_XTAL).set_disable(); /* RECORDER DIAL MCU */

	/* Serial EEPROM (128 bytes, 8-bit data organization) */
	/* The EEPROM stores the setup data */
	EEPROM_MSM16911_8BIT(config, "eeprom");

	/* FIX-ME: These are actually RS422 ports (except EDL IN/OUT which is indeed an RS232 port)*/
	rs232_port_device &recorder(RS232_PORT(config, "recorder", default_rs232_devices, nullptr));
	recorder.rxd_handler().set(m_maincpu, FUNC(tmpz84c015_device::rxa_w));

	rs232_port_device &player1(RS232_PORT(config, "player1", default_rs232_devices, nullptr));
	player1.rxd_handler().set(m_maincpu, FUNC(tmpz84c015_device::rxb_w));

	rs232_port_device &player2(RS232_PORT(config, "player2", default_rs232_devices, nullptr));
	player2.rxd_handler().set("external_sio", FUNC(z80dart_device::rxa_w));

	rs232_port_device &edl_inout(RS232_PORT(config, "edl_inout", default_rs232_devices, nullptr));
	edl_inout.rxd_handler().set("external_sio", FUNC(z80dart_device::rxb_w));

	rs232_port_device &switcher(RS232_PORT(config, "switcher", default_rs232_devices, nullptr));
	switcher.rxd_handler().set(m_subcpu, FUNC(tmpz84c015_device::rxa_w));

	rs232_port_device &serial_mixer(RS232_PORT(config, "serial_mixer", default_rs232_devices, nullptr));
	serial_mixer.rxd_handler().set(m_subcpu, FUNC(tmpz84c015_device::rxb_w));

	clock_device &clk1(CLOCK(config, "clk1", 12_MHz_XTAL / 20));
	clk1.signal_handler().set(m_maincpu, FUNC(tmpz84c015_device::rxca_w));
	clk1.signal_handler().append(m_maincpu, FUNC(tmpz84c015_device::txca_w));
	clk1.signal_handler().append(m_maincpu, FUNC(tmpz84c015_device::rxcb_w));
	clk1.signal_handler().append(m_maincpu, FUNC(tmpz84c015_device::txcb_w));
	clk1.signal_handler().append(m_subcpu, FUNC(tmpz84c015_device::rxca_w));
	clk1.signal_handler().append(m_subcpu, FUNC(tmpz84c015_device::txca_w));
	clk1.signal_handler().append(m_subcpu, FUNC(tmpz84c015_device::rxcb_w));
	clk1.signal_handler().append(m_subcpu, FUNC(tmpz84c015_device::txcb_w));

	/* ICF5: 2kbytes of RAM shared between the two CPUs (dual-port RAM)*/
	mb8421_device &mb8421(MB8421(config, "mb8421"));
	mb8421.intl_callback().set(FUNC(pve500_state::mb8421_intl));
	mb8421.intr_callback().set(FUNC(pve500_state::mb8421_intr));

	/* video hardware */
	config.set_default_layout(layout_pve500);

	/* audio hardware */
	SPEAKER(config, "mono").front_center();
	BEEP(config, "buzzer", 12_MHz_XTAL / 3200).add_route(ALL_OUTPUTS, "mono", 0.05); // 3.75 kHz CLK2 coming out of IC D4 (frequency divider circuitry)
}