1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| disable(); /* inhibe les it */
/* installation de l'it timer necessaire au cadencement a 1ms */
/* du pilotage de la carte d'entree sortie */
oldvect70h=getvect(INT_TIMER); /* recp de l'ancien vect d'it timer */
outportb(0x70,0x0A); /* acces registre A */
tampon=inportb(0x71); /* lecture reg A */
tampon=tampon|0x26; /* positionne le diviseur a 1ms */
outportb(0x70,0x0A); /* acces reg A */
outportb(0x71,tampon); /* ecrit la bonne valeur */
outportb(0x70,0x0B); /* acces regitre d'etat B du MC146818 */
tampon=inportb(0x71); /* lecture du registre B */
tampon=tampon|0x40; /* preparation du registre */
outportb(0x70,0x0B); /* acces regitre d'etat B du MC146818 */
outportb(0x71,tampon); /* demande d'it periodique */
outportb(0x70,0x0C); /* acces registre d'etat C */
tampon=inportb(0x71); /* lecture reg C */
tampon=tampon&0xBF; /* valide prise en compte it */
outportb(0x70,0x0C); /* acces registre d'etat C */
outportb(0x71,tampon);
setvect(INT_TIMER_BIOS,oldvect70h); /* deplacement de l'ancien vecteur */
DISABLEIR(0x08); /* inhibe irq timer */
setvect(INT_TIMER,Int_Timer); /* positionnement du nouveau vecteur d'it timer */
ENABLEIR(0x08); /* autorise it timer */
outportb(0xA0,0x20); /* acquitement de l'it sur le 8259A esclave */
outportb(0x20,0x20); /* acquitement de l'it sur le 8259A maitre */
enable(); /* autorise les it */ |
Partager