BASIC V2 Interpreter/Compiler in/für Java

  • Hallo BASIC-Freunde,


    ich habe in vergangenen Monaten immer mal wieder an dem hier gebastelt und ich dachte, vielleicht interessiert es den ein oder anderen: https://github.com/EgonOlsen71/basicv2


    Was ist das?
    Das ist ein Java-Programm, mit dem sich BASIC V2- (und ANSI BASIC-)Programme (quasi-)kompilieren und ausführen lassen. Es hat mit dem Orginal-Interpreter nichts zu tun und erzeugt auch nichts, was auf dem C64 ausführbar wäre. Der Ergebnis ist nur innerhalb einer Java-Anwendung zu benutzen.
    Es enthält ferner einen einfachen symbolischen Assembler und eine 6502-Emulation, um die assemblierten Programme ausführen zu können. BASIC und Assembler können auch gemischt werden.


    Was ist es nicht?
    Es ist KEIN Emulator. Es bildet nichts (bzw. fast nichts) von der echten Hardware des C64 ab. Man kann damit keine Spiele laufen lassen, die Bildschirmausgaben in der Java-Konsole sind nicht schön, I/O ist nur rudimentär implementiert usw.


    Wozu soll das nutze sein?
    Ganz ehrlich? Keine Ahnung! Ich habe es als eine Art Fingerübung gesehen und es hat Spaß gemacht, sich mal wieder mit dem ollen BASIC V2 und 6502-Assembler zu beschäftigen. Man könnte damit Java-Programme mit BASIC V2 scripten. Oder sogar mit 6502-Assembler, wenn man das lieber mag. Sinnvoll ist das vermutlich eher nicht.
    Es ist auch ein "template"-Package dabei, welches aufsetzend auf dieser Lösung erlaubt, (HTML)-Templates in BASIC V2 bzw. 6502-Assembler zu erstellen. Das würde ich immerhin noch lieber machen, als PHP...


    Wie schnell ist das?
    Eigentlich ziemlich schnell. Auf meinem 4Ghz Core i7 braucht ein Apfelmännchen in BASIC ~ 500ms.

  • Es gibt was Ähnliches auch für iOS: Hand BASIC.

    Ja, aber das basiert auf dem cbmbasic-Projekt, welches den Orginal-Interpreter von 6502-ML nach C konvertiert hat und ihn dann auf der Zielplatzform neu kompiliert. Damit habe ich auch ein wenig herumgespielt, aber es ist wesentlich langsamer als mein Ansatz (weil letztendlich derselbe, alte Interpreter läuft, d.h. alle Gleitkommaberechnungen finden in Software statt) und, obwohl es das sein sollte, ist es nicht 100% kompatibel. Ein paar meiner Testprogramme liefen darauf in Endlosschleife, auch wenn sie auf dem C64 selber (und in meinem Interpreter) ganz normal funktionierten. Irgendwas ist das nicht zu 100% korrekt übersetzt worden...

  • Es hat auch eine Grafik-Bibliothek, die man aber zusätzlich als In-App Kauf haben kann.
    Ich finde es halt interessant, dass es bei mir auf dem iPad läuft.


    Wenn Du mit Deinem Projekt eine Alternative geschaffen hast, ist das ja positiv.
    Einzip das mit Java...äh...wird dann halt nix für iOS sein.
    Ich schaue es mir mal an auf dem PC/Mac.


    Ansonsten, wenn Du mal einen tieferen BurnIn-Test haben willst, lass mal @BIF drauf los... 8)

  • Es hat auch eine Grafik-Bibliothek, die man aber zusätzlich als In-App Kauf haben kann.

    Sowas habe ich jetzt auch ergänzt, als einfache BASIC-Erweiterung, die es erlaubt, die volle Auflösung und Farbpalette des PC auch in BASIC V2 zu nutzen. z.B. so:
    [Blocked Image: http://www.jpct.net/tmp/mandelbrot.png]


    Code dazu:

  • Sowas habe ich jetzt auch ergänzt, als einfache BASIC-Erweiterung, die es erlaubt, die volle Auflösung und Farbpalette des PC auch in BASIC V2 zu nutzen. z.B. so:

    Das sieht ja ganz cool aus.


    GRON/GROFF/GSAVE verstehe ich. PLOT zeichnet einen Punkt x,y mit einer Farbe, die mit COLOR festgelegt wird?
    Und das COLOR als RGB Values finde ich mal sowas von modern! :dafuer:


    Der Rest, also die Berechnung des Mandelbrots, ist für mich eh nur Magie... :D

  • PLOT zeichnet einen Punkt x,y mit einer Farbe, die mit COLOR festgelegt wird?


    Ja, genau. Zusätzlich gibt es noch LINE, CIRCLE (zeichnet auch Ellipsen, wie etwa bei SIMONS BASIC), RECT, einen Floodfiller mit FILL und RECT und CIRCLE können auch gefüllt gezeichnet werden. Da habe ich dann erstmal aufgehört. Man könnte noch relativ einfach COPY oder sowas einfügen...SCALE...ROTATE...mal schauen...

  • Wär schön, wenn du da, wie Lust und Zeit da ist, ab und zu weitermachst. Hat einfach was.


    Auch wenn es ein vielleicht etwas unzutreffender Vergleich ist, aber: Es übertrifft grafiktechnisch natürlich bei weitem die Möglichkeiten eines C/MEGA65. Toll 8o .


    Theoretisch könnte man damit z. B. ja auch schön große Tabellen erstellen etc. (TEXT-Befehl...). Damit könnte man richtig was anstellen.

  • Ja, genau. Zusätzlich gibt es noch LINE, CIRCLE (zeichnet auch Ellipsen, wie etwa bei SIMONS BASIC), RECT, einen Floodfiller mit FILL und RECT und CIRCLE können auch gefüllt gezeichnet werden. Da habe ich dann erstmal aufgehört. Man könnte noch relativ einfach COPY oder sowas einfügen...SCALE...ROTATE...mal schauen...

    Hast du da auch eine Doku dazu? Habe das Git zu mir gekont, finde aber nix.

  • Muss mich mal selbst zitieren:

    Theoretisch könnte man damit z. B. ja auch schön große Tabellen erstellen etc. (TEXT-Befehl...). Damit könnte man richtig was anstellen.

    Ich weiß gar nicht, wie oft mir das schon durch den Kopf schoss: "In BASIC V2 wäre das/hätte ich das (Tabelle, Aufstellung etc.) mal eben ganz schnell hingebastelt". Aber die Grafik-Auflösung gab es eben fast nie her (bis auf wenige Ausnahmen, wo ich das tatsächlich damit gemacht habe). Ja, ich komme leicht ins Schwärmen für das Ding :rolleyes: .

  • Ich habe noch ein wenig mehr Zeug dazugepackt: Man kann jetzt Anti-Aliasing anschalten, Fonts setzen, Text ausgeben (analog zum normalen PRINT-Befehl) und die Framerate auf einen fixen Wert begrenzen. Die Doku ist hier: Graphics Basic


    Ein kleines Beispiel im Bild...
    [Blocked Image: http://www.jpct.net/tmp/3d.gif]


    ...und im Code: