Problem beim Setzten von Pixeln
-
0xB8000 meinte ich natürlich, aber die Wikipedia-Angabe wird schon korrekt sein. paging o.ä. hast Du aber nicht, oder?
Du musst irgendwie prüfen, ob die Funktion überhaupt aufgerufen wird. Leg den Code doch mal in die main, und guck was passiert.
-
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.