//------------------------------------------------- // daisy_get_irq_device - return the device // in the chain that requested the interrupt //------------------------------------------------- public device_z80daisy_interface daisy_get_irq_device() { // loop over all devices; dev[0] is the highest priority for (device_z80daisy_interface intf = m_chain; intf != null; intf = intf.m_daisy_next) { // if this device is asserting the INT line, that's the one we want int state = intf.z80daisy_irq_state(); if ((state & Z80_DAISY_INT) != 0) { return(intf); } } if (VERBOSE && daisy_chain_present()) { device().logerror("Interrupt from outside Z80 daisy chain\n"); } return(null); }
device_z80daisy_interface m_chain; // head of the daisy chain // construction/destruction //------------------------------------------------- // z80_daisy_chain_interface - constructor //------------------------------------------------- public z80_daisy_chain_interface(machine_config mconfig, device_t device) : base(device, "z80daisychain") { m_daisy_config = null; m_chain = null; }
public device_z80daisy_interface m_daisy_next; // next device in the chain // construction/destruction //------------------------------------------------- // device_z80daisy_interface - constructor //------------------------------------------------- device_z80daisy_interface(machine_config mconfig, device_t device) : base(device, "z80daisy") { m_daisy_next = null; }