Beiträge von Klebestreifen

    Ist ja in Ordnung. Lowlevel.eu kenne ich bereits. Habe dort nur leider nichts Genaueres zu diesem Thema gefunden. Ich habe nur die Subroutinen die für das laden der Diskette verantwortlich ist gepostet. Diese Routine ist jedoch erst einmal nur ein Prototyp der sobald das Problem gelöst ist weiter ausgebaut und verbessert wird.
    Da ich tatsächlich nicht absichtlich den Protected-Mode aktiviert habe muss ich deiner antwort zu folge durchaus im Real-Mode sein.


    Es gibt nen guten grund dafür, dass ich mir keinen eigenen Bootloader baue..

    Hast du mal ein paar Details?

    Programmiersprache?
    Prozessor?
    Realmode/Protected Mode?
    Du rufst da das BIOS auf? Den Luxus hab ich nicht.. (Protected Mode, noch keinen VM86-support)

    ...Assembler (NASM)
    ...x86-Prozessor (Standard-Computer)
    ...Ich glaube Realmode. Kann ich aber nicht sicher sagen.


    Das sieht mir eher nach einer Art Bootloader aus, aber kein Betriebssystem, oder?

    Mir fehlen da grundlegende Dinge, wie IDT, GDT, Paging, Sheduler, Multitasking und Multithreading ;)

    Ich sagte ja auch das es ein Bootfähiges System ist und versuche die Bezeichnung als „Betriebsystem“ noch zu vermeiden da (noch) nicht die von dir genanten Funktionen enthalten sind. Ich jedoch frage mich woher du das weist? Wobei du nicht einmal den kompletten Code kennst… ;)

    Sehr geehrte WINHISTORY-User,
    Ich bin ein Hobbyprogrammierer und besonders „Spaßig“ finde ich das programmieren von bootfähigen Systemen (Betriebsystemen). Nur bin ich auch da noch eine Art Anfänger. Somit weis ich bei der Assemblerprogrammierung nicht wie man korrekt von Datenträgern, in meinem Fall Disketten, liest und frage daher euch ;)
    Mein Problem: Ich möchte, da ich mein System nicht nur sechs Sektoren groß sein soll, die komplette Diskette in den Arbeitsspeicher laden. Doch schon beim tüfteln an einer Subroutine die die ersten 3 Spuren lädt scheitere ich.
    Spur 1 und Spur 2 werden korrekt geladen doch bei Spur 3 scheitert es.
    Hier erstmal der Code:

    Die Subroutine „load3“ ist dabei das Sorgenkind und lädt leider nicht das, was sie soll. Aber warum nicht? Diese Subroutine lädt irgend etwas aus dem freien Speicher der Diskette was ich daran erkenne das jede menge ‚F6’-Bytes in den Arbeitsspeicher geladen werden wo eigentlich der weiterführende Code des Kernels hin sollte. :/
    Wie kann ich dafür sorgen das die 3. Spur die ich möchte geladen wird?

    Zusammenfassend: Ich habe ein Image geschrieben welches auf Diskette formatiert wird (oder halt mit Bochs emuliert wird) welches sich beim booten in den RAM laden soll (nur der Bootsektor soll aber draußen bleiben). Die Test-Subroutine lädt jedoch ab spur 3 vom falschen Ort. Was ist der Fehler an der Subroutine?

    Danke im Voraus!
    Mit freundlichen Grüßen euer Klebestreifchien.

    PS.: Dieser Thread wurde hierher verschoben weil Thema treffender ist!

    EDIT: Habe hier noch schnell Korrekturen am Code vorgenommen. Funkt aber immer noch nicht, ist aber richtiger als vorher!