Hallo Besucher, der Thread wurde 4,1k mal aufgerufen und enthält 29 Antworten

letzter Beitrag von Matthias am

Neue Programmiersprache, Compiler, Emulator

  • Eigentlich wollte ich nur mal ein kleines Programm schreiben, und das auf meine neue "Modular 64" Hardware hochladen. Für ein paar Tests ;-)


    Dazu habe ich Eclipse und ACME benutzt. Jedoch hatte mich dabei gestört, dass die Assembler-Sprache doch recht umständlich ist. Besser wäre eine eigene simplere Programmier-Sprache, und irgendwie anders aufgebaut. Die Idee war schnell skizziert, fehlte nur noch die Einbindung eines Compilers...


    Da es aber keinen guten als "Public Domain" gibt (ohne die GPL-Lizenz Seuche), blieb nur die Möglichkeit einen eigenen C64 Compiler zu programmieren. Da ich mich daran erinnerte das ich bei meinem C64 Analyzer für Android eine Library für die Opcodes + einen Disassembler bereits programmiert hatte, dachte ich: "Bau ich mir einen C64 Compiler"... der auch nach einem Tag soweit fertig war (siehe Bild). Der funktioniert super, und genau so wie ich es mir vorgestellt hatte. Ausserdem kann ich nach belieben dann noch Features einbauen, die es bisher so noch nicht gibt :Peace


    Die neue Programmiersprache für den C64, die daraus ein Assembler-Programm generiert, ist somit nur noch Formsache. Dazu habe ich schon den wirklich sehr guten "Denise" C64 Emulator als Ziel für den PRG Start verwendet.


    Am Ende dachte ich mir, wenn Du schon eine neue einfachere C64 Programmiersprache erstellst, dann kannst Du auch gleich noch ein paar Grafiktools... und einen C64 Emulator programmieren, dann ist die C64-Entwicklungs-Kette komplett, und Du kannst alles genau so umsetzen wie Du Dir das vorstellst. Das meiste mache ich eigentlich in Java, doch die Grafiktools und den Emulator werde ich als JNI C++ Modul erstellen, damit diese dann auf jedem System laufen können. Da auch die kleinen Systeme in Zukunft Zyklen-basierte C64 Emulatoren spielend einfach laufen lassen werden können, werde ich nur eine exakte C64 Emulation umsetzten (genügend Informationen über alle Chips + Funktionsweise + Fallstricke existieren ja bereits zuhauf).


    Das Ganze werde ich eher gemütlich angehen, nebenbei... neben all den C64 Hardware Sachen die ich baue, unter dem Arbeitsnamen: "Simple64"


    Am Ende wird da was schönes rauskommen, und das Ganze als "Public Domain" veröffentlicht ;-) Also praktisch ohne Lizenz. Somit kann jeder damit und mit seiner kreativer Energie machen was er möchte, ohne einen Gedanken daran zu verschwenden, welche Auflagen er in welchen Modulen wo zu erfüllen hat :-)


    Eine runde Sache :ChPeace


    Wer bei dieser Idee etwas betragen möchte, also etwas programmiertechnisches (irgendein Modul-Code), der kann das gerne tun. Soll der Code dann in Simple64 landen, wird es aber immer bei "Public Domain" bleiben. Also der Code ist frei, und kann von jedem verwendet werden wie/wo er es möchte, ohne jegliche Restriktionen (also auch eigene Produkte damit bauen, ohne mich zu fragen oder meinen oder andere Namen nennen zu müssen). Mit dem Simple64 wird es niemals irgendeine Lizenz geben. Das macht es für alle einfach. Damit gibt es keine unterschiedliche Lizenz-Konflikte mehr, und man muss nicht mehr hunderte Entwickler anschreiben, nur damit man von einer Lizenz auf eine andere Lizenz hüpfen kann (Irrsinn und Kreativitätsfeindlich :D).


    Anbei erste Bilder :saint:

  • Also der Code ist frei, und kann von jedem verwendet werden wie/wo er es möchte, ohne jegliche Restriktionen (also auch eigene Produkte damit bauen, ohne mich zu fragen oder meinen oder andere Namen nennen zu müssen). Mit dem Simple64 wird es niemals irgendeine Lizenz geben. Das macht es für alle einfach.

    Nur mal so zum Verständnis:


    In dem von dir beschriebenen Szenario könnte zum Beispiel jemand den Code nehmen, den Namen in "BetterSimple64" umbenennen und das Ganze als "sein Werk" für 39,95 EUR pro Download verkaufen, ohne auch nur den Namen eines wirklich am Code beteiligten Programmieres nennen zu müssen.


    Ist das tatsächlich so mit "ohne jegliche Restriktionen" gemeint?

  • Das ist richtig. Ich mag es einfach. Geld spielt dabei keine Rolle, nur Kreativität :-)

    Okay, Danke fürs Bestätigen! :)


    Für mich gehört das Erwähnen des oder der Autoren eines "nicht trivialen" Codes einfach mit zum "guten Ton". Das wäre für mich persönlich schon eine "Mindestgrenze" an Restriktion, die ich einzuhalten wünschen würde. "Freiheit" sehe ich nicht unbedingt im Konflikt mit "Höflichkeit". ;)


    Ansonsten: Klingt nach einem tollen und interessanten Projekt! :thumbsup:

  • Links eine Liste mit Funktionen, die man selbst erstellt, z.B. moveSprite(nr, x, y), ...

    Über der Quellcode Area werden die Funktions-Parameter angezeigt/editiert.


    Hinter jeder Funktion steckt ein Assembler Code (Sicht ist umschaltbar zwischen Simple64 und Assembler). Darin sind die verwendeten Funktionsparameter als Variablen (Adressen) vorhanden, mit denen man arbeiten kann.


    Es ist also nichts vorgegeben. Man kann alle Simple64 Funktionen die man möchte neu erstellen, bearbeiten und sich so eine Library bauen, oder eine Library benutzen (laden).


    Starten tut das Ganze in der Funktion "Main()"

    Es gibt auch eine "Interrupt()" Funktion.


    So abstrakt, dass ein C64 Programm so einfach wie möglich umzusetzen und auch verstanden werden kann.

  • Okay, Danke fürs Bestätigen! :)


    Für mich gehört das Erwähnen des oder der Autoren eines "nicht trivialen" Codes einfach mit zum "guten Ton".

    Kann ich verstehen. Im Simple64 Projekt werden auch alle Namen genannt, aber ich möchte nicht das jemand anderes sich die Mühe machen muss, bei jedem einzelnen Modul nun ewig nachzusehen wen er nennen, sowie evtl. nach unterschiedlichen Lizenzen schauen, und dann noch einen Anwalt hinzuziehen muss, nur um ein cooles Projekt zu starten, oder eines vollkommen umzukrempeln zu wollen:ChPeace


    Wie gesagt. Ich mag es einfach. Und dazu gehört das Ego nicht dazu, sondern steht meistens nur im Weg :-)


    Man muss das mit dem "Geld machen" auch mal anders betrachten, wenn jemand viel Kohle damit scheffeln kann, dann ist das eine Auszeichnung dafür, dass man etwas richtig cooles gemacht hat ;-) Und trägt auch zu einem großen Erfolg bei. Das reicht mir. Viele denke in der Beziehung zu oberflächlich ... zu altbacken.

  • Hört sich für mich sehr nach Makros an. Das können doch schon die meisten Assembler.

  • Hi


    Das klingt ja recht interessant. Da bin ich auf das Endergebnis sehr gespannt.

    Kennst du eigentlich das Programm "Turbo Rascal" schau dir mal das an. Vielleicht findest du da ein paar Ideen für dein Projekt.

    Auch hier wird auf eine vereinfachte Sprache gesetzt. Aber das Programm ist noch im Aufbau.


    Gruß Drachen

  • Kennst du eigentlich das Programm "Turbo Rascal" schau dir mal das an.

    Gehört habe ich schon davon, kannte es aber noch nicht. Ist jedoch sehr cool :-) (benutzt aber QT)




    Primär, in diesem Thread, wird es jedoch um den Simple64 C64 Emulator gehen, das letzte Glied in meiner Projekt-Kette ;-)

  • Der Turbo Rascal Macher hat auch noch ein anderes Projekt, ein Emu für einen OK64 Computer. Fun-Fact... er benutzt auch kein DropDown Menü, so wie ich auch bei meinen meisten Projekten und wie bei meinem Android C64 Emu (war der einzige Android C64 Emu im GooglePlay Store mit einer intuitiven TV basierten GUI), und setzt auf "TV Buttons".


    Chapeau!, kann man dazu nur sagen :-) Drop Down ist Out! :D TV Buttons machen einfach mehr Spaß und sind intuitiver :ChPeace


  • Ich kann mir vorstellen, dass ich im Zuge der Simple64 Emu Entwicklung dann auch ein besseres Verständnis der Chips, sowie später viel einfacher in VHDL einsteigen und Chip-Replicas bauen, und somit dem Engpass an originalen Chips wie z.B. dem CIA 6526 entgegenwirken kann.

  • Hallo Matthias,


    mal ganz allgemein:


    Wenn ich mir eine neue Programmiersprache anschaue, würde ich doch schon gerne wissen, welche Datentypen in Ausdrücken erlaubt sind (und mit welcher Größe), wie Ausdrücke aufgebaut sein sollen und wie die Befehle für die Programmflußsteuerung aussehen und gehandhabt werden. Ist es neben dem 'Auslagern' von Code in Funktionen und Prozduren auch möglich, Gültigkeitsbereiche von Variablen festzulegen?


    Diese grundlegenden Eigenschaften sind z.B. bei TRSE nicht mal ansatzweise sauber dokumentiert, stattdessen soll man sich die gewünschte Information aus Tutorials zusammensuchen. Für so was (oder im Eigenstudium durch Ausprobieren) hatte ich vielleicht früher mal Zeit, heute nicht mehr. Vor allem dann nicht, wenn die Sprache noch nicht 'fertig' ist, sich grundlegende Teile der Syntax und Semantik noch ändern könnten, und damit eigener Code möglicherweise auf einmal unbrauchbar wird.


    Auf jeden Fall frohes Schaffen!


    Michael

  • Danke. Primär geht es hier jedoch um den Simple64 Emulator. Die anderen Sachen waren nur als "Vorgeschichte", was mich dazu veranlasst hat, und was ich sonst noch so im "Background" mache :-)


    Leider habe ich hier...

    Zitat

    Wer bei dieser Idee etwas betragen möchte, also etwas programmiertechnisches (irgendein Modul-Code), der kann das gerne tun.

    ... anfänglich vergessen "Simple64 Emulator" dazuzuschreiben. Als ich das nachholen wollte, konnte ich den Post nicht mehr editieren ;-)


    Wenn ich mit der Simple 64 Programmiersprache soweit bin, das man damit etwas anfangen kann, mache ich einen eigenen Thread dafür auf ;)

  • Kann ich verstehen. Im Simple64 Projekt werden auch alle Namen genannt, aber ich möchte nicht das jemand anderes sich die Mühe machen muss, bei jedem einzelnen Modul nun ewig nachzusehen wen er nennen, sowie evtl. nach unterschiedlichen Lizenzen schauen, und dann noch einen Anwalt hinzuziehen muss, nur um ein cooles Projekt zu starten, oder eines vollkommen umzukrempeln zu wollen:ChPeace


    Wie gesagt. Ich mag es einfach. Und dazu gehört das Ego nicht dazu, sondern steht meistens nur im Weg :-)


    Man muss das mit dem "Geld machen" auch mal anders betrachten, wenn jemand viel Kohle damit scheffeln kann, dann ist das eine Auszeichnung dafür, dass man etwas richtig cooles gemacht hat ;-) Und trägt auch zu einem großen Erfolg bei. Das reicht mir. Viele denke in der Beziehung zu oberflächlich ... zu altbacken.

    Dein "einfach mögen" wird dir spätestens dann verwehrt, wenn derjenige, der mit deinem Werk Geld macht, es dir erschwert, dass du deinen Code noch "einfach" halten kannst, weil er dir mit seinen Anwälten dicke Knüppel zwischen deine Beine wirft. Das kann soweit führen, dass du Schwierigkeiten hast zu belegen, dass du der ursprüngliche Autor bist. Alles schon erlebt ...


    Deine Vorstellung kann nur dann einigermaßen zufriedenstellend funktionieren, wenn alle so denken. Wenn aber Leute dabei sind, die das Ganze zu ihrem Vorteil ausnutzen wollen, dann bricht das Gedankenmodell an sich zusammen.


    Was ist denn so schlimm an der Vorstellung einer "Lizenz", dass der Code stets "frei" zu sein hat? Dann hat man wenigstens das Gefühl, dass man es wirklich auch "für alle" macht und sich keiner an der Arbeit Dritter "einfach so" bereichert?