iSpin, Forth und der Rest der Welt

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:

iSpin, Forth und der Rest der Welt

Beitrag von drohne235 »

Zum iSpin gibt es erstmal eine (vorhersehbare) Essenz: Es ist relativ langsam, da es ja eine in Spin geschriebene Forthstruktur ist. Die Idee damit einen Assembler oder Spin-Compiler zu schreiben erscheint mir momentan gerade nicht mehr so reizvoll, weshalb ich auch gerade einen anderen Weg verfolge. Da ihr ja noch keinen Hive auf dem Tisch habt mal einen Vergleich: Es ist gefühlt etwa so wie das Basic auf dem C64/Atari XL - also keine Rakete, aber dennoch erstaunlich, da es ja selbst in einer Hochsprache geschrieben ist. Obwohl ich momentan nicht weiter daran arbeite, war es doch eine interessante Sache, da es nebenher ja auch einfach der Versuch war sich die Forthmechanismen selbst zu erarbeiten, und das geht ja ganz gut wenn man so etwas in einer Hochsprache versucht.

Zum Stand: Grundlegende forthtypische Befehle sind vorhanden, man kann eigene Worte compilieren und natürlich ausführen. Mit den letzten eingebauten Worten kann man Screens von einer Screendatei in das iSpin compilieren, aber da ist schon nicht mehr alles getestet. Also Baustelle. Das Wörterbuch wird momentan noch beim Start aus dem hRam in den eRam kopiert und dort verwaltet. Endgültig soll das Wörterbuch aber von SD-Card direkt in den eRam geladen werden. Auch ist momentan noch massig Debugcode in der Quelle enthalten um der virtuellen Maschine ins Getriebe schauen zu können - das kann letztlich auch raus.

Da ich nun denke durch die Arbeit an iSpin ein wenig mehr von Forth zu verstehen, ist aber der Wunsch aufgekeimt, mit diesen neuen Erkenntnissen näher an die hohe Geschwindigkeit der RISC-Kerne zu rücken - ein Forth direkt auf einem RISC wäre schon eine höllische Sache. Allerdings fehlt mir dazu halt noch das Wissen bezüglich PASM, mit dem ich momentan intensiv experimentiere. Da PASM ca. um den Faktor 100 schneller als Spin ist wird schnell klar was da möglich wäre. Momentan bastle ich an einigen Sachen um mal ganz hautnah mit den RISC-Kernen auf unterster Ebene zu kommunizieren. Das ist so meine Art, ich muß das "anfassen" um es zu verstehen, später kann man dann komplizierter werden. Die verrückte Idee die mir dabei kam ist folgende: Wäre es möglich eine Art Microbetriebssystem zu realisieren, welche einzig direkt in den RISC-Kernen läuft? Dabei steht jetzt definitiv kein Nutzen im Vordergrund, das ganze ist mehr ein Spiel um mal in PASM was zu machen. Wäre es also möglich direkt in den begrenzten Ressourcen einer COG eine CLI laufen zu lassen? Eine minimale CLI mit der man dann weitere Microprogramme in den verbleibenden anderen Cogs starten kann. Eine Cog (ich nenne sie mal iCog) würde die Aufgabe der Kommunikation zum RAM/BUS/Slaves übernehmen. In diesem MicroOS könnte man dann insgesamt 8 Programme starten - neben der iCOG + CLI (hier mal eine Skizze dazu:http://picasaweb.google.com/lh/photo/jc ... directlink) also noch 6 weitere. Wenn das funktioniert folgt der nächste Gedanke: Wäre es möglich in einer Cog einen Assembler, einen Monitor, einen Forthkernel oder einen XYZ laufen zu lassen? Das ganze ist also der Versuch die Sachen mal nicht von der abstrakten Ebene von Spin aus zu denken, sondern quasi aus der Cog herraus das System interaktiv zu ergründen - einfach um mal mit diesen Strukturen zu experimentieren.
"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
Mandalargon
Beiträge: 28
Registriert: Do 28. Mai 2009, 20:46
Wohnort: Hamburg, Berlin, Leipzig

Re: iSpin, Forth und der Rest der Welt

Beitrag von Mandalargon »

An dem Forth würde ich mich gerne beteiligen wollen, da es die von mir bevorzugte Sprache für diesen Rechner wäre. Ich habe vor Jahren einmal eines auf einem 8bit Prozessor implementiert. Hoffentlich ist bei mir nicht allzuviel Wissen verschüttet worden ;-)

Grüsse aus Hanoi
Benutzeravatar
Rainer
Beiträge: 510
Registriert: Fr 29. Mai 2009, 16:11

Re: iSpin, Forth und der Rest der Welt

Beitrag von Rainer »

Hi Forth-Freaks.
Ich habe jetzt mal ein bißchen rumprobiert, habe aber immer noch ein paar Verständnisprobleme.

Habe mal folgenden Code probiert:
Zweierpotenzen

Code: Alles auswählen

