Hm, das sieht mir doch recht kompliziert aus. Allerdings ist das schonmal ein Anfang.
Der einzige Unterschied zu C ist, daß man die system.pas braucht. Ansonsten ist das das normale Vorgehen für einen mit GRUB zu ladenden Kernel.
Genau system.pas fehlt bei mir (TP 5.5).
Mein System soll halt auf echten 286ern laufen; da ist Freepascal also ne schlechte Wahl. Vielleicht ein (älteres) Turbo Pascal...?
Wäre sicher möglich, TP erzeugt 16-Bit-Code. Die Frage ist nur, ob du es hinbekommst, für TP eine system-Unit zu schreiben.
Genau daran scheitert es zur Zeit. Die system.pas enthält also sozusagen die Runtime-Umgebung bzw. die Funktionsbibliothek?
Ich denke nicht, daß das sonderlich gut dokumentiert ist, wenn es überhaupt geht. Und ohne eigene system-Unit, die auch ein bißchen Compiler Magic enthält, bist du auf dem Stand von C und kannst deinen Kernel gleich damit programmieren.
Was ich gerade vermeiden wollte.
Achja: Das alles ist wie gesagt Compiler Magic, also hochgradig FP-spezifisch und nicht allgemein bei allen Pascal-Compilern so.
Das ist schlecht.
Mit ld habe ich noch nie gearbeitet, was tut der denn?
Das ist ein Linker, der die Objektdateien zu einer ausführbaren Datei zusammenlinkt.
Soweit war ich schon
Also enthalten die Objektdateien noch keine Referenzen auf die endgültigen Speicheradressen, sondern nur relative Speicherbezüge? Und die werden dann endgültig, wenn man das linkt?
Mein Problem mit GRUB ist, dass der höchstwahrscheinlich ein 32-Bit-System voraussetzt (wie Linux auch) und daher für mein "Projekt" nicht geeignet ist.
Ich werd mal bisschen weiter suchen und vielleicht was finden.
edit: Ich habe etwas gefunden.
Es gibt zwar keine system.pas, aber sämtliche sprachrelevanten Teile (und auch diverse andere Units, wie z.B. die berüchtigte crt) finden sich in der TURBO.TPL, allerdings in kompilierter Form. Es gibt diverse Patches für diese Datei, um den Runtime Error 200 zu umgehen (auf schnellen [> 200 mhz] Rechnern) und irgendwo findet sich bestimmt noch ein Quelltext dafür.
Mein anderes Problem ist jetzt der 16-Bit Protected Mode. Wenn ich den Kernel in irgendeiner Form lade und ausführe, muss dieser ja darauf vorbereitet sein. Erzeugt Turbo Pascal jetzt PM-tauglichen Code oder nicht? Wenn nicht, ist das Projekt - wieder einmal - gestorben. Weiß da jemand was?
noch nen edit: Ich glaube, das wird nix. Das einzige Beispiel, was ich in der Richtung gefunden habe, bestand zum größten Teil aus Inline-Assembler. Da kann ich das auch komplett erledigen. Trotzdem danke dir für die Informationen.
Gruß,
Svenska