Dieser Thread ist der Parallel-Thread zu Beitrag "Basic-Interpreter auf einem AVR" Es geht in diesem Thread ebenfalls um den Basic-Interpreter von Adam Dunkels, zu finden unter http://www.sics.se/~adam/ubasic/ Diese Variante ist ebenfalls wie die von Uwe Berger für den AVR angepasst, hat aber noch einige interessante Features. Der ganze Interpreter lässt sich in Sachen Features und Ressourcenverbrauch in der basic_cfg.h konfigurieren. Funktionserweiterungen können über "TOKEN_WORD" in der Form eingebracht werden, indem man direkt mit dem Tokenizer arbeitet und quasi den Text selbstständig verarbeitet. Eine andere Möglichkeit ist es "einfach" C-Funktionen aufzurufen. Dafür müssen die Extensions eingeschaltet werden. Mit ihnen hat man die Möglichkeit, Funktionen anzugeben und eine Anzahl von Parametern (maximal die in MAX_USER_PARAMS angegebenen) zu definieren. Die Parameter können dabei vom Typ String oder Integer sein. Es wird dabei ein Datentyp namens "T_USER_FUNC_DATAS" definiert der der C-Funktion mit übergeben wird. Weiterhin können mit den Extensions Zugriffe auf hinterlegte Variablen gemacht werden die vom Rest des Systems gesetzt oder abgefragt werden können. Außerdem ist der Lese/Schreib-Zugriff auf hinterlegte Arrays (nur Integer) implementiert. Dieser ganzen Funktionalität ist noch eine weitere (über Compilerschalter aktivierbare) Schicht übergestülpt, mit der sich die Basic-Programme compilieren und das kompilat ausführen lassen. Der Basic-Quell-Code wird dabei wie auch schon im Interpreter-betrieb in Tokens übersetzt. Nur das die Tokens in einen Buffer weggeschrieben werden, und beim Ausführen aus eben diesem Buffer (oder einem anderen) ausgelesen werden. Der eigentliche Compiler ist als 2 Pass Compiler ausgelegt, damit Sprünge innerhalb des Basic-Programms direkt umgesetzt werden können, und nicht erst nach der Zeilennummer gesucht werden muß (wie bei dem Originalen Interpreter). Um den Features versus Ressourcenverbrauch gerecht zu werden lassen sich viele Parameter einstellen die direkt den Verbrauch (vor allem im sehr knappen SRAM) einstellen lassen. Das reicht von der max. String-Länge der Benutzer-Parameter bei Aufruf einer C-Funktion, bis hin zur Stack-Tiefe für Gosubs und For/Next Schleifen. Die aktuelle Version ist noch nicht vollständig getestet, und kann daher noch buggy sein. Für Hinweise, Kritik, Anregung bin ich jederzeit offen und hoffe auf rege Beteiligung an diesem Thread. Die nächsten geplanten Features sind : - Auslesen des Basic-Quelltextes/Kompilats aus einem beliebigen Speichertyp (SD-Karte/EEProm/ext. SRAM/etc) mittels eines "Speichertreibers" (ist eher eine Speicherzugriffsfunktion) - Erweitern des Basic-Grund-Befehlssatzes um while/wend repeat/until - Erweitern des Basic-Befehlssatzes um AVR-spezifische Funktionen ohne die ressourcenträchtigen User-Extensions nutzen zu müssen - evtl. Einführung des weiteren Runmodes "Interpret" bzw "CommandProcessor" zum direkten eingeben von Basic-Befehlen als eine Art Shell
:
Gesperrt durch Admin
Hier mal mein neuestes Werk (andere würden Verbrechen dazu sagen ...) Der uBasic-Interpreter umfasst nun : - C-Erweiterungen - Compilerunterstützung - Zeichengeräte-Anbindung Ich habe noch ein wenig an dem Code rumprogrammiert, aber noch nicht alles Testen können. (Vor allem nicht alles mit jeder Kombination). Was gegenüber dem Demo von Uwe Berger fehlt ist der Editor mit dem man Basic-Programme selbst erstellen kann. Durch die noch ausstehenden Tests, der fehlende Editor, und eine noch nicht 100% vollständige Doku (des Quellcodes sowie des PDFs) steht diese Version erstmal auf alpha (also noch nicht alles 100% lauffähig !!) Für Kritik, Lob und Verbesserungsvorschläge bin ich jederzeit offen. Was die Befehlseingabe angeht so habe ich meine uParse verwendet. Dadurch benötigt das Demo insgesamt mehr Code. Es ist auf einem Mega16 lauffähig, aber entwickelt und getestet wurde es auf einem Mega32. Demenstprechend ist das Demo auf einem Mega32 portiert. Viel Spaß damit
Dieser Ableger ist nun ebenfalls im SVN unter http://www.mikrocontroller.net/svnbrowser/avr-basic/ zu finden. Weiterhin gibt es eine Beschreibung im Artikel unter http://www.mikrocontroller.net/articles/AVR_BASIC Aufgrund der Resonanz und der Tatsache das sich das ganze schon ein wenig zu einem Gemeinschaftsprojekt entwickelt würde ich vorschlagen diesen Thread zu schließen und die ganze Diskussion unter Beitrag "Basic-Interpreter auf einem AVR" fortzuführen, zumal die Erkenntnisse denke ich eher dort zusammenfließen als hier.