BASICODE in Java

Software-Entwicklung, Compiler, Interpreter, ...
Benutzeravatar
ein Thüringer
Beiträge: 46
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 auch https://robhagemans.github.io/basicode/ ... enbalk.bc3 , die drei Beispielsdatensätze liegen aber nicht mit unter dem Reiter Programme, sondern können hier heruntergeladen werden: https://github.com/robhagemans/basicode ... omboot.dat https://github.com/robhagemans/basicode ... erkens.dat https://github.com/robhagemans/basicode ... Moskou.dat , ich habe sie hier
MUZDATA.zip
drei Beispielsdatensätze zum Programm
(945 Bytes) 79-mal heruntergeladen
zusammengefasst.

vier Screenshots des Programms
vier Screenshots des Programms
NOTENBAL.png (27.01 KiB) 2441 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.
  • Übersetzung der Anleitung

    An den Anfang kannst du als Kennzeichnung ein # oder b schreiben und mit / und zwei Ziffern eine Taktangabe.

    Gib die Noten wie folgt ein: erst einen der Buchstaben ABCDEFGabcdefg - nach Änderung laut EDIT AHCDEFGahcdefg - (Höhe), danach ggf. ein # oder ein b, danach die Länge mit EINER Ziffer 1 2 4 8 oder 6 für eine 1/1, 1/2, 1/4, 1/8 oder 1/16 Note.

    Danach kann noch ein Punkt (Vergrößerung der Notenlänge um die Hälfte) oder ein M (= Taktstrich) eingegeben werden, sonst gib ein Leerzeichen ein. Ein + macht einen Binde-bogen.

    Der CURSOR geht von allein an die nächste Position. Der Cursor kann auch mit den Cursortasten bewegt werden.

    Eine PAUSE wird mit einem R und einer Ziffer 1 2 4 8 6 gesetzt. Das M setzt einen Taktstrich.

    Das S lässt die Musik spielen und das T frischt die Zeichnung auf.

    Die Lautstärke der Musik kannst du mit V und einer Ziffer von 1 bis 7 ändern, sie gilt für alle danach eingegebenen Noten.

    MIT EINEM * ERHÄLTST DU DAS MENÜ MIT DEN ANWEISUNGEN FÜR DAS SPEICHERN UND LADEN DER MUSIK NACH ODER VON KASSETTE ODER DISKETTE.

    Mit W kannst du eine Note löschen, die du mit dem Cursor auswählst.

    Mit I kannst du Platz schaffen, um eine Note einzufügen und mit U kannst du eine Note löschen und alles, was danach in der Zeile steht, nach links aufrücken. So kannst du nachträglich die Musik noch bequem ändern.

Es können auch eigene Musikstücke eingegeben und auch gespeichert werden - hierfür gibt es mehrere Seiten Hinweise, wenn ganz am Anfang J, im Menü 1 oder im Screen mit dem Notenlinien H (bzw. B, siehe EDIT) eingegeben wird.


EDIT 14. Februar ‘25:. Mich hat ziemlich irritiert, dass das (weil niederländische) Programm “B“ verwendet, wo wir “H“ gewohnt sind. Abhilfe schaffen diese paar Zeilen:

Code: Alles auswählen

 1180 IF IN=66 THEN GOSUB 8120:IN=84
 1205 IF IN=72 THEN IN=66:IN$=CHR$(ASC(IN$)-6)
 8590 PRINT"DIT KOMT WEER ALS JE EEN B TIKT"
 8600 GOSUB 210:IF IN=66 THEN 8120
Sie vertauschen die Verwendung von B (jetzt Beschreibung) und H (vorher Hilfe).

EDIT 18. Februar '25: Nachdem ich die Benennung der Noten “eingedeutscht“ hatte, habe ich nun alle Bildschirmausgaben auf Deutsch umgestellt. Hier ist die sonst funktional gleiche Version:
NOTENB_D.ZIP
das Programm mit deutscher Bedienung (in .BAS umbennen)
(16.25 KiB) 56-mal heruntergeladen
Viel Spaß damit!
Benutzeravatar
ein Thüringer
Beiträge: 46
Registriert: 29.08.2021, 11:04

