%% LyX 1.6.5 created this file.  For more info, see http://www.lyx.org/.
%% Do not edit unless you really know what you are doing.
\documentclass[ngerman]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\setlength{\parskip}{\medskipamount}
\setlength{\parindent}{0pt}

\makeatletter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Textclass specific LaTeX commands.
\newenvironment{lyxcode}
{\par\begin{list}{}{
\setlength{\rightmargin}{\leftmargin}
\setlength{\listparindent}{0pt}% needed for AMS classes
\raggedright
\setlength{\itemsep}{0pt}
\setlength{\parsep}{0pt}
\normalfont\ttfamily}%
 \item[]}
{\end{list}}

\makeatother

\usepackage{babel}

\begin{document}

\title{Der Wikireader}


\author{Carsten Strotmann}

\maketitle

\begin{figure*}[b]
\begin{center}
\includegraphics[width=0.5\textwidth]{2010-0203/wikireader-400x395.eps}
\caption{\label{wikireader:bild1}Wikipedia in der Westentasche: der Wikireader}
\end{center}
\end{figure*}

Es kommt selten vor, dass ein elektronisches Gerät für sogenannte {}``Endbenutzer''
(also Oma, Opa, Mama, Papa, Du und ich) als OpenSource veröffentlicht
wird. Nicht nur die Software (Firmware), sondern auch die komplette
Hardware ist offengelegt und dokumentiert. Noch ungewöhnlicher ist
es, dass ein solches Gerät ein Forth enthält. Der WikiReader ist ein
solches Gerät.

\begin{multicols}{2}
\section*{Wikipedia in der Tasche}


\begin{figure*}[t]
\begin{center}
\includegraphics[width=0.5\textwidth]{2010-0203/wikireader-board.eps}
\caption{\label{wikireader:bild2}Die Wikireader--Systemplatine}
\end{center}
\end{figure*}



%\begin{figure*}[b]
%\begin{center}
%\includegraphics[width=0.6\textwidth]{2010-0203/wikireader-rsp-460.eps}
%\caption{\label{wikireader:bild4}Der Wikireader}
%\end{center}
%\end{figure*}

