Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: ODIN am 30. January 2005, 22:13
-
Hi Leute!
Ich bin grad dabei mein OS PM fähig zu machen =)
Wollte nur fragen wo ich mich über VESA programmierung informieren kann... Anscheinend können das schon alle außer mir =)
Thx schon im voraus...
lg Daniel - ODIN
-
Warum wollen immer alle gleich mit Vesa, Grafik und GUI anfangen?
Warum macht ihr nicht erstmal Multitasking, Paging usw?
-
*g*
So ist es auch wieder nicht.
Ich möchte nur bevor ich beginne mein OS wirklich umfangreich zu gestalten vorher bescheid wissen wie ich das mache bzw. ob ich das überhaupt verstehe / machen kann.
Dann wenn ich alles verstanden habe, fange ich mit den grundlegenden funktionen an ...
Wenn ich gleich dabei bin. Du hast die PIC programmierung als Tutorial und das A20 Gate sowie PMode aktivierung.
Nur ich würde gerne wissen wie man das dann zusammenfügt.
Wie schreibe ich zB interrupts `?!?
lg Daniel
-
Hab ich dir ja gestern im ICQ erklärt. Oder sind da noch Fragen offen?
-
Also ich hab MT und Paging schon^^ auch Speichermanagement in 3 Ebenen das alles aufteilt ist da^^ Festplatte->da Floppy->da Virtuelles Dateisystem->im Bau
Ich denke TJ wird mir erlauben mit VESA rum zu hantieren^^
Aber er hat schon recht, bevor man sich über kompliziertes Zeug Gedanken macht sollte man erstmal die einfacheren umsetzten und vor allem verstehen, habe beobachtet das manche os-dever überhaupt nicht verstanden haben was sie eigentlich machen.
-
Hi Leute.
Also Grundsätzlich ist die Sache mit der Grafik-Programmierung die größte Hürde die ein OS-Progger nehmen muss. Meiner Meinung nach jedenfalls.
Mann bin ich froh das ich von einer GUI noch Meilenweit entfernt bin. Warscheinlich baue ich auch erst mal eine so eine Art "Zeichen-Mode-GUI" (vielleicht kann sich ja noch jemand an die Turbo-Vision-Bibliotheken von Turbo-Pascal erinnern, das war sowas ähnliches...).
Das Problem ist: Für alles kann man im Grunde Treiber schreiben, Netzkarten, USB, Tastatur, Scanner, Maus, Timer, APIC, Zip, CD..... usw. weil alles ist dokumentiert und früher oder später findet man entsprechende Spezifikationen im Netzt. Allerdings gibt es eine Ausnahme: So gut wie sämtliche Grafik-Chips werden mit Ihren Register-Sätzen von den Herstelern so geheim gehalten wie die Farbe des Clopapiers des CIA-Chefs!
Und nun zu VESA:
Leider ist das so ziemlich die einzige Möglichkeit für einen OS-Progger (*heul*) eine Grafik-GUI (doppelt-gemoppelt :wink: ) zu proggen. Und wenn man ein 32-Bit OS proggt (also in den P-Mode geht) dann gibt es im Grunde nur 2 Möglichkeiten mit VESA zu arbeiten (bitte korregiert mich wenn ich eine Möglichkeit übersehen hab).
1. Man schaltet den gewünschten Grafikmode schon beim booten mit hilfe des Bios ein und bleibt dann für alle Ewigkeit, bzw. bis zum nächsten Reset in diesem Mode.
2. Man benutzt die "PMode-Schnittstelle" die es ab VBE 3.0 gibt. Leider haben meiner Meinung nach nicht viele Grafikkarten diese Schnittstelle. Und wenn ich richtig gelesen hab ist die auch nicht ganz so einfach zu proggen.
Eine Möglichkeit würde mir noch einfallen: Evtl. könnte man einen "Vesa-Treiber" schreiben der für die Mode-Umschaltung das Multitasking, und das Paging abschaltet, in den Real-Mode schaltet, das BIOS für die Vesa-Einstellungen benutzt, und dann wieder den P-Mode, Paging und Multitsaking aktiviert.... Hilfe, wer will das proggen.... :-k
Gruß BigOlly
PS: Falls irgend jemand da draußen Spezifikations-Unterlagen über z.B. den S3-Trio64 Chipsatz hat.... BITTE MELDEN !!!
:roll:
-
Warum wollen immer alle gleich mit Vesa, Grafik und GUI anfangen?
Warum macht ihr nicht erstmal Multitasking, Paging usw?
bei mir mache ich es, weil ich meine ausgabe sowieso in VESA am ende haben will, und warum soll ich da verschiedene funktionen für textmode und grafikmode schreiben, wenn ich gleich nach VESA wechseln kann, und dann nurnoch eine brauche?
-
Eine Möglichkeit würde mir noch einfallen: Evtl. könnte man einen "Vesa-Treiber" schreiben der für die Mode-Umschaltung das Multitasking, und das Paging abschaltet, in den Real-Mode schaltet, das BIOS für die Vesa-Einstellungen benutzt, und dann wieder den P-Mode, Paging und Multitsaking aktiviert.... Hilfe, wer will das proggen....
Mal ne ganz ganz blöde Frage:
Was passiert, wenn ich nur mal "kurz" in den RealMode zurueckspringen will, um z.B. Vesa-Modi zu ändern? Dazu muss ich ja CS und Co neu laden, schmiert dabei nicht der gesamte PC ab??
Svenska
-
dazu ist ja der v86 da, der ist extra dafür geschaffen worden
-
Ja, mit den v86-Mode geht's natürlich auch. Aber dann muss man die 64-Bit-Möglichkeit für sein Betriebssystem begraben. Denn im Long-Mode (auch im Compatibility-Mode) wird kein v86 mehr unterstützt. :cry:
-
Ach ja, nochwas: Mein OS-loader funktioniert so!
Ich schalte zurück in den Real-Mode, springe zurück in den OS-Loader, dieser läd mir den gewünschten Treiber per BIOS vom Boot-Drive dort hin wo ich will (irgendwohin in die 4GB ber Switch in den PM), und springt nach dem laden zurück in dem PM und zum Kernel.
Und: es funzt! =D>
-
Also, da es hier ohnehin schon um VESA geht, missbrauche ich gleich einmal diesen Thread: Der wechsel in den VESA-Mode 0x4105 (1024*768*8 + LFB) klappt ausgezeichnet (sowohl mit Bochs, als auch mit meinem PC) Nur wenn ich dann was schönes Zeichnen will, so klappt das nur mit meinem PC, nicht aber mit Bochs O_o Ich mach' das wie mit einem String:
mov edi, [VbeModePhysBasePtr]
mov ecx, ( 1024 * 768 / 4 )
mov eax, 0xFFFFFFFF
rep stosd
Das sollte doch klappen, oder? Und auf meinem echten PC klappts auch (also nur auf einem, weil der 2. zu alt für den Mode ist :D)