Autor Thema: Wie weiter?  (Gelesen 4591 mal)

Christian

  • Beiträge: 5
    • Profil anzeigen
Gespeichert
« 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


Christian

  • Beiträge: 5
    • Profil anzeigen
Gespeichert
« Antwort #2 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

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 21. September 2008, 12:16 »
Dann lies ein paar Sätze weiter, bis du an einer Stelle bist, die du noch nicht hast.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Christian

  • Beiträge: 5
    • Profil anzeigen
Gespeichert
« Antwort #4 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?
« Letzte Änderung: 21. September 2008, 18:52 von Christian »

chris12

  • Beiträge: 134
    • Profil anzeigen
Gespeichert
« Antwort #5 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.
OS? Pah! Zuerst die CPU, dann die Plattform und _dann_ das OS!

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #6 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.
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

 

Einloggen