Hive.Sphinx

Fragen zu Programmiersprachen und Software für den Hive und die Propellerchips
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Hive.Sphinx

Beitrag von drohne235 »

So, ich hab mich mal heut hingesetzt und mir den Sphinx-Compiler angeschaut. Scheint ja doch nicht so kompliziert zu sein wie ich dacht. Im Kern besteht er aus drei Teilen, sofern man die OS-Teile weglässt:
  • lex - diese bin erzeugt aus einer spin-datei eine tokendatei
  • codegen - hier werden aus den tokendateien objektdateien erzeugt
  • linker - erklärt sich selbst


Infos gibt es hier:

http://propeller.wikispaces.com/Sphinx
http://www.sphinxcompiler.com/

Nun hab ich mich grad hingesetzt und den Tokenizer lex.bin aus dem restlichen Code "ausgeschält", entkernt, neu zusammengestellt und an das IOS angepasst. War garnicht schlimm und scheint zu funktionieren. :twisted: Ich kann allerdings nicht sagen, ob die erzeugte Tokendatei korrekt ist. Vielleicht schreibe ich mal mpark an, um mir die nötigen Vergleichsdateien mal auf dem Originalcode erzeugen zu lassen. Ansonsten kann ich nur warten bis der Codegenerator & Linker fertig ist und schauen ob die BIN dann läuft.
Dateianhänge
tokenizer-21-10-2010-dr235.rar
(25.3 KiB) 544-mal heruntergeladen
IMG_0284.JPG
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Benutzeravatar
yeti
Beiträge: 2300
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Re: Hive.Sphinx

Beitrag von yeti »

http://forums.parallax.com/showthread.p ... -Propeller

...wenn obiges Fahrt aufnimmt könnte Sphinx für den Hive fast nebenbei entstehen... ich denke dies mal im Auge behalten lohnt...
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: Hive.Sphinx

Beitrag von drohne235 »

Schön wäre es, wenn alle Zugriffe auf Ressourcen (Keyboard, Screen, Filesystem) über ein Objekt virtualisiert würden. Bei einer solchen Konfiguration bräuchte man nur dieses eine Objekt an die entsprechende Hardware anpassen (Hive, Dracblade, Singleprop mit Terminal...). Das wäre wirklich mal ein Projekt für die ganze Propeller-Community.

Edit: Mir fällt grad ein, dass Sphinx ja auch sehr gut direkt in Administra laufen kann und nur die Terminalkommunikation über Regnatix/Bellatrix abläuft. Damit wird die Anpassung noch viel einfacher! Die Anpassungen beschränken sich so einfach nur auf den Zeichenein- und Ausgabekanal. Bisher hab ich immer zu "zentralistisch" auf Regnatix fixiert gedacht, aber das ist im Hive ja überhaupt nicht möglich. Ist ja kein Problem, wenn bei Sphinx einfach mal Administra die Chefin ist. Na das muss ich nochmal durchdenken...
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Benutzeravatar
TuxFan
Beiträge: 1022
Registriert: So 6. Sep 2009, 11:18

Re: Hive.Sphinx

Beitrag von TuxFan »

drohne235 hat geschrieben:Schön wäre es, wenn alle Zugriffe auf Ressourcen (Keyboard, Screen, Filesystem) über ein Objekt virtualisiert würden. Bei einer solchen Konfiguration bräuchte man nur dieses eine Objekt an die entsprechende Hardware anpassen (Hive, Dracblade, Singleprop mit Terminal...). Das wäre wirklich mal ein Projekt für die ganze Propeller-Community....
Ja, so könnte ich mir das auch vorstellen............und als krönenden Abschluß, Spiele für den Gam_Bo_Prop auf dem Hive entwickeln.... :D....aber bis dahin ist für mich noch ein langer Weg. :cry:
drohne235 hat geschrieben:.........Edit: Mir fällt grad ein, dass Sphinx ja auch sehr gut direkt in Administra laufen kann und nur die Terminalkommunikation über Regnatix/Bellatrix abläuft. Damit wird die Anpassung noch viel einfacher! Die Anpassungen beschränken sich so einfach nur auf den Zeichenein- und Ausgabekanal. Bisher hab ich immer zu "zentralistisch" auf Regnatix fixiert gedacht, aber das ist im Hive ja überhaupt nicht möglich. Ist ja kein Problem, wenn bei Sphinx einfach mal Administra die Chefin ist. Na das muss ich nochmal durchdenken...
Hierzu fällt mir wieder unsere Erweiterung insbesondere der SPI-Bus wieder ein, bei dem auch die Hauptlast bzw. viele verschiedene Resourcen (SRAM, FLASH etc.) an Administra hängen.

