Hi Experten,
Ich will ein kleines OS schreiben, und brauche dazu natürlich auch eine Möglichkeit Graphik auszugeben. Nachdem ich mich ein bisschen im Web umgesehen habe glaube ich, dass sich das an leichtesten mit VESA realisieren ließe.
Ich stell mir den Boot-Vorgang ungefähr so vor:
(realmode)
1. Einen Linearen Graphikmodus mit der Vesa-Funktion 02h setzen
(mit Realmode-Interupt)
2. Einen ModeInfoBlock mit der Funktion 01h füllen um den Zeiger
PhysBasePtr zu erhalten, der auf den Anfang des Linearen Frame
Buffers zeigt
3. Den Zeiger irgendwie von einen physikalischen in einen
linearen Zeiger umwandeln
4. In den ProtectedMode wechseln
5. Pixel über den Zeiger setzen
Dabei habe ich aber zwei Probleme:
- Weiss ich nicht wie ich die physkalische Adresse aus Schritt 2
in eine lineare umwandwaln soll.
(In der offiziellen VESA Dokumentation steht dass man das mit die DPMI Funktion 0x800 erledigen kann, diese Funktion wird aber durch das Betriebsystem zur Verfügung gestellt. Ich muss also eine eigene Funktion schreiben.) - Hab ich Probleme den erhaltenen Zeiger vom RealMode in den ProtectedMode zu retten, da ich im realmode nur auf das erste
MB zugreifen kann und ich in pmode keinen Zugriff auf dieses MB habe.
Ich bin für jeden Tip dankbar !
MFG,
Daniel R.