%% LyX 2.0.0beta3 created this file.  For more info, see http://www.lyx.org/.
%% Do not edit unless you really know what you are doing.
\documentclass[english]{article}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\usepackage{textcomp}
\usepackage{babel}
\begin{document}

\title{Neuigkeiten von \emph{übern Teich}}
\author{Carsten Strotmann}
\maketitle

Ende Januar hatte ich die Gelegenheit, an dem monatlichem Treffen der
Silicon Valley Forth User Group teilzunehmen. Die SVFIG ist so etwas
wie die Keimzelle der Forth Interest Group, und immer noch sehr aktiv.
Die Gruppe trifft sich monatlich auf dem Campus der Stanford Universität
in Palo Alto. Diesen Januar waren 12 Forthler zum Erfahrungsaustausch
anwesend. Im lockerem Stil wurde über aktuelle Projekte und Entwicklungen
berichtet.

\begin{multicols}{2}
\section{Forth auf dem Arduino}

Den Anfang der Vorträge machte Chen--Hanson Ting (CH Ting) über seine
Erfahrungen mit Forth auf dem Arduino. Ting hat einen Arduino \emph{Uno}
bekommen, den Nachfolger des Arduino 2009 \emph{Duemilanove}. Tings
erster Versuch war, das amForth auf dem \emph{Uno} zum Laufen zu bringen.
Zwar hat der \emph{Uno} die gleiche CPU wie der \emph{Due} (Atmega328),
aber amForth laeuft derzeit nicht 'out of the box' mit dem \emph{Uno}
(Der Bootloader und die USB--Seriell Schnittstelle ist eine andere).
Leicht frustriert von diesen erfolglosen Tests, versuchte Ting, das
amForth im Atmel Simulator unter Windows zu starten, um ein Gefühl
für amForth zu bekommen. Obwohl alle anderen Atmel--Beispielprogramme
ohne Probleme liefen, verursachte amForth jedoch einen Komplettabsturz
des Atmel Simulators. Eine Untersuchung ergab, dass amForth korrekt
programmiert ist, aber wohl der Simulator einen Fehler enthält der
(nur) durch amForth ausgelöst wird.

Die Arduino--Boards kommen von Hause aus mit einer einfachen Programmierumgebung
namens \emph{Sketch}. Sketch ist eine C--ähnliche Sprache, welche den
Einstieg in die Arduino--Programmierung für Programmier--Anfänger erleichtert,
die \emph{Sketch} IDE ist in Java geschrieben und für Anfänger relativ
einfach zu bedienen. \emph{Sketch} wird im Hintergrund der Sketch--IDE
in echten C--Programmcode und dann noch auf dem PC per GNU--C--Compiler
in ein Binärprogramm übersetzt und an den Arduino gesendet. Aus Mangel
an direkten Alternativen implementierte Ting das eForth, geschrieben
in \emph{Sketch}, für den Arduino. Die vordefinierten Forth--Wörter
werden mit der \emph{PROGMEM}--Anweisung als Datenstrukturen direkt
in den Flashspeicher geschrieben. Dies funktioniert, es wird aber
unnötig viel Speicher für die \emph{Sketch}--Routinen verbraucht.
Auch ist die Erweiterung des Forth--Dictionary in diesem Sketch--Forth
nur im (S)RAM des Atmel möglich, nicht im Flash. Also keine wirklich
befriedigende Lösung.

Im aktuellen Projekt erstellt C.$\,$H.\ Ting nun ein eForth in Atmel--Assembler
für den Arduino \emph{Uno}. Dieses System soll auf dem März--Treffen
der SVFIG vorgestellt werden. Der eForth--Interpreter funktioniert
schon, am Compiler wird derzeit noch gearbeitet.

Nachtrag: Auf dem Februartreffen der SVFIG haben Bill und Michael
Ragsdale über ihre Erfahrungen mit dem Arduino \emph{Uno} und amForth
berichtet. Auf dem gleichen Treffen berichtet Leon Wagner von Forth
Inc. über das neue SwiftX für den Arduino \emph{Uno}. Und Charley
Shattuck berichtet über MyForth auf dem Arduino (tethered Forth, benutzt
GForth für target compiling). 

Obwohl C.$\,$H.\ Ting im Januar seinen Vortrag mit der Erkenntnis begann,
dass der Atmel im Arduino aufgrund der Harvard--Architektur eine feindselige
Umgebung für Forth darstellt, mausert sich Atmel zur Nummer \emph{Uno}
Forth Plattform. Arduino überall!


\section{Mittagspause}

Zur Mittagspause gab es Snacks im \emph{Treehouse} der 
Stanford--Universität. Es war sehr angenehm, mitten im \emph{Winter} bei 24
°C im T--Shirt in der Sonne sitzen zu können.

