示例#1
0
 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;
 }
示例#2
0
        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);
        }