OS mit Pascal

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.
pluto
Lazarusforum e. V.
Beiträge: 7179
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

lustig !
du hast natürlich recht die sprungamrken sind nicht die Welt !
es ist nur ein praktische funktion !

ein betriebsystem habe ich auch schon versucht zu schreiben, aber aber gescheitert weil es mit Objekt pascal leider nicht geht !

dazu müste ich auf c bzw c++ umsteigen und das möchte ich nicht !

mal sehen ob ich eine IDE schreibe das weiß ich noch garnicht !
es ist halt ein traum/wunsch von mir... ich habe nicht die absicht meine IDE besser zu machen.... ich möchte einfach nur sehen wie was genau geht !!!
aber das ist ein anders Thema...

evlt. währe es sogar besser die vorhanden ide erstmal zu "verbessern" bevor ich eine eigene anfange *G*
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Nur so nebenbei es gibt n Betriebsystem in Objektpascal wenn ich mich recht erinnere sogar 2 wie kommst du drauf das das nicht geht ?!

http://www.homix-online.de/ da gibts sogar n tuturial n kernel in delphi zu schreiben
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10498
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »


pluto
Lazarusforum e. V.
Beiträge: 7179
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

seltsam vor einigen Jahren meinten welche von einem Delphi Forum das teile in c++ bzw. c geschrieben werden müssen oder so Ähnlich !

und der wegen der geschiehte mit dem Treibern.....
ich glaube wir weichen weichen von der eigentlichen Frage ab !
und sollten ab Beitrag Verfasst: 2/2/2007, 16:34 Titel: alles in ein neuen Thread verschieben !

edit:
d.h. nur der Bootloder müste in c(oder in Assembler) geschrieben sein und der rest nicht so wie ich das verstanden habe... !!
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

d.h. nur der Bootloder müste in c(oder in Assembler) geschrieben sein und der rest nicht so wie ich das verstanden habe... !!


bootsektor und bootloader ja
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7179
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ist ja sehr verlockend !
aber ich glaube das wird nicht, weil ich kein Assembler kann !
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

also Assembler zu lernen ist das kleinste Problem kann ich dir sagen. Solche intel nettikeiten wie das A20 gate sind da viel schöner :)
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

Die Behauptung man könne mit PASCAl kein BS programmieren hält sich seit Jahren penetrant. Falsch ist sie trotzdem, das liegt mehr am Linker als am Compiler. Die Linker von Borland, zumindest die von Delphi, können keinen verschiebbaren Code (.com) erzeugen. Dafür konnte man früher mal den Linker von C++ benutzen, der konnte das (war für PASCAL und C/C++ der gleiche nur als Profi-Version in einem extra-Paket).

Schließlich hat Herr Nicolaus Wirth damals mal eine PASCAL-Maschine mit dem schönen Namen "Lillith" geschrieben, da war PASCAL selbst das BS. Dabei sind ihm dann ein paar Unzulänglichkeiten von PASCAL aufgefallen und er hat MODULA 2 entwickelt. Das ist sehr PASCAL-ähnlich und kennt z.B. keine Funktionen sondern nur Prozeduren mit und ohne Rückgabewert. Das Modul-Konzept, wie es in ähnlicher Form heute von Delphi/FPC verwendet wird, stammte aus MODULA 2 und hilft beim entwickeln von BS.

Genau besehen muß man Wirth sogar die dynamisch ladbaren Object-Dateien (.dll, .so) zuschreiben. Sowas hat MODULA 2 damals auch schon unterstützt. Hätte Borland sich damals auf MODULA 2 gestürtzt anstatt auf PASCAL, wäre das heute der Renner und M2 ist eindeutig für die Entwicklung von BS konzipiert.

