\documentclass[final, ms, a4paper, 11pt]{memoir}

\usepackage[a4paper, inner=3cm, outer=3cm, marginpar=0pt]{geometry}
\usepackage[explicit]{titlesec}
\usepackage{wrapfig}
\usepackage{graphicx}
\usepackage{xcolor} %

% set line height
\renewcommand{\baselinestretch}{1}
% font hyphenation
\usepackage{everysel}
\EverySelectfont{%
\fontdimen2\font=0.6em % interword space
\fontdimen3\font=0.2em % interword stretch
\fontdimen4\font=0.1em % interword shrink
\fontdimen7\font=0.9em % extra space
\hyphenchar\font=`\-% to allow hyphenation
}


% set section style
% \newcommand{\secstyle}[2]{[ #2 ] \textcolor{red!50!black}{\MakeUppercase{#1}}}
% \renewcommand*\thesection{\arabic{section}} % hide chapter

\newcommand\ddate{01.01.1970}
\titleformat{\section}
  {\normalfont}{- \ddate{}:}{1em}
  {\textcolor{red!50!black}{\MakeUppercase{#1}} -}
% monochrome
% \titleformat{\section}
%   {\normalfont}{\thesection}{1em}{\MakeUppercase{#1}}

\begin{document}
\noindent {\Large Z80 Single Board Computer: Note e Diario di Lavoro} \\\\
\noindent SAM Bellinzona 2016/2017 \\
\noindent REF: Daniele Kamm \\
\noindent PIF: Naoki Pross \\
\vspace{5mm}

\renewcommand\ddate{30.01.2017}
\section{Perch\`e uno Z80?}
Originariamente questo progetto era un esperimento per costruire una
cartridge per il GameBoy Classic (DMZ-01) che conteneva dell'hardware
aggiuntivo che avrebbe potuto interfacciare dell'hardware esterno con la CPU
del GameBoy. Successivamente per\`o il progetto si \`e rivelato pi\`u
complicato del previsto a causa della complessa struttura del GB (GameBoy) e
la difficolt\`a per ritrovare l'hardware stesso. Quindi sotto consiglio del
docente ho cambiato il progetto in un Single Board Computer dato che sono
interessato in informatica di basso livello e la CPU del GB era basata sul
processore Z80 con un instruction set e assembly simile.

\renewcommand\ddate{09.02.2017}
\section{Hardware}
Dopo una ricerca abbastanza intensiva dal magazzino della scuola abbiamo trovato
i seguenti componenti principali del che utilizzer\`o per costruire il computer.
\begin{table}[h!] \centering
\begin{tabular}{ l l l l }
    Z8400AB1 (Z80ACPU) & Zilog   & x1 & CPU \\
    Z8420AB1 (Z80APIO) & Zilog   & x1 & Port Interface \\
    Z8430AB1 (Z80ACTC) & Zilog   & x1 & Timer Clock \\
    M28C64             & ST      & x2 & EEPROM \\
    HM62256B           & HITACHI & x1 & SRAM \\
    TL16C550C          & TI      & x1 & Seriale (UART / RS232) \\
\end{tabular}
\end{table}

Tutti gli altri componenti secondati come porte logiche e circuiti combinatori
integrati saranno indicati in una lista finale nella documentazione riassuntiva.

\renewcommand\ddate{13.02.2017}
\section{Address space}
\begin{wrapfigure}{R}{.35\linewidth} \centering
    \includegraphics[width=.9\linewidth]{res/addrspace.pdf}
\end{wrapfigure}
Come prima cosa dopo aver deciso il processore (Z80) \`e necessario definire
l'address space per decidere come collegare l'hardware. Si vede chiaramente che
la RAM usa la maggior parte dell'address space mentre la rom \`e solamente di
16KB, ma questo non \`e un problema perch\`e ho intenzione di aggiungere delle
interfacce esterne per poter collegare dispositivi di memoria come per esempio
le uSD. Dunque questa EEPROM vicina al processore sar\`a utilizzata unicamente
per il bootloader e per un sistema operativo molto basilare.

\renewcommand\ddate{23.02.2017}
\section{Banchi di memoria}

\renewcommand\ddate{06.03.2017}
\section{Schede normate e clock secondari}
In seguito ad una discussione ho deciso di implementare il circuito su un PCB di
dimensioni standard, come per esempio l'Eurocard (IEEE 1101.10) in maniera da
poter montare tutte le schede su un rack. Cos\`i facendo si avrebbe dei
connettori standard sul retro che si potrebbero utilizzare per le periferiche
esterne. Alternativamente si potrebbe utilizzare una struttura simile al PC/104
permettendo di interfacciare delle periferiche specifiche per computer ancora
diponibili sul mercato.



\end{document}
