Autor Thema: VESA-Tutorial (noch sehr primitiv)  (Gelesen 33333 mal)

PNoob

  • Beiträge: 106
    • Profil anzeigen
    • Mein Blog
Gespeichert
« Antwort #20 am: 18. January 2011, 15:48 »
erstens nochmal die Frage: weshalb antwortest du in Threads die seit Jahren keinen Interessieren?
zweitens: wenn ich das richtig Sehe ist das ein Programm für DOS. Wenn ich damit richtig liege, was hat das mit OS-Dev zu tun?

PNoob

Edit: für Soviel code wäre eine Datei die du irgendwo hochlädst besser geignet.
« Letzte Änderung: 18. January 2011, 15:50 von PNoob »

freecrac

  • Beiträge: 86
    • Profil anzeigen
Gespeichert
« Antwort #21 am: 18. January 2011, 16:15 »
erstens nochmal die Frage: weshalb antwortest du in Threads die seit Jahren keinen Interessieren?

Ich habe das VESA-Wiki gefunden und möchte mit meinem Beitrag hier ein Interesse dafür erwecken das VBE3-Bios moderner Grafikkarten zu nutzen.
Meine neueste Grafikkarte eine Nvidia GTX 295 bringt immer noch ein VBE3-Bios und Vesamodi bis 1920x1200x32 mit, so das auch mein 28" LCD-Monitor damit optimal in seiner nativen Auflösung betrieben werden kann.

Zitat
zweitens: wenn ich das richtig Sehe ist das ein Programm für DOS. Wenn ich damit richtig liege, was hat das mit OS-Dev zu tun?

Genauso viel wie alle solche Postings rund um die Vesa-Programmierung.

Zitat
PNoob

Edit: für Soviel code wäre eine Datei die du irgendwo hochlädst besser geignet.

Trotzdem ich den Code dokumentiert habe könnte es aber sein, das bestimmte Passagen davon nicht richtig erkannt werden.
So kann jeder der dabei ein Verständnissproblem hat die betreffende Zeilen zitieren und so ganz gezielt erfragen was es damit für eine Bewandniss hat.

Dirk

DesL

  • Beiträge: 23
    • Profil anzeigen
Gespeichert
« Antwort #22 am: 18. January 2011, 20:38 »
Ich würde dir ja mal
http://pastebin.com vorschlagen...

freecrac

  • Beiträge: 86
    • Profil anzeigen
Gespeichert
« Antwort #23 am: 18. January 2011, 21:56 »
Ich würde dir ja mal
http://pastebin.com vorschlagen...

Ah danke, diese Seite kenne ich noch gar nicht.

Dirk

freecrac

  • Beiträge: 86
    • Profil anzeigen
Gespeichert
« Antwort #24 am: 20. January 2011, 11:55 »
Mit Bezug auf mein doch etwas längeres Assembler-Listing liste ich hier nun nachträglich mal den ungefähren Ablauf auf, um so einen kleinen Einblick vom Inhalt zu geben:

Deklaration verwendeter Konstanen

Überprüfung ob eine MMX-CPU vorhanden ist
Vesa-Info holen und überprüfen ob ein VBE 3-Bios vorhanden ist
Überprüfung ob ein Vesamode in der Modeliste vorhanden ist, der die gewünschte Auflösung (von 1024x768), die gewünschte Anzahl Bits je Pixel (32Bit) und mit einem linearen Zugriff auf den Framebuffer existiert
Pixelclock für den CRTC-Parameter-Block ermitteln
Refreshrate berechnen
Über DDC die Monitor-Informationen(EDID) holen und überprüfen ob der Verwendete Monitor 96khz unterstützt
Vesamode einschalten
IRQ 1 (Tastatur) ausschalten
Unterprogrammaufruf zur Routine die den 16Bit-Unrealmode anschaltet (DS-Segment auf 4GB erweitern und 21. Adressleitung anschalten)
Unterprogrammaufruf zur Routine die eine Offset-Tabelle der Zeilenanfänge jeder Bildschirmzeile am Anfang des Datensegments anlegt
In der linken obere Ecke des Bildschirms einen Ball zeichnen
Unterprogrammaufruf zur Routine die vom Bildschirminhalt eine Sprite-Tabelle (Offset,Farbe...) anlegt
Ball vom Bildschirm über Sprite-Tabelle wieder löschen
"Anzahl" Bälle über festgelegte Positionen (siehe Positionstabelle im Datenbereich) zum Bildschirm unter Verwendung der Sprite-Tabelle zeichnen

