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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 ?

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