BASICODE in Java

Software-Entwicklung, Compiler, Interpreter, ...
Benutzeravatar
ein Thüringer
Beiträge: 45
Registriert: 29.08.2021, 11:04

BASICODE in Java

Beitrag von ein Thüringer »

Kurz vor Jahresende veröffentlichte Michael eine neue Version seines BasiCode-Interpreters in Java: https://github.com/mhaupt/basicode/releases/tag/v0.11 . Eines der Programme, die nun auch laufen, ist "Notenbalk", ein Programm, das wir auf der Diskette zum Klubtreffen 2020 haben. Mich begeistert es, weil es (bis auf Drucken und die Nutzung von acht Farben) alle Features der aktuellsten Version von BasiCode ausnutzt: die hochauflösende Grafik, das Nachladen von Daten und das Abspielen von Musik. Beim online-Browser von Rob Hagemans finden wir das Programm zwar auch https://robhagemans.github.io/basicode/ ... enbalk.bc3 - doch fehlen hier leider die drei Beispielsdatensätze.

Glücklicherweise vermittelte mir Werner (siehe Klubzeitung 78, Seiten 29 bis34) die neun Kassetten der niederländischen Stiftung Basicode und so habe ich von der dritten Kassette dieser Serie auch die drei Beispiele.
MUZDATA.zip
drei Beispielsdatensätze zum Programm
(945 Bytes) 19-mal heruntergeladen
vier Screenshots des Programms
vier Screenshots des Programms
NOTENBAL.png (27.01 KiB) 439 mal betrachtet
Für die damalige Zeit ist es ein recht aufwendiges Projekt, erstaunlich, dass es auf den unterschiedlichsten Computern funktioniert. Im Java-Bascoder wollte es zunächst zwar nicht laufen - doch mit einiger Knobelei fanden wir das verursachende Problem heraus. Zu den für BasiCode zulässigen Befehlen (die also nicht durch ein GOSUB zeilennummer ersetzt werden müssen) zählt VAL(stringausdruck), also das Umwandeln einer Zeichenkette in eine Zahl. Beinhaltet die Zeichenkette nur Vorzeichen, Dezimalpunkt und Ziffern, gibt es keine Schwierigkeiten. Sind jedoch auch Buchstaben enthalten, reagieren die Interpreter unterschiedlich. Manche reagieren mit einer Errormeldung, andere wandeln wenigstens die Zeichen vor dem ersten Buchstaben um bzw. erzeugen den Wert 0, wenn schon an erster Stelle ein Buchstabe steht. In Zeile 5020 des Programms stand bisher IF NO$(N)="" THEN 5040. Ändern wir es so ab, wie rechts unten im Bild zu sehen ist, läuft es auch im Java-Bascoder.

Sind jemandem bei irgendwelchen Programmen andere Inkompatibilitäten untergekommen? Michael freut sich über solche Hinweise, sie helfen ihm, den Interpreter weiter zu perfektionieren.

Hier noch die nötigsten Bedienhinweise für nicht-Niederländer ;-) :

Im Titel-Screen (links oben) zweimal * drücken, nach dem ersten Mal werden vier leere Notenlinien gezeichnet, nach dem zweiten sehen wir das Menü (rechts unten). Hier wählen wir den Punkt 7 und geben den Namen (z.B. MUZDAT1) ein. Dann werden wieder die Notenlinien gezeichnet und die Noten usw. eingezeichnet. Mit S kann nun die Musik abgespielt werden, mit * wird ins Menü zurückgekehrt.

Es können auch eigene Musikstücke eingegeben und auch gespeichert werden - hierfür gibt es mehrere Seiten Hinweise, wenn ganz am Anfang J oder im Menü 1 eingegeben wird.

Viel Spaß damit!
Antworten