70000 1  DO  I  .  I  +LOOP
Das funktioniert wie gewünscht .. und weil dieser Code die Welt verändern wird, "erzeuge" ich mal ein Wort damit (Nennt man das so?)

Code: Alles auswählen

: BLUB
	70000 1 DO I . I +LOOP
;
Nach Eingabe des neuen Worts "BLUB" passiert auch das was ich erwartet habe

Code: Alles auswählen

BLUB
1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536  ok
Alles Klasse. Ich programmiere also weiter an meinem Programm "World domination" und benutze mein neues Wort in meinen Programmen

Code: Alles auswählen

: DOPPELBLUB
	BLUB CR BLUB
;
Tut auch das was es soll:

Code: Alles auswählen

DOPPELBLUB
1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536  
1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536   ok
Jetzt benutze ich ein Programm eines anderen, um es in meinem Programm zu integrieren. (Also, wenn ich das richtig verstanden habe benutze ich "Words" von ihm und erweitere mein eigenes Wörterbuch damit).
Der Typ hatte aber die gleiche genial Idee mit dem "BLUB-Wort", nur hat er es (natürlich ;) ) falsch gemacht.

Code: Alles auswählen

: BLUB
	7000 1 DO I . I +LOOP
;
Wenn ich jetzt mein Programm aufrufe, passiert daß:

Code: Alles auswählen

DOPPELBLUB
1 2 4 8 16 32 64 128 256 512 1024 2048 4096 
1 2 4 8 16 32 64 128 256 512 1024 2048 4096  ok
"world domination rejected" :(

Nun meine Fragen:
1. Beim Redefinieren von "BLUB" wurde ich nicht gewarnt. Ist das normal oder lag's an dem Online-Forth-Interpreter, den ich benutzt habe ?
2. Kann man Wörter irgendwie gegen überschreiben sichern ? Wäre fatal wenn nicht ... Programme (Wörter) können ja beliebig komplex werden.
3. Ich habe (bis jetzt) noch keinen Weg gefunden, irgendwie ein "Listing" meiner neuen Wörter zu kriegen. Kann man den Inhalt der einzelnen Wörter irgendwie sehen ? Geht bestimmt .. Programmieren ohne meine Listings zu sehen scheint mir unmöglich.

Ansonsten finde ich Forth nicht uninteressant. Sich aus einer Teilmenge von Wörtern seine eigenen zu "basteln" die in die Programmiersprache selber eingehen hat schon was.
Ich hoffe ihr habt ein bischen Geduld mit mir ... ich kenne 99 % der Sprache noch nicht .. normalerweise kommen in anderen Foren RTFM (read the fuc**** manual !) bei solchen NOOB-Fragen .. ich hoffe hier ist es anders ;)

Gruß.
Rainer
"Wer andauernd begreift, was er tut, bleibt unter seinem Niveau."
Benutzeravatar
Rainer
Beiträge: 510
Registriert: Fr 29. Mai 2009, 16:11

Re: iSpin, Forth und der Rest der Welt

Beitrag von Rainer »

Ok, hab's selber rausgefunden:

1. Beim Redefinieren von "BLUB" wurde ich nicht gewarnt. Ist das normal oder lag's an dem Online-Forth-Interpreter, den ich benutzt habe ?
----- Der neue Compiler warnt, verhindert es aber nicht

2. Kann man Wörter irgendwie gegen überschreiben sichern ? Wäre fatal wenn nicht ... Programme (Wörter) können ja beliebig komplex werden.
----- Auch wenn "BLUB" überschrieben wird, ändert sich an "DOPPELBLUB" erst mal nichts. Erst wenn man "BLUB" in neue Wörter integriert gilt die neue Definition. Hätte ich auch eher drauf kommen können .. "DOPPELBLUB" ist ja schon kompiliert.

3. Ich habe (bis jetzt) noch keinen Weg gefunden, irgendwie ein "Listing" meiner neuen Wörter zu kriegen. Kann man den Inhalt der einzelnen Wörter irgendwie sehen ? Geht bestimmt .. Programmieren ohne meine Listings zu sehen scheint mir unmöglich.
----- Mit "SEE" kann man den Inhalt der Wörter anzeigen
"Wer andauernd begreift, was er tut, bleibt unter seinem Niveau."
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: iSpin, Forth und der Rest der Welt

Beitrag von drohne235 »

Poste doch mal den Link von diesem Online-Forth Rainer.

Also soweit ich das verstehe wird bei einem normalen Forth nicht unbedingt gewarnt wenn man ein Wort neu definiert - beide Worte bestehen dann nebeneinander im Wörterbuch. Allerdings kann diese neue Wortdefinition auch nur in chronologisch späteren Worten verwendet werden, alle früheren Referenzen bleiben erstmal so bestehen. Es gibt da zwar einige Möglichkeiten wie man das auch anders machen kann, aber wenn man ein neues Wort mit gleichem Namen definiert wird für weitere Worte ab diesem Moment diese neue Definition verwendet.

