inline void econet_device::set_signal(device_t *device, int signal, int state) { bool changed = false; if (device == this) { if (m_line[signal] != state) { if (LOG) logerror("Econet: '%s' %s %u\n", tag(), SIGNAL_NAME[signal], state); m_line[signal] = state; changed = true; } } else { daisy_entry *entry = m_device_list.first(); while (entry) { if (!strcmp(entry->m_device->tag(), device->tag())) { if (entry->m_line[signal] != state) { if (LOG) logerror("Econet: '%s' %s %u\n", device->tag(), SIGNAL_NAME[signal], state); entry->m_line[signal] = state; changed = true; } } entry = entry->next(); } } if (changed) { switch (signal) { case CLK: m_write_clk(state); break; case DATA: m_write_data(state); break; } daisy_entry *entry = m_device_list.first(); while (entry) { switch (signal) { case CLK: entry->m_interface->econet_clk(state); break; case DATA: entry->m_interface->econet_data(state); break; } entry = entry->next(); } if (LOG) logerror("Econet: CLK %u DATA %u\n", get_signal(CLK), get_signal(DATA)); } }
void cbm_iec_device::set_signal(device_t *device, int signal, int state) { bool changed = false; if (device == this) { if (m_line[signal] != state) { if (LOG) logerror("CBM IEC: '%s' %s %u\n", tag(), SIGNAL_NAME[signal], state); m_line[signal] = state; changed = true; } } else { daisy_entry *entry = m_device_list.first(); while (entry) { if (!strcmp(entry->m_device->tag(), device->tag())) { if (entry->m_line[signal] != state) { if (LOG) logerror("CBM IEC: '%s' %s %u\n", device->tag(), SIGNAL_NAME[signal], state); entry->m_line[signal] = state; changed = true; } } entry = entry->next(); } } if (changed) { switch (signal) { case SRQ: m_write_srq(state); break; case ATN: m_write_atn(state); break; case CLK: m_write_clk(state); break; case DATA: m_write_data(state); break; case RESET: m_write_reset(state); break; } daisy_entry *entry = m_device_list.first(); while (entry) { switch (signal) { case SRQ: entry->m_interface->cbm_iec_srq(state); break; case ATN: entry->m_interface->cbm_iec_atn(state); break; case CLK: entry->m_interface->cbm_iec_clk(state); break; case DATA: entry->m_interface->cbm_iec_data(state); break; case RESET: entry->m_interface->cbm_iec_reset(state); break; } entry = entry->next(); } if (LOG) logerror("CBM IEC: SRQ %u ATN %u CLK %u DATA %u RESET %u\n", get_signal(SRQ), get_signal(ATN), get_signal(CLK), get_signal(DATA), get_signal(RESET)); } }