%\begin{document} \title{R8C–Forth} \author{Bernd Paysan} \maketitle \begin{multicols}{2} In der Dezember--Ausgabe der \href{http://www.elektor.de}{Elektor}\footnote{\url{http://www.elektor.de}} wurde ein \href{http://eu.renesas.com/}{Renesas}\footnote{\url{http://eu.renesas.com/}}--\href{http://eu.renesas.com/fmwk.jsp?cnt=r8ctiny_series_landing.jsp&fp=/products/mpumcu/m16c_family/r8c_tiny_series/}{R8C}\footnote{\url{http://eu.renesas.com/fmwk.jsp?cnt=r8ctiny_series_landing.jsp&fp=/products/mpumcu/m16c_family/r8c_tiny_series/}}--\href{http://www.elektor.de/Default.aspx?tabid=109}{Board}\footnote{\url{http://www.elektor.de/Default.aspx?tabid=109}} von \href{http://www.glyn.de}{Glyn}\footnote{\url{http://www.glyn.de}} verteilt. Die Software von Glyn beinhaltet einen C--Compiler, aber interessanter ist es natürlich, ein Forth auf der CPU laufen zu lassen. \section{Aufgabenverteilung} \begin{itemize} \item Heinz Schnitter schreibt den Assembler \item Bernd Paysan passt Gforth--EC an den R8C an \end{itemize} \section{Status 09apr2006} Das System ist inzwischen reif für den Beta--Test. \begin{itemize} \item Das Forth sagt OK über die UART, kann LEDs und LCD ansteuern, legt selbstdefinierte Programme per Default (sehr knappen) RAM ab. Umschalten zwischen RAM und ROM mit den Wörtern \texttt{ram} und \texttt{rom}. \item Das Daten--Flash kann mit \texttt{flashc!} und \texttt{flash!} programmiert werden. \item Gforth ist so anpasst, dass Code Flash--gerecht abgelegt wird (also jedes Bit genau einmal gelöscht wird). Immediate-- und Compile--only--Bit sind also zunächst gesetzt (bedeutet natürlich "`nicht immediate"' und "`nicht compile--only"'), und werden bei Bedarf gelöscht. Ebenso ist \texttt{:dovar} an einer Adresse, die das Ändern auf andere Doer (mit \texttt{DOES>}) ermöglicht (\$C0FE). \item Gforth EC R8C erlaubt das Anlegen von bis zu 4k Forth--Programmen im Datenflash. Ein \texttt{savesystem} speichert eine Kopie des RAMs in dieses Flash; damit sind auch Turnkey--Applikationen möglich. Das Datenflash kann öfter neu programmiert werden als das Programmflash, damit ist auch mehr Platz für Experimente. Ein \texttt{empty} löscht das gespeicherte System wieder. \item Der Assembler ist komplett. \item Der Rest des im ROM zur Verfügung stehenden Platzes ist mit nutzerfreundlichen Fehlermeldungen gefüllt \item Es gibt ein Terminal--Programm, das auch das Nachladen von Dateien über ein einfaches Handshake erlaubt (Xon/Xoff scheitert am Polling--Intervall des USB--Controllers) \item Eine Adaption von tt.fs passt in die 4K ROM. \end{itemize} \section{Download} Die aktuelle Entwicklerversion von \href{http://www.jwdt.com/~paysan/gforth.html}{Gforth}\footnote{\url{http://www.jwdt.com/~paysan/gforth.html}} kann über \href{http://www.complang.tuwien.ac.at/forth/gforth/cvs-public/}{pserver--CVS gelanden}\footnote{\url{http://www.complang.tuwien.ac.at/forth/gforth/cvs-public/}} werden. Für Windows--Nutzer, die keine Lust haben, Cygwin zu installieren, gibt's einen \href{http://www.jwdt.com/~paysan/gforth-0.6.2-20060409.exe}{Snapshot}\footnote{\url{http://www.jwdt.com/~paysan/gforth-0.6.2-20060409.exe}} in Form einer \texttt{setup.exe} der aktuellen Entwicklerversion. Auch das \href{http://www.jwdt.com/~paysan/gforth-r8c.mot}{Gforth--R8C}\footnote{\url{http://www.jwdt.com/~paysan/gforth-r8c.mot}} selbst findet sich dort als S--Record--Datei. \section{Benutzung} Installiert man zunächst \href{http://www.cygwin.com}{Cygwin}\footnote{\url{http://www.cygwin.com}} und dann Gforth aus den Sourcen, sollte man vor dem \texttt{./configure \&\& make} noch die \href{http://loreley.ath.cx/cygwin/cygwin-1.5/libffi-cygwin-standalone/libffi-2.00-beta-1.tar.bz2}{libffi}\footnote{\url{http://loreley.ath.cx/cygwin/cygwin-1.5/libffi-cygwin-standalone/libffi-2.00-beta-1.tar.bz2}} installieren. Installiert man obige \texttt{setup.exe}, werden alle benötigten Libraries mitinstalliert. Das Menü enthält noch einen Punkt "`Bash"', der eine Shell aufruft. Alle Anweisungen, die nun folgen, gehen von einer frisch geöffneten Shell aus (für Cygwin--Nutzer: Im Gforth--Verzeichnis). \subsection{ROM--Image erzeugen} Mit \begin{verbatim} ./build-ec r8c \end{verbatim} erzeugt man eine Datei \texttt{rom-r8c.mot} (sie sollte der \texttt{\href{http://www.jwdt.com/~paysan/gforth-r8c.mot}{gforth-r8c.mot}} von oben entsprechen). Es wird auch noch ein \texttt{data-r8c.mot} erzeugt, mit dem man ein zerschossenes Daten--Flash wieder in Ordnung bringen kann. Das \texttt{rom-r8c.mot} lädt man in's Flash. Danach kann man ein Terminal mit 38400 Baud 8N1 anschließen (etwa das Hyperterm, das in Windows eingebaut ist --- Verbindung auf "`COMx"' setzen), und interaktiv mit dem Forth arbeiten. Die Kommunikation findet über dieselbe serielle Schnittstelle statt, mit der man das Flash programmiert --- kein Umstöpseln nötig. Das Nachladen von Dateien geht mit einem normalen Terminalprogramm nicht, da Xon/Xoff zu langsam reagieren. Spielen Sie ein wenig, etwa \begin{verbatim} 1 2 + . lcdpage s" Hello World" lcdtype adc@ . \end{verbatim} \subsection{Forth--Terminal} Mit \begin{verbatim} ./gforth arch/r8c/terminal.fs \end{verbatim} startet man das in Gforth eingebaute Terminal. Es nimmt per Default die Verbindung über COM2 auf --- wenn nötig, die Datei editieren, oder --- bei Verwendung eines USB--Adapters --- die Schnittstelle über den Gerätemanager auf COM2 festlegen. Unter Linux wird \texttt{/dev/ttyUSB0} verwendet, auch hier kann man entsprechend durch Editieren eine andere Schnittstelle festlegen. Hier kann man nun auch \begin{verbatim} include arch/r8c/tt.fs \end{verbatim} eingeben, und das adaptierte Tetris--for--Terminals von Dirk Zoller laden (dauert etwas --- der R8C compiliert den Code schließlich selbst). Starten mit \begin{verbatim} tt \end{verbatim} \section{Links} \begin{itemize} \item Peter Ouwehand beschreibt das \href{http://home.iae.nl/users/pouweha/lcd/lcd0.shtml\#hd44780}{HD44780 LCD}\footnote{\url{http://home.iae.nl/users/pouweha/lcd/lcd0.shtml\#hd44780}}. \item \href{http://www.elektor.de/default.aspx?tabid=29&view=topic&forumid=23&postid=3645}{Thread zum Programmieren des Daten--Flashs}\footnote{\url{http://www.elektor.de/default.aspx?tabid=29&view=topic&forumid=23&postid=3645}} \item Thomas Fischl hat einen \href{http://www.fischl.de/thomas/elektronik/r8c/r8c_flasher.html}{Flasher für Linux und Mac OS X}\footnote{\url{http://www.fischl.de/thomas/elektronik/r8c/r8c_flasher.html}} an den R8C angepasst. \end{itemize} \end{multicols} %\end{document}