Ziel: Höheraufgelöster Text mit Grafik-Ausgabe
-
Es wurde der Wunsch geäußert, Grafik als Basis für eine höher aufgelöste Textausgabe einzusetzen.
Soweit wir das sehen, geht der Weg über VM86 und VBE (VESA BIOS Extensions). Der Kernel sollte bei 0x100000 (früher 0x40000) bleiben dürfen.
Literatur:
http://wiki.osdev.org/Virtual_Monitor
http://osdev.berlios.de/v86.htmlVirtual 8086 mode provides a handy way of running 16-bit real mode code under a 32-bit OS. It may seem a bit of a hack on top of normal protected mode, but it was designed to be easy and non-disruptive to add to an existing kernel.
http://en.wikipedia.org/wiki/VESA_BIOS_Extensions
http://wiki.osdev.org/VBE
http://en.wikipedia.org/wiki/VESAKonkretes Beispiel: http://git.tyndur.org/?p=tyndur.git;a=blob;f=src/kernel/src/vm86.c;h=08aec99fd6c69d8437e7802397a908ed2ab10707;hb=HEAD
-
Einstieg für VM86:
- 0-500h und A0000h - FFFFFh read/write für ring3 (paging.c)
- COM-Programme (org 0x100) mit BIOS-INTs via incbin (data.asm) im kernel laden und nach 0x100 schieben
- task.c um createVM86task(...) funktion erweitern
- irq.c zeile 114 um if (r->int_no == 13) erweitern, umlenkung auf vm-handler in vm86.c
-
hat alles geklappt: http://www.c-plusplus.net/forum/viewtopic-var-t-is-254893-and-start-is-640-and-sid-is-d749982c7d62cc4c4caf590e8687c802.html
-
Ich empfehle, dies hier zu lesen, ist ganz interessant und zeigt auch, wie man z.B. Kreise und Linien macht, alles in C.
http://www.brackeen.com/vga/index.html
(Maus haben wir schon, da gilt der Teil für uns nicht^^, bitte beachten, dass unser Maus Y immer ins negative gedreht werden muss wenn der Ursprung oben links ist!)Auf Wunsch von "somone" aus dem IRC füge ich folgenden Link hinzu:
http://de.wikibooks.org/wiki/Interrupts_80x86/_INT_10
-
Nachdem vm86 halbwegs stabil läuft für versuche:
http://wiki.osdev.org/Getting_VBE_Mode_Info
http://wiki.osdev.org/How_do_I_set_a_graphics_mode
http://www.ctyme.com/intr/int-10.htm
http://forum.osdev.org/viewtopic.php?f=1&t=19113screenshot: http://www.henkessoft.de/OS_Dev/Bilder/0_0_1_43_vm86_grafik.PNG
-
Heute erstmalig zwei 256-Farben-Bilder (bmp-Format) mit korrekter Palette und Geometrie.
Hardware Level VGA and SVGA Video Programming Information Page
VGA Functional Index: http://www.osdever.net/FreeVGA/vga/vgafunc.htm
-
Ich habe in qemu das Schalten in den VESA-Textmode mit 132×60 versucht, klappte leider nicht.
-
Hallo!
Ich verfolge nach wie vor ein bißchen die Entwicklung von PrettyOS.
Ich habe im Internet eine interessante Seite gefunden, die für die
Programmierung der Grafikkarte und anderer elementare Dinge außer-
gewöhnlich viele Informationen enthält:http://www.gamedev.net/reference/articles/article1698.asp
Vielleicht kennt ihr sie ja noch nicht. Weiterhin viel Erfolg für euer Projekt.
mfg
user123
-
vbe beherrschen wir inzwischen schon ganz gut.