BASICODE in Java

Software-Entwicklung, Compiler, Interpreter, ...
haupz
Beiträge: 22
Registriert: 13.02.2015, 16:05

Re: BASICODE in Java

Beitrag von haupz »

kurt hat geschrieben: 22.12.2023, 17:37 Da will man sich mal dran versuchen und dann das ! Geahnt hatte ich sowas schon...:

Code: Alles auswählen

kurt@refracta9:$ java -jar basicode.jar
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: de/haupz/basicode/Main has been compiled by a 
more recent version of the Java Runtime (class file version 65.0), this version of the Java Runtime only recognizes 
class file versions up to 52.0
...
Nikolaus war ja schon. Das Ostern per Easteregg dieses mal so früh kommt überascht doch etwas... Ich bin ohnehin gerade am experimentieren, vielleicht läßt sich da was drehen, ausprobiert hätte ich's schon noch gern.
Es sieht so aus, als wäre bei dir ein JDK 8 installiert ("this version of the Java Runtime only recognizes class file versions up to 52.0"); bitte installiere doch mal JDK 21. Und wenn du schon JDK 21 installiert hast, musst du mal bei den Pfaden gucken, ob die auch auf die richtige Java-Version zeigen.
kurt
Beiträge: 191
Registriert: 26.10.2019, 20:11

Re: BASICODE in Java

Beitrag von kurt »

Es sieht so aus, als wäre bei dir ein JDK 8 installiert
Auf meinem Arbeits-Rechner ja, da läuft Debian 9.

Zweiter Versuch. Diesmal mit der aktuellen Debian 12.2:

Code: Alles auswählen

kurt@refracta9:$ java -jar basicode.jar hello-graphics.bas
Fehler: Beim Laden der Klasse de.haupz.basicode.Main ist ein LinkageError aufgetreten
	java.lang.UnsupportedClassVersionError: de/haupz/basicode/Main has been compiled 
	by a more recent version of the Java Runtime (class file version 65.0), this version of the 
	Java Runtime only recognizes class file versions up to 61.0
kurt@refracta9:$
kurt@refracta9:$ java -version
openjdk version "17.0.9" 2023-10-17
OpenJDK Runtime Environment (build 17.0.9+9-Debian-1deb12u1)
OpenJDK Server VM (build 17.0.9+9-Debian-1deb12u1, mixed mode, sharing)
kurt@refracta9:$ 
Noch aktueller kann ich nicht (ich breche nur ungern aus dem zur Distribution angebotenen Paketen aus, ich habe da so meine leidigen Erfahrungen mit). Deshalb, Frage: ist es möglich die Anforderungen an die Java Runtime-Version etwas abzusenken ? Am besten auf das von Debian 9, aber damit bin ich vermutlich etwas zu dreist ;) Auf das Niveau von Debian 12 wäre schon super.
haupz
Beiträge: 22
Registriert: 13.02.2015, 16:05

Re: BASICODE in Java

Beitrag von haupz »

kurt hat geschrieben: 22.12.2023, 18:41 Noch aktueller kann ich nicht (ich breche nur ungern aus dem zur Distribution angebotenen Paketen aus, ich habe da so meine leidigen Erfahrungen mit). Deshalb, Frage: ist es möglich die Anforderungen an die Java Runtime-Version etwas abzusenken ? Am besten auf das von Debian 9, aber damit bin ich vermutlich etwas zu dreist ;) Auf das Niveau von Debian 12 wäre schon super.
Damit schösse ich mir selbst ins Knie ... ;)

Ich sehe da drei Möglichkeiten:

Zum Einen kannst du wirklich einfach ein JDK 21 runterladen und installieren - das ist unter Linux einfach ein Verzeichnis, ohne dass irgendwelche zusätzlichen Bibliotheken installiert werden müssen. (Meiner Erinnerung nach.)

Zum Anderen ist es mit einem Werkzeug wie SDKMAN recht ungefährlich, mehrere JDKs nebeneinander installiert zu haben. Da könntest du dann zwischen unterschiedlichen JDKs elegant hin- und herschalten.

Zum Dritten kannst du auch Maven installieren (da du Debian nutzt: apt install maven) und mal gucken, ob das Projekt mit JDK 17 baubar ist. Ich bin mir gerade nicht sicher, ob ich nicht hie und da ein paar Neuerungen aus JDK 21 benutzt habe.

Zusammenfassend würde ich ehrlich gesagt zu 1 oder 2 tendieren.
haupz
Beiträge: 22
Registriert: 13.02.2015, 16:05

Re: BASICODE in Java

Beitrag von haupz »

haupz hat geschrieben: 22.12.2023, 16:33 Danke; ein executable JAR hat das Projekt bereits vorher generiert, allerdings war es etwas versteckt. Nun ist das direkt im Basisverzeichnis, wird bei jedem Build auch dort angelegt, und wird auch gleich mit ausgeliefert, so dass man gleich nach dem Klonen loslegen kann.

Das macht mich allerdings nicht ganz glücklich, weil nun basicode.jar versioniert ist. Das ist etwas zu viel Ballast. Ich würde das noch auf einen dedizierten Download-Link umstellen.
Nun gibt es eine saubere Release-Seite, die auch auf der Projekt-Startseite aus rechts am Rand gut zu finden ist.
kurt
Beiträge: 191
Registriert: 26.10.2019, 20:11

