Ejemplo n.º 1
0
// doirq(): 硬件中断处理 C 子程序
// 本函数供 irq_s.asm 的汇编服务程序调用
void doirq(IDT_REGS regs)
{
	irq_disableirq(regs.idx);
	ackirq(regs.idx);
	irq_disable();
	if (regs.idx == 0x80)
	{
		sc_null();
	}
	else
	{
		irqfun[regs.idx]();
	}
	irq_enable();
	irq_enableirq(regs.idx);
	return;
}
Ejemplo n.º 2
0
void __interrupt __far _loadds inthandler()
{
        int i ;
        ackirq() ;
        nbsb++ ;

        i = (int)audio_buffer1 ;         // swap buffer
        audio_buffer1 = audio_buffer2 ;
        audio_buffer2 = (unsigned char *)i ;

        dma_play() ;

        common_sound_handler() ;


        if (audio.irq>=8)
                outp(0xa0,0x20) ;
        outp(0x20,0x20) ;
}