Hallo,
dies ist nun noch ein Posting für die Rubrik "Hallo, ich habe auch ein
Basic". Aber ich hoffe, dass das Thema doch noch den ein oder anderen
interessiert. Jedenfalls habe ich in den letzten Wochen mein
Mini-Java-BASIC nach C für den ATmega168 portiert. Es ist zwar noch
nicht wirklich fertig, und es kennt auch nur ein paar wenige Befehle,
aber ich kann schonmal etwas zeigen, nämlich ein Apfelmännchen-Programm,
das ein ebensolches mit Buchstabengrafik an ein Terminalprogramm sendet.
Unten ist das Basic-Programm gelistet,
und gelaufen ist es auf einem Prototype Board von embedit.de,
mit einem 18,432 MHz Quarz
und die Baudrate ist 9600,8,n,1
und oben kann man die HEX-Files downloaden (Flash und EEPROM)
wo schon das Apfel-BASIC-Programm drin ist.
(Vielleicht hat ja einer ein ähnliches Board, und möchte das
Apfelmännchen mal ausprobieren, über Feedback würde ich mich freuen)
Später werde ich wahrscheinlich (sofern Interesse besteht) ein paar
Teile aus dem Programm veröffentlichen, zB. die Fixpoint-Arithmetic
(float war leider zu fett für mein BASIC). Das Basic-Programm wird
übrigens im Flash gespeichert, woduch man ungefähr 2 KB Programmspeicher
frei hat (puh das war kniffelig). Die Kontrollstrukturen für die
BASIC-Zeilen liegen im EEPROM. Man kann etwas über 100 BASIC-Zeilen
schreiben, und die Zeilennummern liegen zwischen 1 und 999. Und der
Expression-Parser beherrscht Punkt-Vor-Strich-Rechnung und falls noch
genug Platz im RAM ein bis drei Klammerebenen. Variablenbezeichner sind
"a"-"z" und man kann in den Variablen Fixpointzahlen oder kleine Strings
(max 20 Zeichen) ablegen. Bisher sind folgende Befehle implementiert:
"LET", "IF", "THEN", "GOTO", "REM", "PRINT", "INPUT", "LIST", "END",
"RUN", "NBPRINT", und die Operatoren + - * / = < > ; NOT
nundenn, vielleicht ists ja doch interessant, und wahrscheinlich gehts
mit dem Projekt noch ein Stück weiter, mit der Version 1.00 kommt dann
noch eine kleine Homepage.
das wars,
Grüße Ralf
ooch, ... schade kein Feedback :((
naja, HEX-Files sind vielleicht auch nicht so spannend.
Den Sourcecode kann ich aber erst später irgendwann einmal
veröffentlichen, momentan sind einfach noch zu viele Baustellen und Bugs
drin. Aus den Downloadzahlen des HEX-Files schließe ich mal, dass doch
eventuell ein gewisses Interesse an meinem AVRFlashBasic besteht, also
werde ich mal weitermachen.
Falls das x-te BASIC hier aber nun keiner mehr sehen will, dann sind
aber eventuell ein paar spannende Teilprojekte darin enthalten, und da
mache ich jetzt schonmal Werbung für:
- zeilenorientierte Datenspeicherung im Flash (als Ringpuffer),
- schnelle und platzsparende Fixpoint-Arithmetik,
- naja und halt ein BASIC-Interpreter, alles in C geschrieben.
Oder ist das alles langweilig? Dann sagts bitte. Würde mir einiges an
Mühe sparen.
Grüße Ralf
Hi Ralf,
das was ich gesehen habe sieht schonmal interesannt aus. Ein Problem
ist aber eventuell, daß du einen ATmega168 verwendest... der dürfte
weniger verbreitet sein als z.B. der ATmega8 oder ATmega16. Ich hab
leider keinen passenden AVR um dein Programm zu testen und kann deshalb
wenig darüber sagen. An einem kleinen BASIC-Interpreter hab ich aber
immer interesse... sowas wie das 8051-Basic für den AVR wäre echt super.
Aber im Moment hoffe ich auf folgendes Projekt:
Beitrag "Mini-Computer mit BASIC"
Wenn die 20 Zeilen beschränkung fällt und externes EEPROM unterstüzt
wird, dann wäre das echt ein Traum.
Wenn ich aber irgendwann einen passenden AVR habe, dann werd ich dein
BASIC auch mal auf Herz und Nieren prüfen. Also nicht vom Weg abbringen
lassen und einfach weiterproggen.... irgendwann werden die Leute auf
dein Projekt aufmerksam.
Gruß,
SIGINT
Hallo SIGINT,
... das klingt ja ganz ermutigend :)
Wegen ATmega168: Ich habe nur den einen, aber ich kanns ja heute abend
einfach mal für ein oder zwei andere Typen compilieren und uploaden.
Muss aber einer mit wenigstens 16kB Flash sein, und 512 Byte Ram. Was
für einen AVR hättest Du denn da, und mit wieviel MHZ läuft der?
Ich kann für einen anderen Processor kein HEX-File mit fertig
einprogrammiertem Basic-Programm machen. Das müsstest Du dann noch per
Terminalprogramm übertragen. (9600Baud, 8, n, 1, Xon/Xoff Protokoll,
plus einige zehn ms Delay nach jedem Zeichen, ist zumindest bei
Hyperterm nötig).
>auf Herz und Nieren
Du wirst vermutlich noch reichlich Bugs finden. Und das Apfelmännchen
ist auch ein bischen grumpelig, was vermutlich an der zwangsweise
geringen Genauigkeit meiner Fixpoint-Zahlen liegt (nur 10 Bit für die
Nachkommastellen). Aber immerhin kommt etwas heraus, was ungefähr so wie
ein Apfelmännchen aussieht ;)
jo, dann bis dann, Grüße Ralf
Ralf Rosenkranz wrote:
>> Oder ist das alles langweilig?
Überhaupt nicht!
Nur. Na ja. Im Moment hab ich keinen Bedarf danach.
Allerdings würden mich die Abfallprodukte die
du da hast durchaus interessieren.
Hi Ralf,
im Moment hab ich nur ATmega8, ATtiny2313,ATtiny13 und einen AT90S8515
da... mehr als 8kiB Flash hab ich bis jetzt noch nicht benötigt,da ich
gerade mit AVRs anfange. [Ich brauch für alles etwas länger ;-) ]
In einigen Wochen wollte ich aber was bei Reichelt bestellen... da
besorg ich mir dann mal nen größeren AVR und teste dein Basic.
Gruß,
SIGINT