Bonjour,

Je suis entrain d'essayer de ma familiariser avec la programmation systeme et je tente de lancer un programme en C utilisant les fonction BIOS pour lire les caractères tapés ainsi que l'état du clavier.

Mon premier soucis est que je n'ai pas le fichier d'entête <bios.h>. Alors j'ai récupéré celui sur le site suivant:
http://www.koders.com/c/fidDD8546189...4E0B72C76.aspx
Je ne suis pas certain...Est ce le bon? Sinon ou pourrais je le récupérer?

Surement que les erreurs de compilation proviennent de ce fait, car mon compilo (GNU Gcc) ne reconnait pas le type REGS (l'erreur dit que la taille de la variable de stockage n'est pas connu) et ni les fonctions suivantes ( erreur: première utilisation de cette fonction):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
   #define GetKbKey()        ( _bios_keybrd( _KEYBRD_READ ) )
   #define GetKbReady()      ( _bios_keybrd( _KEYBRD_READY ) != 0 )
   #define GetKbEtat()     ( _bios_keybrd( _KEYBRD_SHIFTSTATUS ) )
De plus j'ai une "implicit declaration" de int86...Sauriez vous d'ou cela pourrait venir?

Voici mes fichier d'entêtes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
#include <dos.h>
#include "bios.h"    //Celui que j'ai rajouté à partir du lien...
#include <stdio.h>
#include <conio.h>
#include <time.h>
Comme cela, voici la fonction pour vérifier l'état du clavier et lire un caractère:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
/**********************************************************************/
/* GETKEY : Lit un caractŠre et affiche l'‚tat des indicateurs        */
/* Entr‚e : n‚ant                                                     */
/* Sortie : Code de la touche frapp‚e                                 */
/*               < 256 : touche ordinaire                             */
/*              >= 256 : touche … code ‚tendu                         */
/**********************************************************************/
 
unsigned int GetKey( void )
{
 int Touche,                                      /* Touche retourn‚e */
     Etat;                                         /* Etat du clavier */
 
 do
  {
   Etat = GetKbEtat();                       /* Lit l'‚tat du clavier */
   Insert = NegFlag(Insert, Etat & INS, FC+9, FL, "INSERT");
   Caps = NegFlag(Caps, Etat & CAPL, FC+3, FL, " CAPS ");
   Num = NegFlag(Num, Etat & NUML, FC, FL, "NUM");
  }
 while ( !GetKbReady() );/* Recommence jusqu'… d‚tection d'une frappe */
 
 Touche = GetKbKey();                                /* Lit la touche */
 return ((Touche & 255) == 0) ? (Touche >> 8) + 256 : Touche & 255;
}
Je suis sous windows XP et je travaille avec l'EDI code blocks.
J'espere que vous pourrez m'orienter pour faire tourner ce genre de programme.

Nicolas