Wobei mir jetzt noch einfällt : mit Sphinx kommen wir den alten Heimcomputern bzw. dem Retrocomputergedanken noch näher.

Gruß
TuxFan
Wunder gibt es immer wieder.......
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: Hive.Sphinx

Beitrag von drohne235 »

Code: Alles auswählen

Hierzu fällt mir wieder unsere Erweiterung insbesondere der SPI-Bus wieder ein, bei dem auch die Hauptlast bzw. viele verschiedene Resourcen (SRAM, FLASH etc.) an Administra hängen. 
Man kann ja gerade bei Administra sehr schnell den Code wechseln, da die SD-Card direkt angeschlossen ist und Sphinx bräuchte ja nur temporär auf Administra laufen. Aber schöner wäre schon eine Version mit sauber ausfaktorisierter Schnittstelle zu den Ressourcen, welche auf Regnatix läuft. Glaub da müssen wir nochmal drüber nachdenken. ichtig ist mir da eine saubere Trennung von Sphinx und der Anpassung, so dass man den Compiler selbst nicht anfassen muss und von weiteren Versionen profitiert. Ich hab mal in die Quellen geschaut und sehe da kaum Land. Keine Ahnung ob die vielleicht auch mit einem Compiler-Compiler generiert sind - scheint mir fast so.
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Benutzeravatar
yeti
Beiträge: 2300
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Sphinx-PC, ein GGPP-Clone, ein Yeti und die Weltherrschaft

Beitrag von yeti »

Ich hab mich mal an ARIBAs SPHINX-PC auf meinem Gadget-Gangster-Propeller-Platform-USB-SD-Clone (siehe unten!) probiert...

Kurz: ARIBA hat Tastatur- und TV-Support aus Sphinx rausgekickt und stattdessen wird über die eh vorhandene USB-Verbindung zum PC kommuniziert.

Nunja... es humpelt... ich bekomme bis auf eine Fehlermeldung den sphinxschen Spincompiler und die Hilfsprogramme mit dem sphinxschen Spincompiler kompiliert und das Ergebnis läuft trotzdem...

Aber mir raucht der Kopf vor Versionswirrwar. SPHINX-PC basiert auf einer älteren Sphinx-Version als verfügbar und auch in der neueren Originalversion von Sphinx finde ich z.B. isxkb.spn nicht, wohl aber in der an den C3 angepaßten Version von MIKE GREEN in ftp://ftp.propeller-chip.com/PropC3/Apps/Mike_Green/.

Mein aktueller Status-Quo ist ein wüstes Durcheinander aus Files der Originalversion und der von ARIBA (von der C3-Version hab ich noch nix da reingequirlt) und es humpelt irgendwie... also mehr "es läuft und ich weiß nicht warum, aber hab dabei das Gefühl das Kartenhaus stürzt alsbald zusammen". Es ist halt im wesentlichen Produkt "planlos kreativen Rumstocherns mit etwas Instinkt" und nicht wirklich von tieferem Verständnis von Sphinx...

Es müßten mal alle beteiligten Files auf den neueren Stand gebracht werden ohne die ARIBAschen Änderungen dabei wieder zu verlieren...

...mal schau'n ob, wann oder ob nicht diese Baustelle mich wieder losläßt.

----------

Die Hardware stammt aus HongKong und ist mittels ebayscher Suche leicht zu finden.
  • Propeller
  • 64k EEPROM
  • FTDI-USB-Schnittstelle
  • µSD-Slot
  • wahlweise per Steckernetzteil oder USB bestrohmst
    (was das Argument für den Clone und gegen das Original war)
...diese Hardware ist also frei von schwarzer Magie oder exotischer Peripherie, was deren Einfluß auf obige Spielereien natürlich minimiert.

----------

Edit:

