Simons Basic und Basic 64 Compiler

Es gibt 11 Antworten in diesem Thema, welches 2.911 mal aufgerufen wurde. Der letzte Beitrag (12. Mai 2014 um 11:50) ist von petrus.

  • Hallo C64-Freunde,

    versuche nun schon seit stunden Simons Basic Code mit dem Basic 64 Compiler (DataBecker/Abacus) zu kompilieren.

    Sobald Simons spezifische Befehle im Code sind, ist die Kompilierung fehlerhaft.

    Kennt sich jemand mit diesem Compiler aus? Aus der englischen Anleitung werde ich nicht so ganz schlau. ?(

    Gruß, Micha122

  • Naja, als Erstes würde ich vermuten, dass das Programm einen oder mehrere, der auf Seite 28 beschriebenen, nicht kompilierbaren Befehle enthält.

    Falls das der Fall ist, musst du die, wie auf den folgenden Seiten beschrieben, ersetzen bzw. das Programm umbauen.

  • Hi,
    Geh mal in Advanced Development Package und wähle mit H die Erweiterung aus.

    Siehe auch:

    Bitte melde dich an, um diesen Link zu sehen.

  • Hallo Kiri

    Zitat

    Falls das der Fall ist, musst du die, wie auf den folgenden Seiten beschrieben, ersetzen bzw. das Programm umbauen.

    Ja, hab das jetzt verstanden. Macht den Compiler bezüglich SimonsBasic aber unbrauchbar wie ich finde. Wenn ich z.B alle Prozeduren in Gosub/Return wandeln muss oder alle Repeat/Until umstricken muss, kann ich ja direkt Commodore Basic coden.

    Hallo Zyrian,

    Zitat

    Geh mal in Advanced Development Package und wähle mit H die Erweiterung aus.

    Ändert nichts. Es werden nun mal nicht alle Befehle unterstützt.

    Gruß, Micha122

  • Simons Basic kann ja nun noch ein paar andere Dinge außer den Befehlen fürs strukturierte Programmieren. Und daß die nicht mehr funktionieren wenn das Programm nicht mehr als verketttete Liste von BASIC-Zeilen vorliegt ist irgendwie logisch, finde ich.

    KI-Verwendung in diesem Posting: Rechtschreibkontrolle des Browsers.
    Abweichungen aufgrund des technischen Fortschritts oder individueller Vorlieben vorbehalten.

  • Hallo mc71

    Zitat

    Simons Basic kann ja nun noch ein paar andere Dinge außer den Befehlen
    fürs strukturierte Programmieren. Und daß die nicht mehr funktionieren
    wenn das Programm nicht mehr als verketttete Liste von BASIC-Zeilen
    vorliegt ist irgendwie logisch, finde ich.

    Logisch finde ich das zwar nicht unbedingt aber egal. Ich habe meine Idee mit dem Compiler ohnehin verworfen, weil der erzeugte Code einfach zu groß ist.

    Beispiel:

    Code
    for i=0to100
    Print"Hallo"
    next i
    end

    Daraus macht der Compiler einen Elefanten, der noch nicht mal in die 4kb ab 49152 passt. :thumbdown:

    Gruß, Micha122

  • Hallo Schlachtwerk

    Zitat

    Dann Packste alles am schluß ;)

    :drunk: :drunk: Wie soll den gepackter Code im Speicher lauffähig sein?
    Vielleicht verstehe ich dich nicht, weil ich nun seit 1986 das erste mal wieder mit dem C64 was mache!?

    Gruß, Micha122

  • Hallo mc71

    Logisch finde ich das zwar nicht unbedingt aber egal. Ich habe meine Idee mit dem Compiler ohnehin verworfen, weil der erzeugte Code einfach zu groß ist.

    Beispiel:

    Code
    for i=0to100
    Print"Hallo"
    next i
    end

    Daraus macht der Compiler einen Elefanten, der noch nicht mal in die 4kb ab 49152 passt. :thumbdown:

    Gruß, Micha122


    Also $Cxxx halte ich für BASIC-Compilate prinzipiell für ungeeignet. Besser in Assembler neu schreiben ...

    C128DCR mit Comet64
    Apple IIgs (defekt)
    Acorn Electron
    Oric Atmos (defekt)
    VC-20 mit UltiMem

  • Zitat

    Also $Cxxx halte ich für BASIC-Compilate prinzipiell für ungeeignet. Besser in Assembler neu schreiben ...

    Gebe dir vollkommen Recht. :dafuer:
    Bin auch dabei...... Der Wiedereinstieg ist auch leichter als ich dachte. ^^ Ist halt wie mit dem Fahrradfahren, man verlernt es nicht. :thumbsup:

  • Daraus macht der Compiler einen Elefanten, der noch nicht mal in die 4kb ab 49152 passt. :thumbdown:


    Auch wenn's etwas spät ist mit der Antwort: Du bist Dir schon darüber im Klaren, dass das Compilat eine Runtime-Bibliothek mit sich herumschleppt? Das sind erstmal X kByte Overhead, die selbst beim Programm "10 REM " enthalten sind. Compilate werden erst bei Quellcodes >> X kb kleiner als das Original. Solche Compilate passen auch nur in den "normalen" Basic-Speicher. Tools für den Bereich bei C000 schreibt man direkt in Assembler.

    PS: Ich kenne die Größe der Runtime-Bibliothek bei BASIC 64 nicht, daher X kByte. Bei BASIC 128 sind es wohl so 5-10 k und compilierte Programme werden so ab 20-30 kB Quellcode kleiner als das Original. Puh, ist alles schon so lange her... daher die Werte bitte nicht auf die Goldwage legen.

    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.

  • ... compilierte Programme werden so ab 20-30 kB Quellcode kleiner als das Original

    Das kommt in etwa hin: im C64-Wiki Artikel Bitte melde dich an, um diesen Link zu sehen. sieht man auch, dass erst jenseits von ca. 100 Blocks (= ca. 25 KB) der Platzbedarf des Kompilats geringer wird als der des Basic-Programms.
    Allerdings gilt das nur für P-Code Kompilate. Ein Maschinencode-Kompilat wird i.d.R. sogar immer größer als das Originalprogramm sein. Außerdem ist die Größe natürlich noch vom jeweiligen Compiler abhängig.

    versuche nun schon seit stunden Simons Basic Code mit dem Basic 64 Compiler (DataBecker/Abacus) zu kompilieren.

    Es ist nicht nur so, dass der Compiler nur einen Teil des Simons Basic Befehlssatzes erlaubt, er compiliert die erlaubten Befehle auch nicht eigentlich, sondern leitet sie nur an den Interpreter weiter. Das heißt, diese Befehle werden nicht beschleunigt und die Erweiterung muss geladen und aktiv sein.
    Dies ist bei anderen Compilern - wenn sie denn überhaupt Simons Basic Befehle erlauben - im Prinzip auch so.

    Die Kompatibilität des Compilers zu Basic-Erweiterungen ist wohl eingerichtet, damit man die im Basic V2 schmerzlich vermissten Befehle für Grafik-(und m.E. auch Sound-)Programmierung benutzen kann.

    Eventuell solltest du eine andere (vom Compiler unterstützte) Basic-Erweiterung einsetzen, die nicht so umfangreich ist, sondern nur das leistet, was man gerade wirklich braucht, und die auch einfach vom Programm nachgeladen werden kann.