Hi zusammen, ich hab vor ein paar Tagen folgende Webseite gefunden: http://www.retards.org/library/technology/electronics/avr/avrfreaks_projects/bss02_home_computer_system/BSS02.html http://www.retards.org/library/technology/electronics/avr/avrfreaks_projects/bss02_home_computer_system/ Dort gab es eine TinyBasic Version für den alten AT90S8515. Da ich leider nur noch ein paar MEGA8 hatte dachte ich mir, daß es nicht so schwer sein sollte das Programm anzupassen. Leider lief der Code nicht direkt (kann es sein, daß die originale Version garnicht läuft?) und so musste ich ein paar kleinere Fehler beseitigen, bis ich eine brauchbare Version vorliegen hatte. Ich werde bei gelegenheit den Code noch etwas erweitern, wenn ich die Funktionsweise ganz verstanden habe und dann die LOAD und SAVE befehle reparieren... Ich hoffe jemand kann damit was anfangen. Gruß, SIGINT
Gast
#515442
Hi sigint, das ist ja der uralte basic interpreter fuer 8080/z80 der im buch : "BASIC - Interpreter. Funktionsweise und Implementierung in 8080/ Z-80- Computern von Rolf-Dieter Klein" beschrieben wird. Das original kommt aus den 70er... Den gibt es auf fuer m68k und andere micros.. :) interessant das der fuer AVR portiert wurde ;) siehe http://www.nicholson.com/rhn/basic/ es gibt (wenn ich mich richtig errinere) 3/4 routinen, die man dem interpreter geben muss um, zeichen einlesen, zeichen ausgeben und pruefen ob ein zeichen vorliegt oder nicht. Fuer den 68k waren es paar bytes bzw. paar zeilen um die uart anzusteuern um den interpreter zum fliegen zu bringen ... man lief der schnell auf 68020 mit eingeschaltetem cache ... gruss roman
Das Buch kenne ich leider nicht... aber das Original soll von Li-Chen Wang sein. Es gab wohl noch eine anderes TinyBasic, was zeitgleich von jemand anderen vertrieben wurde. Dieses TB setzte aber eine Art VirtuelleMaschiene ein (TBIL) um den Basicinterpreter auszuführen. Der vorliegende Code wurde von Jeff Hunsinger auf den ATmega8515 portiert. Leider lief der Code nicht direkt auf dem ATmega8... deswegen musste ich den Code etwas anpassen. Ich hab einiges an Code rausgenommen (die Videogenerierung und sonstiges) was ich nicht benötigt habe. Bei gelegenheit werde ich die SAVE und LOAD-Routinen für das interne EEPROM anpassen. Im Moment ist der Code relativ "broken" und nur zum rumspielen gedacht. Ich muss bei gelegenheit versuchen zu verstehen, wie alles zusammenspielt um den Code etwas aufzuräumen. Gruß, SIGINT
Gast
#515749
kommt es dir bekannt vor ?? hier ein auszug aus dem m68k version:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
bei dem original gab es diese routinen fuer das rundherum :
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
Oder aus der 8080 version :
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
gruss roman
Gast
#515772
SIGINT, nicht das mich falsch verstehst, das ist mega cool.. ich moechte dir nur hints geben, wo bzw. wie man mehr erfahren kann ueber den tbasic. Meines wissens nach war es ein reine interpreter, ohne byte codes wie der von C64 zb. gruss roman
Hi Roman, ich hab den originalen Code gefunden: http://members.shaw.ca/gbrandly/68ktinyb.html Der ist wohl basierend auf dem Code von Li-Chen Wang. http://en.wikipedia.org/wiki/Li-Chen_Wang Die TinyBasic Versionen scheinen sehr ähnlichen Code zu enthalten... ich hab das aber nicht alles angeschaut. Aber du hast Recht, daß TinyBasic keinen Bytecode erzeugt, sondern alles in Echtzeit interpretiert. Nur die Schlüsselworte wie "FOR,NEXT,GOTO, etc." werden in Tokens umgewandelt um Speicherplatz zu sparen. Für mich ist das aber zweitrangig, da ich das TinyBasic nur als Spielzeug einsetze um meinem AVR-Board etwas leben einzuhauchen. Ich versuche mich gerade an CLIs und Expression-Parsern... und das TB war ein passender "Ausflug". Ich hoffe irgendwann einen eigenen Basic-Interpreter schreiben zu können ... aber das dürfte noch relativ lange dauern. Gruß, SIGINT
Gast
#612021
Hallo. Womit assembliere ich den die Datei 'TinyBasic.asm'?? Bzw. erstelle eine HEX Datei zum flaschen in den ATmega8. AVR Studio meckert 'm8def.inc' nicht gefunden.. gavrasm hört nach 41 Fehlermeldungen auf.. Kann ich die Oszillatorfrequenz einfach von 8 auf 16MHz ändern? Möchte das auf einem Pollin Eval.Board probieren.. Auch die Baudrate von 2400 möchte ich eigendlich gerne auf den quasi Standard 9600 8N1 setzen. Danke für Hilfe. Peter
Gast
#617520
So. Problem war: Hatte AVR Studio 3.x genutzt. Nutze jetzt 4.x. Dann habe ich trotzdem noch einige Fehlermeldungen bekommen, die aber alle zu den sowieso nicht implementierten Funktionen save, load, etc. gehörten.. Also raus damit. Dann ging compilieren! Habe außerdem auf Clock=16MHz und 9600 8N1 Baud umgestellt. Läuft jetzt so auf dem Pollin.Eval.Board und ATmega8. Aber noch nicht groß getestet!! Nur: 10 for n=1 to 10 20 print n 30 next n ..läuft einwandfrei :-) Siehe: http://www.petersieg.de - AVR - Tiny Basic Peter
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.