- #include <stdio.h>
- #include <dos.h>
- #include <bios.h>
- /* --------------------------------------------------- */
- #define SCRL 16
- #define NUML 32
- #define CAPL 64
- #define INS 128
- typedef unsigned char BYTE;
- typedef unsigned int WORD;
- typedef union vel far *VP; /* pointeur sur la RAM-CLAVIER */
-
- struct velb
- { BYTE caractere,
- attribut;
- };
- struct velw
- { WORD contenu;
- };
- union vel
- { struct velb h;
- struct velw x;
- };
- /* ***************************************************************** */
- VP vptr ; unsigned int clav ;
- /* *************************************************************************************** */ /* **************************************************************************************** */
- void ADR_ECRAN(void) /* donne l'@ de base du CLAVIER_RAM */
- {
- vptr =(VP)(((unsigned long)( 0x40 ))<<16 | ( 0x17 ));
-
- }
- /* ********************************************************************** */
- void sauvegarder(void)
- { clav = vptr -> x.contenu ; }
- void restorer ( unsigned int clavi)
- { vptr -> x.contenu = clavi ; }
- /* -------------------------------------------------- */
- void set_flag ( unsigned flag )
- {
- union REGS regs ;
- unsigned z ;
-
- z = vptr -> x.contenu ;
- z |= flag ;
- vptr -> x.contenu = z ;
- regs.h.ah = 1 ;
- int86(0x16 , ®s ,®s );
- }
- /* ------------------------------------------------- */
- void clr_flag ( unsigned flag )
- {
- union REGS regs ;
- unsigned z ;
-
- z = vptr -> x.contenu ;
- z &= flag ;
- vptr -> x.contenu = z ;
-
- regs.h.ah = 1 ;
- int86( 0x16 ,®s ,®s);
- }
- /* --------------------------------------------------- */
-
- void main(void)
- {
- unsigned int i ;
- unsigned int fifa ;
-
-
- printf ( "\n\n REGARDE LES LEDs (LUMIERES) DE VOTRE CLAVIER \n\n\n " );
- ADR_ECRAN() ;
- sauvegarder() ;
- for (i=0 ; i<65 ; ++i)
- {
- set_flag( CAPL);
- delay(54);
- clr_flag(CAPL);
- set_flag(NUML);
- delay(54);
- clr_flag(NUML);
- set_flag(SCRL);
- delay(55);
- clr_flag(SCRL);
- delay(55);
- }
- printf(" Attention le clavier vas c',xploser dans 5 secandes \n\n") ;
- for (i=0 ; i<60 ; ++i)
- { clr_flag(!SCRL | !NUML | !CAPL);
- delay(54);
- set_flag(SCRL|NUML|CAPL);
- delay(55);
- }
- clr_flag(!SCRL | NUML | !CAPL); delay(54); set_flag(NUML);
-
- restorer ( clav ) ;
-
- printf(" Fin du programme \n\n") ;
-
- }
- /* ------------------------------------------ */
#include <stdio.h>
#include <dos.h>
#include <bios.h>
/* --------------------------------------------------- */
#define SCRL 16
#define NUML 32
#define CAPL 64
#define INS 128
typedef unsigned char BYTE;
typedef unsigned int WORD;
typedef union vel far *VP; /* pointeur sur la RAM-CLAVIER */
struct velb
{ BYTE caractere,
attribut;
};
struct velw
{ WORD contenu;
};
union vel
{ struct velb h;
struct velw x;
};
/* ***************************************************************** */
VP vptr ; unsigned int clav ;
/* *************************************************************************************** */ /* **************************************************************************************** */
void ADR_ECRAN(void) /* donne l'@ de base du CLAVIER_RAM */
{
vptr =(VP)(((unsigned long)( 0x40 ))<<16 | ( 0x17 ));
}
/* ********************************************************************** */
void sauvegarder(void)
{ clav = vptr -> x.contenu ; }
void restorer ( unsigned int clavi)
{ vptr -> x.contenu = clavi ; }
/* -------------------------------------------------- */
void set_flag ( unsigned flag )
{
union REGS regs ;
unsigned z ;
z = vptr -> x.contenu ;
z |= flag ;
vptr -> x.contenu = z ;
regs.h.ah = 1 ;
int86(0x16 , ®s ,®s );
}
/* ------------------------------------------------- */
void clr_flag ( unsigned flag )
{
union REGS regs ;
unsigned z ;
z = vptr -> x.contenu ;
z &= flag ;
vptr -> x.contenu = z ;
regs.h.ah = 1 ;
int86( 0x16 ,®s ,®s);
}
/* --------------------------------------------------- */
void main(void)
{
unsigned int i ;
unsigned int fifa ;
printf ( "\n\n REGARDE LES LEDs (LUMIERES) DE VOTRE CLAVIER \n\n\n " );
ADR_ECRAN() ;
sauvegarder() ;
for (i=0 ; i<65 ; ++i)
{
set_flag( CAPL);
delay(54);
clr_flag(CAPL);
set_flag(NUML);
delay(54);
clr_flag(NUML);
set_flag(SCRL);
delay(55);
clr_flag(SCRL);
delay(55);
}
printf(" Attention le clavier vas c',xploser dans 5 secandes \n\n") ;
for (i=0 ; i<60 ; ++i)
{ clr_flag(!SCRL | !NUML | !CAPL);
delay(54);
set_flag(SCRL|NUML|CAPL);
delay(55);
}
clr_flag(!SCRL | NUML | !CAPL); delay(54); set_flag(NUML);
restorer ( clav ) ;
printf(" Fin du programme \n\n") ;
}
/* ------------------------------------------ */