Autor Thema: CPCBasic "Unchained"  (Gelesen 1042 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline mv

  • Schreibgeschützter
  • *
  • Beiträge: 7
  • Liked: 13
  • Karma: +3/-0
CPCBasic "Unchained"
« am: 28. Januar 2020, 22:08:49 »
Vor knapp 20 Jahren habe ich eine Website mit einigen CPC-Programmen zusammengestellt: http://benchmarko.de/cpcemu/cpcsoft/index.html
Heutzutage könnte man zu den Screenshots gleich einen CPC-Emulator einbinden, der die Programme auch ausführt.
Die ersten Browser-basierten CPC-Emulatoren kamen mir recht Ressourcen-intensiv vor, bis ich https://floooh.github.io/tiny8bit entdeckte. Einfach toll, was mit WebAssembly möglich ist!

Soweit so gut.

Nur: Auch für ein einfaches BASIC-Programm muss man einen kompletten CPC-Emulator starten.
Geht das nicht auch anders? Und könnten die Programme dann nicht auch noch viel schneller laufen?

Ja, wenn man das CPC-BASIC irgendwie aus dem ROM "loslösen" kann, ja "entfesselt", und dann als JavaScript ausführt.

Genau das macht CPCBasic. Es compiliert CPC-BASIC-Programme nach JavaScript.
Man braucht dann keine ROMs und Z80-Emulation mehr, sondern kann auf viel höherer Ebene die BASIC-Befehle ausführen.

Dummerweise ist das deutlich aufwändiger, als ich zunächst dachte. Zumindest, wenn das BASIC möglichst kompatibel sein soll und die Programme mit möglichst wenig Anpassungen laufen sollen.

Aber mittlerweile läuft es schon ganz ordentlich:
https://benchmarko.github.io/CPCBasic/cpcbasic.html

In einem separaten Repository habe ich weitere Apps gesammelt:
https://github.com/benchmarko/CPCBasicApps

Hier ein schönes Beispiel, das nicht nur zeigt, wie flott CPCBasic ist, sondern aus ein paar Zeilen Code tolle Effekte zaubert:
https://benchmarko.github.io/CPCBasic/cpcbasic.html?database=apps&example=demo/100demo
(Ich mag das Programm, hoffe es ist ok, dass ich es in die Sammlung aufgenommen habe... ;)

Gerne nehme ich weitere Programme auf.

Oder auch Anregungen...

Offline TFM

  • Administrator
  • CPC 6128+
  • *****
  • Beiträge: 3068
  • Liked: 740
  • Karma: +36/-0
  • Geschlecht: Männlich
  • FutureSoft und CPC - Ein starkes Team!
    • FutureOS
Re: CPCBasic "Unchained"
« Antwort #1 am: 29. Januar 2020, 09:15:58 »
Das Projekt ist sehr interessant!  :jubelaola:

Gibt es da auch direkte Vergleiche zwischen CPC und PC. Wie viel mal schneller geht das denn?

Würde mich interessieren, ob  ich da unter FutureOS noch mithalten kann.
TFM of FutureSoft
http://www.FutureOS.de --> Das Betriebssystem FutureOS (Update: 7.8.2019)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> RSX ROM für LambdaSpeak (Update: 28.08.2019)

Offline Devilmarkus

  • Administrator
  • CPC 464+
  • *****
  • Beiträge: 1054
  • Liked: 341
  • Karma: +35/-0
Re: CPCBasic "Unchained"
« Antwort #2 am: 29. Januar 2020, 12:43:34 »
Tolles Projekt von dir!
Ich hab damit schon einige Male rumgespielt :)

Was mich ja noch interessieren würde, wäre die Umwandlung von Textdateien (BASIC) in "Tokenized BASIC" also die direkte Umwandlung, in das vom CPC gespeicherte Format.
Umgekehrt mache ich das ja schon, in meinem BASIC Debugger, aber das fehlt mir halt noch, es würde den Transfer von Text-Dateien als BASIC Programm sehr vereinfachen.
http://cpcwiki.de
Dein Deutsches CPCWiki!

Offline mv

  • Schreibgeschützter
  • *
  • Beiträge: 7
  • Liked: 13
  • Karma: +3/-0
Re: CPCBasic "Unchained"
« Antwort #3 am: 29. Januar 2020, 19:42:49 »
Das Projekt ist sehr interessant!  :jubelaola:
Gibt es da auch direkte Vergleiche zwischen CPC und PC. Wie viel mal schneller geht das denn?
Würde mich interessieren, ob  ich da unter FutureOS noch mithalten kann.

Ja danke.
Beim Vergleich der Geschwindigkeit kommt es ja immer darauf an, was man macht, z.B. CPU-Berechnungen, Grafik...
Für eine einfache Zählschleife erreicht CPCBasic auf meinem Laptop mit Chrome ca 17000 MHz im Vergleich zum CPC, also mehr als Faktor 4000:
https://benchmarko.github.io/CPCBasic/cpcbasic.html?example=test/cpcmhz

Eigentlich habe ich einen CPU-Benchmark für verschiedene Programmiersprachen geschrieben, die meisten Tests sind aber für 32 Bit ausgelegt:
https://github.com/benchmarko/BMbench/tree/dev07
Für CPC-BASIC gibt es eine ältere Version mit Zählschleife, Summe 1...10000: bench0(Integer, teilweise FP, da sonst overflow) und bench2(Floating Point):
https://benchmarko.github.io/CPCBasic/cpcbasic.html?example=test/bmbench3
Chrome: bench0 (int): 49 ms, bench2 (fp): 72 ms
CPC(emu): bench0 (int): 241733 ms, bench2 (fp): 289666 ms

Ich suche immer noch schöne Tests, die auch für 8-Bit funktionieren.
Bei denen sich die Dauer per Parameter steuern und das Ergebnis gut überprüfen lässt.

Für FutureOS braucht man ja C oder ASM, wenn ich das richtig verstanden habe.

Offline mv

  • Schreibgeschützter
  • *
  • Beiträge: 7
  • Liked: 13
  • Karma: +3/-0
Re: CPCBasic "Unchained"
« Antwort #4 am: 29. Januar 2020, 20:13:46 »
Tolles Projekt von dir!
Ich hab damit schon einige Male rumgespielt :)

Was mich ja noch interessieren würde, wäre die Umwandlung von Textdateien (BASIC) in "Tokenized BASIC" also die direkte Umwandlung, in das vom CPC gespeicherte Format.
Umgekehrt mache ich das ja schon, in meinem BASIC Debugger, aber das fehlt mir halt noch, es würde den Transfer von Text-Dateien als BASIC Programm sehr vereinfachen.

Freut mich, dass Dich das Projekt interessiert.
Hmm, eine interessante Idee. Für den umgekehrten Fall habe ich ein Perl-Script (http://benchmarko.de/download/lbas2ascii002.zip). Habe schon überlegt, das auch in JavaScript für CPCBasic umzusetzen, damit man .BAS importieren kann.

Wenn CPCBasic mal so brauchbar ist, dass man es als "Entwicklungsumgebung" für BASIC-Programme nehmen kann (im Moment fehlt z.B. noch ein RENUM-Befehl, und so einige Checks und Berechnungen sind nicht so restriktiv wie beim CPC), dann auch einen Export nach "Tokenized BASIC".
Oder möchtest Du ein Plugin bauen... ;)

Offline Devilmarkus

  • Administrator
  • CPC 464+
  • *****
  • Beiträge: 1054
  • Liked: 341
  • Karma: +35/-0
Re: CPCBasic "Unchained"
« Antwort #5 am: 30. Januar 2020, 12:04:22 »
Na ich dachte da eher als Fileimport für meinen Emulator ;)

Wäre toll, wenn man eine .BAS Datei hätte (ASCII), und diese direkt auf das DSK kopieren könnte, dann aber eben als Tokenized BASIC ;)

Bzw wäre es auch im Emulator-Intern Filesystem toll, wenn man so eine ASCII-Datei direkt von Festplatte lesen könnte.

Da hapert es allerdings leider selbst noch bei Tokenized BASIC, diese korrekt ins RAM einzubinden. Obwohl ich den Stack ändere.

Binär funktioniert hier einwandfrei.
http://cpcwiki.de
Dein Deutsches CPCWiki!

Offline oobdoo

  • CPC 6128
  • ****
  • Beiträge: 468
  • Liked: 122
  • Karma: +17/-0
  • Geschlecht: Männlich
  • :P
Re: CPCBasic "Unchained"
« Antwort #6 am: 02. Februar 2020, 00:08:47 »
Das tolle Projekt habe ich mal im Feindes-Forum64 vorgestellt.  :smiley027:

https://www.forum64.de/index.php?thread/98495-cpc-basic-programme-nach-javascript/
CPC 464/6128, 464/6128+, GX4000 | Atari 2600, 600XL, 800XL/XE, Portfolio | C64/II/G/R/SX, VC20, TC64 | LC 80, MPF-I | ZX81, AX81, ZX Spectrum 48k, ZX Spectrum+2 | Amiga 500/600/2000, A2630, A2088

Offline TFM

  • Administrator
  • CPC 6128+
  • *****
  • Beiträge: 3068
  • Liked: 740
  • Karma: +36/-0
  • Geschlecht: Männlich
  • FutureSoft und CPC - Ein starkes Team!
    • FutureOS
Re: CPCBasic "Unchained"
« Antwort #7 am: 30. April 2020, 15:33:52 »
Servus Marco,

Sackl Zement! Habe jetzt mal einige Benchmarks damit gemacht. Also Hola die Waldfee!!! Am Anfang dachte ich noch ich hätte mich vertippt, aber das ist da wirklich so schnell!!!  :jubelaola:

Jetzt muss ich mal rausfinden wie man z.B. Bilder die man damit erzeugen kann (Fraktale z.B.) dann am besten auf den CPC bekommt  :smiley027:
TFM of FutureSoft
http://www.FutureOS.de --> Das Betriebssystem FutureOS (Update: 7.8.2019)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> RSX ROM für LambdaSpeak (Update: 28.08.2019)