Esempio n. 1
0
void gaelco_serial_device::device_start()
{
	/* validate arguments */
	assert(strlen(tag()) < 20);

	m_irq_handler.resolve_safe();
	m_sync_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(gaelco_serial_device::link_cb), this));

	/* register for save states */
	//save_item(NAME(earom->offset));
	//save_item(NAME(earom->data));

#ifdef SHARED_MEM_DRIVER
	m_sync_timer->adjust(attotime::zero,0,attotime::from_hz(SYNC_FREQ));
#endif

	m_os_shmem = osd_sharedmem_alloc(PATH_NAME, 0, sizeof(shmem_t));
	if (m_os_shmem == NULL)
	{
		m_os_shmem = osd_sharedmem_alloc(PATH_NAME, 1, sizeof(shmem_t));
		m_shmem = (shmem_t *) osd_sharedmem_ptr(m_os_shmem);

		m_in_ptr = &m_shmem->buf[0];
		m_out_ptr = &m_shmem->buf[1];
	}
	else
	{
		m_shmem = (shmem_t *) osd_sharedmem_ptr(m_os_shmem);
		m_in_ptr = &m_shmem->buf[1];
		m_out_ptr = &m_shmem->buf[0];
	}
}
Esempio n. 2
0
static DEVICE_START( gaelco_serial )
{
	gaelco_serial_state *state = get_token(device);
	const gaelco_serial_interface *intf = get_interface(device);

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

	/* clear out CIA structure, and copy the interface */
	memset(state, 0, sizeof(*state));
	state->m_device = device;

	state->m_irq_func.resolve(intf->irq_func, *device);
	state->m_sync_timer = device->machine().scheduler().timer_alloc(FUNC(link_cb), state);

	/* register for save states */
	//device->save_item(NAME(earom->offset));
	//device->save_item(NAME(earom->data));

#ifdef SHARED_MEM_DRIVER
	state->m_sync_timer->adjust(attotime::zero,0,attotime::from_hz(SYNC_FREQ));
#endif

	state->m_os_shmem = osd_sharedmem_alloc(PATH_NAME, 0, sizeof(shmem_t));
	if (state->m_os_shmem == NULL)
	{
		state->m_os_shmem = osd_sharedmem_alloc(PATH_NAME, 1, sizeof(shmem_t));
		state->m_shmem = (shmem_t *) osd_sharedmem_ptr(state->m_os_shmem);

		state->m_in_ptr = &state->m_shmem->buf[0];
		state->m_out_ptr = &state->m_shmem->buf[1];
	}
	else
	{
		state->m_shmem = (shmem_t *) osd_sharedmem_ptr(state->m_os_shmem);
		state->m_in_ptr = &state->m_shmem->buf[1];
		state->m_out_ptr = &state->m_shmem->buf[0];
	}
}