Beispiel #1
0
static DEVICE_START(duart68681)
{
	duart68681_state *duart68681 = get_safe_token(device);

	/* validate arguments */
	assert(device != NULL);

	duart68681->duart_config = (const duart68681_config *)device->baseconfig().static_config();
	duart68681->device = device;

	duart68681->channel[0].tx_timer = timer_alloc(device->machine, tx_timer_callback, (void*)device);
	duart68681->channel[1].tx_timer = timer_alloc(device->machine, tx_timer_callback, (void*)device);
	duart68681->duart_timer = timer_alloc(device->machine, duart_timer_callback, (void*)device);

	state_save_register_device_item(device, 0, duart68681->ACR);
	state_save_register_device_item(device, 0, duart68681->IMR);
	state_save_register_device_item(device, 0, duart68681->ISR);
	state_save_register_device_item(device, 0, duart68681->IVR);
	state_save_register_device_item(device, 0, duart68681->OPCR);
	state_save_register_device_item(device, 0, duart68681->CTR);
	state_save_register_device_item(device, 0, duart68681->IP_last_state);

	state_save_register_device_item(device, 0, duart68681->channel[0].CR);
	state_save_register_device_item(device, 0, duart68681->channel[0].CSR);
	state_save_register_device_item(device, 0, duart68681->channel[0].MR1);
	state_save_register_device_item(device, 0, duart68681->channel[0].MR2);
	state_save_register_device_item(device, 0, duart68681->channel[0].MR_ptr);
	state_save_register_device_item(device, 0, duart68681->channel[0].SR);
	state_save_register_device_item(device, 0, duart68681->channel[0].baud_rate);
	state_save_register_device_item(device, 0, duart68681->channel[0].rx_enabled);
	state_save_register_device_item_array(device, 0, duart68681->channel[0].rx_fifo);
	state_save_register_device_item(device, 0, duart68681->channel[0].rx_fifo_read_ptr);
	state_save_register_device_item(device, 0, duart68681->channel[0].rx_fifo_write_ptr);
	state_save_register_device_item(device, 0, duart68681->channel[0].rx_fifo_num);
	state_save_register_device_item(device, 0, duart68681->channel[0].tx_enabled);
	state_save_register_device_item(device, 0, duart68681->channel[0].tx_data);
	state_save_register_device_item(device, 0, duart68681->channel[0].tx_ready);

	state_save_register_device_item(device, 0, duart68681->channel[1].CR);
	state_save_register_device_item(device, 0, duart68681->channel[1].CSR);
	state_save_register_device_item(device, 0, duart68681->channel[1].MR1);
	state_save_register_device_item(device, 0, duart68681->channel[1].MR2);
	state_save_register_device_item(device, 0, duart68681->channel[1].MR_ptr);
	state_save_register_device_item(device, 0, duart68681->channel[1].SR);
	state_save_register_device_item(device, 0, duart68681->channel[1].baud_rate);
	state_save_register_device_item(device, 0, duart68681->channel[1].rx_enabled);
	state_save_register_device_item_array(device, 0, duart68681->channel[1].rx_fifo);
	state_save_register_device_item(device, 0, duart68681->channel[1].rx_fifo_read_ptr);
	state_save_register_device_item(device, 0, duart68681->channel[1].rx_fifo_write_ptr);
	state_save_register_device_item(device, 0, duart68681->channel[1].rx_fifo_num);
	state_save_register_device_item(device, 0, duart68681->channel[1].tx_enabled);
	state_save_register_device_item(device, 0, duart68681->channel[1].tx_data);
	state_save_register_device_item(device, 0, duart68681->channel[1].tx_ready);
}
Beispiel #2
0
static CPU_INIT( arm )
{
	ARM_REGS *cpustate = get_safe_token(device);

	cpustate->irq_callback = irqcallback;
	cpustate->device = device;
	cpustate->program = device->space(AS_PROGRAM);

	state_save_register_device_item_array(device, 0, cpustate->sArmRegister);
	state_save_register_device_item_array(device, 0, cpustate->coproRegister);
	state_save_register_device_item(device, 0, cpustate->pendingIrq);
	state_save_register_device_item(device, 0, cpustate->pendingFiq);
}
Beispiel #3
0
static CPU_INIT( arm )
{
	ARM_REGS *cpustate = get_safe_token(device);

	cpustate->irq_callback = irqcallback;
	cpustate->device = device;
	cpustate->program = memory_find_address_space(device, ADDRESS_SPACE_PROGRAM);

	state_save_register_device_item_array(device, 0, cpustate->sArmRegister);
	state_save_register_device_item_array(device, 0, cpustate->coproRegister);
	state_save_register_device_item(device, 0, cpustate->pendingIrq);
	state_save_register_device_item(device, 0, cpustate->pendingFiq);
}
Beispiel #4
0
static CPU_INIT( i860 )
{
	i860_state_t *cpustate = get_safe_token(device);
	cpustate->device = device;
	cpustate->program = device->space(AS_PROGRAM);
	reset_i860(cpustate);
	i860_set_pin(device, DEC_PIN_BUS_HOLD, 0);
	i860_set_pin(device, DEC_PIN_RESET, 0);
	cpustate->single_stepping = 0;

	state_save_register_device_item_array(device, 0, cpustate->iregs);
	state_save_register_device_item_array(device, 0, cpustate->cregs);
	state_save_register_device_item_array(device, 0, cpustate->frg);
	state_save_register_device_item(device, 0, cpustate->pc);
}
Beispiel #5
0
static DEVICE_START( iremga20 )
{
	ga20_state *chip = get_safe_token(device);
	int i;

	/* Initialize our chip structure */
	chip->rom = *device->region;
	chip->rom_size = device->region->bytes();

	iremga20_reset(chip);

	for ( i = 0; i < 0x40; i++ )
		chip->regs[i] = 0;

	chip->stream = stream_create( device, 0, 2, device->clock/4, chip, IremGA20_update );

	state_save_register_device_item_array(device, 0, chip->regs);
	for (i = 0; i < 4; i++)
	{
		state_save_register_device_item(device, i, chip->channel[i].rate);
		state_save_register_device_item(device, i, chip->channel[i].size);
		state_save_register_device_item(device, i, chip->channel[i].start);
		state_save_register_device_item(device, i, chip->channel[i].pos);
		state_save_register_device_item(device, i, chip->channel[i].end);
		state_save_register_device_item(device, i, chip->channel[i].volume);
		state_save_register_device_item(device, i, chip->channel[i].pan);
		state_save_register_device_item(device, i, chip->channel[i].effect);
		state_save_register_device_item(device, i, chip->channel[i].play);
	}
}
Beispiel #6
0
void z80dart_device::device_start()
{
	// resolve callbacks
	devcb_resolve_write_line(&m_out_int_func, &m_config.m_out_int_func, this);

	m_channel[Z80DART_CH_A].start(this, Z80DART_CH_A, m_config.m_in_rxda_func, m_config.m_out_txda_func, m_config.m_out_dtra_func, m_config.m_out_rtsa_func, m_config.m_out_wrdya_func);
	m_channel[Z80DART_CH_B].start(this, Z80DART_CH_B, m_config.m_in_rxdb_func, m_config.m_out_txdb_func, m_config.m_out_dtrb_func, m_config.m_out_rtsb_func, m_config.m_out_wrdyb_func);

	if (m_config.m_rx_clock_a != 0)
	{
		// allocate channel A receive timer
		m_rxca_timer = timer_alloc(&m_machine, dart_channel::static_rxca_tick, (void *)&m_channel[Z80DART_CH_A]);
		timer_adjust_periodic(m_rxca_timer, attotime_zero, 0, ATTOTIME_IN_HZ(m_config.m_rx_clock_a));
	}

	if (m_config.m_tx_clock_a != 0)
	{
		// allocate channel A transmit timer
		m_txca_timer = timer_alloc(&m_machine, dart_channel::static_txca_tick, (void *)&m_channel[Z80DART_CH_A]);
		timer_adjust_periodic(m_txca_timer, attotime_zero, 0, ATTOTIME_IN_HZ(m_config.m_tx_clock_a));
	}

	if (m_config.m_rx_tx_clock_b != 0)
	{
		// allocate channel B receive/transmit timer
		m_rxtxcb_timer = timer_alloc(&m_machine, dart_channel::static_rxtxcb_tick, (void *)&m_channel[Z80DART_CH_B]);
		timer_adjust_periodic(m_rxtxcb_timer, attotime_zero, 0, ATTOTIME_IN_HZ(m_config.m_rx_tx_clock_b));
	}

	state_save_register_device_item_array(this, 0, m_int_state);
}
Beispiel #7
0
static DEVICE_START( nmk112 )
{
	nmk112_state *nmk112 = get_safe_token(device);
	const nmk112_interface *intf = get_interface(device);

	nmk112->rom0 = memory_region(device->machine, intf->rgn0);
	nmk112->size0 = memory_region_length(device->machine, intf->rgn0) - 0x40000;
	nmk112->rom1 = memory_region(device->machine, intf->rgn1);
	nmk112->size1 = memory_region_length(device->machine, intf->rgn1) - 0x40000;

	nmk112->page_mask = ~intf->disable_page_mask;

	state_save_register_device_item_array(device, 0, nmk112->current_bank);
	state_save_register_device_item_array(device, 0, nmk112->last_bank);
	state_save_register_postload(device->machine, nmk112_postload_bankswitch, nmk112);
}
Beispiel #8
0
static CPU_INIT( m6809 )
{
	/* default configuration */
	static const m6809_config default_config =
	{
		0
	};

	const m6809_config *configdata = device->static_config ? (const m6809_config *)device->static_config : &default_config;
	m68_state_t *m68_state = get_safe_token(device);

	m68_state->config = configdata;
	m68_state->irq_callback = irqcallback;
	m68_state->device = device;

	m68_state->program = memory_find_address_space(device, ADDRESS_SPACE_PROGRAM);

	/* setup regtable */

	state_save_register_device_item(device, 0, PC);
	state_save_register_device_item(device, 0, PPC);
	state_save_register_device_item(device, 0, D);
	state_save_register_device_item(device, 0, DP);
	state_save_register_device_item(device, 0, U);
	state_save_register_device_item(device, 0, S);
	state_save_register_device_item(device, 0, X);
	state_save_register_device_item(device, 0, Y);
	state_save_register_device_item(device, 0, CC);
	state_save_register_device_item_array(device, 0, m68_state->irq_state);
	state_save_register_device_item(device, 0, m68_state->int_state);
	state_save_register_device_item(device, 0, m68_state->nmi_state);

}
Beispiel #9
0
static DEVICE_START( ic_315_5250 )
{
	ic_315_5250_state *ic_315_5250 = _315_5250_get_safe_token(device);
	const ic_315_5250_interface *intf = _315_5250_get_interface(device);

	ic_315_5250->sound_w = intf->sound_write_callback;
	ic_315_5250->timer_ack = intf->timer_ack_callback;

	state_save_register_device_item(device, 0, ic_315_5250->counter);
	state_save_register_device_item(device, 0, ic_315_5250->bit);
	state_save_register_device_item_array(device, 0, ic_315_5250->regs);
}
Beispiel #10
0
static DEVICE_START( tc0510nio )
{
	tc0510nio_state *tc0510nio =  tc0510nio_get_safe_token(device);
	const tc0510nio_interface *intf = tc0510nio_get_interface(device);

	devcb_resolve_read8(&tc0510nio->read_0, &intf->read_0, device);
	devcb_resolve_read8(&tc0510nio->read_1, &intf->read_1, device);
	devcb_resolve_read8(&tc0510nio->read_2, &intf->read_2, device);
	devcb_resolve_read8(&tc0510nio->read_3, &intf->read_3, device);
	devcb_resolve_read8(&tc0510nio->read_7, &intf->read_7, device);

	state_save_register_device_item_array(device, 0, tc0510nio->regs);
}
Beispiel #11
0
static DEVICE_START( mathbox )
{
	mathbox_state *mb = get_safe_token(device);

	/* validate arguments */
	assert(device != NULL);

	/* set static values */
	mb->device = device;

	/* register for save states */
	state_save_register_device_item(device, 0, mb->result);
	state_save_register_device_item_array(device, 0, mb->reg);
}
Beispiel #12
0
static DEVICE_START( vrender0 )
{
	const vr0_interface *intf;
	vr0_state *VR0 = get_safe_token(device);

	intf = (const vr0_interface *)device->baseconfig().static_config();

	memcpy(&(VR0->Intf),intf,sizeof(vr0_interface));
	memset(VR0->SOUNDREGS,0,sizeof(VR0->SOUNDREGS));

	VR0->stream = stream_create(device, 0, 2, 44100, VR0, VR0_Update);

	state_save_register_device_item_array(device, 0, VR0->SOUNDREGS);
}
Beispiel #13
0
static DEVICE_START( tc0220ioc )
{
	tc0220ioc_state *tc0220ioc =  tc0220ioc_get_safe_token(device);
	const tc0220ioc_interface *intf = tc0220ioc_get_interface(device);

	devcb_resolve_read8(&tc0220ioc->read_0, &intf->read_0, device);
	devcb_resolve_read8(&tc0220ioc->read_1, &intf->read_1, device);
	devcb_resolve_read8(&tc0220ioc->read_2, &intf->read_2, device);
	devcb_resolve_read8(&tc0220ioc->read_3, &intf->read_3, device);
	devcb_resolve_read8(&tc0220ioc->read_7, &intf->read_7, device);

	state_save_register_device_item_array(device, 0, tc0220ioc->regs);
	state_save_register_device_item(device, 0, tc0220ioc->port);
}
Beispiel #14
0
void z80dart_device::dart_channel::start(z80dart_device *device, int index, const devcb_read_line &in_rxd, const devcb_write_line &out_txd, const devcb_write_line &out_dtr, const devcb_write_line &out_rts, const devcb_write_line &out_wrdy)
{
	m_index = index;
	m_device = device;

	devcb_resolve_read_line(&m_in_rxd_func, &in_rxd, m_device);
	devcb_resolve_write_line(&m_out_txd_func, &out_txd, m_device);
	devcb_resolve_write_line(&m_out_dtr_func, &out_dtr, m_device);
	devcb_resolve_write_line(&m_out_rts_func, &out_rts, m_device);
	devcb_resolve_write_line(&m_out_wrdy_func, &out_wrdy, m_device);

	state_save_register_device_item_array(m_device, m_index, m_rr);
	state_save_register_device_item_array(m_device, m_index, m_wr);
	state_save_register_device_item_array(m_device, m_index, m_rx_data_fifo);
	state_save_register_device_item_array(m_device, m_index, m_rx_error_fifo);
	state_save_register_device_item(m_device, m_index, m_rx_shift);
	state_save_register_device_item(m_device, m_index, m_rx_error);
	state_save_register_device_item(m_device, m_index, m_rx_fifo);
	state_save_register_device_item(m_device, m_index, m_rx_clock);
	state_save_register_device_item(m_device, m_index, m_rx_state);
	state_save_register_device_item(m_device, m_index, m_rx_bits);
	state_save_register_device_item(m_device, m_index, m_rx_first);
	state_save_register_device_item(m_device, m_index, m_rx_parity);
	state_save_register_device_item(m_device, m_index, m_rx_break);
	state_save_register_device_item(m_device, m_index, m_rx_rr0_latch);
	state_save_register_device_item(m_device, m_index, m_ri);
	state_save_register_device_item(m_device, m_index, m_cts);
	state_save_register_device_item(m_device, m_index, m_dcd);
	state_save_register_device_item(m_device, m_index, m_tx_data);
	state_save_register_device_item(m_device, m_index, m_tx_shift);
	state_save_register_device_item(m_device, m_index, m_tx_clock);
	state_save_register_device_item(m_device, m_index, m_tx_state);
	state_save_register_device_item(m_device, m_index, m_tx_bits);
	state_save_register_device_item(m_device, m_index, m_tx_parity);
	state_save_register_device_item(m_device, m_index, m_dtr);
	state_save_register_device_item(m_device, m_index, m_rts);
}
Beispiel #15
0
/* device interface */
static DEVICE_START( tms9927 )
{
	tms9927_state *tms = get_safe_token(device);

	/* validate arguments */
	assert(device != NULL);
	assert(device->tag != NULL);

	tms->intf = (const tms9927_interface *)device->static_config;

	if (tms->intf != NULL)
	{
		assert(device->clock > 0);
		assert(tms->intf->hpixels_per_column > 0);

		/* copy the initial parameters */
		tms->clock = device->clock;
		tms->hpixels_per_column = tms->intf->hpixels_per_column;

		/* get the screen device */
		tms->screen = devtag_get_device(device->machine, tms->intf->screen_tag);
		assert(tms->screen != NULL);

		/* get the self-load PROM */
		if (tms->intf->selfload_region != NULL)
		{
			tms->selfload = memory_region(device->machine, tms->intf->selfload_region);
			assert(tms->selfload != NULL);
		}
	}

	/* register for state saving */
	state_save_register_postload(device->machine, tms9927_state_save_postload, tms);

	state_save_register_device_item(device, 0, tms->clock);
	state_save_register_device_item_array(device, 0, tms->reg);
	state_save_register_device_item(device, 0, tms->start_datarow);
	state_save_register_device_item(device, 0, tms->reset);
	state_save_register_device_item(device, 0, tms->hpixels_per_column);
}
Beispiel #16
0
static CPU_INIT( h6280 )
{
	h6280_Regs* cpustate = get_safe_token(device);

	state_save_register_device_item(device, 0, cpustate->ppc.w.l);
	state_save_register_device_item(device, 0, cpustate->pc.w.l);
	state_save_register_device_item(device, 0, cpustate->sp.w.l);
	state_save_register_device_item(device, 0, cpustate->zp.w.l);
	state_save_register_device_item(device, 0, cpustate->ea.w.l);
	state_save_register_device_item(device, 0, cpustate->a);
	state_save_register_device_item(device, 0, cpustate->x);
	state_save_register_device_item(device, 0, cpustate->y);
	state_save_register_device_item(device, 0, cpustate->p);
	state_save_register_device_item_array(device, 0, cpustate->mmr);
	state_save_register_device_item(device, 0, cpustate->irq_mask);
	state_save_register_device_item(device, 0, cpustate->timer_status);
	state_save_register_device_item(device, 0, cpustate->timer_ack);
	state_save_register_device_item(device, 0, cpustate->clocks_per_cycle);
	state_save_register_device_item(device, 0, cpustate->timer_value);
	state_save_register_device_item(device, 0, cpustate->timer_load);
	state_save_register_device_item(device, 0, cpustate->nmi_state);
	state_save_register_device_item(device, 0, cpustate->irq_state[0]);
	state_save_register_device_item(device, 0, cpustate->irq_state[1]);
	state_save_register_device_item(device, 0, cpustate->irq_state[2]);
	state_save_register_device_item(device, 0, cpustate->irq_pending);

	#if LAZY_FLAGS
	state_save_register_device_item(device, 0, cpustate->NZ);
	#endif
	state_save_register_device_item(device, 0, cpustate->io_buffer);

	cpustate->irq_callback = irqcallback;
	cpustate->device = device;
	cpustate->program = device->space(AS_PROGRAM);
	cpustate->direct = &cpustate->program->direct();
	cpustate->io = device->space(AS_IO);
}
Beispiel #17
0
static DEVICE_START( i8255a )
{
	i8255a_t *i8255a = get_safe_token(device);
	const i8255a_interface *intf = get_interface(device);

	/* resolve callbacks */
	devcb_resolve_read8(&i8255a->in_port_func[PORT_A], &intf->in_pa_func, device);
	devcb_resolve_read8(&i8255a->in_port_func[PORT_B], &intf->in_pb_func, device);
	devcb_resolve_read8(&i8255a->in_port_func[PORT_C], &intf->in_pc_func, device);
	devcb_resolve_write8(&i8255a->out_port_func[PORT_A], &intf->out_pa_func, device);
	devcb_resolve_write8(&i8255a->out_port_func[PORT_B], &intf->out_pb_func, device);
	devcb_resolve_write8(&i8255a->out_port_func[PORT_C], &intf->out_pc_func, device);

	/* register for state saving */
	state_save_register_device_item(device, 0, i8255a->control);
	state_save_register_device_item_array(device, 0, i8255a->output);
	state_save_register_device_item_array(device, 0, i8255a->input);
	state_save_register_device_item_array(device, 0, i8255a->ibf);
	state_save_register_device_item_array(device, 0, i8255a->obf);
	state_save_register_device_item_array(device, 0, i8255a->inte);
	state_save_register_device_item(device, 0, i8255a->inte1);
	state_save_register_device_item(device, 0, i8255a->inte2);
	state_save_register_device_item_array(device, 0, i8255a->intr);
}
Beispiel #18
0
static DEVICE_START( ic_315_5249 )
{
	ic_315_5249_state *ic_315_5249 = _315_5249_get_safe_token(device);

	state_save_register_device_item_array(device, 0, ic_315_5249->regs);
}