To illustrate how the components work together and can be used in various
different applications, a small text-adventure with audio effects was written in
C. The main goal was to show the capabilities of even small systems like the
one developed.

\subsection{General Implementation details}

Like the before examples, the textadventure was implemented on an ATMega2560
and uses 3 different Registers for transmission: PORTF, PORTK and PORTL for
address bus, data bus and control bus respectively, as can be seen in listing
\ref{lst:textadv-avr.h}

\lstinputlisting[language=C,frame=trBL,
	breaklines=true, breakautoindent=true, formfeed=\newpage,
	label={lst:textadv-avr.h}, caption={The avr.h header file},
	columns=flexible, style=cstyle]{./code/textadv/include/avr.h}

The in listing \ref{lst:textadv-avr.h} shown defines MR_SHIFT, WR_SHIFT,
RD_SHIFT, CS_UART_SHIFT and CS_DAC_SHIFT are used to indicate the position of
the corresponding control lines inside the control bus register. All other
shift values are the same bitordering in input as in output.

The BUS_HOLD_US is used to tell the avr how many microsecons it takes for the
data bus to be latched into input register of the devices on write or how long
it takes for the data bus to become stable on read.
