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):
De plus j'ai une "implicit declaration" de int86...Sauriez vous d'ou cela pourrait venir?
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 ) )
Voici mes fichier d'entêtes:
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 #include <dos.h> #include "bios.h" //Celui que j'ai rajouté à partir du lien... #include <stdio.h> #include <conio.h> #include <time.h>
Je suis sous windows XP et je travaille avec l'EDI code blocks.
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 caractre et affiche l'tat des indicateurs */ /* Entre : nant */ /* Sortie : Code de la touche frappe */ /* < 256 : touche ordinaire */ /* >= 256 : touche code tendu */ /**********************************************************************/ unsigned int GetKey( void ) { int Touche, /* Touche retourne */ 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' dtection d'une frappe */ Touche = GetKbKey(); /* Lit la touche */ return ((Touche & 255) == 0) ? (Touche >> 8) + 256 : Touche & 255; }
J'espere que vous pourrez m'orienter pour faire tourner ce genre de programme.
Nicolas
![]()
Partager