Lowlevel

Lowlevel => OS-Design => Thema gestartet von: Christian am 20. September 2008, 22:42

Titel: Wie weiter?
Beitrag von: Christian am 20. September 2008, 22:42
Hallo,
 ich bin dem Tutorial von Lowlevel gefolgt, und nun habe ich hier ein kleines OS, welches einen String ausgibt, mich willkommen heißt, und den Rechner neustartet. So siehtder Source momentan aus:
boot.asm:   http://nopaste.tshw.de/1221943033fff02/ 
kernel.asm: http://nopaste.tshw.de/1221943080fff02/   

Wie mache ich jetzt weiter?
Hört sich komisch an, ist aber so  :-D.

Grüße,
Christian
Titel: Re: Wie weiter?
Beitrag von: jgraef am 21. September 2008, 01:33
http://lowlevel.brainsware.org/wiki/index.php/OS-Dev_f%C3%BCr_Einsteiger#Hello_World_und_weiter
Titel: Re: Wie weiter?
Beitrag von: Christian am 21. September 2008, 11:30
Hallo,
http://lowlevel.brainsware.org/wiki/index.php/OS-Dev_f%C3%BCr_Einsteiger#Hello_World_und_weiter
der Code ist doch bereits fähig, einen String('Welcome to OS 0.01') auszugeben?

Christian
Titel: Re: Wie weiter?
Beitrag von: kevin am 21. September 2008, 12:16
Dann lies ein paar Sätze weiter, bis du an einer Stelle bist, die du noch nicht hast.
Titel: Re: Wie weiter?
Beitrag von: Christian am 21. September 2008, 18:35
Aktueller stand des Kernels:http://nopaste.tshw.de/1222015786c42c8/
Allerdings bin ich mir nicht sicher, ob ich das erste Interrupt (s. Ausgabe 3), bzw. das Makro richtig verwendet/plaziert habe. Könnte mir hier jemand Weiterhelfen?
Titel: Re: Wie weiter?
Beitrag von: chris12 am 21. September 2008, 20:46
du must dein int noch in der idt, glaub ich so heißt das, registrieren sonst kannst du es nicht verwenden und wenn du das gemacht hast kannst du eig den putstr call rausnehmen.
Titel: Re: Wie weiter?
Beitrag von: bluecode am 22. September 2008, 04:56
Int 0x21 sollte ein DOS-Interrupt sein, welcher natürlich nicht in einem eigenen Bootloader/Kernel verfügbar ist. Du kannst da nur BIOS-Interrupts verwenden.
Das ist Realmode-Code, da heißt das Ding IVT (nicht IDT) = Interrupt Vector Table. Dort stehen die cs:ip Adressen drin, die ein spezifischer Interrupt aufrufen soll. Da schreibt dann DOS zB den Interrupt 0x21 rein und hat dann auch einen Handler für diesen Interrupt, da DOS aber nicht geladen ist, kommt da nichts bei raus.