Aktuell geht es in großen Schritten vorwärts, obgleich ich in der Woche überhaupt keine Zeit zum programmieren habe. Einige Tools wie dump und .s (gibt den Stackinhalt aus) vervollständigen das System und damit kann ich nun unabhängig von Spin debuggen. Das einzige Stück Spin zum starten von m sieht so aus:
CON
_clkmode = xtal1 + pll16x
_xinfreq = 5_000_000
VAR ' forth-parameterblock
long start ' mental parameter
long error ' errorcode
OBJ
vm1: "m-vm1-run-4"
PUB Main
start := vm1.get_start
waitcnt(cnt + clkfreq)
cognew(vm1.get_cbase,@start)
Also nur ein paar Byte Spin um m in Betrieb zu nehmen! Das Schöne an forthähnlichen Systemen ist ja, dass man schon in dieser frühen Phase mit ihnen arbeiten kann. Es ist wie Lego: mit ein paar Bausteinen kann man schon etwas bauen. Kommen weitere hinzu, vergrößern sich die Möglichkeiten.
So ein neuer Baustein, welchen ich am Wochenende hinzugefügt habe, ist create. Dieses Wort ist zuständig für die Verarbeitung der roten Worte, mit denen ein neuer Wortheader im Wörterbuch erzeugt wird. Mit test1 ; kann so ein neues Wort mit dem Namen test1 erzeugt werden, welches mit dem Semikolon abgeschlossen wird. Besagtes Semikolon beendet den Compilervorgang, compiliert ein Exit-Kommando in das Wort und aktiviert dieses. Ab jetzt ist es mit words anzeigbar und wenn man das Kommando test1 aufruft, wird es ausgeführt.
Nächster Schritt wird das Wort compile um die grünen Worte im Quelltext in ein Wort compilieren zu können. Damit sind dann erste funktionale Worte möglich. Bin mal gespannt, wie weit ich bis zum KC-Treffen komme… 😉
Category: Sonstiges |
Kommentare deaktiviert für m: KC-Treffen am Horizont
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…
Benutzer PIC18F2550 aus dem Forum (im weiteren kurz Pic genannt 😉 ) hat mich vorige Woche kurz besucht und wir haben über diverse Themen zum Bellatrix-Code und allgemein über den Hive gschwatzt, sowie einige Tests mit diversen Monitoren durchgeführt. Pic’s Hive ist in einem Bopla-Gehäuse eingebaut, welches ich euch nicht vorenthalten möchte, da es mir ganz gut gefallen hat. Das Gehäuse ist zum Beispiel bei Reichelt erhältlich: Link zum Artikel
Category: Sonstiges |
Kommentare deaktiviert für Hive im Bopla-Gehäuse
Schon einige Zeit hatte ich den Wunsch ein Board für Experimente mit dem Propeller zu haben. Zwar gibt es diverse fertige Platinen, aber irgendwie hat immer etwas gefehlt. So möchte ich das Board gern auch als Erweiterung am Hive verwenden, sowohl am parallelen Bus, wie auch über den PlexBus an Administra. Unabhängig davon soll es aber möglich sein, völlig autark zu experimentieren, wie zum Beispiel mit dem Demoboard von Parallax. Ach ja: Da es flexibel sein soll, muss auch die Verwendung von Shields wie beim Arduino möglich sein – ich kann ja heut noch nicht sagen was ich morgen für Ideen habe. Also eine Menge Ideen die in der Sache zusammenfließen.
Der März mit dem nächsten KC-Treffen ist nicht mehr fern und es gilt frühzeitig vorzusorgen und zu planen. Ich denke es wäre ganz interessant, einige gemeinsame Aktivitäten zu initiieren – vielleicht beginnend mit einem persönlichen Treffen, Vorträgen und Workshops. Ich habe das einfach mal so im Forum zur Diskussion gestellt, um zu schauen, ob es dafür ein Interesse gibt.
Der erste Meilenstein war Hive 100. Nun, irgendwie habe ich da meine eigene Zählweise, denn Meilenstein 2 ist jetzt der Hive 235. Mit diesem Gerät darf ich mich nun auch offiziell drohne235 nennen und könnte das als virtuellen Geburtstag im Kalender anstreichen. 🙂 Ich weiß, dass ist mehr etwas für Nerdcore, aber ich bin halt immer wieder erstaunt, wie das so vorwärts geht. Zum Thema Nerd: Immerhin sind das so nebenbei auch 705 Propellerchips und satte 5640 Cores die in Betrieb sind. Und die Meßlatte hängt jetzt übrigens bei Hive 1000… 😉
Vielen Dank an dieser Stelle auch gleich an quix für die Mühe den Staffelstab der Sammelbestellungen zu übernehmen und so professionell über die Bühne zu bringen.
Category: Sonstiges |
Kommentare deaktiviert für Meilenstein 2 erreicht
Futter für den Hive. Wie bei der ersten Toolbox genügt es den Inhalt des Ordners „SDCARD“ auf ein passendes Medium zu kopieren. Dieses mal ist das Paket durch die Mediendateien allerdings recht groß geworden, aber es lohnt sich. Wie gehabt, sind zu den Programmen wieder alle Quelltexte für eigene Experimente enthalten. Enthalten sind folgende Sachen:
Sounddateien im HSS, DMP (SID), WAV, YM und SFX-Format.
Ich habe gerade R48 von TriOS released. Diese Version enthält nun den Grafikmodus G0 – neben den verschiedenen Textmodi der erste standardisierte Grafikmodus auf dem Hive. Mit dem Tool „g0test“ kann der Modus getestet werden und man bekommt dort auch einen Eindruck von den Möglichkeiten. Der G0-Modus ist über das IOS direkt und sehr komfortabel in Anwendungen nutzbar. Als Einstieg für erste Experimente mag der Quelltext von g0test dienen.
So, nun ist also auch Grafik auf dem Hive so einfach wie die verschiedenen Soundformate nutzbar: Egal ob Diagramme, Kurven, Animationen oder Games – das kann jetzt alles sehr einfach und mit ordentlicher Darstellungsgeschwindigkeit realisiert werden. Der G0-Modus ist rasterorientiert, aber mit seiner superschnellen Vektorengine primär in Richtung Vektorgrafik gedacht. Die maximale Leistung erreicht er bei Vektorobjekten (g0_vec) mit einer Leistung von ~18.000 Linien pro Sekunde. Das sind natürlich Maximalwerte, wenn man diese Funktion in einer Schleife mit festen Parametern aufruft. Aber durch entsprechende Parallelisierung kommt man mit den Propchips durchaus auch real in diese Nähe, wenn es nötig sein sollte. Das Testprogramm spricht die G0 Funktionen ganz klassisch in einer einfachen Routine unter Nutzung nur einer COG an.
Momentan werkle ich am Grafikmodus 0 für den Hive. Kurz die Eckdaten:
TV-Modus 256 x 192 Pixel
Farben: Tile (16×16 Pixel) sind 4 aus 64 Farbe wählbar
Einbindung des Graphics-Objektes für schnelle Vektorgrafik
Animation: zwei Screens für flickerfreie Darstellung von Animationen
Einbindung der Grafikfunktionen per IOS
Keyboard ODER Maus verfügbar (beides geht nicht)
Bei der Darstellung von Vektorobjekten spielt der Hive so richtig seine Muskeln aus: über den Bus werden dabei nur Metadaten übertragen und die komplexen Anweisungen werden lokal in Bellatrix verarbeitet. So kann mit einem Befehl von Regnatix ein Vektorobjekt mit beliebigem Drehwinkel und Skalierung gezeichnet werden. Für meine Tests verwende ich ja gern das Vektorobjekt eines sechseckigen Sterns. Der Hive kann dabei ~1500 Sterne pro Sekunde zeichnen. Jeder Stern besteht aus 12 Linien, was eine Zeichenleistung von ~18000 Linien pro Sekunde macht! Na wenn das nicht geil ist, weiss ich auch nicht…
Alle Grafikoperationen sind nun im IOS direkt für die Anwendung verfügbar. Das nicht optimierte Testprogramm im folgenden Video ist nur 5,5 KByte groß und nutzt nur eine einzige COG in Regnatix – es sind also noch sehr viele Ressourcen frei! Zu sehen sind der Reihe nach alle grundlegenden verfügbaren Grafikoperationen und ein paar Gimmicks. Wie gesagt, handelt es sich nur um ein Testprogramm, welches ich bei der Enwicklung verwendet habe, um die Funktionen zu prüfen, weshalb es sicher keinen Schönheitswettbewerb gewinnt, aber es zeigt vielleicht ein wenig, in welche Richtung es geht.
Nach einer gründlichen Aufräumaktion im TriOS ist diese Toolbox 1 das erste Paket einer ganzen Serie von Anwendungen, Democodes, Tools und Mediendateien für den Hive. Viele Fragmente gab es bisher schon auf meiner Festplatte oder sind bei der Programmierung vom TriOS entstanden, aber meist hatten sie mehr einen experimentellen Charakter oder es fehlten noch Kleinigkeiten. Einige wenige Dateien sind Beispiele von Parallax oder aus der Community, die ich an den Hive angepasst habe. In dieser Toolbox enthalten sind Codebeispiele aus folgenden Themenbereichen:
Neuigkeiten von TriOS: Nach einiger Zeit der Arbeit am System erschien mir die allgemeine Struktur der Quelltexte zu unübersichtlich und zu aufgebläht. Viele Fragmente und Programme die eigentlich nichts mit dem System zu tun hatten, haben sich heimlich bei den Experimenten eingeschlichen. Dazu wollte ich endlich ein Bibliothekskonzept für die Quelltexte realisieren, da Brad’s Spin Tool ja nun die entsprechenden Möglichkeiten bietet. Also war eine umfangreiche Aufräumarbeit nötig, um dem Ganzen wieder die nötige Struktur und Klarheit zu geben. Zeit den Softwarebastelkeller aufzuräumen! 🙂 Was wollte ich also? Continue reading ‘TriOS – Bibliotheken’ »