Kleine Frage und Bitte :)
-
Hi,
ich hab mir aus Infos aus dem Netz einen Kernel gecodet (kann nur textausgeben) und würde gerne ein paar Profis dazu hören, aber erstmal den code:
// D E F I N I T I O N E N ///////////////////////////////////////////////// unsigned short *videomem; // Pointer zum Video-Speicher unsigned int pos; // position, wird benutzt wie X Position unsigned int off; // offset, wird benutzt wie Y Position // P R O T O T Y P E N ///////////////////////////////////////////////////// void clear (void); void write (char*); void put (char); // F U N K T I O N E N ///////////////////////////////////////////////////// void clear (void) { for(unsigned int i = 0; i < (80*25); i++) { videomem[i] = (unsigned char) ' ' | 0x0700; } pos=0; off=0; } void write(char *cp) { char *str = cp, *ch; for (ch = str; *ch; ch++) { put(*ch); } // wird später ersetzt durch das hier // while((*cp) != 0) put(*(cp++)); } void put(char c) { if (pos >= 80) { pos=0 ; off += 80 ; } if (off >= (80*25)) { // Später wird der Screen 1 runter gesetzt, doch // jetzt reicht noch die clear funktion clear(); } videomem[off + pos] = (unsigned char) c | 0x0700; pos++; } // K E R N E L ///////////////////////////////////////////////////////////// int main (void) { // Initialisiere den Videospeicher und setze Textpositionen pos=0; off=0; videomem = (unsigned short*) 0xb8000; write ("Hallo! Ihr da!"); write ("Ich bin hier!"); return 0; }
Ist nicht viel sollte aber reichen um einen Text auszugeben, ich konnte den code bis jetzt leider nicht compilieren, da ich keinen Compiler wie DJGPP momentan auf der HDD habe (frisch formatiert), drum hätte ich eine Bitte an jeden der einen guten C compiler hat:
Bitte testet mal meinen Kernel
Und nun zu meinen Fragen:
1. Läuft der Code bei euch?
2. Läuft der nur im RM oder auch im PM?
3. Wenn euch eine verbesserung einfällt bitte bitte sagen wasSchon mal ein mega dickes Danke im voraus an alle die Testen bzw. zeit/lust/laune dazu haben und alle die mir die 3 Fragen beantworten
edit:
Achja, noch eine Frage: gibt es in ASM einen gewaltigen unterschied zwischen ++i und i++? Wenn ja welchen? oder ist das egal?Gruß,
Patrick