\subsection{Parallel bus}

The core part of the hardware is the interface between the microprocessor and
the hardware peripherials. This bus is delivering data in parallel and is
therefore named the ``parallel bus``.  This bus has 3 different sub-parts:

\begin{enumerate}
	\item{The address bus}
	\item{The data bus}
	\item{The control bus}
\end{enumerate}

This split is common in many computer architectures and bus systems used by
various microprocessor manufacturers. In figure \ref{fig:atari_pbi} the
layout of the Atari Parallel Bus Interface is shown as used on the Atari 800XL.

\begin{figure}[H]
	\includegraphics[width=\textwidth, angle=0]{pics/atari_pbi}
	\caption{Atari PBI Pinout;Source: \url{https://www.atarimagazines.com}}
	\label{fig:atari_pbi}
\end{figure}

\subsubsection{Address Bus}

The address bus contains the nescessary data lines for addressing the individual
registers of the Serial connection and the uart. On any modern system this bus
is from 16 to 64 bits wide. For our implementation the bus size was chosen to
be 8 bit, which is multiple times the amount of needed address space, but 
is the smallest addressable unit on most microcontroller architectures and
therefore easy to program with. The address bus is unidirectional.

\subsection{Data Bus}

The data bus contains the actual data to be stored to and read from registers.
The data bus is, as well on most systems a multiple of 16 bits wide, but for the
same reasons as the data bus, was shrunk down in our case to 8 bits. The data
bus is bidirectional.

\subsection{Control Bus}

Control bus is a term which referes to any control lines (such as read and write
lines or clock lines)  which are neither address nor data bus. The control bus
in our case needed to be 5 bits wide and consists of:

\begin{itemize}
	\item{$MR$ ... Master Reset}
	\item{$\lnot WR$ ... Write Not}
	\item{$\lnot RD$ ... Read Not}
	\item{$\lnot MS1$ ... Module Select 1 Not}
	\item{$\lnot MS2$ ... Module Select 2 Not}
\end{itemize}

\subsubsection{Master Reset}

A high level on the $MR$ lane signals to the peripherials that a reset of all
registers and states should occure. This is needed for the serial console and
the dac.

\subsubsection{Write Not}
A low level on the $\lnot WR$ lane signals the corresponding modules that the 
data on
the data bus should be written to the register on the address specified from the
address bus.

\subsubsection{Read Not}
A low level on the $\lnot RD$ lane signals the corresponding modules that the 
data
from the register specified by the address on the address bus should be written
to the data bus.

\subsubsection{Module Select 1 and 2 Not}

A low level on one of these lines signals the corresponding module that the
data on address data and the control lines is meant for it.

