|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre habitué
![]() passe le balais et l'aspirateur Inscription : mars 2008 Messages : 111 ![]() |
bonjour a tous!
je suis en train de programmer une version en mode protégé de mon petit système d'exploitation mais je me heurte a un petit problème je doit faire appel a des fonction du bios pour pouvoir: - lire le secteur d'une disquette (ou d'une clef USB) - écrire dans le secteur d'une disquette - obtenir des info VESA sur la carte video - changer de mode video VESA - changer le chunk video accessible or tout le monde sait que l'on ne peut pas appeler de fonction bios en mode protégé, je repasse donc en mode réel le temps d'appeler l'interruption MAIS ça ne marche pas! ou plus exactement j'arrive a passer en mode réel et a revenir en mode protégé mais dès que je j'appelle une interruption en mode réel ça plante Code :
|
||
|
00
|
|
|
#2 |
|
Membre chevronné
![]() être humain Inscription : décembre 2007 Messages : 471 ![]() |
salut bifur, à quoi ressemble ta gdt et ton passage au mode protegé? c'est surtout cette etape qui determine si tu arriveras à exploiter les interruptions mode reel depuis le mode protegé.
si tu veux, j'ai un code fonctionnel pour ça, c'est DEX qui à ecrit la partie mode reel> mode protegé> mode reel, et ça fonctionnait très bien. par contre, faut etre logué pour down le fichier. pour jouer en mode reel ET en mode protegé dans le meme code, il faut non seulement sauvegarder le IDTR du mode reel (IDTR -> IVT: linear 0, limit 400h), veiller à ne pas écrire dans les zones de ROM/BIOS (linear 0C0000h to 0FFFFFh) et BDA (linear 400h to beaucoup). en gros, n'utiliser qu'entre un et six segments de 64 k de la ram basse. pour le code coté mode reel et les structures (GDT, IDT, disk buffer, etc...). si DOS n'est pas chargé, la mémoire utilisable sans probleme est située entre linear 10000h et linear 8FFFFh (segments entre 1000h et 8000h). les autres, il faut faire gaffe à ne pas toucher aux diverses choses bios/dos/ebios/boot... pour le code et les données mode protegé, faudra privilegier la ram haute (au dessus de 1 mega octets) |
|
|
00
|
|
|
#3 | ||
|
Membre habitué
![]() passe le balais et l'aspirateur Inscription : mars 2008 Messages : 111 ![]() |
mon passage en mode protégé est une copie conforme de ce qui est utilisé dans le code que j'avais montré, excepté que je sauvgarde la gdt et l'idt/ivt du mode réel c'est a dire:
Code :
en faisant certains essais sur la totalité du code je suis certain que le problème vient de l'IVT du mode réel, il est modifié par le passage en mode protégé mais n'est pas correctement restauré lors du mini passage en mode réel |
||
|
00
|
Copyright © 2000-2013 - www.developpez.com