Wenn man sich das Wörterbuch anschaut wird das ganze auch klar: Gesucht wird vom Compiler vom letzten Eintrag nach unten. Mit "list" oder "words" kannst du dir das wörterbuch anschauen und da müßten auch deine selbst definierten worte erscheinen. hol dir zum experimentieren doch einfach gforth - gibt es für alle systeme.

letztlich wird man programme aber auch bei forth im quelltext schreiben, aber man kann schön interaktiv die einzelnen worte testen.

Ich hab mal zwei einführende Artikel zu Forth eingescannt, die gibt es dann morgen im Downloadbereich der Webseite. Für mich waren die sehr interessant als ich mit Forth angefangen habe.
"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
Bushmills
Beiträge: 48
Registriert: Di 9. Jun 2009, 20:24
Wohnort: Wörrstadt

Re: iSpin, Forth und der Rest der Welt

Beitrag von Bushmills »

rainer,
zu 1+2: nee, ist nicht fatal wenn Redefinitionen nicht verboten werden. Wie Du selbst schon rausgefunden fast, haben die ja nur Einfluß auf die danach kompilierten Worte, welche die Redefinitionen verwenden
3: Auch das Dekompilieren (Deforthen?) von Worten mit see ersetzt das Editieren nach Massenspeicher, und anschließendem Laden nicht - schließlich möchtest Du den Code eventuell auch noch mal verändern. Außerdem tut see, je nach Implementation, es oft nicht gut mit flow control, also z.b. BEGIN WHILE REPEAT oder IF ELSE THEN Strukturen wieder lesbar zu machen. Den Source öffnen und da reinschauen ist da oft besser, auch wegen eventuellen Kommentaren oder Angabe des Stackeffektes.
An und zu hats auch ein Word, welches aus dem Forth heraus aufgerufen die Sourcedefinition direkt anzeigen kann, oder den Editor öffnet, und den Cursor auf das Wort im Source setzt (oft modify genannt, also modify wordname, und schwupps haste den Source einsichtbar und veränderbar)
Benutzeravatar
Bushmills
Beiträge: 48
Registriert: Di 9. Jun 2009, 20:24
Wohnort: Wörrstadt

Re: iSpin, Forth und der Rest der Welt

Beitrag von Bushmills »

Tag Drohne235,
Meinste mit "Online-Forth" dieses:
http://forthfreak.net/jsforth80x25.html

(das braucht Javascript an, und läuft ganz grauslig mit Internet Explorer, aber prima mit allen gekko-basierten, also Firefox, Mozilla, Galeon, Epiphany etc. Auch neuere Operas, gerade mit v 9.63 probiert, tuns gut).

Hier u.a. eine Liste der Browser-Kompatibiltäten und -inkompatibilitäten:
http://forthfreak.net/index.cgi?jsforth
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: iSpin, Forth und der Rest der Welt

Beitrag von drohne235 »

Also das hätte mich jetzt echt gewundert wenn du nicht auch sowas auf deiner Seite hättest... :lol: Läuft scheinbar auch gut in Chrome. Die Artikel die ich eingescannt habe sind vielleicht auch noch was für deine Sammlung.
"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
Bushmills
Beiträge: 48
Registriert: Di 9. Jun 2009, 20:24
Wohnort: Wörrstadt

Re: iSpin, Forth und der Rest der Welt

Beitrag von Bushmills »

"see" hat's auch, muß aber erst geladen, sprich kompiliert werden:
21 load
dann, nach kurzer wartezeit, steht "see" zur verfügung, welches außer hi-level worten auch primitives als javascript source anzeigt.
aber source code davon gibts natürlich auch.
Benutzeravatar
Rainer
Beiträge: 510
Registriert: Fr 29. Mai 2009, 16:11

Re: iSpin, Forth und der Rest der Welt

Beitrag von Rainer »

Ich habe diesen hier benutzt:
http://solidcoding.blogspot.com/2008/12 ... reter.html

Ist aber sehr eingeschränkt .. und hat mich zuerst auf die falsche Fährte gelockt.

Ich habe mir mittlerweile Win32-Forth runtergeladen. Funktioniert ganz gut.

Und ja, ihr habt natürlich Recht. Irgendwie hatte ich die Illusion ich könnte mir die ganze "chain" von Programmierumgebung sparen.
Bei genauerem Nachdenken ist das natürlich Quatsch ... natürlich ist da ein Editor dabei und alles Mögliche "Kleinzeug", das man halt so braucht.
Trotzdem ist es schon Praktisch, kleiner Sachen sofort testen zu können.

Ist irgendwie so interaktiv wie Basic, ziemlich schnell und extrem strukturiert (ich glaube, mit Forth kann man per se nicht unstrukturiert programmieren .. selbst mit Gewalt nicht ;) ).

Gruß.
Rainer
"Wer andauernd begreift, was er tut, bleibt unter seinem Niveau."
Antworten