Archive for the ‘Forth’ Category.
20. Mai 2013, 16:28
Ich war die letzten Tage eine fleißige Drohne und habe ein nutzbare Version zusammengeschnürt und sogar noch ein paar Texte für den Einstieg geschrieben. Die spannenden Sachen wie Sound und Grafik fehlen noch, aber denen kann ich mich ja nun endlich zuwenden...
Link: Fred im Forum zum Thema für Rückmeldungen und Fragen
| Beschreibung: | mental Alpha V0.A Zur Installation bitte im Verzeichnis DOC nachlesen! |  |
| Version: | 20.05.2013 vom: 20.05.2013 |
| Dateigröße: | 4.66 MB |
20. Mai 2013, 13:46

So komme ich mir manchmal bei meinen Experimenten mit dem Hive vor: Allein TriOS als einfaches Mini-OS ist eine kleine Welt für sich und mental erscheint mir wie ein Paralleluniversum…
Nun ja, diese aktuelle Version von mental bezeichne ich mal als Alphaversion. Startbar unter TriOS oder auch völlig eigenständig nutzbar, indem der Chipcode im Flash gespeichert wird. Eine Minidokumentation "Der erste Außeneinsatz" ist ebenfalls verfügbar. Ohne Grafik und Sound kann man zwar noch nicht so viel spannende Sachen damit machen, aber das steht als nächstes auf dem Plan - immer schön einen Schritt nach dem anderen.
Im folgenden Text werde ich die Entstehung und inneren Mechanismen von mental ein wenig genauer beleuchten. Interessant für Neugierige, aber mit Sicherheit auch für Einsteiger in die Programmierung der Cogs in Assembler. Wer nicht so der Typ "Scotty" ist und mental nur nutzen möchte, sollte besser nicht den Maschinenraum betreten und gleich mit dem Text "Der erste Außeneinsatz" fortfahren! Alle Boardingenieure sind aber herzlich eingeladen zu einem Rundgang...
Alles begann im Jahr 2008... Weiterlesen
Und hier noch, quasi als Rundumversorgung, die passende Musik für den Artikel, frisch am Hive aufgenommen, folgend die DMP-Dateien um die Musi selbst auf dem Hive mit dem SID-Player anzuhören.
| Beschreibung: | Star Trek Musik im DMP-Format
|  |
| Version: | 20-05-2013-dr235 vom: 20.05.2013 |
| Dateigröße: | 14.71 kB |
| Beschreibung: | 1_der_weltraum_unendliche_weite Artikel im PDF-Format
|  |
| Version: | 20-05-2013-dr235 vom: 20.05.2013 |
| Dateigröße: | 1.69 MB |
1. November 2012, 22:49
.:.:-- TACHYON --:.:.
Hmm, hab ich doch in dem Beitrag zum Geschwindigkeitsvergleich glatt vergessen zu erwähnen was Tachyon überhaupt ist. Ok, das holen wir hier mal nach! Lassen wir einfach Peter Jakacki - dem Entwickler von Tachyon - zu Wort kommen: "TACHYON - A Fast and small Forth byte code VM". Tachyon ist also wie m ein Forth-Derivat mit einigen wirklich interessanten Eigenschaften. Das primäre Ziel ähnelt PropForth: Es soll ein interaktives Entwicklungswerkzeug sein, welches auf einem Propellerchip läuft und typisch über die serielle Schnittstelle und ein Terminalprogramm auf einem Hostcomputer bedient wird. Man kann es also nicht wirklich mit m und mental vergleichen, welches ja dem Hive mit seinen drei Propellerchips auf den Leib geschneidert ist. Im Gegensatz zu PropForth ist Tachyon sehr schnell und wahrscheinlich auch recht klein - genaue Zahlen zum Speicherverbrauch habe ich aber leider noch nicht. Da es aber ein klassisches Forthmodell ist, dürfte es auch mehr Speicher belegen als der m-Core, welcher ja viele Aufgaben nebenläufig auf die beiden Slaves verteilt. Continue reading ‘Was ist Tachyon?’ »
16. September 2012, 10:15
14. Juli 2012, 21:29
Konsequente UPN-Syntax ist ja schick und einfach zu implementieren, wie ich im letzten Artikel beschrieben habe. Aber an einigen Stellen bürstet UPN echt gegen den Strich der langjährigen Konditionierung durch den Mainstream. So zum Beispiel bei dem cd-Kommando, mit welchem man im Verzeichnisbaum navigieren kann. So wird nun aus
cd system
durch die Konsequente Anwendung natürlich
system cd
Ich nehme das mal sportlich, und werde das erste Mal, wenn ich in einer Linux-Kommandozeile UPN eintippe rot am Kalender markieren als jenen Tag, an welchem ich mehr Zeit am Hive als unter Linux zugebracht habe. Naja und mal ehrlich, Infix kann und hat ja jeder...
Continue reading ‘m: Also daran muss ich mich erstmal gewöhnen…
’ »
1. Juli 2012, 11:37