BASICODE in Java

Beitrag von ein Thüringer »

Bei aller Begeisterung für BasiCode muss ich ehrlicherweise einräumen, dass die Programme recht langsam arbeiten. Ein Basic-Interpreter ist natürlich nicht fesselnd schnell — und hier werden zu allem Übel noch (eigentlich vorhandene) Befehle durch GOSUB-Aufrufe ersetzt …

Doch nun fällt dieser Nachteil weg: Michaels in Java geschriebener Interpreter arbeitet wirklich irrsinnig schnell! Anlässlich der Veröffentlichung von Version 0.12 https://github.com/mhaupt/basicode/releases/tag/v0.12 Anfang dieser Woche möchte ich das an zwei Programmen demonstrieren.

https://github.com/robhagemans/basicode ... vlucht.bc3 wurde, wie man den Informationen am Programm-Ende

Code: Alles auswählen

30000 REM RONDVLUCHT V1.0
30010 REM
30020 REM WEERGAVE VAN EEN
30030 REM VOORWERP OF GEBOUW
30040 REM IN PERSPECTIEF.
30050 REM
32000 REM GESCHREVEN DOOR
32010 REM
32020 REM HENK VAN DEELEN
32030 REM
32040 REM (C) HVD OKT 1989
32050 REM
32060 REM TROS-RADIO dd 900321




entnehmen kann, im Herbst 1989 fertiggestellt und im Frühjahr 1990 über den Rundfunk ausgesendet und schließlich auf die "BASICODE-3 Verzamelcassette" Nr. 7 (von insgesamt 9) übernommen.
RONDVLU1.ZIP
das erste "Rundflug"-Programm (in .BAS umbennen)
(8.65 KiB) 57-mal heruntergeladen
Ein perspektivisch dargestellter Körper kann auf unterschiedlichste Weise gedreht, verschoben und in der Größe verändert werden.

Der Autor arbeitete an dem Programm weiter, doch BasiCode büßte rasant an Popularität ein, es gab keine Rundfunkausstrahlungen mehr, stattdessen kam das Internet auf und Henk konnte seine Fortschritte 1992 auf www.nostalgia8.nl präsentieren.

In der Zwischenzeit kann das Paket nur noch unter http://web.archive.org/web/201701031528 ... c3logo.zip gefunden werden. Als Sahnehäubchen enthält es ein Programm, das die Sprache LOGO simuliert, zumindest die Steuerung der "Schildkröte" zum Zeichnen von Linien. Allerdings muss man sich dafür erst an die niederländischen Befehle gewöhnen... vgl. https://www.robotrontechnik.de/bilder/U ... ld_0g7.png , http://www.robotrontechnik.de/bilder/Up ... ld_4w5.png und http://forum.system-cfg.com/viewtopic.p ... 12#p243712 .


Aus dem Paket, das (für die Joyce) hier bereits hier https://joyce.de/basicode/joyce/bc3logo.htm vorgestellt wurde, greife ich ANIMATIO.BC3
ANIMATION.zip
das Programm und drei Datensätze
(8.46 KiB) 62-mal heruntergeladen
heraus. Einzelbilder werden hier zusammengestellt und als Film abgespielt. Mit mehrfachem Drücken von “-“ kann das Tempo wenigstens etwas gedrosselt werden (erwähnte ich schon das irrwitzige Tempo des Java-Interpreters :lol: ?), mit “P“ kann angehalten und eine Zwischenphase betrachtet werden und “E“ beendet das Programm. Zur Auswahl gibt es LOGOFL, RONDFL und ANIMAFL.


In einem Artikel von 1985 schätzte ein gewisser Bill Bolton, CP/M-Nutzer aus Australien, ein “… BASICODE was really an idea whose time had yet to come“. Diese Programme bestätigen es, sie waren ihrer Zeit deutlich voraus, sinnvoll nutzen konnte man sie mit damaliger Technik (Größe des Arbeitsspeichers, Geschwindigkeit des Prozessors) noch nicht.

Screenshots der beiden Programme
Screenshots der beiden Programme
ANIMATIE.png (23.07 KiB) 864 mal betrachtet
Antworten