WinFuture-Forum.de: Svga Programmierung - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Svga Programmierung


#1 Mitglied ist offline   seblanger 

  • Gruppe: aktive Mitglieder
  • Beiträge: 333
  • Beigetreten: 12. August 04
  • Reputation: 0
  • Wohnort:Hunteburg
  • Interessen:Programmieren, vorzugsweise in Assembler

geschrieben 17. März 2005 - 14:46

Hallo,
ich habe mir einen eigenen 32-Bit Bootloader und einen Kernel geschrieben, nun würde ich gerne die SVGA Funktionen programmieren. Wie geht das im protected-mode? danke! Gibts dazu vielleicht ein tutorial oder so?
Ich weiß ja schon, dass der Grafikspeicher beim Videomodus an A000 sitzt. Nur was kann ich da für Befehle reinschreiben um z.b. die Auflösung zu ändern oder ähnliches? Achja, es geht um Assembler.

Dieser Beitrag wurde von seblanger bearbeitet: 17. März 2005 - 19:48

0

Anzeige



#2 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 17. März 2005 - 23:49

Was du suchst ist das VESA Protected Mode Interface, eine Detailbeschreibung findest du in der INTER45?.ZIP von Ralf Brown's Interrupt List.

Typischerweise füllt man AH mit 0x4Fh, AL mit der Unterfunktion (00h = GetInfo), CX mit "VESA", ruft Int 10h im Realmode auf und erhält einen Pointer auf eine Struct, wo die Infos drinstehen (Versionsnummer, Name der Karte, unterstützte Modi). Wenn die Versionsnummer 2.0 oder höher ist (2.1 oder 3.0), dann packt man "VBE2" in CX und ruft nochmal auf, in der erweiterten Struct findet man dann Pointer auf die Protectedmode-Routine des Grafikbios, mit der man sich den Int-Aufruf zukünftig sparen kann. Ansprechen kann man den Grafikspeicher entweder in 64K-Segmenten mit einer Umschaltfunktion oder als lineares Segment, letzteres muss man allerdings ebenfalls erst einstellen, die Unterteilung ist entweder Byteweise (256 Farben), Word-weise (32K o. 64 Farben, 5:5:5 bzw. 5:6:5 Bits), 3Byte-weise (16M Farben, klassisch) oder DWord-weise (16M Farben, aligned, A:R:G:B), zeilenweise von links nach rechts, oben nach unten. Man kann auch außerhalb des sichtbaren Bereiches schreiben und dann per Funktion den Beginn des Speicherbereiches, der anzeigt werden soll, festlegen und kann damit entsprechend Flipping machen. Mit VESA 3.0 hast du zudem (nur direkt aufrufbare) Funktionen, die BitBlt u.ä. unterstützen.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#3 Mitglied ist offline   seblanger 

  • Gruppe: aktive Mitglieder
  • Beiträge: 333
  • Beigetreten: 12. August 04
  • Reputation: 0
  • Wohnort:Hunteburg
  • Interessen:Programmieren, vorzugsweise in Assembler

geschrieben 18. März 2005 - 17:55

Hmm...Eine direkte Hardware Programmierung über I/O Ports, so wie ich es bei der seriellen/parallelen Schnitstelle oder den Festplatten und CD-Rom Laufwerken mache geht nicht? Ich meeine müste doch, oder? Ich kann ja jede Hardware über I/O steuern, warum nicht die Grafikkarte? Danke!
0

#4 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 18. März 2005 - 20:09

Es gibt keinen einheitlichen Befehlssatz bei den verschiedenen Grakas, jeder Hersteller backt da sein eigenen Küchlein und dokumentiert nahezu nix. Die Lösung war halt, daß man die Grundfunktionen vom Hersteller über einen einheitliches API einblendet, indem man ein zusätzliches kleines BIOS, das Teil des Graka-BIOS ist, in die Upper Memory Area einblendet.
Wenn du selber direkt mit I/O programmieren möchtest, dann wirst du kaum mehr als 'ne S3 hinbekommen, oder halt diverse Treiber reverse-engineeren müssen. Ein Blick in die Source von X.Org sollte zumindest die Grundfunktionen einiger aktueller Grakas dokumentieren.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0