public pia6821_interface( Mame.mem_read_handler in_a_func, Mame.mem_read_handler in_b_func, Mame.mem_read_handler in_ca1_func, Mame.mem_read_handler in_cb1_func, Mame.mem_read_handler in_ca2_func, Mame.mem_read_handler in_cb2_func, Mame.mem_write_handler out_a_func,Mame.mem_write_handler out_b_func, Mame.mem_write_handler out_ca2_func, Mame.mem_write_handler out_cb2_func, irqcallfunc irq_a_func, irqcallfunc irq_b_func) { this.in_a_func = in_a_func; this.in_b_func = in_b_func; this.in_ca1_func = in_ca1_func; this.in_cb1_func = in_cb1_func; this.in_ca2_func = in_ca2_func; this.in_cb2_func = in_cb2_func; this.irq_a_func = irq_a_func; this.irq_b_func = irq_b_func; this.out_a_func = out_a_func; this.out_b_func = out_b_func; this.out_ca2_func = out_ca2_func; this.out_cb2_func = out_cb2_func; }
static void update_shared_irq_handler(irqcallfunc irq_func) { int i; /* search all PIAs for this same IRQ function */ for (i = 0; i < MAX_PIA; i++) if (pia[i].intf != null) { /* check IRQ A */ if (pia[i].intf.irq_a_func == irq_func && pia[i].irq_a_state != 0) { irq_func(1); return; } /* check IRQ B */ if (pia[i].intf.irq_b_func == irq_func && pia[i].irq_b_state != 0) { irq_func(1); return; } } /* if we found nothing, the state is off */ irq_func(0); }