GUI im Real Mode
-
hallo,
viele betriebssysteme zeigen eine einfache, textbasierte gui an, bevor das betriebssystem startet.
ich meine sowas:
http://img827.imageshack.us/img827/3921/46873336.png
http://www.dedoimedo.com/images/computers_new_2/grub2-dual-boot-in-grub2.pngmeine frage ist: wie genau geht das mit dem zeichnen dieser "gui" (wenn man es so nenne will) vonstatten?
nehmen wir z.b. mal grub (siehe 2. link). die schrift wird von einem rahmen umgeben.
stellt das bios da irgendwelche funktionen bereit? oder ist diese "gui" einfach... nun ja... "programmiert"?
ich mein das so:
void zeichne_rahmen(void) { printf("+----------------------+\n"); printf("| |\n"); printf("| |\n"); printf("| |\n"); printf("| |\n"); printf("| |\n"); printf("| |\n"); printf("| |\n"); printf("+----------------------+\n"); }
mir ist klar, dass so bootloader wahrscheinlich in assembler programmiert ist, und die printf-aufrufe im frühen real-mode/protected-mode nicht funktionieren, das soll jetzt nur ein beispiel sein.
viele dieser "menüs" sehen sich, unabhängig von betriebssystem oder programm, recht ähnlich, daher hab ich die vermutung, dass es vom bios bereitgestellt wird.
ist das so?
-
Das ist einfach der Textmodus eines IBM kompatiblen PCs, der direkt von jeder Grafikkarte (mittels des Video-BIOS) unterstützt wird. Dieser enthält auch Zeichen zum zeichnen von einfachen Grafiken:
http://en.wikipedia.org/wiki/Box_drawing_characters
Aber auch richtige Grafik wäre kein Problem, schließlich gab es auch früher schon jede Menge Spiele im Real Mode, der eigentlich auch gar nichts mit dieser Anzeige zu tun hat. Die Frage ist bloß, auf welche Art von Hardwarestandard man sich verlassen möchte und wie viel Aufwand man für welchen Nutzen treiben möchte. Schließlich würde man hier nicht viel gewinnen durch einen "richtigen" Grafikmodus, dafür müsste man jedoch sehr viel mehr programmieren.
-
Die heutigen Grafikkarten sind soweit ich weiss immer noch VGA kompatibel.
D.h. Grafik mit 640x480 mit 16 bzw. 256 Farben sollte kein Problem sein.
Genau das verwenden soweit ich weiss auch viele BIOSe, z.B. die die ein Herstellerlogo anzeigen können.Alles was darüber hinaus geht muss dann IIRC schon VESA Modi verwenden. Wie gut die VESA Unterstützung im Real-Mode bei heutigen Grafikkarten ist kann ich aber nicht sagen.
-
Vieles geht auch mit ncurses.
-
-.-'' schrieb:
http://www.dedoimedo.com/images/computers_new_2/grub2-dual-boot-in-grub2.png
Oh je, guckst du hier:
http://www.heise.de/newsticker/meldung/Support-fuer-Windows-Vista-naehert-sich-dem-Ende-1257973.html
viele dieser "menüs" sehen sich, unabhängig von betriebssystem oder programm, recht ähnlich, daher hab ich die vermutung, dass es vom bios bereitgestellt wird.
ist das so?Der ASCII Zeichensatz wird von der Grafikkarte bereitgestellt. Mit dem erweiterten ASCII Zeichensatz kamen noch ein paar Zeichen dazu, mit denen man diese schönen textbasierten Rahmen zeichnen kann.
Betriebssysteme sind in der Lage, diese Zeichensätze auch bei Bedarf auszutauschen.
In der Regel werden hier für nur die oberen 128 Möglichkeiten ausgetauscht, der normale ASCII Zeichensatz ist nämlich nur 7 Bit groß, der erweiterte 8 Bit.
-
Wie kann man auf diesen Modus mit einem C++ Programm verwenden?
Der Midnight-Commander unter Linux verwendet z.B. diesen Modus.0x0ERROR
-
Das wechseln des Grafik-Modus musst du schon beim Betriebssystem beantragen.
Falls du meinst, wie man C++-Programme im Real-Mode ausfuehrt: Macht etwas arbeit und du brauchst einen Compiler, der 16-bit-Code erzeugen kann. Viel Spass beim wurschteln mit FAR- und NEAR-Zeigern.EDIT: Brr, war grad bei Real-Mode und VGA-Programmierung. Wenn du nur ASCII-Malen willst ist Swordfishs Link ne Adresse fuer dich.
-
0x0ERROR schrieb:
Der Midnight-Commander unter Linux verwendet z.B. diesen Modus.
Modus? Das ist schlicht Textmalerei. The ASCII code