Hi, auf http://sourceforge.net/projects/amforth bastele ich an einem kleinen Forthsystem für den Atmega(32) unter der GNU Public License (GPL). Das System wird in Assembler (avra unter Linux und AVR Studio unter Windows) programmiert und kommuniziert über die serielle Schnittstelle mit dem Host-Rechner. Es ist kein Cross-Compiler, der PC wird nur zur Erstellung der Hexfiles benötigt. Forth-seitig strebe ich ein ANS94 Core mit einigen Extensions an. Dafür fallen aber auch einige Core-Worte weg, die IMHO auf dem Atmega keinen Sinn ergeben. Fernziel ist u.a. ein Forth für den Asuro (wenngleich der Atmega8 etwas zu klein ist) und den ct-bot. Gegenwärtig (Version 0.2) läuft der Interpreter und der Colon-Compiler. Neue Worte werden über den self-programming Mechanismus direkt in den Flash geschrieben. Voller Zugriff auf Flash (i@, i!), EEPROM (e@, e!) und RAM (@, !, c@, c!) ist gegeben. Wer Lust hat und sich nicht von einem frühen Entwicklungsstand abschrecken läßt, kann es ja mal ausprobieren. Ach, Dokumentation gibt es natürlich auch keine. Die Wortliste erhält man mit dem Befehl words, was die Worte im Einzelnen machen, steht in jeder Forth-Beschreibung. Matthias
auch erstmal : respekt ! hab mir mal den quellcode angeschaut, bin aber nicht so fit in avr-asm, sieht aber witzig aus (erst befehlsnamen, daten, dann programmcode und am ende immer ein schöner rjmp DO_NEXT :-)) auch mal direkt eine frage dazu : wie hast du das mit dem dictonary gemacht wenn du neue befehle hinzufügst ? hälst du die keywords im RAM (und den entsprechenden forth-code dazu) ? ich bin im moment am überlegen wie man einen kleinen ByteCode interpreter selbst schreiben kann mit dem sich unterschiedlichste aufgaben programmieren und ausführen lassen kann. Java ist mir zu dick (->NanoVM) und forth kenne ich nicht so gut.
Der Colon-Compiler schreibt direkt (via i!) ins Flash. Eine Zelle nach der anderen. Der Algorithmus in i! führt aber nur dann ein Erase der betreffenden Page durch, wenn sich ein Bit von 0 nach 1 ändert. Im RAM liegt nichts vom Dictionary. Dort sind die diversen Buffer (TIB, HLD etc). Im EEPROM liegen einige Dictionaryvariable, um einen Reset zu überstehen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.