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; } }
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); }
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); }
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); }
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); }
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); }
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); }
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; } }