Weiter auf meinem Weg zur Weltherrschaft zu Forth einer forthähnlichen Sprache auf dem Hive. An sich funktionieren ja schon einige Sache bei m: Der Interpreter läuft, ausführbare Worte können compiliert und Quelltexte können in einem Screeneditor bearbeitet werden. Dennoch erinnerte ich mich an einige Leichen im Keller: Die Worte "token" und "m" enthielten noch als erste Fassung eine recht unübersichtliche Struktur. Nicht das diese Worte nicht funktionierten, aber irgendwie war die Realisierung nicht wirklich handlich und elegant.
Wir erinnern uns: Da m ein verteiltes System ist, enthält der Core in Regnatix keinen Parser für eine Eingabezeile und auch keine Worte für eine formatierte Ausgabe. Schließlich habe wir ja ein massiv paralleles System, soll sich doch Bellatrix um diesen Krempel kümmern, in Regnatix haben wir dafür keinen Platz! Und Bella kann sich auch wirklich viel besser um die Interaktionen mit dem Benutzer kümmern, da ja alle Ressourcen (Tastatur und Bildschirm) an diesen Chip angeschlossen sind. Continue reading ‘Jeden Tag ein gutes Wort: perform und andere tolle Sachen’ »
2. April 2012, 00:10
Es scheint im Moment zwar etwas ruhig, aber ich arbeite aktuell intensiv an m. Allerdings brauche ich bald ein wenig Abwechslung und werde mich mal wieder ein wenig TriOS und Spin zuwenden. Dennoch hat m schon enorme Fortschritte gemacht, wie man auf den Screenshots sicher erkennen kann. So ist eine erste Version eines Quelltexteditors integriert, welcher komplett in Bellatrix läuft. Auch grundlegende SD-Funktionalitäten sind schon verfügbar (ls, lsl, cd) und die Quelltexte können bearbeitet und in einer Screendatei gespeichert werden. Der nächste Quantensprung wird mit Eingabeumlenkung und dem damit realisierbaren load-Kommando kommen. Dann können die Quelltexte auch den Interpreter/Compiler füttern. Es können also nicht nur die Quelltexte auf dem Hive bearbeitet, sondern auch compiliert und interpretiert werden. Ach ja, aktueller Landmark: 3246 Bytes.

An einigen Stellen ist der Code aber noch nicht optimiert. Ich denke einige Codefragmente zur Kommunikation mit den Slaves können noch ausfaktorisiert werden um Speicher zu sparen. Auch das literal-Wort ist mir noch zu einfach, denn es compiliert momentan immer default ein Long-Literal in den Code, aber ich habe auch ein Word-Literal und ein im Code ingebettetes sehr platzsparendes 6Bit-Literal für Werte zwischen 0..63. Da ich momentan noch von Hand im Assembler compiliere, erledigt das noch mein Kopf, aber spätestens wenn es direkt aus dem Quelltext kommt, wird das ein Thema.
Ich habe gerade zur letzten Meldung zum Thema m vom 11. März zurückgeblätter und festgestellt, das noch wesentlich mehr hinzugekommen ist. Kurz in Stichpunkten:
- for..i..next
- if..else.then
- do..i..loop/+loop
- begin..leave..until/again
- Systemcounter: cnt wait clkfreq
- PASM-Code für externen RAM: x! x@
- SDCard: ls lsl cd mount unmount ?mount
- Screendatei: open close read write list scr! scr@ pos! scrnr scrmax
- Editor: ed edrd edwr ed+ ed- ed0
Der Editor ist typisch Forth weniger ein monolithischer Code, sondern vielmehr ein Editorbaukasten. Mit "open work.blk ed0" wird die Screendatei geöffnet, Screen 0 in den Editor geladen und der Editor selbst gestartet. Die Worte ed+/ed- rufen den nächsten/vorigen Screen im Editor auf. Änderungen werden mit "edwr" auf SDCard geschrieben. Die Benutzung der Kommandos geht schon nach kurzer Zeit ziemlich flott von der Hand. Grundlegend sollte das reichen, sobald Quelltexte compiliert werden können, folgen dann bei Bedarf komfortablere Erweiterungen.
Ich gebe zu, das ist für Außenstehende ziemlich esoterisch und trocken, aber mir macht es viel Spaß. Außerdem war das eine gute Gelegenheit, sich intensiv mit PASM auseinanderzusetzen. Bin gespannt, wie das Abenteuer mit mental weitergeht.
4. März 2012, 19:11
Hab ich schon erwähnt, dass seit gestern abend der Interpreter läuft?
Ab jetzt kann ich im wesentlichen direkt unter m debuggen und testen. Und das motivierende an der Geschichte ist der freie Speicher in Regnatix: 31365 Byte! Das wird noch schrumpfen, aber ich habe ein gutesGefühl, dass Ziel von 2 KB für den m-Core zu erreichen.
Jetzt ein paar Werkzeuge wie dump um den Speicher direkt in m anzuzeigen und dann kommen schon die ersten Compilerworte. Als nächstes Blockinterface und Screeninterface und ich kann schon ohne Host autark programmieren.
3. März 2012, 00:35