Für Antworten hierzu die das Betriebssystem Sphinx (ich bemühe mich es fortan demonstrativ SphinxOS zu nennen) mehr im Fokus haben als den unter SphinxOS laufenden Spincompiler der im Voilksmund oft auch häufig Sphinx genannt wird habe ich einen eigenen Thread angelegt: http://hive-project.de/board/viewtopic.php?f=6&t=472

Hier also bitte wieder auf das Ziel den Spincompiler unter TriOS ans Rennen zu bekommen fokussieren...

Danke und Out, Over, Roger!
Zuletzt geändert von yeti am Mo 27. Jun 2011, 05:34, insgesamt 1-mal geändert.
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: Hive.Sphinx

Beitrag von drohne235 »

Ich glaube entscheidend sind letztlich nur lex.bin, codegen.bin und link.bin um den Quelltext zu erzeugen. Die drei Teile nutzen aber noch weitere Objekte.
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Benutzeravatar
TuxFan
Beiträge: 1022
Registriert: So 6. Sep 2009, 11:18

Re: Hive.Sphinx

Beitrag von TuxFan »

Hi,
ist die Ausgabe von Sphinx_PC in diesem Post (103) von Arriba der aktuellste Stand ?

Falls ich mal ein bisschen Zeit abkneifen kann, werde ich mich auch mal daran versuchen. Mein SoMProp-Modul hat bis auf die zusätzlich vorhandene RTC und die andere PIN-Belegung der SD-Karte die gleiche Struktur wie der "Gadget-Gangster-Propeller-Platform-USB-SD-Clone". Das Thema Sphinx beginnt mich zu interessieren.

Gruß
TuxFan
Wunder gibt es immer wieder.......
Benutzeravatar
yeti
Beiträge: 2300
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Arrrrrriba arrriba! Andaleeeeee....

Beitrag von yeti »

TuxFan hat geschrieben:ist die Ausgabe von Sphinx_PC in diesem Post (103) von Arriba der aktuellste Stand ?
Was die Shell bzw das OS Sphinx betrifft ja. Ariba verwies in einem anderen Thread vor ein paar Tagen noch genau auf Post 103... was ich als Aussage interpretiere, daß das immernoch Stand der Dinge ist was seine Änderungen angeht.

Der Spin-Compiler ist dabei nicht enthalten sondern nur was in den Originalquellen in den Verzeichnissen sphinx0 (bzw sphinx2) liegt und Originalquellen liegen in neuerer Version an bekannter Stelle vor.

Man kann aus Aribas Files das Betriebssystem Sphinx für Ausgabe auf die USB-Schnittstelle statt Tastatur und TV bauen aber was in den Originalquellen im Verzeichnis sphinx1 ist (Compiler und Tools) sollte dann mit denselben Änderungen kompiliert werden.

Da Sphinx die I/O-des OS beim Start der Programme für Sphinx aktiv läßt, laufen aber auch sphinxschen bin-Files die aus den Originalquellen stammen soweit sie nicht explizit eigene I/O-Routinen mitbringen. Die also erstmal nicht wegwerfen...

...aber wenn die Quellen aus spinx1 auf die SD kopiert werden, dann danach die von Ariba geänderten Files wieder drübersortieren. Das sollte lediglich die Tastatur- und TV-Sachen betreffen und sphinx.spn selbst (was bei Ariba sphinx_pc.spn heißt, aber der deinfachheit halber zu sphinx.spn umbenannt werden muß da Sphinxprogramme terminieren indem sie sphinx.bin laden und starten).
TuxFan hat geschrieben:Falls ich mal ein bisschen Zeit abkneifen kann, werde ich mich auch mal daran versuchen. Mein SoMProp-Modul hat bis auf die zusätzlich vorhandene RTC und die andere PIN-Belegung der SD-Karte die gleiche Struktur wie der "Gadget-Gangster-Propeller-Platform-USB-SD-Clone". Das Thema Sphinx beginnt mich zu interessieren.
:-D

Der Editor ist noch nicht seriell nutzbar... das ist alles noch recht unhandlich... Änderungen kann man derzeit nir am PC anbringen, dann wieder die SD umstöpseln usw...