Inzwischen ist MODULA bei Version 4 angekommen und führt zu Unrecht ein Nischendasein. Es ist im Prinzip erheblich mächtiger als PASCAL und zudem eindeutig definiert. Bis auf if ... then ... else ..., das in keiner Sprache als DEA(Deterministischer Endlicher Automat) zu beschreiben ist, ist M2 vollständig durch reguläre Ausdrücke (rA -> NEA -> DEA) zu beschreiben. NEA ist zu lesen als, Nichtdeterministischer Endlicher Automat. Nach der Automatentheorie (siehe Dragon-Book) läßt sich für einen NEA auch ein DEA anführen (nicht immer), der DEA ist durch Mengentheoretische Operationen zu vereinfachen. Der DEA besteht dabei aus einem Startzustand und einem oder mehreren Endzuständen, dieses werden als besondere Zustände bezeichnet. Ansonsten können N + 1-Zustände auftauchen, wobei N die Anzahl der Symbole(Alphabet) einer definierten Sprache sind.

Also @pluto, wenn Du dich an ein BS wagen möchtest hast du jetzt ein paar Hinweise welche Litheratur du dir ansehen mußt. Dazu braucht es aber ein gerüttetes Maß an Mengenmathematischer Kenntnisse. Ansonsten solltest Du dich mit "lex" und "yacc" und regulären Ausdrücken befassen. lex erzeugt den lexikalischen Scanner für eine Sprache, yacc produziert mit Glück einen passenden Compiler für die Sprache.

Ein Hinweis gilt für alle Programmiersprachen, wenn das "pumping Lemma" auftaucht, dann funzt die Produktion des Sprachkonstruktes nicht und muß geändert werden (if ... then ... else ...; erzeugt das pumping Lemma), sowas muß man dann mit einem Kellerautomaten (FIFO, LIFO) in den Griff kriegen (auch im Dragon-Book beschrieben).

Das mit Lemma hat uns mal ein Prof mit Dilemma beschrieben, was auch der Wirklichkeit sehr nahe kommt...
Zuletzt geändert von schnullerbacke am Sa 3. Feb 2007, 13:39, insgesamt 2-mal geändert.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Beitrag von Euklid »

Du möchtest dir wirklich ein eigenes Betriebssystem programmieren? Ein Lebenswerk?

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Ich versteh mal wieder nicht wovon du redest was ist so falsch daran einen os kernel in ein normales executable zu packen ? man braucht keine .com
man bracuht lediglich nen loader der das entsprechende executableformat unterstützt. FreeDos macht das z.b. so die haben ne stinknormale exe als kernel. Ist nur n loader davor der die exe lädt, n grundlegenden memorymanager initialisiert und startet der kernel übernimmt dann den memorymanager und fortann ist alles in kernelhand.

warum muss man sich mit lexx und yacc für die bs entwicklung beschäftigen irgendwie bahnhof
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7179
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

nzwischen ist MODULA bei Version 4 angekommen und führt zu Unrecht ein Nischendasein. Es ist im Prinzip erheblich mächtiger als PASCAL und zudem eindeutig definiert. Bis auf if ... then ... else ..., das in keiner Sprache als DEA(Deterministischer Endlicher Automat) zu beschreiben ist, ist M2 vollständig durch reguläre Ausdrücke (rA -> NEA -> DEA) zu beschreiben.

was meinst du damit ? gibt es dort keine if Anweisungen ?

@Christian
ich habe mal gelesen, das, der Boot loder eine bestimmte Größe haben muss und nicht größer oder kleiner sein darf.

@schnullerbacke
Die Behauptung man könne mit PASCAl kein BS programmieren hält sich seit Jahren penetrant. Falsch

ja genau wie bei den Treibern aber ich muss doch den kernel als assembler Programm schreiben, sehe ich das richtig ? also geht das doch nicht !

meine frage ist ja ehrer kann ich ein OS Komplet mit pascal schreiben von bootloder bis zum Desktop ? bzw. sagen wir mal bis zum DOS Ähnlichen Modus

die idee ist nicht schlecht... aber ich glaube das währe mir zu aufwendig für alles selbst Treiber zu basteln:
Tastertur, Maus, Grafikkarte, Soundkarte, Netztwerkt, USB, einen eigenen speicher manger und so weiter..