Re: BASICODE in Java

Beitrag von kurt »

Zusammenfassend würde ich ehrlich gesagt zu 1 oder 2 tendieren.
Es gibt doch für die ewig gestrigen wie mich (die unverdrossen ein 32-bit System benutzen) bei diesem Problem eine Lösung :D

Dank Dr. Google konnte ich eine 32-bit Java-21 Version für Debian auftreiben:

URL: https://bell-sw.com/pages/downloads/#jdk-21-lts

Dort findet sich auch eine 32-bit Version für Windows :lol:

Mit ein wenig gefrickel für ein shell-Script ist dann der Drops gelutscht:

Code: Alles auswählen

#!/bin/bash
#
# Name: bjava
# Bezug: Aufruf der Bellsoft-Java Version 21

/usr/lib/jvm/bellsoft-java21-i586/bin/java $1 $2 $3 $4 $5

Bild


Und es geht doch ! :mrgreen:
Dateianhänge
Screenshot-745.png
Screenshot-745.png (6.81 KiB) 9284 mal betrachtet
haupz
Beiträge: 22
Registriert: 13.02.2015, 16:05

Re: BASICODE in Java

Beitrag von haupz »

kurt hat geschrieben: 23.12.2023, 00:28 Und es geht doch ! :mrgreen:
Ha! Eppure si muove! Glückwunsch!

Das mit den 32 bit war mir nicht bewusst; aber gut zu wissen, dass es noch Java-Versionen dafür gibt.
Paul
Beiträge: 146
Registriert: 17.09.2017, 22:27
Wohnort: Germanys west end

Re: BASICODE in Java

Beitrag von Paul »

https://fontstruct.com/fontstructions/download/1398629
ZX 80 Font (http://creativecommons.org/licenses/by/3.0/)
https://www.dafont.com/zx81.font
ZX81 und Spectrum
http://www.mattheweagles.co.uk/computing_contents.htm
ZX81 free
Dort sind auch jeweils die Lizenzen dabei.
Woher meine alte sinclair.ttf kommt weiß ich nicht mehr.
Heute habe ich auch endlich ein aktuelles Java installiert und ein paar Basicodes ausprobiert.
Liebe Grüße
Paul
Paul
Beiträge: 146
Registriert: 17.09.2017, 22:27
Wohnort: Germanys west end

Re: BASICODE in Java

Beitrag von Paul »

Ich fände es eine praktische Sache wenn es eine Übersicht der möglichen (sowie nicht implementierten) Befehle gäbe.

Code: Alles auswählen

1000 GOTO 20
1010 DIM X(4),Y(4)
Dabei würde ich erwarten das es eine Endlosschleife ist.
Ich habe ja keine Ahnung was im Basicode dahinter steckt :oops: .
Nach Zeile 20 erwarte ich irgendwann wieder bei Zeile 1000 anzukommen bzw. ein Gosub 20 ;)
Ich habe Thomas Vortrag gehört, aber sicher nicht alles behalten.
Paul
Beiträge: 146
Registriert: 17.09.2017, 22:27
Wohnort: Germanys west end

Re: BASICODE in Java

Beitrag von Paul »

Nachdem ich gelesen habe was in Zeile 20 passiert und das nach 1010 gesprungen wird wundert mich das scroll.bas funktioniert.

Code: Alles auswählen

10 FOR I=1 TO 30
20 PRINT I
30 NEXT I
40 PRINT "Done."
Es fehlt die vorgeschrieben Zeile 1000 nebst GOTO 20.
Dann wird Zeile 20 ja anscheinend überschrieben. Ob das darf bin ich mir nicht sicher.
Am Ende fehlt dann das mandatorische GOTO 950

So sollte es aussehen:

Code: Alles auswählen

1000 GOTO 20: REM Scrollp.bas
1010 FOR I=1 TO 30
1020 PRINT I
1030 NEXT I
1040 PRINT "Done."
1050 GOTO 950
Benutzeravatar
ein Thüringer
Beiträge: 44
Registriert: 29.08.2021, 11:04

Re: BASICODE in Java

Beitrag von ein Thüringer »

Hallo Paul,

steht alles im Manual (lag der Klubzeitung #102 bei) und dieses auf https://www.8bit-wiki.de/fileadmin/8bit ... -V-1-6.pdf wie auch unter https://joyce.de/basicode/download/Man_BC3C.pdf .

Die zulässigen Befehle stehen im Textkasten auf Seite 7 (Obacht: LOG ist der natürliche und nicht der dekadische Logarithmus – LN ist ein verbotener Variablenname) und eine Auswahl zu vermeidender Befehle im Textkasten auf Seite 9.

Mit GOTO 20 hat es seine Richtigkeit, von dort (der Initialisierung) kehrt es mit GOTO 1010 zurück; GOTO 1000 ganz am Anfang und GOTO 950 (anstatt END oder STOP) sind weitere Ausnahmen – sonst gibt es nur GOSUBs.
Zuletzt geändert von ein Thüringer am 26.12.2023, 22:16, insgesamt 3-mal geändert.
Antworten