Anfang der Hauptschleife
Über die Sprite-Tabelle alle Bälle wieder löschen
Über eine Stepper-Tabelle und eine Richtungstabelle (siehe Datenbereich) neue Positionen der Bälle berechnen und dabei überprüfen, ob der Bildschirmrand erreicht wurde und wenn ja, dann die jeweilige Bewegungs-Richtung des Balles in der Richtungstabelle umkehren
Alle Bälle mit ihrer neuen Positionen zum Bildschirm bringen
Vesa triple Buffering einleiten (nur das erste Mal)
Für das verwendete triple buffering eine neue Bildadresse berechnen
Vesa triple Buffering mit Bildadresse verwenden
Überprüfen ob der dritte Buffer benutzt wurde und wenn ja, dann das Adressregister auf die Adresse des ersten Buffers zurücksetzen
Überprüfung ob eine Taste auf der Tastatur gedrückt wurde und wenn ja, dann die Taste vom Tastaturcontroler holen, den IRQ 1 wieder anschalten, den Tastaturpuffer leeren, zurück in den Textmode(3) schalten und die Anwendung beenden und wenn keine Taste gedrückt wurde, dann erfolgt ein Sprung zum Anfang der Hauptschleife

Ausgabe der Fehlertexte mit Rücksprung zu DOS, wenn ein Fehler aufgetreten ist

GDT für den Protected Mode
Unterprogramm das den 16 Bit-Unrealmode anschaltet
Unterprogramm das ein Ball zeichnet
Unterprogramm das vom Bildschirminhalt eine Sprite-Tabelle(Offset,Farbe...) anlegt
Unterprogramm das von jedem Bildschirmzeilenanfang eine Offset-Tablelle am Anfang des Datenbereiches anlegt

Beginn des Datenbereiches
Offset-Tablelle jeder Bildschirmzeile
Positionstabelle der zu bewegenden Bälle
Stepper-Tabelle für die Anzahl der Pixel die jeder Ball horizontal und vertical bewegt wird
Richtungstabelle die bestimmt in welche Richtung bewegt wird
Sprite-Tabelle (Offset, Farbe...) die den Inhalt des Bildschirms enthält (ein Ball wurde gezeichnet)
Aktuelle Bildschirmadresse die angibt wohin gezeichnet wird, wird je nach buffer gewechselt
Anzahl Bytes des Bildschirms
Maximale Bildschirmadresse
Platz zum Zwischenspeichern vom SI-Register
Verwendete Hintergrungfarbe für das Löschen der Bälle
Parameter zum Berechnen eines Kreises
EDID-Tabelle der Monitorinformationen
Tabelle für VESA-Info
Tabelle für Mode-Info
CRTC-Parameter-Tabelle für Vesamode mit eigener Refreshrate
Flag für tripple buffering
Fehlertexte

Stackbereich (16 Byte genügen für diese Anwendung, wenn für DOS selber ein genügend grosser Stack bereits vorhanden ist.)

Dirk
« Letzte Änderung: 20. January 2011, 12:29 von freecrac »

marantis

  • Beiträge: 2
    • Profil anzeigen
Gespeichert
« Antwort #25 am: 21. June 2011, 23:23 »
Alle hier genannten Links unterhalb von http://www.8ung.at/paulhaerle/ sind entweder 404 not found oder vorbidden!

bitte korrigier das mal, damit die neulinge auch "mitlesen" können. :cry:

danke
marantis

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #26 am: 22. June 2011, 00:00 »
Lieber Dirk,

erstens: Sechs Jahre alte Themen belebt man nicht wieder, es sei denn, man hat einen ganz speziellen Grund. Sonst macht man einfach ein neues Thema auf, dann gibts auch wenig Aufreger.

zweitens: seitenlange Codelistings (zumal in Assembler) bringen nichts. Das hatte ich dir schonmal versucht zu erklären. Besonders ausgeschrieben bringen die gar nichts. Dann lade sie lieber bei Rapidshare hoch und verlinke sie oder stelle sie ins Wiki.

drittens: DOS-Anwendungen bleiben DOS-Anwendungen. Die gehören inhaltlich nicht zum OS-Development und insbesondere nicht zum Thema "Tutorial".

Gruß,
Sebastian

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #27 am: 22. June 2011, 00:22 »
@Svenska: Deine Antwort ist aber auch nicht gerade zeitnah ;)

