00001 /******************* 00002 *Project: 80X86 32BIT MULTI TASKING OPERATING SYSTEM 00003 *Description:driver for 8259 programable interrupt controller 00004 * 00005 *File:rtc.c 00006 *Author: Book Chen 00007 *Date: 2010.01.01 00008 ******************** 00009 */ 00010 #include "includes.h" 00011 00012 void PicInit(void){ 00013 OutByte(PIC_MASTER,0x11); //set icw1...edge trigger,2*8259,use icw4 00014 OutByte(PIC_SLAVE,0x11); //set icw1...edge trigger,2*8259,use icw4 00015 OutByte(PIC_MASTER2,INT_VECTOR_IRQ0); //set irq0~7 at 0x20~0x27 00016 OutByte(PIC_SLAVE2,INT_VECTOR_IRQ8); //set irq8~15 at 0x28~0x2f 00017 OutByte(PIC_MASTER2,0x4); //tell master that interrupt of slave 8259 is at master's irq2 00018 OutByte(PIC_SLAVE2,0x2); //tell slave 8259 that interrupt of slave 8259 is at master irq2 00019 OutByte(PIC_MASTER2,0x03); //normal eoi,x86 use 00020 OutByte(PIC_SLAVE2,0x03); //normal eoi,x86 use 00021 OutByte(PIC_SLAVE2,0xff); //0xff...disable all interrupts in slave ipc 00022 OutByte(PIC_MASTER2,0xfb); //0xff...disable all interrupts in slave ipc,except irq2 for second 8259 00023 }
1.5.9