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

Développement 2D, 3D et Jeux Discussion :

[VESA] mode protégé et absence d'interruption 10h


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Candidat au Club
    Inscrit en
    Février 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 3
    Points : 4
    Points
    4
    Par défaut [VESA] mode protégé et absence d'interruption 10h
    Bonjour,

    Je développe actuellement un OS et souhaiterais améliorer l'interface graphique.
    J'ai naturellement pensé au VESA qui me permet de passer outre le pilote de la carte graphique. Quant à la compatibilité avec toutes les cartes, les constructeurs n'ont qu'à respecter les normes...
    Le problème qui se pose vient du fait que tous les exemples que j'ai vu font appel à l'interruption BIOS 10h. Or, je n'ai pas accès à cette interruption car je passe très tôt dans le code en mode protégé.
    Est-ce qu'il y aurait moyen d'avoir un code permettant soit de simuler l'interruption 10h par la gestion d'une interruption logicielle, ou carrément de s'en passer ?

    Merci.

  2. #2
    Membre à l'essai Avatar de Hell_Hibou
    Homme Profil pro
    Dévelopeur
    Inscrit en
    Septembre 2003
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Dévelopeur

    Informations forums :
    Inscription : Septembre 2003
    Messages : 10
    Points : 11
    Points
    11
    Par défaut
    D'après les infos que j'ai, l'interruption 10h est aussi utilisable en mode protégé. Il faut utiliser la série de fonction 4Fxx avec une structure de parametres a spécifier. L'adresse 0x0A00 n'est plus utilisable en mode protégé.

  3. #3
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Y'a plusieurs versions du VESA. Le VESA 3 il me semble possède un BIOS 16 bits utilisable en mode protégé. Avec VESA 2, de mémoire tu choisis ta config video en rmode et ensuite en pmode tu as accès à la mémoire video pour ecrire comme tu veux en vram. Mais tu ne peux pas changer les réglages. Pour les versions précédentes, ou pour changer les réglages, il faut basculer en rmode le temps d'exécuter ton int 10h, puis retour au pmode.
    Jette un oeil au frame buffer de Linux.

  4. #4
    mat.M
    Invité(e)
    Par défaut Re: [VESA] mode protégé et absence d'interruption 10h
    Citation Envoyé par PATTELARD
    Le problème qui se pose vient du fait que tous les exemples que j'ai vu font appel à l'interruption BIOS 10h. Or, je n'ai pas accès à cette interruption car je passe très tôt dans le code en mode protégé.
    Comment cela on ne peut pas passer en mode protégé avec le VESA ?
    J'avais développé un jeu avec Watcom 10 et Dos-Extender dos4gw cela tournait en VESA 640*480
    C'est que quelque part dans le code il ya de mauvaises opérations.
    Sans code......

    Citation Envoyé par Hell_Hibou
    D'après les infos que j'ai, l'interruption 10h est aussi utilisable en mode protégé. Il faut utiliser la série de fonction 4Fxx avec une structure de parametres a spécifier. L'adresse 0x0A00 n'est plus utilisable en mode protégé.
    Oui il faut utiliser 0xa00000000 je ne sais combien de zeros

    Patelard programme avec SDL tu te casseras moins la tête...
    en plus le VESA n'est pas toujours compatible avec toutes les cartes vidéos

  5. #5
    Candidat au Club
    Inscrit en
    Février 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Je veux bien utiliser SDL, mais comment intégrer facilement cette bibliothèque en gérant toutes ses dépendances dans un code monolythique ?

    Le VESA 3 permet effectivement d'utiliser les commandes "4Fxx" en mode protégé, mais la manipulation n'est pas des plus aisées (copie du BIOS dans une zone mémoire, recherche du VESA BIOS mode protégé dans cette zone, copie du VESA BIOS mode protégé dans une structure, initialisation à partir de pointeurs sur fonction inclus dans cette structure, utilisation des fonction VESA à partir de pointeurs sur fonction dans cette structure).

    Si ce code a déjà été rédigé par quelqu'un, il ne me semble pas utile de réinventer la roue...

    Sinon, j'inventerai la roue et publierai le code...

    Mais comme vous pouvez le voir sur l'espace entre les dates de rédaction, le temps passe trop vite...

    En tous cas, merci pour vos réponses...

  6. #6
    mat.M
    Invité(e)
    Par défaut
    Ne Prends pas SDL ça rame trop ;
    tu auras de meilleurs performances avec le VESA (quoique le VESA soit moins performant que l'accès natif à la carte vidéo) qu'avec SDL...
    tu peux parfaitement prendre le VESA j'avais fait un jeu avec Dos4GW dos extender.
    Il faut comme je t'ai dis déclarer un pointeur 32bits sur A000:000 et adresser cette adresse .
    Pour le VESA 1.0 il faut déplacer une fenêtre le mode de tampon linéaire n'était pas développé

  7. #7
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par PATTELARD
    Le VESA 3 permet effectivement d'utiliser les commandes "4Fxx" en mode protégé, mais la manipulation n'est pas des plus aisées (copie du BIOS dans une zone mémoire, recherche du VESA BIOS mode protégé dans cette zone, copie du VESA BIOS mode protégé dans une structure, initialisation à partir de pointeurs sur fonction inclus dans cette structure, utilisation des fonction VESA à partir de pointeurs sur fonction dans cette structure).
    Avec VESA 1.0 il suffisait de faire un memcpy d'un tampon de unsigned char vers l'adresse de la mémoire vidéo ( en 256 c ) .
    Malheureusement je n'ai plus les codes sources du premier jeu que j'avais fait vu que j'utilise Direct X maintenant.
    Si je les retrouve je te les enverrai..

Discussions similaires

  1. VESA - Mode réel / protégé / EMS-XMS
    Par zdra dans le forum x86 16-bits
    Réponses: 35
    Dernier message: 21/08/2010, 10h39
  2. Réponses: 6
    Dernier message: 22/06/2005, 10h05
  3. Réponses: 17
    Dernier message: 19/02/2005, 19h36
  4. Appel d'interruption DOS ou BIOS sous Windows (mode protégé)
    Par SteelBox dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 30/04/2004, 10h30
  5. Mode protégé pour un OS
    Par Ninkosen dans le forum Programmation d'OS
    Réponses: 2
    Dernier message: 25/11/2002, 13h46

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