Ok, ich bekenne mich schuldig: Es hat mich wieder gepackt und ich bastle momentan an einem neuen Softwaresystem für den Hive. Das System wird eine Alternative zum TriOS und besitzt als Kern eine eigene Programmiersprache, die ich ganz unerotisch auf den Namen "m" getauft habe. Im Gegensatz zu TriOS, Spin und PropForth ist es ein völlig neuer Ansatz, dessen Ziele man in vier Worten zusammenfassen kann: autark, klein, schnell und einfach.
Autark: Das System soll sowohl Interpreter, Compiler, Debugger, Quelltexteditor enthalten und mit diesen Funktionen sofort und ohne Bootzeit (also aus dem EEPROM) einsatzbereit sein.
Klein: Ziel ist eine Größe von 2 KB Speicherverbrauch in Regnatix - 30 KB stehen also für die eigentliche Anwendung zur Verfügung.
Schnell: Die Kernroutinen sind in PASM geschrieben. Ein erster Vergleich ergab, dass m deutlich schneller als Spin und PropForth ist.
Einfach: Ein kleiner und übersichtlicher, klar verständlicher Befehlssatz.
Das sind die Ideen. Momentan läuft die VM, also der innere Interpreter. Der äußere Interpreter und der Parser inklusive Zeileneditor ist zum überwiegenden Teil fertig und ich hoffe dieses Wochenende das erste mal ohne Spin-Debugger interaktiv mit m arbeiten zu können.
17. April 2011, 21:02



Ein kleiner Etappensieg auf dem Weg zur Weltherrschaft: Ich habe PropForth in TriOS integriert. Klingt nicht sehr spektakulär, ist aber eine ziemlich coole Sache. Das Forth residiert dabei zusammen mit dem Loader im unteren EEPROM und ist somit sofort nach dem Einschalten des Gerätes nutzbar. Für die Nutzung von Forth ist es also nicht mehr nötig, einen ROM mit 64K zu verwenden.
Continue reading ‘TriOS = Regime + Forth’ »
14. Februar 2011, 00:58
...komplexere Funktionen in PropForth zu realisieren:
: ls dir 0 begin .entry lscnt 0= until drop padbl cr ;
Und was machts? Klar, ein ls-Kommando, um das Verzeichnis auf SD-Card im Spaltenformat anzuzeigen. Ist ja wohl der Hammer! Am Anfang war die Funktion natürlich nicht so einfach, sondern eher unübersichtlich, verschachtelt und erstreckte sich über mehrere Zeilen. Aber nach einem zweiten Anlauf wurde es dann dieser Einzeiler.Keine Ahnung ob das jetzt vernünftiger Code ist, aber mir gefällt es enorm. Ich muss sagen, ich verliebe mich gerade wieder neu über beide Ohren in Forth...
Continue reading ‘So einfach kann es sein…’ »
1. Februar 2011, 15:28
Kurzer Zwischenbericht zum PropForth: Da die momentane Version ja bestehenden Spin-Code in Administra und Bellatrix nutzt, geht es ziemlich flott vorwärts. Ich habe eine erste Version eines Satzes von Worten erstellt, um das Businterface zu steuern:
Continue reading ‘Multitasking’ »
30. Dezember 2010, 23:10
Hey, da hat es mich doch wieder gepackt: ich bin dabei eines der neuen R14-Boards zusammenlöten. Und wie es so ist, war mir der Bastelkeller dieses mal nicht heilig und ich hab die paar Sachen die dafür gebraucht werden in die gute Stube geschafft - ist ja nicht wirklich viel, wie man auf dem Bild sehen kann. Das der Hive ein "Küchentischdesign" hat ist ja nun schon hinlänglich bekannt und bewiesen, weshalb ich zum Erstaunen der Familie gerade einfach mal teste, wie es mit dem "Weihnachtstischdesign" aussieht! So sitzen wir jetzt bei Tee und Gebäck um den neu errichteten Bastelaltar und alle schauen mir zu...
Continue reading ‘Verspätetes Weihnachtsgeschenk’ »
29. September 2010, 20:30
Nun ist es also soweit: die aktuelle Version 3.4 von PropForth enthält die erste Version der Jupiter ACE Erweiterung mit VGA und Keyboard Support. Mit dieser Version kann man also einen einzelnen Propellerchip zu einem vollwertigen Forth-Computer machen, mit welchem man ohne Host einen Compiler, Interpreter, Assembler und ein einfaches Betriebssystem zur Verfügung hat.
Ich hab das natürlich gleich auf meinem Demoboard getestet. Die Installation ist extrem einfach:
Continue reading ‘Prop: Jupiter ACE’ »