Ein kleines Demo-16Bit-OS



  • MaSTaH schrieb:

    Also soweit ich weiß emuliert Bochs die ganze Maschine.

    Ack, so ist es. Sprich lädt auch nur wie ein BIOS an 0x7c00 und sprignt dorthin.



  • Es muss aber an dem myOS liegen, weil mit der selben Konfiguration konnte ich z.B. eben ein auf Floppyformat abgespecktes FreeBSD laden.



  • Vielelichtauf irgendwas implementation-dependent nicht beachtet. So wie dass nicht immer an 0:7c00 gesprungen wird, sondern manchmal auch 07c0:0 (genau das hat mich mit Bochs mal einige Zeit gekostet *G*)



  • So wie dass nicht immer an 0:7c00 gesprungen wird, sondern manchmal auch 07c0:0 (genau das hat mich mit Bochs mal einige Zeit gekostet *G*)

    ist doch das gleiche... 0h:7c00h = 07c00h = 07c0h:0 = 07c00h ich sehe da kein Problem 🙂 Außerdem hat Bochs ja noch diese schöne Menueconfig!

    MFG

    LordHoto



  • CrazyLinux schrieb:

    ist doch das gleiche... 0h:7c00h = 07c00h = 07c0h:0 = 07c00h ich sehe da kein Problem 🙂 Außerdem hat Bochs ja noch diese schöne Menueconfig!

    Jein, wenn man Adressen im Bootsektor benutzt (für Strings z.B.) ists garnicht mehr so das gleiche, wenn man real bei 0:0x7c00 ist, aber davon ausgeht, dass der Bootsektor bei Offset 0 anfängt 🙂



  • Was würde das für den Code bedeuten? Wie müsste ich die Zeile ändern?

    mov ax, 0x07C0	   ; init stack
    


  • TriPhoenix schrieb:

    CrazyLinux schrieb:

    ist doch das gleiche... 0h:7c00h = 07c00h = 07c0h:0 = 07c00h ich sehe da kein Problem 🙂 Außerdem hat Bochs ja noch diese schöne Menueconfig!

    Jein, wenn man Adressen im Bootsektor benutzt (für Strings z.B.) ists garnicht mehr so das gleiche, wenn man real bei 0:0x7c00 ist, aber davon ausgeht, dass der Bootsektor bei Offset 0 anfängt 🙂

    jmp 0x7c00:init <-- so kann man das auch lösen 😉

    MFG

    LordHoto



  • Auf die einfachste Loesung scheinen die OS-Bastler irgendwie immer als letztes zu kommen genauso wie sich krampfhaft dieses wiederliche cli/sti beim initialisieren des Stacks haelt. 🙄
    Setzt doch die Segmentregister nicht nach cs, sondern schiebt einen fixen Wert rein. 😉



  • Komisch,

    hab den quellcode neu assmebbliert.kommen immer fehler.
    warum?



  • Hat sich erledigt!



  • hi!
    hast du schonmal probiert mit C weiterzucoden?kannst dann TurboC verwenden, is kostenlos, ich selber arbeite grad an meinem 32bit os.



  • Also von weiterarbeiten kann keine rede sein, da ich den kernel komplett neuschreiben dürfte, um ihn 32bit arbeitend zu bekommen.
    Aber nur mal so ne frage: Wieso TurboC? Ich habe Version 3.1 und der compiliert zu 16bit. Ich habe zwar schon versucht mit dem weiterzumachen, aber irgendwie definiert der das COFF-Format anders als der Flatassembler: Ich kann nicht linken.


Anmelden zum Antworten