@marantis: Vermutlich ist der Autor bereits seit Jahren in den Unweiten des Internet verschollen. Vielleicht hat ja unser Wiki, das was du suchst. http://www.lowlevel.eu/wiki/VBE
Dieser Text wird unter jedem Beitrag angezeigt.

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #28 am: 22. June 2011, 00:23 »
Nachdem ich als Autor "TeeJay" gesehen hatte, hab ich nur noch das Jahr beachtet. Sorry dafür. ;-)

freecrac

  • Beiträge: 86
    • Profil anzeigen
Gespeichert
« Antwort #29 am: 22. June 2011, 09:23 »
Alle hier genannten Links unterhalb von http://www.8ung.at/paulhaerle/ sind entweder 404 not found oder vorbidden!

bitte korrigier das mal, damit die neulinge auch "mitlesen" können. :cry:

danke
marantis

Die Doku zum VBE(vbe3.pdf) holt man sich am besten direkt von vesa.org(registrieren und einloggen).
Vesa Public Standards Download Registration: https://fs16.formsite.com/VESA/form714826558/secure_index.html

Ein "Vesa.doc" habe ich hier gefunden:
http://www.google.de/url?sa=t&source=web&cd=36&ved=0CD0QFjAFOB4&url=http%3A%2F%2Ft0ast3r.t0.ohost.de%2Fknow%2520how%2Fvesa.doc&ei=-SDITa62MtCKswbc_fD6Dg&usg=AFQjCNHx2Sv4EFl6t57q0E_cIwCHfehbKA

Das von mir geschriebene Vesa-Demo(mit Quellcode für MASM5) kann man von meiner Hompage herunterladen: http://www.alice-dsl.net/freecracmaps/Tool/Neutrip.zip

Dirk
« Letzte Änderung: 22. June 2011, 10:06 von freecrac »

freecrac

  • Beiträge: 86
    • Profil anzeigen
Gespeichert
« Antwort #30 am: 22. June 2011, 09:51 »
Lieber Dirk,

erstens: Sechs Jahre alte Themen belebt man nicht wieder, es sei denn, man hat einen ganz speziellen Grund. Sonst macht man einfach ein neues Thema auf, dann gibts auch wenig Aufreger.

zweitens: seitenlange Codelistings (zumal in Assembler) bringen nichts. Das hatte ich dir schonmal versucht zu erklären. Besonders ausgeschrieben bringen die gar nichts. Dann lade sie lieber bei Rapidshare hoch und verlinke sie oder stelle sie ins Wiki.

drittens: DOS-Anwendungen bleiben DOS-Anwendungen. Die gehören inhaltlich nicht zum OS-Development und insbesondere nicht zum Thema "Tutorial".

Gruß,
Sebastian
Huch habe ich ein Dejavou, oder waren diese beiden Themen "alte Threads wieder aufwärmen" und "lange Listings" nicht schon lange und bereits zufriedenstellend abgehandelt?

Um es noch einmal deutlich zu machen: Ich wärme dieses Thema nun nicht wesentlich mehr auf, als du selber es mit deinem erneuten Posting, auf das ich nun antworte, gerade getan hast.

Ich bin mit dem Thema VESA doch auch gar nicht angefangen, auch wurde bis zu meinem ersten Posting zu diesem Thema es noch gar nicht erwähnt, dass dieses Thema überhaupt gar nicht (mehr) erwünscht ist. Auf Grund der erneuten Beteiligung an diesem Thema gehe ich allerdings jetzt davon aus, dass hier doch ein gewisses Interesse vorhanden ist und auch weiterhin besteht. Auch sind die von mir verwendeten Vesafunktionen nicht alleine nur auf DOS beschränkt, denn jeder Entwickler eines RM-OS, oder auch eines RM-Bootmanagers kann die relevanten Teile aus meinen Vesa-Demo herausnehmen und ebenfalls für sich verwenden. Mir erschien es aber zweckmäßig für die Demonstration hierbei DOS zu verwenden, um die genaue Funktionsweise auf eine einfache und relativ leicht verständliche Weise darstellen zu können.

Dirk
« Letzte Änderung: 22. June 2011, 10:13 von freecrac »

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #31 am: 22. June 2011, 11:27 »
Huch habe ich ein Dejavou, oder waren diese beiden Themen "alte Threads wieder aufwärmen" und "lange Listings" nicht schon lange und bereits zufriedenstellend abgehandelt?
Ja, daher entschuldige ich mich dafür - ich hatte nur aufs Jahr geachtet, nicht auf den Monat.

 

Einloggen