Archive for the ‘mental’ Category.

Digitaler $%&°*#$-Vergleich und andere spaßige Sachen

Irgendwann will man es halt wissen: Wie schnell ist denn jetzt die selbst geschriebene Programmiersprache auf dem Eigenbaucomputer? Naja, halt der typische digitale $%&°*#$-Vergleich……;) Und da ich heut ein wenig Langeweile habe und draußen so trübes Wetter ist, wollte ich mich halt ein wenig an tachyonischen Geschwindigkeitswerten meines Forthsystems berauschen und ergötzen.

Nun gut, die Werte sind ganz brauchbar, obgleich ich da so ein verdammtes amerikanisches Forth kenne, welches da noch deutlich einen drauflegt. Hab noch keine Ahnung wie er das veranstaltet. Aber dafür ist der Hive mit mental völlig autark programmierbar, ohne einen Hostcomputer oder ähnliche feige Hilfsmittel. Ätsch! 🙂

Was ist also in dem Clip zu sehen?: Ein kleines Demo, welches die Funktion von meinem mental-Forth auf dem Hive-Computer zeigt. Nix großes, einfach nur zur Ansicht der Funktion des Quelltexteditors, Compilers und Interpreters am Beispiel eines „Hello World!“ und eines Fibonacci-Benchmarks mit ganz brauchbaren Werten für so ein Gerät.

Der Quelltexteditor läuft komplett im Bellatrix-Chip (der Hive basiert auf drei Mikrocontrollern) und kennt neben dem farbigen Modus zur Eingabe von Forth-Quelltexten auch einen reinen Textmodus. Mit dem Kommando „br“ (browse) wird der Screenbrowser aufgerufen um in den Screens zu „surfen“, diese zu editieren, speichern usw. Ist so ein typisches gewachsenes „Werkstatt-Tool“ und ungemein praktisch.

Wie man sieht, ist mental durchaus schon benutzbar und man kann schon völlig autark am Hive ohne einen Hostcomputer programmieren. Zudem belegt der Core von dem zu sehenden Forth gerade mal 3694 Bytes, mit den komfortablen Tools wie im Video sind es gerade mal 4432 Bytes! Hey, als Laie und für ein erstes selbst gestricktes Forth ist das ganz brauchbar!…:) Aber unabhängig davon ist mental noch weit entfernt von einem fertigen Status. Letztlich ist es ja auch nicht so wichtig, da es sich ja mehr um ein persönliches Lern- und Spaßprojekt handelt. Just for Fun!

Der erste Außeneinsatz

mental ist nun in einer startbaren Alphaversion angekommen und wird damit für erste Experimente in die freie Wildbahn entlassen, womit eine Minidokumentation fällig wird.

Verfügbar ist dieser „Erste-Schritte“-Text, eine umfangreiche Referenztabelle der aktuell implementierten Worte in mental und ein Text mit Überlegungen und Einsichten aus dem „Maschinenraum“ (1 – Der Weltraum, unendliche Weite) des Systems. Beide Texte beziehen sich auf die Alphaversion, können also in der weiteren Entwicklung von der Realität überholt werden. Zudem gibt es hier noch keine systematische Einweisung, sondern vorerst nur einige nutzbare Beispiele, die den Weg für den Neugierigen ebnen sollen. Es wird also noch nicht genau erklärt, wie diese forthähnliche Sprache im Detail funktioniert, sondern nur auf Besonderheiten und Abweichungen eingegangen.

Der erste Außeneinsatz… Weiterlesen

mental Alphaversion zum Experimentieren

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!
mental Alpha V0.A 20.05.2013
Version:20.05.2013 vom: 20.05.2013
Dateigröße:4.66 MB

Der Weltraum. Unendliche Weiten. Wir schreiben das Jahr 2013.

emblem

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
Star Trek Musik im DMP-Format 20-05-2013-dr235
Version:20-05-2013-dr235 vom: 20.05.2013
Dateigröße:14.71 kB


Beschreibung:1_der_weltraum_unendliche_weite Artikel im PDF-Format
1_der_weltraum_unendliche_weite Artikel im PDF-Format 20-05-2013-dr235
Version:20-05-2013-dr235 vom: 20.05.2013
Dateigröße:1.69 MB

TACHYON – Schneller als Licht

Nur mal um zu sehen, ob sich m in die richtige Richtung entwicklet, habe ich einfach mal einen Vergleich mit Tachyon gewagt. Tachyon habe ich dabei auf meinem Demoboard installiert, so dass beide  Systeme mit 5 MHz x16 laufen. Folgende Worte habe ich verwendet:

Tachyon:

: t1 1000000 0 DO I I + DROP LOOP ;

: t2 1000000 FOR I I + DROP NEXT ;

In m  sieht diese Definition folgendermaßen aus:

t1 1000000 0 do i i + drop loop ;

t2 1000000 for i i + drop next ;

