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:
t11000000 0do i i + drop loop ;
t21000000 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.
Category: mental, Software |
Kommentare deaktiviert für TACHYON – Schneller als Licht
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’ »
Category: mental, Software |
Kommentare deaktiviert für Jeden Tag ein gutes Wort: Der Screenbrowser
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:
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.
Category: mental, Software |
Kommentare deaktiviert für Sound für mental
Immer wieder bekomme ich Mails mit Fragen zur Programmierung des Hive. Zu einigen Aspekten gibt es ja schon passende Tutorials, im Besonderen zu den speziellen Fragen wie im Hive die drei Propeller-Mikrocontroller zusammenwirken:
Für den Bereich der Gameprogrammierung gibt es ein wunderbares Buch zur Hydra-Spielkonsole, welche ja mit einem Prop arbeitet – also so eine Art Bellatrix. Das Buch erklärt, ausgehend von den Grundlagen des Enwurfs einer Gamekonsole auch sehr ausführlich die Programmierung von tile- und vektorbasierter Spielegrafik, bis hin zum Sound und zur Abfrage eines Gamepads – inklusive vieler Demos und kleiner Games. Das schöne an der ganzen Sache: Das Buch und die CD mit dem Democode ist frei als PDF erhältlich:
Aktuell gibt es wieder neue Bewegungungen rund um die Programmiersprache Basic auf dem Hive. Einerseits arbeitet Zille9 an einer verbesserten Version des FemtoBasic für den Hive. Wenn alles klappt, werden auch Sound- und Grafikbefehle integriert, was den Hive mal ein wenig ausreizen würde und unkomplizierte Experimente verspricht. Die andere Geschichte ist das HBasic, an welchem PIC18F2550 arbeitet: Dieses verwendet einen eigenen PASM-Bytecode und als Programmspeicher den eRAM. HBasic ist aber noch in einer sehr frühen Phase und es gibt noch keine lauffähige Version. Die letzte lauffähige Version von FemtoBasic ist im Downloadbereich zu finden, aber da wird sich in nächster Zeit einiges tun – also immer mal im Forum schauen wie der aktuelle Stand ist! Forum:FemtoBasic – Hive
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… 😉
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… 😉
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’ »
Category: Forth, mental, Software |
Kommentare deaktiviert für Jeden Tag ein gutes Wort: perform und andere tolle Sachen
Hauke hat in den Datagrammen der Busprotokolle einige kleine Fehler gefunden und gleich korrigiert. Zudem hat er die Darstellung mit passenden Impulsflanken aufgehübscht und einiges übersichtlicher gestaltet. Wer also am Bus schrauben möchte, sollte die Tabellen updaten.
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.
Category: Forth, mental, Software |
Kommentare deaktiviert für m: Lebenszeichen
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.
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.
Category: Forth, mental, Software |
Kommentare deaktiviert für Kein Screen sagt mehr als tausend Worte…