Beispiel #1
0
void z80_daisy_chain::init(device_t *cpudevice, const z80_daisy_config *daisy)
{
	// create a linked list of devices
	daisy_entry **tailptr = &m_daisy_list;
	for ( ; daisy->devname != NULL; daisy++)
	{
		// find the device
		device_t *target;
		if ((target = cpudevice->subdevice(daisy->devname)) == NULL)
		{
			if ((target = cpudevice->siblingdevice(daisy->devname)) == NULL)
				fatalerror("Unable to locate device '%s'\n", daisy->devname);
		}

		// make sure it has an interface
		device_z80daisy_interface *intf;
		if (!target->interface(intf))
			fatalerror("Device '%s' does not implement the z80daisy interface!\n", daisy->devname);

		// append to the end, or overwrite existing entry
		daisy_entry *next = (*tailptr) ? (*tailptr)->m_next : NULL;
		if (*tailptr != NULL)
			auto_free(cpudevice->machine(), *tailptr);
		*tailptr = auto_alloc(cpudevice->machine(), daisy_entry(target));
		(*tailptr)->m_next = next;
		tailptr = &(*tailptr)->m_next;
	}
}
Beispiel #2
0
void adamnet_device::add_device(device_t *target)
{
	daisy_entry *entry = auto_alloc(machine(), daisy_entry(target));

	entry->m_interface->m_bus = this;

	m_device_list.append(*entry);
}
Beispiel #3
0
void adamnet_device::add_device(device_t *target)
{
	auto entry = global_alloc(daisy_entry(target));

	entry->m_interface->m_bus = this;

	m_device_list.append(*entry);
}
Beispiel #4
0
void ieee488_device::add_device(ieee488_slot_device *slot, device_t *target)
{
	auto entry = global_alloc(daisy_entry(target));

	entry->m_interface->m_bus = this;
	entry->m_interface->m_slot = slot;

	m_device_list.append(*entry);
}
Beispiel #5
0
void econet_device::add_device(device_t *target, int address)
{
	auto entry = global_alloc(daisy_entry(target));

	entry->m_interface->m_econet = this;
	entry->m_interface->m_address = address;

	m_device_list.append(*entry);
}
Beispiel #6
0
void ieee488_device::add_device(device_t *target, int address)
{
	daisy_entry *entry = auto_alloc(machine(), daisy_entry(target));

	entry->m_interface->m_bus = this;
	entry->m_interface->m_address = address;

	m_device_list.append(*entry);
}
Beispiel #7
0
void cbm_iec_device::add_device(cbm_iec_slot_device *slot, device_t *target)
{
    daisy_entry *entry = auto_alloc(machine(), daisy_entry(target));

    entry->m_interface->m_slot = slot;
    entry->m_interface->m_bus = this;

    m_device_list.append(*entry);
}
Beispiel #8
0
void z80_daisy_chain::init(device_t *cpudevice, const z80_daisy_config *daisy)
{
	// create a linked list of devices
	daisy_entry **tailptr = &m_daisy_list;
	for ( ; daisy->devname != NULL; daisy++)
	{
		// find the device
		device_t *target = cpudevice->siblingdevice(daisy->devname);
		if (target == NULL)
			fatalerror("Unable to locate device '%s'", daisy->devname);

		// make sure it has an interface
		device_z80daisy_interface *intf;
		if (!target->get_interface(intf))
			fatalerror("Device '%s' does not implement the z80daisy interface!", daisy->devname);

		// append to the end
		*tailptr = auto_alloc(cpudevice->machine(), daisy_entry(target));
		tailptr = &(*tailptr)->m_next;
	}
}