Die Ergebnisse zeigen, dass meine erste selbst geschriebene Forth-VM so schlecht nicht ist:

Tachyon – t1: 11 Sekunden, t2: 11 Sekunden

m – t1: 8 Sekunden, t2: 7 Sekunden

Wie gesagt, kein repräsentativer Test, aber einfach mal interessant.

Jeden Tag ein gutes Wort: Der Screenbrowser

Aktuell entstehen die ersten nützlichen kleinen Tools direkt in m, also direkt autark auf dem Hive programmiert. Wenn ich in m teste und experimentiere, finden sich schnell Ecken und Kanten, welche umständlich und unpraktisch sind. So die Navigation in den vielen Screens auf dem Massenspeicher. Im Prinzip habe ich ja den gesamten Massenspeicher schon aus dem Bauch heraus in Bereiche geteilt: Continue reading ‘Jeden Tag ein gutes Wort: Der Screenbrowser’ »

Sound für mental

Dieses Wochenende wollte ich anfangen Soundfunktionen in mental zu integrieren. Der ursprüngliche Plan sah vor, zwei SIDCogs zu integrieren und diese durch einen eigenen Tracker zu ergänzen, um gleichzeitig Fx und Musik verfügbar zu haben, ähnlich dem Konzept für TriOS. Obwohl ich ja nun fast von einem Rudel „Basic-Hunden“ auf dem Hive gehetzt bin 😉 habe ich mir ewas Zeit genommen, um noch einmal genauer zum Thema Sound zu recherchieren.

Nun ja, mental ist schon cool, aber so ein stummes OS auf dem Hive ohne Sound ist keinen Pfifferling ist auf die Dauer ziemlich öde, wenn ihr mich fragt. Also war es gut, mal wieder zu kontrollieren, was Ahle2 im hohen Norden so treibt. Volltreffer: Das neue Zauberwort heißt  „Retronitus„, aber hört selbst, was seine neue Soundengine (Beta) schon vollbringt:

Quelle: Retronitus-Thread im Parallax Forum

Ich sage nur eins:An mental lasse ich nur Wasser und Retronitus! Notfalls muss der Sound warten, bis Ahle2 fertig ist, und wenn es noch Monate dauert.

Es klingt wie ein Wunderwerk: Retronitus läuft auf einer Cog, bringt acht unabhängige Soundkanäle inklusive diverser Features mit und hat auch noch Platz in der Cog für eine Art Threading, um mit acht integrierten SLI-Thread-CPU’s spezielle Mini-FX-Programme auszuführen. Natürlich gehört auch noch eine extrem platzsparende Tracker-Engine für Musik dazu.

Denkbar wären in mental getrennte Blockpuffer, um Retronitus einen parallelen Zugriff zu m auf SD-Card zu verschaffen. Mit dem Compiler könnte man den Wortschatz erweitern, um direkt Retronitus-Module aus Quelltexten zu compilieren und dank Screeneditor auf dem Hive auch direkt zu bearbeiten. Ist nicht meine Art soviel über ungelegte Eier zu gackern, aber die Soundengine für mental verspricht da ein interesantes Feld für Experimente zu werden. Nun, wir werden sehen.

m: Weg mit dem nutzlosen Plunder…

Nach einer kreativen Pause nun weiter in diesem Film. Die letzten Tage habe ich mich intensiv jenen m-Funktionen gewidmet, mit welchen ich Quelltexte auf dem Massenspeicher bearbeiten, verwalten und auszuführen/compilieren kann. Geplant waren eigentlich FAT16/32-Containerdateien für ein Blockinterface. Diesen Plan habe ich aber aus verschiedensten Gründen verworfen. Ein gravierender Grund ist die fehlerhaften seek-Funktion, die relativ geringe Performance des FAT-Layers und der enorme Speicherverbrauch in Administra. Ganz nebenbei hat mich schon lange die mit FAT32 einhergehende Komplexität gestört. Es ist wie mit vielen Dingen im Computerbereich, die uns das Leben bequem gestalten: Diese Bequemlichkeit wird durch Komplexität erkauft, welche dann irgendwann immer schwerer beherrschbar ist.  Ein einfaches Blockinterface dagegen gibt alle Freiheit aber auch die Verantwortung die Daten selbst zu strukturieren. Wie man nun sinnvoll in einem solchen System Daten strukturiert, ist ein kleines Abenteuer für sich und wird mir wohl noch einige Ideen abverlangen. Genau das  richtige Experimentierfeld, um langweilige Abende zu füllen. Also frisch ans  Werk und weg mit dem komplizierten Plunder… 😉

m6m7m8

Continue reading ‘m: Weg mit dem nutzlosen Plunder…’ »

m: Also daran muss ich mich erstmal gewöhnen… ;)

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… ;)’ »

Jeden Tag ein gutes Wort: perform und andere tolle Sachen


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’ »

m: Lebenszeichen

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.

m2 m3 m4 m5

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.

m: Interpreter läuft

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.