Vordergründig ist der WikiReader ein Gerät, mit dem man die Inhalte
der Wikipedia (\url{http://wikipedia.org}) {}``offline'' mitführen kann.
Das funktioniert auch sehr gut, so eignet sich der Wikireader als
Nachschlagehilfe auf Studienreisen oder im Zug. Ideal auch für Themenanregungen,
wenn dem Besitzer des WikiReaders auf Partys beim Smalltalk die Themen
ausgehen (der {}``random''-Knopf ist hier hilfreich).

Der Wikireader (9.5cm $\times$ 9.5cm $\times$ 2cm, 140g) liegt gut
in der Hand. Angeschaltet wird das Gerät über einen Knopf oben rechts,
unterhalb des Touchscreens befinden sich drei Gummiknöpfe, {}``search'',
{}``history'' und {}``random''. Nach dem Anschalten erscheint
nach wenigen Sekunden eine Tastatur auf dem Schwarz-weiß-Bildschirm,
über die der Benutzer einen Suchbegriff eingeben kann. Der Bildschirm
(240 $\times$208 Bildpunkte) ist ein kapazitiver Touch-Screen, welcher
über ein asynchrones serielles Protokoll an die Wikireader-Hauptplatine
angebunden ist. Dieser Bildschirm ist nicht entspiegelt und nicht
beleuchtet, hat aber einen guten Kontrast und lässt sich daher auch
bei Sonnenschein (am Strand) benutzen. Ein Druck auf die 
{}``Search''-Taste durchsucht die Wikipedia Artikel (ca.\ 6 GB Daten bei der englischen
Ausgabe) in Sekundenschnelle und zeigt eine Liste der gefundenen 
Wikipedia-Artikel. Diese können über den Touchscreen ausgewählt werden.

Ein Artikel kann mit einer vertikalen Wischbewegung über den Bildschirm
gescrollt werden. Hyper-Links werden wie im Webbrowser unterstrichen
dargestellt. Leider zeigt der Wikireader derzeit nur den Text der
Artikel an, jedoch keine Grafiken. Tabellen werden angezeigt, sind
aber bei großen Tabellen schwer zu lesen. Die Wikireader-Software
wird weiterentwickelt und zukünftige Versionen sollen auch Bilddaten
zeigen können.


\section*{Das Innenleben}

Im Inneren des Wikireaders werkelt mit dem Epson S1C33E07 ein relativ
unbekannter Single-Chip-Mikrokontroller. Der Epson ist Mitglied der
S1C33-RISC-Familie, besitzt 8kB und 2kB internen RAM-Speicher, einen
LCDKontroller mit eigenem Frame-Buffer, serielle Schnittstellen,
SPI- sowie GPIO- und eine Keypad-Schnittstelle. Damit befindet sich
schon fast alles, was der WikiReader benötigt, in dem Mikrokontroller.
Zusätzlich befindet sich auf der Platine im Inneren des WikiReaders
noch zusätzlich 32MB SDRAM (16bit Bus, 4 Bänke) und das Boot-ROM (SPI,
64KB Flash). 

\begin{figure*}[b]
\begin{center}
\includegraphics[width=0.6\textwidth]{2010-0203/wikireader-und-freerunner.eps}
\caption{\label{wikireader:bild3}Das OpenMoko-Handy und der Wikireader}
\end{center}
\end{figure*}

Die Wikipedia Daten befinden sich auf einer Micro-SD- (oder Micro-SDHC
bis 8GB, VFAT formatiert)-Karte innerhalb des Batteriefachs (2 x AAA,
mein Wikireader läuft nun über 6 Monate mit der ersten Batterieladung).
Diese Karte kann vom Benutzer entnommen werden und über einen PC oder
Mac können die Wikipedia-Daten und auch die Wikireader-Firmware aktualisiert
werden. Offizielle Updates gibt es halbjährlich zum kostenlosen Download
von der WikiReader-Webseite. Da es sich um ein OpenSource-Produkt
handelt, finden sich im Internet an verschiedenen Stellen alternative
Firmware und Wikipedia-Daten (z.~B.\ Pakete mit den deutschen 
Wikipedia-Inhalten). In der Zukunft wird der Wikireader auch E-Books anzeigen
können, eine Vorabversion mit Büchern aus dem Projekt Gutenberg (
\url{http://www.gutenberg.org}) ist seit Juli 2010 verfügbar.


\section*{Wikireader und OpenMoko}

Der Wikireader wird von der taiwanesischen Firma OpenMoko hergestellt
und ist ein aus der Not geborenes Produkt. OpenMoko ist in der 
FreeSoftware-Gemeinschaft insbesondere für das FreeRunner-Mobiltelefon bekannt,
der Versuch, ein Mobiltelefon ausschließlich aus OpenSource-Bestandteilen
zu erstellen. Beim FreeRunner-Projekt gab es allerdings unvorhergesehene
Probleme, und es wurde kein für Endanwender benutzbares Produkt innerhalb
des geplanten Zeitrahmens fertiggestellt. Das Geld wurde knapp, und
OpenMoko musste ein Produkt auf den Markt bringen, um weitere 
OpenSource-Entwicklungen finanzieren zu können. Dieses Produkt ist der WikiReader.


\section*{Wikireader und Forth}

Die Hauptanwendung des WikiReaders, das Anzeigen der Wiki-Artikel,
ist in C geschrieben. Forth benutzen die Entwickler des WikiReaders
für die Fehlersuche. Glücklicherweise wird das Forth im WikiReader
nicht versteckt, sondern ist dokumentiert und kann vom Benutzer aufgerufen
werden. 

Wird der WikiReader bei gedrückter {}``search''-Taste angeschaltet,
so startet anstatt der normalen WikiReader-Software ein Menüprogramm,
welches die Forth-Programme auf der SD-Karte auflistet. Der Benutzer
kann nun per Touchscreen diese Programme auswählen und starten. Mitgeliefert
werden Beispielprogramme für die Ansteuerung des Bildschirms, Abfrage
des Touch-Screens und der Tasten sowie Zugriff auf den Massenspeicher
(SD-Karte).

Das Forth im WikiReader ist ein in C implementiertes und ANSIfiziertes
eForth, portiert vom OpenMoko-Entwickler Christopher Hall. Der Quellcode
des Forth-Systems befindet sich im Unterverzeichnis {}``/samo-lib/forth''
auf GitHub. Die Beispielprogramme finden sich ebenfalls im GitHub
unter {}``/samo-lib/forth/programs''.

Hier ein Beispielprogramm, ein simples Malprogram für den Touchscreen
(line.4th):
\begin{quote}
\begin{lyxcode}
\textbackslash{}~ctp~line~drawing

base~@~decimal

variable~down

:~line-draw~(~-{}-~)

~~~~lcd-cls

~~~~s\textquotedbl{}~Line~Drawing\textquotedbl{}~lcd-type

~~~~lcd-cr~lcd-cr

~~~~s\textquotedbl{}~Touch~screen~to~draw~line\textquotedbl{}~lcd-type

~~~~9~lcd-text-rows~1-~lcd-at-xy

~~~~s\textquotedbl{}~Clear\textquotedbl{}~lcd-type

~~~~10~lcd-spaces

~~~~s\textquotedbl{}~Exit\textquotedbl{}~lcd-type

~~~~button-flush

~~~~key-flush

~~~~ctp-flush

~~~~false~down~!

~~~~lcd-black

~~~~begin

~~~~~~~~ctp-pos?~if

~~~~~~~~~~~~ctp-pos~dup~0<

~~~~~~~~~~~~if

~~~~~~~~~~~~~~~~2drop

~~~~~~~~~~~~~~~~false~down~!

~~~~~~~~~~~~else

~~~~~~~~~~~~~~~~down~@

~~~~~~~~~~~~~~~~if

~~~~~~~~~~~~~~~~~~~~lcd-line-to

~~~~~~~~~~~~~~~~else

~~~~~~~~~~~~~~~~~~~~lcd-move-to

~~~~~~~~~~~~~~~~~~~~true~down~!

~~~~~~~~~~~~~~~~then

~~~~~~~~~~~~then

~~~~~~~~then

~~~~~~~~button?~if

~~~~~~~~~~~~button

~~~~~~~~~~~~case

~~~~~~~~~~~~~~~~button-left~of

~~~~~~~~~~~~~~~~~~~~lcd-cls

~~~~~~~~~~~~~~~~~~~~false~down~!

~~~~~~~~~~~~~~~~endof

~~~~~~~~~~~~~~~~button-centre~of

~~~~~~~~~~~~~~~~endof

~~~~~~~~~~~~~~~~button-right~of

~~~~~~~~~~~~~~~~~~~~exit

~~~~~~~~~~~~~~~~endof

~~~~~~~~~~~~endcase

~~~~~~~~then

~~~~~~~~key?~if

~~~~~~~~~~~~key-flush

~~~~~~~~then

~~~~~~~~wait-for-event

~~~~again

;

base~!
\end{lyxcode}
\end{quote}
Im Batteriefach des Wikireaders befinden sich Lötpunkte für die serielle
Schnittstelle. Über diese Schnittstelle kann das Forth im WikiReader
interaktiv benutzt und programmiert werden. Alternativ können die
Programme auf einem PC erstellt und dann auf die SD-Karte übertragen
werden.


\section*{Fazit}

Der WikiReader ist zum Preis von 99 US\$ (ca. 76 Euro) ein interessantes
Spielzeug für den Forth-begeisterten Hobby-Tüftler. Obwohl ich bei
der Wikipedia-Funktion des WikiReaders erst skeptisch war ({}``braucht
man das?'') und ich den WikiReader wegen des Forth-Systems gekauft
habe, kann ich sagen, dass sich der WikiReader gerade auf Reisen als nützlich
erwiesen hat. Das Open-Source-Konzept und das Forth-System im WikiReader
laden zum Basteln ein.
\end{multicols}

\section*{Links}

{}[1] Wikireader - \url{http://thewikireader.com}\\
{}[2] Wikireader Entwickler - \url{http://dev.thewikireader.com}\\
{}[3] Quellcode auf GitHub - \url{http://github.com/wikireader}
\end{document}
