Problem beim Setzten von Pixeln
-
Paging oder ähnliches habe ich nicht.
Ich habe nur diese eine Funktion.Ich hab den Code nun in meine main Funktion verlegt, aber noch immer das selbe Problem.
-
Für 0xb0000 bis 0xbffff: schau bitte hier: http://henkessoft.de/OS_Dev/OS_Dev1.htm#mozTocId483279
Es stehen also für jedes Zeichen auf dem Bildschirm im Speicher zwei Byte zur Verfügung: ein Byte für das Zeichen, ein weiteres Byte für die Attribute dieses Zeichens. Typischer Code:char* vidmem = (char*) 0xb8000; unsigned int i=0; while(i<(80*2*25)) { vidmem[i] = ' '; // Space (ASCII: 0x20) ++i; vidmem[i] = 0x07; // white on black ++i; };
Bei VGA in RM sieht das so aus:
typedef unsigned char byte; byte far *VGA = (byte far*)0xA0000000L; unsigned short offset; ... offset = x + 320 * y; VGA[offset] = color;
http://atschool.eduweb.co.uk/camdean/pupils/amac/vga.htm
hier: http://www.lowlevel.eu/wiki/VGA
unsigned char* VGA = (unsigned char*) 0xA0000; void setpixel(int x, int y, unsigned char color) { int offset; if(0 <= x && x < 320) { if(0 <= y && y < 200) { offset = 320*y + x; VGA[offset] = color; } } }
Deine Funktion sieht also gut aus, abgesehen von den fehlenden "Grenzkontrollen". Lies dort vor allem den Text über die Steuerung.
weitere Links:
http://www.brokenthorn.com/Resources/OSDevVga.html
http://en.wikipedia.org/wiki/VGA
http://www.mcamafia.de/pdf/ibm_vgaxga_trm2.pdf
-
Soviel ich von den oben genannten Links verstanden habe, kann man mit der Adresse 0xA0000 nur im RM ein Pixel zeichnen.
Aber wie fuktioniert es im PM?
-
Da hast Du Paging, schreibst also nicht einfach direkt an eine Speicherstelle. das ist alles komplizierter. Am besten schaust Du dir das in PrettyOS an. Wir haben dort Grafik implementiert. http://prettyos.de
-
Ich habe mir PrettyOs angesehen.
Wie aktiviert und benutzt man dort die Grafik?
-
-
Danke.
Die Maus funktioniert bei mir weder in Bochs noch in qemu richtig!
-
Maus kannst Du dir abschauen bei uns.
-
Hört sich eher so an, als würde sie in PrettyOS unter Qemu/Bochs nicht gehen. Kann ich allerdings nicht bestätigen, läuft hier gut unter Qemu.
-
@programmier-azubi: bitte gib deine Konfiguration möglichst genau an. Ob Du z.B. PrettyOS oder etwas Eigenes testest, ob in RM oder PM usw.