Nach dem Mittagessen gab es eine kleine Aufheiterung in Form des \emph{Turbo
Encabulator} Videos: \url{http://www.youtube.com/watch?v=rLDgQg6bq7}


\section{Das XuLA Board}

James Bowman zeigte das XuLA FPGA Board (Xilinx Spartan). Dieses Board
beinhaltet auf 51 mm x 25 mm ein 50,000--gate FPGA, 8 MByte SDRAM,
2 Mbit Flash, zwei Spannungs--Regler und ein PIC 18F14K50 Mikrocontroller.
Das Board ist zum Preis von 30 US\$ bei der Firma XESS zu bestellen.
James benutzt das Board für die Arbeit an der J1 Forth CPU, welche
auf der EuroForth 2010 vorgestellt wurde.


\section{eForth auf Green Arrays GA144}

John Rible berichtete als der Kassenwart der SVFIG über die Finanzen
der Gruppe und zeigte danach ein paar Bilder der GA144 Waver. Der
GA144 ist der neue Chip (1cm x 1xm) mit 144 F18A Forth CPUs, entwickelt
von Chuck Moore und seinem Team bei Green Arrays. Die Waver sollten
eigendlich direkt von der Fab zum Chip--Gehäuse--Hersteller gehen, um
dort in Gehäuse gepackt zu werden, wurden aber aus Versehen über das
Green Arrays Büros in Incline Village (Lake Tahoe, Nevada) gesendet. 

Die fertigen Chips sollen ab April/Mai 2011 für interessierte Kunden
verfügbar sein.


\section{Forth--Bildungs--Gruppe}

Ich hatte dann meinen kleinen Auftritt mit einer Übersicht der Aktivitäten
der Forth--Bildungs--Gruppe in der Forth--Gesellschaft. Gezeigt habe
ich Bilder von unseren LinuxTag--Aktivitäten, speziell das Video mit
dem Solitär--Roboter von Ewald Rieger und Friedel Amend wurde begeistert
aufgenommen. Die SVFIG Gruppe hat ähnliche Aktivitäten in der Planung,
z. B. wird die Gruppe im Mai auf der \emph{Maker Faire Bay Area},
einer Messe für Bastler und Erfinder der Zeitschrift \emph{Make},
ausstellen und für Forth werben.


\section{GForth auf eCos}

John E.\ Harbold arbeitet an einem Port des GForth an das embedded
Open Source Betriebssystem eCos. In seinem kleinen Vortrag hob John
speziell die Vorzüge des GForth gegenüber anderen Forth--Systemen hervor,
z.$\,$B.\ die Schnittstellen, um in C geschriebene Programmbibliotheken
nutzen zu können.


\section{Native Client Forth im Chrome Webbrowser}

Brad Nelson ist der Autor des Rainbow Forth. Rainbow Forth ist ein
Abkömmling der ColorForth--Familie und für Linux, Window und als Web--Applikation
im Browser verfügbar. Die ursprüngliche Webapplikation ist mittels
JavaScript im Browser und Python und Forth in der Google AppEngine
gebaut. Nun ist die Ausführungsgeschwindigkeit von in JavaScript geschrieben
Forth Interpretern nicht die Beste (selbst wenn JavaScript in den
letzen Jahren erheblich von optimierten modernen VM Technologien profitiert
hat). Google führt mit Version 10 des Chrome Webbrowsers die \emph{Native
Client} Technologie in den Browser ein. 

\emph{Native Client} erlaubt in sicherer Weise (per Sandbox), nativen Programmcode
(x86, x86\_64, ARM) im Browser ablaufen zu lassen. Es wird also nicht
interpretiert wie bei JavaScript, sondern der Binärcode des Programms
wird im Browser direkt auf der CPU ausgeführt. Dabei verhindert die
\emph{Native Client} Technologie, dass der Prozess aus dem Browser ausbricht
und unberechtigt auf Dateien oder andere Resourcen des Rechners zugreift.

Brad arbeitet nun an einer neuen Version des Rainbow Forth, welche
mit Hilfe der \emph{Native Client} Technologie in voller Geschwindigkeit,
aber im Browser ablaufen kann. Für den Benutzer ergibt sich der Vorteil,
dass das Forth--System aus dem Netz geladen wird, nicht \emph{installiert}
werden muss und immer auf dem neusten Stand ist. Die erstellten Forth--Programme
können wahlweise im Netz (ColorForth encoded) oder später auch auf
der lokalen Platte (nach Rechtefreigabe durch den Benutzer) gespeichert
werden.

\end{multicols}

\section{Links}

\subsection{Arduinio}
Arduino \emph{Uno}: \url{http://arduino.cc/en/Main/ArduinoBoardUno}

amForth: \url{http://amforth.sourceforge.net/}

Arduino PROGMEM: \url{http://www.arduino.cc/en/Reference/PROGMEM}

Folien amForth auf dem Arduino: \url{http://www.forth.org/svfig/kk/02-2011-Ragsdale.pdf}

SVFIG Februar Treffen \emph{Arduino day}: \url{http://www.forth.org/svfig/kk/02-2011.html}

\subsection{XuLA}

XuLA FPGA: \url{http://www.xess.com/prods/prod047.php}

J1 FPGA CPU: \url{http://excamera.com/sphinx/fpga-j1.html}

\subsection{Green Arrays}
Green Arrays: \url{http://www.greenarraychips.com/}

\subsection{Maker Faire}

Maker Faire: \url{http://makerfaire.com/}

\subsection{eCos}

eCos: \url{http://ecos.sourceware.org/}


\subsection{Rainbow Forth}

Rainbow Forth: \url{http://rainbowforth.sourceforge.net/}

Rainbow Forth in JavaScript: \url{http://rainbowforth.appspot.com/view?start=300\&end=315\&}

Google Chrome Native Client: \url{http://www.chromium.org/nativeclient}

Native Client Forth: \url{https://docs.google.com/present/view?id=0ARW9X5bieOAwZGRiaGQ4MmZfMjhmNW16djgzYw\&hl=en\&authkey=CLuf64AI}

SVFIG Webseite: \url{http://www.forth.org/svfig}

\end{document}