diff --git a/.gitignore b/.gitignore index ff641a7..104d4dc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ assm obj/ bin/ -*.bin \ No newline at end of file +*.bin +docs/* +!docs/*.tex diff --git a/docs/document.tex b/docs/document.tex new file mode 100644 index 0000000..ab9c5b5 --- /dev/null +++ b/docs/document.tex @@ -0,0 +1,41 @@ +\documentclass{book} +\usepackage{tikz} + +\title{Unnamed Machine} +\author{A Very Terrible 16-bit Machine} + +\begin{document} + \maketitle + \tableofcontents + \chapter{Overview} + \section{Introduction} + \section{Registers} + The following are the general purpose registers that can be used. + \begin{itemize} + \item[] R1 + \item[] ... + \item[] R8 + \end{itemize} + \section{Memory Model} + Memory will be implicitly mapped I/O. The bottom 3201 bytes of memory will be reserved for the keyboard input and graphics. + A single byte is reserved for the keyboard's input. The current key will be stored in byte 0xF37E, with the most significant bit being a flag indicating that the keyboard + is ready to be read from. This means that the character encoding is actually 7 bits. + Video memory starts at 0xF37F (62335 decimal), and every byte represents an ASCII character in monochrome. + \begin{figure} + \centering + \begin{tikzpicture} + \fill[gray!5] (0,0)rectangle(5,10); + %\draw (0,10) .. controls (-2,6) and (-2,4) .. (0,1); + %\draw (0,10) arc (0:180:3cm); + \draw (0,10) -- (5,10); + \draw (0,1) -- node[above] {Video 0xF37F} (5,1); + \draw (0,0) -- (5,0); + \node[label=right:Top 0x0000] at (5,10) {}; + \node[label=right:Bottom 0xFFFF] at (5,0) {}; + \end{tikzpicture} + \caption{Memory Layout} + \end{figure} + \chapter{ISA} + \section{COPY} + \section{CMP} +\end{document}