Wenn ich es schaffe da am Ball zu bleiben ist ein Filetransfer zwischen Sphinx und PC noch höher auf der MachMichListe als der Editor. Ich meine irgendwo schonmal XModem in Spin gesehen zu haben... wird sich wohl wieder lokalisieren lassen...
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: Hive.Sphinx

Beitrag von drohne235 »

Ich habe mal die Struktur der letzten Version direkt von der Projektwebseite (http://www.sphinxcompiler.com/) extrahiert:

Code: Alles auswählen

            sphinx.spin
              │
              ├──sxkb.spin
              │
              ├──sxtv.spin
              │
              ├──sxfs.spin
              │    │
              │    ├──sxfs2.spin
              │    │
              │    └──sxsdspiq.spin
              │
              ├──sxfile.spin
              │    │
              │    └──isxfs.spin
              │
              └──fdserial.spin

Code: Alles auswählen

            lex.spin
              │
              ├──isxtv.spin
              │
              ├──tokenizr.spin
              │    │
              │    ├──sxfile.spin
              │    │    │
              │    │    └──isxfs.spin
              │    │
              │    ├──fltstr.spin
              │    │    │
              │    │    └──fltmath.spin
              │    │
              │    ├──keywords.spin
              │    │    │
              │    │    └──bintree.spin
              │    │         │
              │    │         └──stringx.spin
              │    │
              │    └──bintree.spin
              │         │
              │         └──stringx.spin
              │
              ├──keywords.spin
              │    │
              │    └──bintree.spin
              │         │
              │         └──stringx.spin
              │
              ├──sxfile.spin
              │    │
              │    └──isxfs.spin
              │
              ├──stringx.spin
              │
              └──bintree.spin
                   │
                   └──stringx.spin

Code: Alles auswählen


            codegen.spin
              │
              ├──isxtv.spin
              │
              ├──kwdefs.spin
              │
              ├──symbols.spin
              │    │
              │    └──bintree.spin
              │         │
              │         └──stringx.spin
              │
              ├──bintree.spin
              │    │
              │    └──stringx.spin
              │
              ├──sxfile.spin
              │    │
              │    └──isxfs.spin
              │
              ├──stringx.spin
              │
              ├──tokenrdr.spin
              │    │
              │    ├──isxfs.spin
              │    │
              │    ├──kwdefs.spin
              │    │
              │    └──bintree.spin
              │         │
              │         └──stringx.spin
              │
              ├──eval.spin
              │    │
              │    ├──kwdefs.spin
              │    │
              │    ├──tokenrdr.spin
              │    │    │
              │    │    ├──isxfs.spin
              │    │    │
              │    │    ├──kwdefs.spin
              │    │    │
              │    │    └──bintree.spin
              │    │         │
              │    │         └──stringx.spin
              │    │
              │    ├──bintree.spin
              │    │    │
              │    │    └──stringx.spin
              │    │
              │    └──symbols.spin
              │         │
              │         └──bintree.spin
              │              │
              │              └──stringx.spin
              │
              └──methods.spin
                   │
                   ├──bintree.spin
                   │    │
                   │    └──stringx.spin
                   │
                   ├──symbols.spin
                   │    │
                   │    └──bintree.spin
                   │         │
                   │         └──stringx.spin
                   │
                   ├──kwdefs.spin
                   │
                   ├──eval.spin
                   │    │
                   │    ├──kwdefs.spin
                   │    │
                   │    ├──tokenrdr.spin
                   │    │    │
                   │    │    ├──isxfs.spin
                   │    │    │
                   │    │    ├──kwdefs.spin
                   │    │    │
                   │    │    └──bintree.spin
                   │    │         │
                   │    │         └──stringx.spin
                   │    │
                   │    ├──bintree.spin
                   │    │    │
                   │    │    └──stringx.spin
                   │    │
                   │    └──symbols.spin
                   │         │
                   │         └──bintree.spin
                   │              │
                   │              └──stringx.spin
                   │
                   └──tokenrdr.spin
                        │
                        ├──isxfs.spin
                        │
                        ├──kwdefs.spin
                        │
                        └──bintree.spin
                             │
                             └──stringx.spin

Code: Alles auswählen

            link.spin
              │
              ├──isxtv.spin
              │
              ├──sxfile.spin
              │    │
              │    └──isxfs.spin
              │
              └──stringx.spin

"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Antworten