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