evlt. sollte ich das eine BS mithelfen weiter zu entwickeln wenn ich denn Quellcode verstehe
das würde mehr sinn ergeben ! als noch ein neues anzufangen !

Die Absicht hatte ich gesagt frührer ich hatte sogar ein Team... aber irgenwie ist daraus dann doch nichts gewurden :(

Ich glaube ich sollte mich ehrer auf Projekte konzentieren die ich lösen kann und auch angebracht sind !

Aber die Möglichkeit ist schon intrisannt !!!
MFG
Michael Springwald

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

Man kann auch über die Antarktis von Hamburg nach München fahren, nur warum soll man. COM-Dateien geben ihre Adressen relativ an und lassen sich deshalb sehr einfach in den geschützten Speicher verschieben, man kann auch ne exe mit dem entsprechenden Handwerkszeug in eine com umwandeln.

Und lex und yacc vereinfachen das Verfahren einen Compiler zu schreiben drastisch, man beschreibt die Sprache als reguläre Ausdrücke und läßt lex und yacc darauf los (in dieser Reihenfolge), dann hat man den vollständigen Quellcode für Scanner und Compiler (allerdings meist in C). Warum denn immer das Rad neu erfinden.

Das läßt sich allerdings auch für andere Programmieraufgaben verwenden, so könnte man z.B. den Scanner für reguläre Ausdrücke bei einem BS-Tool mit lex (siehe LINUX bash) erzeugen lassen. Ähnliches läßt sich für Datenbank-Zugriffe und anderes machen. Man könnte mit yacc auch einen embedded-Compiler im BS verankern usw. usf..

lex und yacc werden in dem Zusammenhang auch immer unterschätzt, die taugen nicht nur für Compiler. Andersherum kann man auch behaupten, das ein BS ebenfalls eine Sprache ist, halt mit einem anderen Alphabet und einer anderen Sprache. So stellt sich ein Fahrkartenautomat als Kiste mit einem BS heraus, das als Alphabet Münzen und Geldscheine akzeptiert und die Sprache sind die möglichen Mischungen von Symbolen bis zum erreichen eines Fahrpreises.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Beitrag von Euklid »

pluto hat geschrieben:evlt. sollte ich das eine BS mithelfen weiter zu entwickeln wenn ich denn Quellcode verstehe
das würde mehr sinn ergeben ! als noch ein neues anzufangen !


Ich bin mir sicher, man könnte da viel bei lernen. Wenn man den Linux-Kernel verstanden hat, glaube ich kaum, dass es dann noch etwas bezüglich Computer gibt, was man nicht versteht.

pluto
Lazarusforum e. V.
Beiträge: 7179
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ja da hast du recht ! dann währe ich auch in der Lage ein eigenes betriebsystem zu schreiben *G*

Aber ich glaube das währe wirklich für mich ein Lebenswerk... die erste Version würde dann so in etwa 20 Jahren erscheinen evlt. später oder früherer.

dazu müsste ich erst ml c lernen(wieder) und Assembler(wahrscheinlich) und evlt. englisch dann währe das kein Problem...

Ach ja und denn Quellcode müsste ich auch noch finden...
MFG
Michael Springwald

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

@pluto

if ... then ... else... gibt es auch bei M2, es entzieht sich nur dem DEA und muß per Kellerautomat gescannt werden.

Treiber kannst du auch in PASCAL programmieren, die Zugriffsmöglichkeiten für die Hardware gibt es. Nur macht man das auch heute noch vornehmlich mit Assembler, weil sich halt immer noch ein paar Geschwindigkeitsvorteile ergeben. In den 80zigern mußten wir unsere Druckertreiber auch noch selbst schreiben, wenn man alle Möglichkeiten des Druckers richtig nutzen wollte, das gleiche galt für Geräte die an der seriellen Schnittstelle hingen. Interrupt-Handling hast du auch heute noch in jeder halbwegs brauchbaren Programmiersprache, damit kannst du die Hardware erreichen und eben auch Treiber und ähnliches programmieren.

Ein BS ist ja letztlich kaum etwas anderes als eine Ansammlung von Treibern.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

Antworten