{
irqmask=inportb(A1_8259+1);
0xfb); /* IRQ2 */
0xff ^ (1<<(wIrq-8)));
tportb(wBase+5,1); /* enable interrupt (P2C0) */
d interrupt irq_service()
/* now P2C0 change to low */
rq>=8) outportb(A2_8259,0x20);
outportb(A1_8259+1,irqmask &
irqmask=inportb(A2_8259+1);
outportb(A2_8259+1,irqmask &
setvect(wIrq-8+0x70,irq_service);
}
ou
now_int_state=0; /* now ini_signal is low */
outportb(wBase+0x2a,1); /* select the non-inverte */
enable();
}
ivo
{
(now_int_state==1) if
{ /* INT_CHAN_0 = !P2C0 */
COUNT_L++; /* find a low pulse (P2C0) */
if ((inportb(wBase+7)&1)==0) /* P2C0 still fixed in low */
{ /* need to generate a high pulse */
outportb(wBase+0x2a,1); /* INV0 select noninverted input */
now_int_state=0; /* now P2C0=low */
}
now_int_state=1; /* now P2C0=High */ else
}
/* now P2C0 change to high */ else
{ /* INT_CHAN_0 = P2C0 */
COUNT_H++; /* find a high pulse (P2C0) */
if ((inportb(wBase+7)&1)==1) /* P2C0 still fixed in high */
{ /* need to generate a high pulse */
outportb(wBase+0x2a,0); /* INV0 select inverted input */
now_int_state=1; /* now P2C0=high */
}
now_int_state=0; /* now P2C0=low */ else
}
(wIif
outportb(A1_8259,0x20);
}
OME-PIO-D96 User Manual (Ver.1.1, Mar/2003) ---- 42