Bonjour
est ce que quelqu'un connait le Bios 32 et sait comment on peut s'en servir
Apparemment il permet de se servir d'interrutions Bios (sur 16bits) alors qu'on est en mode protégé (sur 32bits)
Merci
Bonjour
est ce que quelqu'un connait le Bios 32 et sait comment on peut s'en servir
Apparemment il permet de se servir d'interrutions Bios (sur 16bits) alors qu'on est en mode protégé (sur 32bits)
Merci
Tu parles du BIOS systeme ou du BIOS Video?
Ben du BIOS systeme
d'apres ce que j'ai vu dans le peu de doc que j'ai trouvé, on peut se servir de cette "extension" du bios pour avoir acces aux interruption BIOS une fois passé en mode protégé
tu pourrais créér des descripteurs 16-bits avec comme adresse de base le pointeur vers la routine d'interruption, que tu recuperes dans le premier Ko de la mémoire.
Apres au lieu de faire int xxh tu fais juste un call vers ce descripteur.
Je vois pas trop ce que tu veux dire...
récupérer le code des interruptions
passer en PM
faire des Call vers ces codes
c'est ca??
En fait quand tu es en mode protégé, tu recupère le segment et l'offset de la routine d'interruption que tu desires executer.
Ensuite tu créér un descripteur 16-bit qui va pointer dessus.
Pour l'utiliser tu fais un far call sur le descripteur, cela va mettre a jour CS automatiquement.
Si tu veux plus d'info, il explique comment utiliser le BIOS VESA en mode protégé, en utilisant les interruption standard.
Voila le lien sur le PDF (public).
http://www.vesa.org/vbe3.pdf
Oui
et si par exemple je veux utiliser l'interruption 13h pour avoir des acces sur le lecteur de disquettes... je dois faire comment?
Enfin est ce que je peux le faire alors que je suis deja en protégé?? Je croyais que c'etait impossible, justement du fait de l'imcompatibilité entre 16 et 32 bits
le fait d'utilise un descripteur 16-bit te permet d'executer du code 16-bit en 32-bit.
Il me semble que le version precedente de Windows utilisait ce systeme afin de pouvoir executer de vieux programme DOS.
Autrement tu peux essayer de dialoguer directement au hardware, c'est plus long a faire mais cela a l'avantage d'etre rapide et le plus proche du hardware. Autrement dis ecrire toi meme un driver.
Oui mais justement si je demande ca c'est pour éviter d'avoir à écrire un pilote :)
Je n'ai pas tres bien compris ta notion de descripteur 16 bits, etc... et en quoi ca pourrai résoudre le problème...
Je crois que ça vient de l'incompatibilité : Lorsque tu est en Mode Protégé, tu est en 32 bits, or les Ints du BIOS sont en 16 bits, il y a donc incompatibilité...
Les descripteur 16 bits permettent de palier cette incompatibilité.
Dites-le moi si je dis n'importe quoi !
Nico*3-3
Je ne pense pas que tu dise n'importe quoi, mais précise...
Ca ne me dit pas comment utiliser ces descripteurs 16bits!!!
euh, vous avez déjà regardé le code d'une interruption ? Dans chaque interruption, il y a un call far et le call far n'est pas lu du tout de la même manière en mode réel qu'en mode protégé. Pour l'instant, il n'y a que le VESA (BIOS Graphique en gros) qui permettent d'utiliser les interruptions réelles en mode protégé.
Bon, si t'es en train de faire ton propre OS et que t'as pas envie de te casser la tête à réécrire les drivers, je te conseille de rechercher des infos sur la BiosDataArea, ça te permettra de savoir où mettre ton code sans toucher aux endroits réservés pour le bios, de là tu mets ton noyau et tu crées un sous-gramme qui te permette de revenir temporairement en mode réel, le temps de l'exécution de l'interruption puis tu repasses en mode protégé à l'endroit où tu t'étais arrêté. J'ai fait ça dans mes essais d'OS et je trouve que c'est une bonne solution en attendant de développer ses propres drivers.
J'espère t'avoir éclairé un peu sur le sujet
Tu veux dire qu'à chaque fois que tu veux te servir d'une interruption, tu fais:
- mode protégé -> mode réel
- int ...
- mode réel -> Pmode
C'est ca? j'y avais pensé mais je me suis demandé si ca n'était pas un peu lent.. enfin je sais pas...
Par contre, ne faut-il pas désactiver toutes les interruptions quand tu fais cette manip (cli)??
tu viens de répondre à tes questions. Oui c'est lent c'est pour ça qu'il vaut mieux réécrire ses propres drivers mais comme je le dis, en attendant, c'est très utile.
Et oui, il faut bien switcher entre les différents modes, oui il ne faut pas oublier de faire un cli, il ne faut pas non plus oublier de déclarer correctement ta gdt, et ton idt, c'est tout des points de détails qu'il faut éclaircir au fur et à mesure mais c'est là tout le charme de l'assembleur.
Je dois déclarer la gdt et l'idt à chaque fois que je repasse du réel au protégé??
Ou bien juste une fois?
bon, je viens de me replonger dedans. Pour revenir en mode réel, il faut essentiellement bien déclarer ta GDT, c'est là clef du problème. Après la marche à suivre est la suivante :
1) tu fais un far jump dans le selecteur 16-bit
2) tu réinsitialises de,es,fs,gs,ss dans le selecteur 16-bit
3) tu restaures le mode réel par le bit 0 du registre cr0
; maintenant t'es quasiment en mode réel
4) tu fais un far jump pour restaurer cs
5) tu restaures ss,ds,es,fs,gs
6) tu restaures ton idt
7) tu restaures le gateA20
8) tu restaures les PICs
9) sti
10) tu fais un jump vers l'endroit du code 16 bit réel que tu veux exécuter
Maintenant, avant de passer dans le mode réel, il faut bien tout sauvegarder dans le mode protégé et inversement pour pouvoir tout restaurer correctement, c'est difficile au début à gérer et puis après avec l'habitude, on arrive à tout faire (conseil : utilise des emplacements mémoire pour faire les sauvegardes et surtout le passage de paramètre entre le mode réel et le mode protégé)
Essaye avec ça et pose tes problèmes si t'en as
D'accord merci je vais voir deja avec tout ca....
spa un peu compliqué tout ca ?
le mode v86 a été implémenté pour éviter ca justement....
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager