Spin2CPP, FlexSpin, FlexCC, FlexProp (PASM, Spin, BASIC, C)

Offtopic Themen bitte hier hinein.
Benutzeravatar
yeti
Beiträge: 2300
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Re: Spin2CPP, FlexSpin, FlexCC, FlexProp (PASM, Spin, BASIC, C)

Beitrag von yeti »

Es ist schon länger kein Geheimnis mehr, daß sich im Spin2CPP/FlexSpin-Umfeld vieles bewegt und da man sich Andeutungen hierzu aus dem Transpondlerforum und den Commits im spin2cpp-Codebunker jederzeit zusammenpuzzeln kann, kann es auch nicht als Datensünde bezeichnet werden, die Bewegungen von geradezu plattentektonischen Ausmaßen hier zu erwähnen.

FlexSpin bekommt gerade ein Spin-VM-Bytecode-Backend!

Also generiert auf Wunsch nicht nur den voluminöseren, aber deutlich schnelleren LMM-Code, sondern nun auch Code für den im Propeller-ROM vorhandenen Spin-Bytecode-VM-Interpreter. Also irgendwie wie all die alten Spin-Compiler, aber das obendrein auch für BASIC und C!

Für Spin fühlt sich das schon ziemlich nah an fertig an, BASIC und C holen schnell auf.

Ich hab mal fast rein zufällig ein paar auf meiner Festplatte gefundene alte Spin-Compiler und FlexSpin auf eines meiner Standardtestprogramme losgelassen:

'*.lmm.binary' und '*.bc.binary' sind die FlexSpin-Compilate, die Anderen sind einfacher am Namen zu erkennen.

Code: Alles auswählen

$ flexspin --version
Propeller Spin/PASM Compiler 'FlexSpin' (c) 2011-2021 Total Spectrum Software Inc.
Version 5.5.1-beta-v5.4.3-274-g2541bd31 Compiled on: Jun 19 2021
$ ls -l --sort=size *.binary
-rw-r--r-- 1 yeti yeti 1268 Jun 19 11:17 mandelbrot-s8p24.lmm.binary
-rw-r--r-- 1 yeti yeti  292 Jun 18 13:26 mandelbrot-s8p24.homespun.binary
-rw-r--r-- 1 yeti yeti  276 Jun 18 13:25 mandelbrot-s8p24.bstc.binary
-rw-r--r-- 1 yeti yeti  276 Jun 18 13:26 mandelbrot-s8p24.openspin.binary
-rw-r--r-- 1 yeti yeti  272 Jun 19 11:17 mandelbrot-s8p24.bc.binary
Das Mischen von PASM, Spin, BASIC und C, das wir schon vom LMM-igen FlexSpin schätzen, wird also alsbald auch in der Spin-VM-Bytecode-Welt Alltag. Wird es Zeit für ein renoviertes TriOS? Ein paar kleinere Schluckaufs werden sich vermutlich noch zeigen, wenn man FlexSpin auf TriOS loßläßt, aber das wird sich geben. Eine BST-freie Zukunft für TriOS ist also denkbar. Das zwar vielleicht noch nicht gerade in den nächsten paar Tagen, aber ich denke, OmmmmmmmmmPtimismus ist angebracht.

 ——————————
Anhang:
 
mandelbrot-s8p24.spin-testprog.zip
 
Das Testprogramm beinhaltet eine einfache serielle Ausgabe in Spin, denn es sollte nur Spin und nicht die PASM-Effizienz vergleichen.
(1.01 KiB) 227-mal heruntergeladen
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Benutzeravatar
yeti
Beiträge: 2300
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Re: Spin2CPP, FlexSpin, FlexCC, FlexProp (PASM, Spin, BASIC, C)

Beitrag von yeti »

Ja da schau doch mal wer gugg:

Code: Alles auswählen

$ cat hello.1bc.spin 
pub main
  puts(string("Prost!",10))

pub puts(s)
  repeat while byte[s]
    _tx(byte[s++])

Code: Alles auswählen

$ flexspin -1bc -O hello.1bc.spin 
Propeller Spin/PASM Compiler 'FlexSpin' (c) 2011-2021 Total Spectrum Software Inc.
Version 5.9.7-beta-v5.9.6-38-g33fb96c5 Compiled on: Dec 27 2021
hello.1bc.spin
Program size:     768 bytes
Variable size:      0 bytes
Stack/Free:     31984 bytes

Code: Alles auswählen

$ spinsim -b hello.1bc.binary 
Prost!
Ich kam erst heute auf die Idee zu probieren, ob das FlexSPINs Bytecode-Backend vielleicht auch zumindest Teile der Routinen benutzen könnte, die im LMM-Backend verfügbar sind, und testete gerade eben erstmalig '_𝚝𝚡' im Bytecodekontext.

Hybsh!
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Benutzeravatar
yeti
Beiträge: 2300
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Re: Spin2CPP, FlexSpin, FlexCC, FlexProp (PASM, Spin, BASIC, C)

Beitrag von yeti »

Code: Alles auswählen

$ cat xyzzy.c 
main() {
  for(char *c="Guggug!\r\n";*c;_txraw(*c++));
}

Code: Alles auswählen

$ flexcc -1bc -v xyzzy.c 
FlexC compiler (c) 2011-2022 Total Spectrum Software Inc.
Version 5.9.7-beta-v5.9.6-45-g23c306c9 Compiled on: Jan  6 2022
xyzzy.c
Program size:     740 bytes
Variable size:      0 bytes
Stack/Free:     32012 bytes

Code: Alles auswählen

$ spinsim -b xyzzy.binary
Guggug!
        ( Wie wär's mit 'nem TriOS-Rewrite in FlexProp? )
        /
:SCHRAUBEN

Mit 4 Sprachen in einem Compiler, die man kauz und queer kombinieren kann mal LMM- und Bytecode-Backend eröffnen sich vielleicht noch manch Perspektiven, die wir zuvor nicht hatten.

Außerdem wird eine ewige Verfügbarkeit von BST(C) auf aktuellen OS-en immer unwahrscheinlicher.

        ( BST tut nur noch weh! )
        /
:SCHREIEN

...also selbst wenn schon nicht in FlexProp, so sollten wir echt mal schauen, TriOS eine BST-freie Zukunft zu schaffen, dann wenigstens auf Basis von HomeSpun oder OpenSpin, was aber dann in einen anderen Thread gehört.
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Benutzeravatar
PIC18F2550
Beiträge: 2831
Registriert: Fr 30. Sep 2011, 13:08

Re: Spin2CPP, FlexSpin, FlexCC, FlexProp (PASM, Spin, BASIC, C)

Beitrag von PIC18F2550 »

Warum nicht gleich im P2? :) :SCHRAUBEN
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
yeti
Beiträge: 2300
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Re: Spin2CPP, FlexSpin, FlexCC, FlexProp (PASM, Spin, BASIC, C)

Beitrag von yeti »

PIC18F2550 hat geschrieben: Do 6. Jan 2022, 14:58 Warum nicht gleich im P2? :) :SCHRAUBEN
P2?
Erst wenn einer in DIP72 rauskommt...
:LACHEN

...

Ich find den P2 voll überflüssig: Zu fett als Microcontroller, zu schlapp als vollwertige AllzweckCPU, zu nix kompatibel und obendrein hat der Ärmste noch Parallax am Bein und die haben bisher immer gefailt, wenn's um Software ging. Den muß ich mir über den Parallax-Streß mit dem P1 hinaus nicht noch ein weiteres Mal antun.

Für mich:
P1 oder gar kein Propeller.
Tertium non datur.

Irgendwann pack ich allen meinen Parallaxkram in 'ne Kiste und schreib irgendeine Adresse drauf!

Das würde sich echt befreiend anfühlen!
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Benutzeravatar
PIC18F2550
Beiträge: 2831
Registriert: Fr 30. Sep 2011, 13:08

Re: Spin2CPP, FlexSpin, FlexCC, FlexProp (PASM, Spin, BASIC, C)

Beitrag von PIC18F2550 »

Es ist der Stress mit der schlechten Doku zum Frust führt.
Muss ich dir recht geben.
Ich hab da auch schon ein paar Ideen über Bord geworfen weil nichts Brauchbares an Infos rüber kam.
Eine ganze weile knappere ich schon an einer brauchbaren USB-Lösung rum aber soll gehen aber das projekt was mir zugekommen ist ist nur schwer zu verstehen also nichts zum Lernen.
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
yeti
Beiträge: 2300
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Re: Spin2CPP, FlexSpin, FlexCC, FlexProp (PASM, Spin, BASIC, C)

Beitrag von yeti »

Der P1 ist mittlerweile ja eher 'n Oldtimer. Spielen mit P1 ist die selbe Schublade wie Spaß mit Z80, 6502, 68000. CP/M, ...

Zeit in den P2 stecken? Das seh ich echt nicht auf mich zukommen. Ich hoffe stattdessen auf einen massiven Anfall von FPGA-Laune. Das könnte allerdings irgendwann zu Experimenten mit P2 in FPGAs führen. <böse gugg> Aber erst nach den FPGA-P1-Experimenten! </böse gugg>

Andererseits bekomm ich zunehmend Bock auf irgendwas mit C und Z80. In Emulgatoren kein Problem, aber vom Echt-Z80 hält mich noch immer mangelnde Lötlaune ab.

Rumliegende nackische PCBs:

2 * Z80-MBC
10 * Z80-MBC2

8 der V2-PCBs können gerne per Post weiter wandern...
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Benutzeravatar
PIC18F2550
Beiträge: 2831
Registriert: Fr 30. Sep 2011, 13:08

Re: Spin2CPP, FlexSpin, FlexCC, FlexProp (PASM, Spin, BASIC, C)

Beitrag von PIC18F2550 »

U880 (Z80) im P2 gibt es und als Betriebssystem CP/A (CP/M auf Z80) oder Z1013.

z.Z. werkle ich an der IO Struktur rum .. Pio, Sio und Ctc mal sehen was Mir da noch einfällt.
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
yeti
Beiträge: 2300
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Re: Spin2CPP, FlexSpin, FlexCC, FlexProp (PASM, Spin, BASIC, C)

Beitrag von yeti »

----------8<-----{20230314-1920-UTC}----->8----------

Pssssst... frisch ausm Ofen...

Code: Alles auswählen

$ flexspin --version
Propeller Spin/PASM Compiler 'FlexSpin' (c) 2011-2023 Total Spectrum Software Inc. and contributors
Version 6.0.0 Compiled on: Mar 14 2023
...ich hab das Changelog noch nich durch, aber die Doppelnull am Ende hat meistens was zu bedeuten...

----------8<-----{20230315-0725-UTC}----->8----------

Ok, wer die 5.x.y-Versionen verfolgt hat wird wohl keine boombastitschen Neuerungen erspähen, wer nur in größeren Sprüngen updatet aber vielleicht schon. Nun sind die Bytecode-Modi offiziell. Ich hab noch immer keinen P2, zum P2-Backend und zum 2nu-Modus im Speziellen kann ich also noch immer nix sagen. Meinen unheimlichen FlexProp-Spickzettel werd ich nach und nach auf konsequentes erwähnen des 1bc-Modus erweitern, aber ohne Eile. Hobby soll ja nun nicht in jobartigen Streß ausarten.

Wer noch nicht mit FlexSPIN, -BASIC und -C im Bytecode-Modus gespielt hat sollte sich das mal ansehen. OpenSpin könnte obsolet werden, zumindest solange kein OpenSpin-fehlerkompatibler Compiler benötigt wird.

Jetzt träume ich quasi nur noch von einem Propeller1-XMM-Backend, aber auch ohne dies hab ich genug andere offene Baustellen.

----------8<-----{20230315-0936-UTC}----->8----------

64bit-Mathemagie scheint auch mittlerweile erwachsen. Ein eigentlich für GCC gedachtes 32-Bit-Fixpunkt-Apfelbrötchen (das für die Multiplikation dann logischerweise int64_t braucht) kompiliert ohne Änderung mit FlexC für 1lmm- und 1bc-Modus und liefert das erwartete Ergebnis.

----------8<-----{¡¡¡HURZ!!!}----->8----------
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Benutzeravatar
yeti
Beiträge: 2300
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Re: Spin2CPP, FlexSpin, FlexCC, FlexProp (PASM, Spin, BASIC, C)

Beitrag von yeti »

Mooomangtemaaal...

Code: Alles auswählen

$ cat x.bas
print "Moo!"

Code: Alles auswählen

$ /opt/propellertools/bin/spin2cpp --ccode --main x.bas 

Code: Alles auswählen

$ make x
cc     x.c   -o x
x.c:5:10: fatal error: propeller.h: No such file or directory
    5 | #include <propeller.h>
      |          ^~~~~~~~~~~~~
compilation terminated.
make: *** [<builtin>: x] Error 1

Code: Alles auswählen

$ touch propeller.h

Code: Alles auswählen

$ CFLAGS='-I .' make x
cc -I .    x.c   -o x
x.c: In function ‘x_program’:
x.c:26:3: warning: implicit declaration of function ‘printf’ [-Wimplicit-function-declaration]
   26 |   printf("%s\n", "Moo!");
      |   ^~~~~~
x.c:26:3: warning: incompatible implicit declaration of built-in function ‘printf’
x.c:7:1: note: include ‘<stdio.h>’ or provide a declaration of ‘printf’
    6 | #include "x.h"
  +++ |+#include <stdio.h>
    7 | 

Code: Alles auswählen

$ echo '#include <stdio.h>' > propeller.h

Code: Alles auswählen

$ CFLAGS='-I .' make -B x
cc -I .    x.c   -o x

Code: Alles auswählen

$ ./x
Moo!
Ok. Das war jetzt sehr "hacksisch". Vielleicht würde eine schlauere Wahl der Optionen vieles noch weiter vereinfachen. Mit Spin2CPP zum konvertieren von Spin nach C und weiterer Kompiliererei via GCC hab ich zuvor schon gespielt, aber erst heute kam mir die Idee, dies auch mal mit BASIC zu probieren.

...vielleicht probier ich das auch noch irgendwann mit TCC oder PCC statt GCC oder gar mal mit AVR-GCC. Schaunwermal...

Irgendwie kam ich auf diese Idee erst, als ich heute darüber nachdachte einen Newsserver in BASIC selber zu schreiben. Hoffentlich verdunstet diese Schnapsidee bald! ***hust!***
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Antworten