IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

[bios] Lecture de caract�re et �tat du clavier [Non suivi]


Sujet :

C

  1. #1
    Membre �m�rite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par d�faut [bios] Lecture de caract�re et �tat du clavier
    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

  2. #2
    Membre �m�rite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par d�faut
    C'est pas une bonne id�e de recopier un fichier "*.h" venant de "je ne sais o�". Surtout qd il s'agit d'un programme quelconque (�mulation Psx), donc ne faisant pas partie de l'installation de ton compilateur.

    Quand tu rajoute un fichier d'ent�te, il te faut obligatoirement avoir le fichier de corps qui va avec ou sinon le fichier de la librairie correspondante.

    Essaye de faire une recherche dans tes r�pertoires "/include" et "/lib" en rechercant les cha�nes de caract�res : biosInit, biosShutdown, biosException.

    Si tu trouve quelque chose dis le moi.

  3. #3
    Membre �m�rite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par d�faut
    Citation Envoy� par mchk0123
    Quand tu rajoute un fichier d'ent�te, il te faut obligatoirement avoir le fichier de corps qui va avec ou sinon le fichier de la librairie correspondante.
    Le fichier bios.c est aussi fourni. Je l'ai ajout� � mon projet.

    Je vais faire une recherche comme tu me dis de ces fonctions, on va voir ce que cela va donner...

  4. #4
    Expert �minent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retrait�
    Inscrit en
    D�cembre 2003
    Messages
    14 512
    D�tails du profil
    Informations personnelles :
    �ge : 68
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Retrait�

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 14 512
    Par d�faut
    Citation Envoy� par homeostasie
    Le fichier bios.c est aussi fourni. Je l'ai ajout� � mon projet.
    Encore faut-il qu'il soit �crit en C portable ou en C compris par ton compilateur.

    Ce que tu veux faire se fait en mode 16-bit avec un compilateur ancien genre Borland C 2.x ou 3.x.

    En mode 32-bit, on utilise des fonctions syst�mes.

  5. #5
    Membre �m�rite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par d�faut
    Citation Envoy� par Emmanuel Delahaye
    Ce que tu veux faire se fait en mode 16-bit avec un compilateur ancien genre Borland C 2.x ou 3.x.

    En mode 32-bit, on utilise des fonctions syst�mes.
    Hummm, d'accord...
    En fait, il est clair que le bouquin que je suis entrain de lire n'est pas d'actualit�, de l'�poque de Window 95. C'est la bible 6ieme �dition, PC programmatoin systeme.

    Je le trouve bien interessant et du code est fourni et ca m'aurait bien plu de pouvoir l'appliquer...

    Le seul moyen est il d'utiliser un de ces anciens compilateurs?
    ou de prendre un bible plus r�cente....

  6. #6
    Expert �minent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retrait�
    Inscrit en
    D�cembre 2003
    Messages
    14 512
    D�tails du profil
    Informations personnelles :
    �ge : 68
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Retrait�

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 14 512
    Par d�faut
    Citation Envoy� par homeostasie
    Le seul moyen est il d'utiliser un de ces anciens compilateurs?
    ou de prendre un bible plus r�cente....
    Je ne sais pas. La programmation syst�me c'est vague. Tu veux apprendre � �crire un driver ? Pour quel syst�me ?

  7. #7
    Membre �m�rite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par d�faut
    Tu veux apprendre � �crire un driver ? Pour quel syst�me ?
    Oui par la m�me occasion. Je suis actuellement sous Window xp.

    En fait, je suis tomb� par hasard sur ce bouquin que je juge tr�s interessant. Un sacr� tome sur la programmation systeme PC. Un cd est fourni avec, celui-ci contient des programmes �crits en C, et VC (ainsi que d'autres langages) pour chaque chapitre.. Et ,au fur et � mesure de ma lecture, je souhaitais lancer les programmes concern�s pour bien comprendre le m�canisme et avoir une application concr�te.

    Je me trouve embet� car j'ai l'impression que je ne peux pas les faire tourner...Du moins, d�j� celui concernant le clavier!

  8. #8
    Membre �m�rite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par d�faut
    Arf ... je veux pas �tre m�chant, mais pour compiler du code C �crit par quelqu'un d'autre il faut mieux avoir de la bouteille.

    Pourquoi est-ce que tu n'�cris pas ton driver depuis 0, en y allant pas � pas ?
    En plus tu as un bon livre sous la main, �a ne devrait pas �tre difficile. En tout cas surement plus simple que ce que tu essayes de faire.

  9. #9
    Expert �minent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retrait�
    Inscrit en
    D�cembre 2003
    Messages
    14 512
    D�tails du profil
    Informations personnelles :
    �ge : 68
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Retrait�

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 14 512
    Par d�faut
    Citation Envoy� par homeostasie
    Oui par la m�me occasion. Je suis actuellement sous Window xp.

    En fait, je suis tomb� par hasard sur ce bouquin que je juge tr�s interessant. Un sacr� tome sur la programmation systeme PC. Un cd est fourni avec, celui-ci contient des programmes �crits en C, et VC (ainsi que d'autres langages) pour chaque chapitre.. Et ,au fur et � mesure de ma lecture, je souhaitais lancer les programmes concern�s pour bien comprendre le m�canisme et avoir une application concr�te.

    Je me trouve embet� car j'ai l'impression que je ne peux pas les faire tourner...Du moins, d�j� celui concernant le clavier!
    Tu ne peux pas avec les syst�mes actuels. Comme je te l'ai dit, il faut un compilateur 16-bit comme Turbo C 2.01 que l'on trouve dans le mus�e de Borland (community/museum).

    M�me avec �a, je ne suis pas s�r que 100% d'une machine MS-DOS 16-bit soit recr��e par le syst�me (VM ou virtual machine). Il se pourrait que certains acc�s au mat�riel ne fonctionnent pas ou ne donne pas les r�sultats escompt�s. (le syst�me reste prioritaire sur la VM, sinon, c'est le plantage garanti du syst�me, vu que les ressources mat�rielles sont uniques...)

    La seule fa�on s�re de proc�der est d'installer une machine sous MS-DOS (6.22 est la derni�re version connue), ou un FreeDOS (7 ou 8, je ne sais plus) et de travailler � l'ancienne, par exemple avec Turbo C 2.01.

  10. #10
    Membre �m�rite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par d�faut
    Oui c'est vrai! Le code est quand m�me bien d�taill� et vraiment compr�hensible.

    Sinon j'ai effectu� la recherche avec les mots clefs que tu m'as fil�, mais rien... Je n'arrive pas � trouver cette librairie... Pourtant, en recherchant sur le net, je vois des programmes avec ce fichier d'ent�te et utilisant la structure REGS, ainsi que les fonctions bios.

  11. #11
    Expert �minent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retrait�
    Inscrit en
    D�cembre 2003
    Messages
    14 512
    D�tails du profil
    Informations personnelles :
    �ge : 68
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Retrait�

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 14 512
    Par d�faut
    Citation Envoy� par homeostasie
    Sinon j'ai effectu� la recherche avec les mots clefs que tu m'as fil�, mais rien... Je n'arrive pas � trouver cette librairie... Pourtant, en recherchant sur le net, je vois des programmes avec ce fichier d'ent�te et utilisant la structure REGS, ainsi que les fonctions bios.
    Quelle biblioth�que ? Je t'ai dit d'utiliser un compilateur 16-bit. Je parle mandarin ou quoi ?

  12. #12
    Expert �minent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retrait�
    Inscrit en
    D�cembre 2003
    Messages
    14 512
    D�tails du profil
    Informations personnelles :
    �ge : 68
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Retrait�

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 14 512
    Par d�faut
    Citation Envoy� par mchk0123
    Pourquoi est-ce que tu n'�cris pas ton driver depuis 0, en y allant pas � pas ?
    En plus tu as un bon livre sous la main, �a ne devrait pas �tre difficile. En tout cas surement plus simple que ce que tu essayes de faire.
    Ecrire un driver, c'est pas uniquement savoir manipuler le mat�riel. C'est surtout s'inscrire dans un processus de d�veloppement bien cadr� qui permet de construire une extension � tel ou tel syst�me.

  13. #13
    Membre �m�rite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par d�faut
    On est d'accord !

    Utiliser Google pour faire du typedef & #define hunting afin que le code du driver compile c'est tout sauf programmer proprement !

  14. #14
    Membre �m�rite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par d�faut
    Citation Envoy� par Emmanuel Delahaye
    Je t'ai dit d'utiliser un compilateur 16-bit. Je parle mandarin ou quoi ?
    Sourire, non!

    En fait, on a du poster notre message quasiment en m�me temps car je n'avais pas lu ton post avant d'y laisser le mien...

    Sinon ton explication est clair. Merci!

    Bonne fin de journ�e.

  15. #15
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Citation Envoy� par Emmanuel Delahaye
    Tu ne peux pas avec les syst�mes actuels. Comme je te l'ai dit, il faut un compilateur 16-bit comme Turbo C 2.01 que l'on trouve dans le mus�e de Borland (community/museum).

    M�me avec �a, je ne suis pas s�r que 100% d'une machine MS-DOS 16-bit soit recr��e par le syst�me (VM ou virtual machine). Il se pourrait que certains acc�s au mat�riel ne fonctionnent pas ou ne donne pas les r�sultats escompt�s. (le syst�me reste prioritaire sur la VM, sinon, c'est le plantage garanti du syst�me, vu que les ressources mat�rielles sont uniques...)

    La seule fa�on s�re de proc�der est d'installer une machine sous MS-DOS (6.22 est la derni�re version connue), ou un FreeDOS (7 ou 8, je ne sais plus) et de travailler � l'ancienne, par exemple avec Turbo C 2.01.
    La VDM n'a pas acc�s � tout, certains appels d'interruptions font planter la VDM comme �a, "pouf", sans le moindre message.

    Par contre, une DOSBox est une meilleure machine virtuelle, beaucoup plus fid�le (mais enti�rement �mul�e). Il est possible que ce soit suffisant...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  16. #16
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2
    Par d�faut ...Autre commande pour lecture de clavier?
    Bojour...

    Je suis nouveau ici... J'ai �crit plusieurs codes source � l'aide d'un ancien compilateur C (Symantec), et plusieurs de ms codes source utilisaient la commande _bios_keybrd pour entr�e directe � partir du clavier.

    Maintenant, j'ai un compil. plus r�cent (Borland C++ 4.5) qui ne reconna�t pas l'instruxion _bios_keybrd.

    Ma question: Y'a-t-�l une autre instruxion qui fait � peu-pr�s la m�me chose et qui est reconnue par Borland, et si oui, laquelle....

    Merci pour votre attention

    Normnad Martel
    Montr�al, Qc.

  17. #17
    Expert confirm�
    Avatar de Melem
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par d�faut
    Pour programmer sous DOS ... il faut tout d'abord un compilateur pour DOS c'est � dire turbo C 2.01, turbo C++ 1.0, 3.0, Microsoft Quick C, DJGPP, etc. Et donc certainement pas avec gcc, Visual C++, Borland C++ 4.5, 5.02, C++ Builder ou JBuilder 9 ...

    Les compilateurs pour DOS sont normalement fournis avec les en-t�tes bios.h et dos.h. Dans dos.h sont d�finis entre autres les types union REGS et struct SREGS et les fonctions int86 et int86x.

    bios.h contient la d�claration des fonctions bioskey, biosdisk, biosequip ... (les "anciennes" fonctions) et _bios_keybrd, _bios_disk ... (les "nouvelles" fonctions, qui ne sont apparues qu'avec MS C v3.0 si je ne me trompe pas ...)

  18. #18
    Expert �minent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retrait�
    Inscrit en
    D�cembre 2003
    Messages
    14 512
    D�tails du profil
    Informations personnelles :
    �ge : 68
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Retrait�

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 14 512
    Par d�faut
    Citation Envoy� par Normand_Martel
    Ma question: Y'a-t-�l une autre instruxion qui fait � peu-pr�s la m�me chose et qui est reconnue par Borland, et si oui, laquelle....
    [MS-DOS] Voir les fonctions de conio : kbhit(), getch() ...

Discussions similaires

  1. R�ponses: 3
    Dernier message: 19/01/2009, 14h43
  2. Lecture du caract�res UTF-16 fichier
    Par Jamlan dans le forum C
    R�ponses: 4
    Dernier message: 27/12/2006, 14h41
  3. R�ponses: 1
    Dernier message: 20/03/2006, 09h46
  4. R�ponses: 2
    Dernier message: 08/10/2005, 20h08
  5. Avoir l'�tat du clavier
    Par amireve dans le forum Langage
    R�ponses: 2
    Dernier message: 06/08/2005, 19h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo