Beiträge von Henning im Thema „BASIC ohne Zeilennummern schreiben“

    GoDot: Interessant, das TSB kannte ich bisher noch nicht. Ich habe auch erhlich gesagt nicht weiter geguckt, ob es schon ähnliche Ansätze gibt, die Idee kam mir, als ich mal etwas mit petcat rumgespielt habe. Vorteil gegenüber TSB ist natürlich, dass einfach normales Basic erzeugt wird und keine speziellen ROMs benötigt werden.


    Das hier ist auch ziemlich sinnbefreit...

    Code
    0 goto3
    1 print"{clr}";:return
    2 poke53280,0:poke53281,0:poke646,5:return
    3 gosub1
    4 gosub2
    5 ...


    Natürlich ist das sinnfrei, es handelt sich ja auch um ein Beispiel. Es sollte damit nur gezeigt werden, wie eine externe Datei als Bibliothek von Subroutinen in einen beliebigen Namensraum eingebunden werden kann.

    Der Präprozessor weiß von Basic eigentlich nur, dass es zeilenbasiert ist, wie die Schlüsselworte heißen (d.h. welche Worte nicht als Labels gelten dürfen) und dass es aus String-Literalen und irgendwelchen anderen Zeichen ("Code") aufgebaut ist und an welchen Stellen in diesem "Code" (on/goto/gosub/then) Labels stehen könnten, die dann aufzulösen sind. Er würde also auch fröhlich irgendwelchen Klumpatsch parsen, durchnummerieren und ausgeben, solange er alle Label-Referenzen, die er darin zu finden glaubt, zu Zeilennummern auflösen kann.

    Es ist also lange kein vollständiger Basic-Parser und er weiß daher auch garnicht, was ein "goto" im Gegensatz zu einem "gosub" überhaupt im Hinblick auf den Programmfluß bedeutet und welche gotos u.U. daher überflüssig wären. Ist halt "nur" ein kleiner Präprozessor, der diese fürchterlichen Zeilennummern überflüssig macht :)

    Hier mal ein einfacher BASIC-Präprozessor, der in Verbindung mit petcat das Entwickeln von Basic-Programmen am PC vereinfachen kann.

    Statt Zeilennummern zu verwenden kann man damit Basic auch so schreiben:

    Datei "example.bpp":

    Datei "screen.bpp":

    Code
    clear: print "{clr}";: return
    theme: poke53280,0: poke53281,0: poke646,5: return

    Aufruf:

    Code
    $ bpp < example.bpp

    Erzeugt:

    Mit dem folgenden Aufruf kann aus dem ursprünglichen Dateien direkt ein PRG erzeugt werden:

    Code
    $ bpp < example.bpp | petcat -w2 > example.prg

    Es können übrigens auch Binärdateien direkt als DATA-Zeilen eingebunden werden:

    Code
    !include data "sprite.bin"

    Der Präprozessor ist als einfacher Filter implementiert (Standard Ein/Ausgabe) und in ruby programmiert.

    Bei Interesse findet ihr alles weitere auf Bitte melde dich an, um diesen Link zu sehen.