Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Themen - B.G.

Seiten: [1]
1
tyndur / [S] Bootloader-Source
« am: 13. February 2006, 14:23 »
Also, wo bekommt man den Source des Bootlaoders von LOST. Im SVN-Res findet sich nur ein Image, welches auch in der makfile geschrieben wird. Den Link aus dem alten Thread (im Magazin-Forum) hab ich auch versucht und die Datei ist offline. Also wenn jemand den Source hätte würde ich ihn mir gerne mal ansehen.
2
Lowlevel-Coding / Kernel (Grub) Bildschrimschreiben...
« am: 03. July 2005, 17:13 »
Ich habe ein Problem. Wenn ich mit meinem Kernel den ich von Grub laden lasse versuche auf den Bildschirm zu schreiben kommen nur seltsamme Zeichen dabei raus.

Hier der Code zum Schreiben:


void puts(char *_msg)
{
  int i;
  int pos = 0;
  for (i=0; _msg[i] != '\0'; i++)
  {
    if (_msg[i] == '\n')
    {
       cury++;
       curx=0;  
    }
    else if (_msg[i] == '\r')
    {
      curx=0;
    }
    else
    {
      pos = (cury*80 + curx)*2;    
      videomem[pos] = _msg[i];
      videomem[pos+1] = color;
      curx++;
      if (curx >= 80)
      {
        cury++;
        curx=0;
      }
      if (cury >=25)
      {
        clear_screen();
      }
    }
  }
  move_csr();
}


Ich versteh echt nicht wo da der fehler liegt. Testen tu ichs auf nem i686er im PM (kalr, ist ja von Grub geladen...)

Edit: Schon gut, diese Teile hab ich aus dem alten Kernel von mir übernommen. Bei dem Blick ich nur dummerweise nicht mehr durch da ich alles in nur 3 Dateien gestopf habe (Main: nur Main Funktion, Konsole: Ne Console, System: ALLES andere...). Damals hatte ich seltsamme angewohnheiten... (u.A, Windows zu verwenden und Includes mit "#include "Include\xx.h"" einzubinden anstatt -i beim gcc zu nutzen...
3
Also, letztens dachte ich mir ich könnte ja mal ausprobieren wo mein Kernel denn mitlerweile schon überall läuft. Auf dem PC Meiner Schwester (386 450MH 128MB Ram) läuft das ganze ohne Probleme. Auf meinem 686er läuft es nicht, wobei ich damit auch nicht wirklich gerechnet habe. Dann dachte ich mir ich könnte es mir auf meinem Laptop anshene (268? 386? kA. 333MH 32MB Ram), und ich musste zu meiner wirklichen verwunderung feststellen das es nicht lief. Nach langem rumprobieren kam ich darauf das es ab der Console nicht mehr lief, das hiese IDT und das Zeug läuft (Bildschirmausgabe auch). Wenn ich den Befehl zum starten der Console ausklammere läuft es. Also wollte ich mal eben ne billig Konsole erstellen und bemerkte das es nicht an der Konsole lag sondern an der Schleife. Ich habe bisher immer

while(1==1)
{

}

verwendet, doch auch bei

for(;;)
{

}

funktioniert nichts. Das Teil zeigt mir (meinen selbstentwickelten BlueScreen) an und zwar mit isr13 (ist afaik "Page-Fault"). Seltsammerweise hab ich aber garkein Paging drin. Hatte jemand von euch schon mal so ein Problem?
4
Lowlevel-Coding / Wie Programme ausfürhen?
« am: 19. April 2005, 18:21 »
Jetzt wo ich im PM meinen Keyboard-Input ganz gut drin hab...

[Bild]
und die Konsole auch läuft wollt ich fragen was als nächstesn "kommt". Wahrsacheinlich wohl Programme laden, oder? Im PM benötige ich dazu also einen Floppy-Driver und dann halt n' Loader. Also, erzählt mal was denkt ihr was die "richtige" Abfolge zum Kernel-Bau ist.

Bis jetzt kam ich so vorran:

1: RM-Kernel
2: RM-Console
3: RM-Zeug löschen, PN Sprung.
4: IDT
5: IRQs
6: Keyboard-Treiber
7: Console

Edit: [Titel geändet]
Hab noch ne Frage an euch. Wenn ihr Proggs schon drin habt, macht ihr ein eigenes Format oder haltet ihr euch an die POSIX-Regeln?
5
Also, ich programmiere im PM und habe nun nach dem 2. Versuch (Beim ersten [~2,5 Stunden Versuch] hab ich mir letztendlich den Code zerschossen) geschafft meine eigenen IDT anzulegen (direkt aus dem PM herraus) und mit einträgen zu füllen.

Dafür hab ich mir fürs Keyboard das hier gecodet:

void irq_1(void) // Keyboard
{
  printf("Keyboard!");
}

Funktioniert auch im Grunde wunderbar und tut was es soll. Einen Text ausgeben bei Tastendruck. Allerdings nur ein mal. Drücke ich auf eine Taste wird der Code ausgegeben. Lass ich los und drück wieder kommt nichts.

So habe ich zwei Fragen:
1. Was muss ich tun um es beim 2. Mal auch zum Funktionieren zu bringen?
2. Wo bekomm ich letztendlich den Scancode der gedrückten Taste her?
Seiten: [1]

Einloggen