From 985e16b181fd55e28538f2d4524550bd425b86e9 Mon Sep 17 00:00:00 2001
From: Nao Pross <naopross@thearcway.org>
Date: Thu, 13 Apr 2017 16:03:11 +0200
Subject: switch from GAL (pld) to M4 32/32 CPLD

add M4 32/32 CPLD datasheet
new VHDL code with better control over the address space thanks to the
M4 which has a 16 bit input port
---
 doc/datasheets/M4-32_32-15JC.pdf | Bin 0 -> 478635 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 doc/datasheets/M4-32_32-15JC.pdf

(limited to 'doc')

diff --git a/doc/datasheets/M4-32_32-15JC.pdf b/doc/datasheets/M4-32_32-15JC.pdf
new file mode 100644
index 0000000..7dcb44a
Binary files /dev/null and b/doc/datasheets/M4-32_32-15JC.pdf differ
-- 
cgit v1.2.1


From 56b138ee24fcb2bdfab751d681c2f842cfb9e77b Mon Sep 17 00:00:00 2001
From: Nao Pross <naopross@thearcway.org>
Date: Thu, 15 Jun 2017 14:17:10 +0200
Subject: new documentation in z80upc.pdf

---
 doc/report/build.cmd             |   4 -
 doc/report/build/notes.pdf       | Bin 39689 -> 47404 bytes
 doc/report/build/z80uPC.pdf      | Bin 29047 -> 970520 bytes
 doc/report/res/addrspace.pdf     | Bin 6465 -> 7208 bytes
 doc/report/res/addrspace.svg     |  83 ++---
 doc/report/res/block_diagram.pdf | Bin 0 -> 23233 bytes
 doc/report/res/block_diagram.svg | 639 +++++++++++++++++++++++++++++++++++++++
 doc/report/res/bus_displays.png  | Bin 0 -> 7776 bytes
 doc/report/res/iospace.pdf       | Bin 0 -> 6118 bytes
 doc/report/res/iospace.svg       | 102 +++----
 doc/report/res/logo_sam.pdf      | Bin 0 -> 891254 bytes
 doc/report/z80uPC.tex            | 290 +++++++++++++++++-
 12 files changed, 1022 insertions(+), 96 deletions(-)
 delete mode 100644 doc/report/build.cmd
 create mode 100644 doc/report/res/block_diagram.pdf
 create mode 100644 doc/report/res/block_diagram.svg
 create mode 100644 doc/report/res/bus_displays.png
 create mode 100644 doc/report/res/iospace.pdf
 create mode 100755 doc/report/res/logo_sam.pdf

(limited to 'doc')

diff --git a/doc/report/build.cmd b/doc/report/build.cmd
deleted file mode 100644
index 3b4e8cd..0000000
--- a/doc/report/build.cmd
+++ /dev/null
@@ -1,4 +0,0 @@
-@echo off
-
- lualatex --output-directory=build notes.tex
-pause
\ No newline at end of file
diff --git a/doc/report/build/notes.pdf b/doc/report/build/notes.pdf
index b0f0ec4..6a70bd5 100644
Binary files a/doc/report/build/notes.pdf and b/doc/report/build/notes.pdf differ
diff --git a/doc/report/build/z80uPC.pdf b/doc/report/build/z80uPC.pdf
index 38b7bcd..6c5dd23 100644
Binary files a/doc/report/build/z80uPC.pdf and b/doc/report/build/z80uPC.pdf differ
diff --git a/doc/report/res/addrspace.pdf b/doc/report/res/addrspace.pdf
index 2689fca..96ac657 100644
Binary files a/doc/report/res/addrspace.pdf and b/doc/report/res/addrspace.pdf differ
diff --git a/doc/report/res/addrspace.svg b/doc/report/res/addrspace.svg
index 6af7e7f..0f73784 100644
--- a/doc/report/res/addrspace.svg
+++ b/doc/report/res/addrspace.svg
@@ -9,12 +9,12 @@
    xmlns="http://www.w3.org/2000/svg"
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="210mm"
-   height="297mm"
-   viewBox="0 0 210 297"
+   width="180.64061mm"
+   height="257.56342mm"
+   viewBox="0 0 180.64061 257.56342"
    version="1.1"
    id="svg8"
-   inkscape:version="0.92.0 r"
+   inkscape:version="0.92.1 r"
    sodipodi:docname="addrspace.svg">
   <defs
      id="defs2" />
@@ -25,18 +25,22 @@
      borderopacity="1.0"
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
-     inkscape:zoom="0.47482464"
-     inkscape:cx="396.85039"
-     inkscape:cy="477.01822"
+     inkscape:zoom="0.33575172"
+     inkscape:cx="902.43963"
+     inkscape:cy="551.46623"
      inkscape:document-units="mm"
      inkscape:current-layer="layer1"
      showgrid="false"
      showborder="false"
-     inkscape:window-width="1246"
-     inkscape:window-height="743"
-     inkscape:window-x="15"
-     inkscape:window-y="38"
-     inkscape:window-maximized="0" />
+     inkscape:window-width="1266"
+     inkscape:window-height="763"
+     inkscape:window-x="5"
+     inkscape:window-y="28"
+     inkscape:window-maximized="0"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
   <metadata
      id="metadata5">
     <rdf:RDF>
@@ -52,7 +56,8 @@
   <g
      inkscape:label="Layer 1"
      inkscape:groupmode="layer"
-     id="layer1">
+     id="layer1"
+     transform="translate(52.640604,-39.436588)">
     <g
        id="g4712"
        transform="matrix(0.71111091,0,0,1.0012581,0,-0.3734815)">
@@ -82,78 +87,80 @@
     </g>
     <text
        xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:9.87777778px;line-height:6.61458302px;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332;"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.05277824px;line-height:6.61458302px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
        x="-22.715445"
        y="38.353672"
        id="text4545"><tspan
          sodipodi:role="line"
          id="tspan4543"
          x="-22.715445"
-         y="44.410149"
-         style="stroke-width:0.26458332;font-size:9.87777778px;" /></text>
+         y="44.92416"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.05277824px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332" /></text>
     <text
        xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.40555556px;line-height:6.61458302px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Normal';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332;text-anchor:start;text-align:start;writing-mode:lr;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;"
-       x="-45.687298"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.05277824px;line-height:6.61458302px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="-30.085047"
        y="48.85014"
        id="text4549"><tspan
          sodipodi:role="line"
          id="tspan4547"
-         x="-45.687298"
+         x="-30.085047"
          y="48.85014"
-         style="stroke-width:0.26458332;-inkscape-font-specification:'Latin Modern Mono, Normal';font-family:'Latin Modern Mono';font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;font-size:13.40555556px;text-anchor:start;text-align:start;writing-mode:lr;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;">0x0000</tspan></text>
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.05277824px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332">0x0000</tspan></text>
     <text
        xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.40555556px;line-height:6.61458349px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332;"
-       x="-45.687298"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.05277824px;line-height:6.61458349px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="-30.085047"
        y="80.850136"
        id="text4549-7"><tspan
          sodipodi:role="line"
          id="tspan4617"
-         x="-45.687298"
+         x="-30.085047"
          y="80.850136">0x2000</tspan></text>
     <text
        xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.40555556px;line-height:6.61458349px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332;"
-       x="-45.687298"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.05277824px;line-height:6.61458349px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="-30.085047"
        y="112.85014"
        id="text4549-9"><tspan
          sodipodi:role="line"
          id="tspan4615"
-         x="-45.687298"
+         x="-30.085047"
          y="112.85014">0x4000</tspan></text>
     <text
        xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.40555556px;line-height:6.61458349px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332;"
-       x="-45.687298"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.05277824px;line-height:6.61458349px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="-30.085047"
        y="176.85014"
        id="text4549-70"><tspan
          sodipodi:role="line"
          id="tspan4613"
-         x="-45.687298"
+         x="-30.085047"
          y="176.85014">0x8000</tspan></text>
     <text
        xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.40555556px;line-height:6.61458349px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Normal';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332;text-anchor:start;text-align:start;writing-mode:lr;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;"
-       x="-45.687298"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.05277824px;line-height:6.61458349px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="-30.085047"
        y="296.85013"
        id="text4549-0"><tspan
          sodipodi:role="line"
-         id="tspan4611">0xFFFF</tspan></text>
+         id="tspan4611"
+         x="-30.085047"
+         y="296.85013">0xFFFF</tspan></text>
     <text
        xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.40555556px;line-height:15px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332;"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.05277824px;line-height:15px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
        x="64.149452"
        y="236.76022"
        id="text4621"><tspan
          sodipodi:role="line"
          x="64.149452"
          y="236.76022"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.40555556px;line-height:15px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr;text-anchor:middle;stroke-width:0.26458332;"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.05277824px;line-height:15px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332"
          id="tspan4631">32KB RAM</tspan></text>
     <text
        xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.40555556px;line-height:15px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332;"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.05277824px;line-height:15px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
        x="64.185799"
        y="132.85966"
        id="text4621-8"><tspan
@@ -167,7 +174,7 @@
          y="147.85966">SPACE</tspan></text>
     <text
        xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.40555556px;line-height:15px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332;"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.05277824px;line-height:15px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
        x="63.628578"
        y="94.760223"
        id="text4621-8-1"><tspan
@@ -177,11 +184,11 @@
          y="94.760223">8KB ROM</tspan></text>
     <text
        xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.40555556px;line-height:15px;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332;"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.05277824px;line-height:15px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
        x="64.02317"
        y="62.76022"
        id="text4621-8-1-8"><tspan
-         style="stroke-width:0.26458332;-inkscape-font-specification:'Latin Modern Mono, Normal';font-family:'Latin Modern Mono';font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;font-size:13.40555556px;text-anchor:middle;text-align:center;writing-mode:lr;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.05277824px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332"
          sodipodi:role="line"
          id="tspan4688-5"
          x="64.02317"
diff --git a/doc/report/res/block_diagram.pdf b/doc/report/res/block_diagram.pdf
new file mode 100644
index 0000000..204a22e
Binary files /dev/null and b/doc/report/res/block_diagram.pdf differ
diff --git a/doc/report/res/block_diagram.svg b/doc/report/res/block_diagram.svg
new file mode 100644
index 0000000..b78bf97
--- /dev/null
+++ b/doc/report/res/block_diagram.svg
@@ -0,0 +1,639 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="210mm"
+   height="297mm"
+   viewBox="0 0 210 297"
+   version="1.1"
+   id="svg8"
+   inkscape:version="0.92.1 r"
+   sodipodi:docname="block_diagram.svg">
+  <defs
+     id="defs2">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4718">
+      <stop
+         style="stop-color:#040000;stop-opacity:1;"
+         offset="0"
+         id="stop4714" />
+      <stop
+         style="stop-color:#040000;stop-opacity:0;"
+         offset="1"
+         id="stop4716" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4718"
+       id="linearGradient4720"
+       x1="15.50473"
+       y1="231.3285"
+       x2="30.223607"
+       y2="231.3285"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.36157024"
+     inkscape:cx="246.0141"
+     inkscape:cy="-135.97287"
+     inkscape:document-units="mm"
+     inkscape:current-layer="g4691-3"
+     showgrid="false"
+     showborder="false"
+     inkscape:snap-global="true"
+     inkscape:window-width="1266"
+     inkscape:window-height="763"
+     inkscape:window-x="5"
+     inkscape:window-y="28"
+     inkscape:window-maximized="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3680" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g4516"
+       transform="translate(0,-3.0398368e-6)">
+      <rect
+         y="247.49963"
+         x="0.4996292"
+         height="49.00074"
+         width="99.00074"
+         id="rect3682"
+         style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.9992584;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <text
+         id="text3686"
+         y="278.29111"
+         x="19.777945"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.93333244px;line-height:6.61458302px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+         xml:space="preserve"><tspan
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.93333244px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
+           y="278.29111"
+           x="19.777945"
+           id="tspan3684"
+           sodipodi:role="line">Z80CPU</tspan></text>
+    </g>
+    <rect
+       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00687063;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect3688"
+       width="98.993126"
+       height="48.99313"
+       x="0.50343531"
+       y="147.50343" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.93333244px;line-height:6.61458349px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="8.6604137"
+       y="178.47581"
+       id="text3686-2"><tspan
+         sodipodi:role="line"
+         id="tspan3684-9"
+         x="8.6604137"
+         y="178.47581"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.93333244px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332">ROM HIGH</tspan></text>
+    <g
+       id="g4571"
+       transform="translate(44.983675,9.169298)">
+      <rect
+         y="138.33414"
+         x="105.51976"
+         height="48.99313"
+         width="98.993126"
+         id="rect3688-4"
+         style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00687063;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <text
+         id="text3686-2-3"
+         y="168.23744"
+         x="120.09121"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.93333244px;line-height:6.61458349px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+         xml:space="preserve"><tspan
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.93333244px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
+           y="168.23744"
+           x="120.09121"
+           id="tspan3684-9-5"
+           sodipodi:role="line">ROM LOW</tspan></text>
+    </g>
+    <rect
+       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00687063;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect3688-4-1"
+       width="98.993126"
+       height="48.99313"
+       x="300.50345"
+       y="147.50343" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.57777786px;line-height:6.61458349px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="327.90381"
+       y="179.01036"
+       id="text3686-2-3-4"><tspan
+         sodipodi:role="line"
+         id="tspan3684-9-5-6"
+         x="327.90381"
+         y="179.01036"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.57777786px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332">RAM</tspan></text>
+    <path
+       sodipodi:nodetypes="cccccccccccccccc"
+       inkscape:connector-curvature="0"
+       id="path4583"
+       d="M -75,247 V 232 H 50 v 15 -50 35 h 150 v -35 50 -15 h 150 v -35 150 -35 l -150,0 v 35"
+       style="fill:none;stroke:#009d00;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot4544"
+       style="fill:black;fill-opacity:1;stroke:none;font-family:'Roboto Mono';font-style:normal;font-weight:normal;font-size:53.33333333px;line-height:25px;letter-spacing:0px;word-spacing:0px;-inkscape-font-specification:'Roboto Mono';font-stretch:normal;font-variant:normal"><flowRegion
+         id="flowRegion4546"><rect
+           id="rect4548"
+           width="468.71078"
+           height="301.02545"
+           x="359.61432"
+           y="441.67688" /></flowRegion><flowPara
+         id="flowPara4550" /></flowRoot>    <path
+       sodipodi:nodetypes="cccccccccccccccc"
+       inkscape:connector-curvature="0"
+       id="path4583-7"
+       d="M -100,247 V 212 H 25 v 35 -50 15 h 150 v -15 50 -35 l 150,0 V 197 347 332 H 175 v 15"
+       style="fill:none;stroke:#ff0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 19.669271,242.82083 10,-5"
+       id="path4703"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:8.46666667px;line-height:6.61458302px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr;text-anchor:start;fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:0.26458332;stroke-opacity:1;"
+       x="-2.5545583"
+       y="243.20735"
+       id="text4707"><tspan
+         sodipodi:role="line"
+         id="tspan4663"
+         x="-2.5545583"
+         y="243.20735">D0-8</tspan></text>
+    <g
+       id="g4691">
+      <path
+         sodipodi:nodetypes="cc"
+         inkscape:connector-curvature="0"
+         id="path4703-5"
+         d="m 45.577762,243.13654 10,-5"
+         style="fill:#009d00;fill-opacity:1;stroke:#009d00;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <text
+         id="text4707-1"
+         y="242.57951"
+         x="57.320847"
+         style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:8.46666667px;line-height:6.61458302px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr;text-anchor:start;fill:#009d00;fill-opacity:1;stroke:#009d00;stroke-width:0.26458332;stroke-opacity:1;"
+         xml:space="preserve"><tspan
+           y="242.57951"
+           x="57.320847"
+           id="tspan4661"
+           sodipodi:role="line">A0-11</tspan></text>
+    </g>
+    <rect
+       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00687063;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect3688-3"
+       width="98.993126"
+       height="48.99313"
+       x="150.50343"
+       y="247.50343" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.93333244px;line-height:6.61458349px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="182.18013"
+       y="279.01038"
+       id="text3686-2-8"><tspan
+         sodipodi:role="line"
+         id="tspan4624"
+         x="182.18013"
+         y="279.01038">MMU</tspan></text>
+    <path
+       style="fill:none;stroke:#009d8b;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="m 100,271.86771 h 50"
+       id="path4626"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#009d00;fill-opacity:1;stroke:#009d8b;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 107.15877,275.7273 7.52238,-8.27126"
+       id="path4703-5-4"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:8.46666667px;line-height:6.61458302px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr;text-anchor:start;fill:#009d8b;fill-opacity:1;stroke:#009d8b;stroke-width:0.26499999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;"
+       x="109.25587"
+       y="264.45767"
+       id="text4707-1-8"><tspan
+         sodipodi:role="line"
+         id="tspan4665"
+         x="109.25587"
+         y="264.45767">A12-15</tspan></text>
+    <path
+       style="fill:#009d00;fill-opacity:1;stroke:#009d00;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 195.1591,243.55279 10,-5"
+       id="path4703-5-8"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:8.46666667px;line-height:6.61458349px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr;text-anchor:start;fill:#009d00;fill-opacity:1;stroke:#009d00;stroke-width:0.26458332;stroke-opacity:1;"
+       x="206.90219"
+       y="242.99577"
+       id="text4707-1-9"><tspan
+         sodipodi:role="line"
+         id="tspan4701">A12-15</tspan></text>
+    <rect
+       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00687063;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect3688-7"
+       width="98.993126"
+       height="48.99313"
+       x="0.50343531"
+       y="347.50345" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.11111069px;line-height:6.61458302px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="49.177593"
+       y="378.24994"
+       id="text4752"><tspan
+         sodipodi:role="line"
+         id="tspan4750"
+         x="49.177593"
+         y="378.24994"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.11111069px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332"
+         dy="-8.4700012">CLK</tspan><tspan
+         sodipodi:role="line"
+         x="49.177593"
+         y="384.86453"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.11111069px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332"
+         id="tspan4754">Generators</tspan></text>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1.95363188;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 26.055948,347 V 296.50597"
+       id="path4756"
+       inkscape:connector-curvature="0" />
+    <rect
+       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00687063;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect3688-4-0"
+       width="98.993126"
+       height="48.99313"
+       x="150.50343"
+       y="347.50345" />
+    <rect
+       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00687063;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect3688-4-3"
+       width="98.993126"
+       height="48.99313"
+       x="300.50345"
+       y="347.50345" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.57777786px;line-height:6.61458349px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="330.16299"
+       y="381.37689"
+       id="text3686-2-3-4-6"><tspan
+         sodipodi:role="line"
+         id="tspan3684-9-5-6-9"
+         x="330.16299"
+         y="381.37689"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.57777786px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332">PIO</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.57777786px;line-height:6.61458349px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="176.70467"
+       y="379.86499"
+       id="text3686-2-3-4-4"><tspan
+         sodipodi:role="line"
+         id="tspan3684-9-5-6-2"
+         x="176.70467"
+         y="379.86499"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.57777786px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332">CTC</tspan></text>
+    <g
+       id="g4922">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4756-2"
+         d="m 161,422.062 v -25"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 171,422.062 v -25"
+         id="path4894"
+         inkscape:connector-curvature="0" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4896"
+         d="m 181,422.062 v -25"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 191,422.062 v -25"
+         id="path4898"
+         inkscape:connector-curvature="0" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4900"
+         d="m 201,422.062 v -25"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 201,422.062 v -25"
+         id="path4902"
+         inkscape:connector-curvature="0" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4904"
+         d="m 221,422.062 v -25"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 211,422.062 v -25"
+         id="path4906"
+         inkscape:connector-curvature="0" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4908"
+         d="m 231,422.062 v -25"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 241,422.062 v -25"
+         id="path4910"
+         inkscape:connector-curvature="0" />
+    </g>
+    <g
+       transform="translate(150,-0.062)"
+       id="g4922-6">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4756-2-4"
+         d="m 161,422.062 v -25"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 171,422.062 v -25"
+         id="path4894-1"
+         inkscape:connector-curvature="0" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4896-2"
+         d="m 181,422.062 v -25"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 191,422.062 v -25"
+         id="path4898-8"
+         inkscape:connector-curvature="0" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4900-8"
+         d="m 201,422.062 v -25"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 201,422.062 v -25"
+         id="path4902-9"
+         inkscape:connector-curvature="0" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4904-2"
+         d="m 221,422.062 v -25"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 211,422.062 v -25"
+         id="path4906-8"
+         inkscape:connector-curvature="0" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4908-8"
+         d="m 231,422.062 v -25"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 241,422.062 v -25"
+         id="path4910-8"
+         inkscape:connector-curvature="0" />
+    </g>
+    <rect
+       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00687063;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect3688-6"
+       width="98.993126"
+       height="48.99313"
+       x="-149.49657"
+       y="247.50343" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.93333244px;line-height:6.61458349px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="-125.9726"
+       y="279.20761"
+       id="text3686-2-83"><tspan
+         sodipodi:role="line"
+         id="tspan3684-9-8"
+         x="-125.9726"
+         y="279.20761"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.93333244px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332">USART</tspan></text>
+    <rect
+       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00687063;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect3688-4-0-3"
+       width="98.993126"
+       height="48.99313"
+       x="-149.49657"
+       y="347.44144" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.93333244px;line-height:6.61458349px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="-132.09169"
+       y="379.28555"
+       id="text3686-2-3-4-4-3"><tspan
+         sodipodi:role="line"
+         id="tspan3684-9-5-6-2-3"
+         x="-132.09169"
+         y="379.28555"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.93333244px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332">MAX214</tspan></text>
+    <g
+       transform="translate(-300,-0.062)"
+       id="g4922-8">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4756-2-0"
+         d="m 161,422.062 v -25"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 171,422.062 v -25"
+         id="path4894-4"
+         inkscape:connector-curvature="0" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4896-7"
+         d="m 181,422.062 v -25"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 191,422.062 v -25"
+         id="path4898-6"
+         inkscape:connector-curvature="0" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4900-89"
+         d="m 201,422.062 v -25"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 201,422.062 v -25"
+         id="path4902-0"
+         inkscape:connector-curvature="0" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4904-6"
+         d="m 221,422.062 v -25"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 211,422.062 v -25"
+         id="path4906-87"
+         inkscape:connector-curvature="0" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4908-9"
+         d="m 231,422.062 v -25"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 241,422.062 v -25"
+         id="path4910-0"
+         inkscape:connector-curvature="0" />
+    </g>
+    <g
+       transform="matrix(1,0,0,1.9934729,-300,-494.53234)"
+       id="g4922-8-3">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4756-2-0-3"
+         d="m 161,422.062 v -25"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 171,422.062 v -25"
+         id="path4894-4-3"
+         inkscape:connector-curvature="0" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4896-7-7"
+         d="m 181,422.062 v -25"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 191,422.062 v -25"
+         id="path4898-6-3"
+         inkscape:connector-curvature="0" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4900-89-2"
+         d="m 201,422.062 v -25"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 201,422.062 v -25"
+         id="path4902-0-6"
+         inkscape:connector-curvature="0" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4904-6-5"
+         d="m 221,422.062 v -25"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 211,422.062 v -25"
+         id="path4906-87-2"
+         inkscape:connector-curvature="0" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4908-9-6"
+         d="m 231,422.062 v -25"
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 241,422.062 v -25"
+         id="path4910-0-5"
+         inkscape:connector-curvature="0" />
+    </g>
+    <path
+       style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 170.24434,242.96618 10,-5"
+       id="path4703-2"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:8.46666667px;line-height:6.61458349px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr;text-anchor:start;fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:0.26458332;stroke-opacity:1;"
+       x="148.02051"
+       y="243.35269"
+       id="text4707-5"><tspan
+         sodipodi:role="line"
+         id="tspan5110">D0-3</tspan></text>
+    <g
+       transform="translate(149.30752,100.76071)"
+       id="g4691-3">
+      <path
+         sodipodi:nodetypes="cc"
+         inkscape:connector-curvature="0"
+         id="path4703-5-7"
+         d="m 45.577762,243.13654 10,-5"
+         style="fill:#009d00;fill-opacity:1;stroke:#009d00;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <text
+         id="text4707-1-7"
+         y="242.57951"
+         x="57.320847"
+         style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:8.46666667px;line-height:6.61458302px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr;text-anchor:start;fill:#009d00;fill-opacity:1;stroke:#009d00;stroke-width:0.26458332;stroke-opacity:1;"
+         xml:space="preserve"><tspan
+           sodipodi:role="line"
+           id="tspan5160">A0-1</tspan></text>
+      <path
+         sodipodi:nodetypes="cc"
+         inkscape:connector-curvature="0"
+         id="path4703-5-7-9"
+         d="m 195.32603,243.65398 10,-5"
+         style="fill:#009d00;fill-opacity:1;stroke:#009d00;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <text
+         id="text4707-1-7-4"
+         y="243.09695"
+         x="207.06911"
+         style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:8.46666622px;line-height:6.61458349px;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Light';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#009d00;fill-opacity:1;stroke:#009d00;stroke-width:0.26458332;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:0.26458332"
+           y="243.09695"
+           x="207.06911"
+           sodipodi:role="line"
+           id="tspan5160-5">A0-1</tspan></text>
+    </g>
+  </g>
+</svg>
diff --git a/doc/report/res/bus_displays.png b/doc/report/res/bus_displays.png
new file mode 100644
index 0000000..941fa4f
Binary files /dev/null and b/doc/report/res/bus_displays.png differ
diff --git a/doc/report/res/iospace.pdf b/doc/report/res/iospace.pdf
new file mode 100644
index 0000000..c1773fd
Binary files /dev/null and b/doc/report/res/iospace.pdf differ
diff --git a/doc/report/res/iospace.svg b/doc/report/res/iospace.svg
index 750c51c..4438ed0 100644
--- a/doc/report/res/iospace.svg
+++ b/doc/report/res/iospace.svg
@@ -9,12 +9,12 @@
    xmlns="http://www.w3.org/2000/svg"
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="210mm"
-   height="297mm"
-   viewBox="0 0 210 297"
+   width="152.99294mm"
+   height="262.63849mm"
+   viewBox="0 0 152.99294 262.63849"
    version="1.1"
    id="svg8"
-   inkscape:version="0.91 r13725"
+   inkscape:version="0.92.1 r"
    sodipodi:docname="iospace.svg">
   <defs
      id="defs2" />
@@ -25,18 +25,22 @@
      borderopacity="1.0"
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
-     inkscape:zoom="2.6860138"
-     inkscape:cx="135.42682"
-     inkscape:cy="112.15076"
+     inkscape:zoom="0.67150345"
+     inkscape:cx="420.75058"
+     inkscape:cy="512.06936"
      inkscape:document-units="mm"
      inkscape:current-layer="layer1"
      showgrid="false"
      showborder="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1017"
-     inkscape:window-x="-8"
-     inkscape:window-y="-8"
-     inkscape:window-maximized="1" />
+     inkscape:window-width="1266"
+     inkscape:window-height="763"
+     inkscape:window-x="5"
+     inkscape:window-y="28"
+     inkscape:window-maximized="0"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
   <metadata
      id="metadata5">
     <rdf:RDF>
@@ -45,14 +49,15 @@
         <dc:format>image/svg+xml</dc:format>
         <dc:type
            rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
+        <dc:title></dc:title>
       </cc:Work>
     </rdf:RDF>
   </metadata>
   <g
      inkscape:label="Layer 1"
      inkscape:groupmode="layer"
-     id="layer1">
+     id="layer1"
+     transform="translate(24.867916,-38.353672)">
     <rect
        id="rect10"
        width="127.4551"
@@ -63,91 +68,84 @@
        transform="scale(-1,1)" />
     <text
        xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:9.87777778px;line-height:6.61458302px;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332;"
-       x="-22.715445"
-       y="38.353672"
-       id="text4545"><tspan
-         sodipodi:role="line"
-         id="tspan4543"
-         x="-22.715445"
-         y="44.410149"
-         style="stroke-width:0.26458332;font-size:9.87777778px;" /></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:661.00001335%;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:0%;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
        x="-25.317501"
        y="236.93015"
-       id="text4549-9"
-       sodipodi:linespacing="661.00001%"><tspan
+       id="text4549-9"><tspan
          sodipodi:role="line"
          id="tspan4615"
          x="-25.317501"
-         y="236.93015">0x4000</tspan></text>
+         y="236.93015"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:6.61000013;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start">0x4000</tspan></text>
     <text
        xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:661.00001335%;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:0%;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
        x="-25.317501"
        y="300.93015"
-       id="text4549-0"
-       sodipodi:linespacing="661.00001%"><tspan
+       id="text4549-0"><tspan
          sodipodi:role="line"
          id="tspan4163"
          x="-25.317501"
-         y="300.93015">0x8000</tspan></text>
+         y="300.93015"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:6.61000013;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start">0x8000</tspan></text>
     <path
        style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 0,264.85889 127.64128,0"
+       d="M 0,264.85889 H 127.64128"
        id="path4165"
        inkscape:connector-curvature="0" />
     <text
        xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35000004px;line-height:661%;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332;"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:0%;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
        x="-25.317501"
        y="268.93015"
-       id="text4549-9-7"
-       sodipodi:linespacing="661%"><tspan
+       id="text4549-9-7"><tspan
          sodipodi:role="line"
-         id="tspan4159">0x6000</tspan></text>
+         id="tspan4159"
+         x="-25.317501"
+         y="268.93015"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:6.61000013;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start">0x6000</tspan></text>
     <path
        style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 0,280.85889 127.64128,0"
+       d="M 0,280.85889 H 127.64128"
        id="path4165-1"
        inkscape:connector-curvature="0" />
     <path
        style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.28222221px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 0,248.85889 127.64128,0"
+       d="M 0,248.85889 H 127.64128"
        id="path4165-1-9"
        inkscape:connector-curvature="0" />
     <text
        xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:661.00001335%;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:0%;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
        x="-25.317501"
        y="252.93015"
-       id="text4549-9-0"
-       sodipodi:linespacing="661.00001%"><tspan
+       id="text4549-9-0"><tspan
          sodipodi:role="line"
          id="tspan4615-8"
          x="-25.317501"
-         y="252.93015">0x5000</tspan></text>
+         y="252.93015"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:6.61000013;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start">0x5000</tspan></text>
     <text
        xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35000004px;line-height:661%;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332;"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:0%;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
        x="-25.317501"
        y="284.93015"
-       id="text4549-9-0-2"
-       sodipodi:linespacing="661%"><tspan
+       id="text4549-9-0-2"><tspan
          sodipodi:role="line"
-         id="tspan4227">0x7000</tspan></text>
+         id="tspan4227"
+         x="-25.317501"
+         y="284.93015"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:6.61000013;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start">0x7000</tspan></text>
     <text
        xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:661.00001335%;font-family:'Latin Modern Mono';-inkscape-font-specification:'Latin Modern Mono, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:0%;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
        x="10.484573"
        y="243.46561"
-       id="text4549-9-02"
-       sodipodi:linespacing="661.00001%"><tspan
+       id="text4549-9-02"><tspan
          sodipodi:role="line"
          x="10.484573"
          y="243.46561"
-         id="tspan4167">SERIAL</tspan></text>
+         id="tspan4167"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:6.61000013;font-family:'Roboto Mono';-inkscape-font-specification:'Roboto Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start">SERIAL</tspan></text>
   </g>
 </svg>
diff --git a/doc/report/res/logo_sam.pdf b/doc/report/res/logo_sam.pdf
new file mode 100755
index 0000000..b621307
Binary files /dev/null and b/doc/report/res/logo_sam.pdf differ
diff --git a/doc/report/z80uPC.tex b/doc/report/z80uPC.tex
index aa5d13c..5a4ec64 100644
--- a/doc/report/z80uPC.tex
+++ b/doc/report/z80uPC.tex
@@ -1,10 +1,296 @@
 \documentclass[a4paper, 11pt, twoside]{article}
 
+\usepackage{array}
+\usepackage{float}
+\usepackage{wrapfig}
 
+% source code
+\usepackage{listings}
 
-\title{Z80 Single Board Computer Development}
+% set correct hypenation
+\usepackage[italian]{babel}
+
+% set margins
+\usepackage[
+    inner=2.5cm, 
+    outer=2.5cm,
+    top=3cm,
+    bottom=3.75cm
+]{geometry}
+
+% set headers
+\usepackage{fancyhdr}
+\pagestyle{fancyplain}
+\fancyhf{}
+\setlength{\headheight}{1.3cm}
+\rhead{\includegraphics[height=1.25cm]{res/logo_sam}}
+\lfoot{SAM 3E - Naoki Pross}
+\rfoot{\thepage}
+
+% set font
+\usepackage{fontspec}
+\setmainfont{Roboto}
+\setmonofont{Roboto Mono}
+
+% to fix macros
+\usepackage{xspace}
+% commands
+% macro for project name
+\newcommand{\prj}{Z80μPC\xspace}
+
+% invert signal (not, active low)
+\newcommand{\inv}[1]{$\overline{\mbox{#1}}$}
+ 
+% metadata
+\title{\vspace{-1cm}\texttt{\prj} Single Board \\ Computer Development }
 \author{Naoki Pross}
 
+% document 
 \begin{document}
-    \maketitle
+
+\maketitle
+\begin{abstract}
+    Lo Zilog Z80 \`e un processore a 8 bit che fu introdotto nel 1976 che ebbe
+    un grandissimo successo nel mondo dell'elettronica e dell'informatica
+    nella fine del 20esimo secolo. In memoria di questo processore pioniere
+    dell'industria di sistemi embedded ho deciso di costruire un computer a
+    scopo generico intorno a questa piattaforma. L'obiettivo \`e di realizzare
+    una scheda programmabile con tutti i componenti necessari come ROM, RAM e
+    timers per far funzionare del software programmato se possibile sul
+    dispositivo stesso.
+\end{abstract}
+
+\section{Specifiche tecniche dello Z80}
+Lo Z80 \`e un processore molto minimalistico se paragonato a ci\`o che si
+trova oggi sul mercato dei microcontrollori. Per il mio progetto ho deciso di
+utilizzare il modello originale \texttt{Zilog Z8400} che non dispone di
+sistemi integrati come i modelli SoC odierni. Le specifiche pi\`u importanti
+sono elencate a seguire.
+
+\begin{itemize}
+    \item Architettura a 8 bit con bus a 16 bit con 64K indirizzi indirizzabili
+    \item Registri a 16 bit per {\tt SP,PC} e registri di utilizzo generico a
+        8 bit {\tt A..F} combinabili a coppie {\tt AF,BC,..} per utilizzare
+        valori a 16 bit
+    \item Clock fino a 8 MHz
+    \item Segnali di controllo tra cui \texttt{\inv{RD}, \inv{WR},
+        \inv{IOREQ}, \inv{MREQ}} e \texttt{\inv{RST}}
+    \item Interrupts mascherabili e non con vettore a 8 bit
+\end{itemize}
+
+\section{Architettura di base}
+Il minimo necessario per far funzionare un computer con lo Z80 sono una ROM e
+una RAM, ma per il mio progetto ho scelto di aggiungere dell'hardware
+aggiuntivo per lo sviluppo si sistemi pi\`u complessi per apprendere
+conoscenze sia nel mondo dell'elettronica che dell'informatica. Per questa 
+ragione lo \prj possiede i seguienti componenti:
+
+\begin{center}
+\begin{tabular}{ >{\tt}l >{\tt\bfseries}l p{.7\linewidth} }
+    % \hline \\
+    ROM & M28C64    & EEPROM da 8KB x 8 bit (64K) per il BIOS / Bootloader /
+                      OS installata doppia per avere 16KB \\
+    RAM & HM62256B  & SRAM da 32KB x 8bit (256K) \\
+    CTC & Z8430     & Counter timer circuit ufficiale di Zilog a 4 canali che
+                      permette di essere programmato \\
+    PIO & Z8420     & Parallel input/output controller di Zilog per avere un
+                      intefaccia digitale con due porte da 8 bit \\
+    MMU & M4-32/32-15JC & CPLD programmabile che implementa una memory 
+                          management unit semplificata in grado di gestire i 5
+                          bit pi\`u significativi della linea di indirizzi \\
+    USART & TL16C550C & Interfaccia USART per poter comunicare utilizzando il
+                        protocollo RS232
+\end{tabular}
+\end{center}
+
+Oltre a tutto ci\`o per uno scopo formativo lo \prj dispone anche di strumenti
+da debug e analisi per comprendere ogni operazione del processore. Il modello
+di Z80 scelto \`e in grado di utilizzare un clock fino a 8MHz, ma non
+definisce un minimo dunque sono presenti 3 circuiti che generano 3 clock di
+velocit\`a differenti.
+
+\begin{center}
+\begin{tabular}{ >{\bfseries}r p{.8\linewidth} }
+    0Hz     & Questo clock \`e un bottone che permette di creare
+              manualmente le pulsazioni del clock, per poter analizzare
+              ogni istruzione \\
+    200Hz   & Mediante un classico circuito con un LM555 si ha un clock da
+              200Hz per eseguire i programmi a velocit\`a rallentata \\
+    4MHz    & Clock per esecuzione a velocit\`a piena (normale)
+\end{tabular}
+\end{center}
+
+Una seconda disposizione per aiutare la comprensione del funzionamento del
+processore \`e data da 6 display a 7 segmenti che durante l'esecuzione
+rallentata o a step (bottone) visualizzano i bytes presenti sulla bus di
+indirizzi a 16 bit e sul bus di dati a 8 bit.
+
+\begin{figure}[!h] \centering
+    \includegraphics[width=\linewidth]{res/bus_displays}
+    \caption{Display a 7 segmenti per visualizzare il flusso di dati della
+    CPU}
+\end{figure}
+
+\section{Memory Management Unit}
+
+Alcuni modelli successori dello Z8400 implementavano una MMU SoC che
+permetteva di indirizzare un address space di dimensione maggiore. Per lo \prj
+non necessito di un indirizzamento pi\`u grande ma piuttosto sono interessato
+dalle operazioni di gestione della memoria di una MMU simile a ci\`o che
+accade nelle architetture X86. Nelle architetture odierne basate sull'X86/64
+\`e presente un sistema di traslazione di indirizzi di memoria da virtuale a
+fisica. Con lo scopo di trarne solamente i vantaggi pi\`u fondamentali lo \prj
+implementa nella CPLD MMU un sistema basilare di gestione di pagine di memoria
+con traslazione di indirizzi in modo da poter allocare pi\`u programmi nella
+RAM anche se il sistema non implementa il multitasking.
+
+% TODO: write about this in more details
+
+\subsection{Address Space}
+
+\begin{wrapfigure}{r}{.4\linewidth} \centering
+    \vspace{8mm}
+    \includegraphics[width=.9\linewidth]{res/addrspace}
+    \vspace{4mm}
+    \caption{Address space dello \prj}
+\end{wrapfigure}
+La funzione primaria della MMU \`e di mappare i dispositivi I/O e le memorie
+nell'address space. Nell'implementazione reale la MMU controlla i segnali {\tt
+\inv{CS}} seguendo una logica combinatoria molto semplice che controlla se
+l'indirizzo sul bus si trova in una zona definita per un dispositivo.
+L'address space si presenta dunque nella seguente maniera, per cui la ROM
+occupa il primo quarto, i dispositivi mappabili il secondo quarto e la RAM la
+met\`a restante. Essendo un progetto pensato per essere esteso 16KB sono
+liberi per mappare dispositivi esterni collegati attraverso il connettore 
+DIN41612.
+
+% \begin{wrapfigure}{l}{.4\linewidth} \centering
+%     \includegraphics[width=.8\linewidth]{res/iospace}
+% \end{wrapfigure}
+
+\subsection{Page Table}
+
+Per poter controllare la traslazione degli indirizzi la MMU dispone di una
+Page Table a cui \`e possibile accedere attraversso un certo indirizzo
+nell'I/O space. La page table di 5 bit permette la gestione delle regioni di
+memoria da impostare per dei determinati processi. Questa funzione \`e 
+importante perch\`e permette la separazione dello stack e della memoria della
+kernel dai programmi normali. Per lo \prj potrebbe sembrare eccessivo ma
+essendo uno strumento per apprendere le fondamenta dell'elettronica e
+dell'informatica \`e interessante implementare questa funzionalit\`a che
+comunque se necessario pu\`o essere disabilitata.
+
+\section{Schema a blocchi}
+
+\begin{figure}[!h] \centering
+    \includegraphics[width=.85\linewidth]{res/block_diagram}
+\end{figure}
+
+\section{Software / Sistema operativo}
+
+Negli sviluppi pi\`u recenti intorno allo Z80 esso veniva utilizzato come un
+microcontrollore anzich\`e come processore da computer, per questa ragione non
+sono presenti molti sistemi operativi per questa piattaforma. Dunque per lo
+\prj il progetti implementa un sistema operativo soprannominato {\tt
+HelvetiOS} con le funzioni minime necessarie come un interfaccia seriale a
+comandi e un meccanismo per caricare i programmi.
+
+\subsection{Componenti di base}
+
+Per garantire un funzionamento minimo il sistema {\tt HelvetiOS} deve offrire
+drivers e utility di base quali:
+
+\begin{center}
+\begin{minipage}[t]{.4\linewidth}
+    \begin{itemize}
+        \item USART driver and API
+        \item PIO driver and API
+        \item CTC driver and API
+    \end{itemize}
+\end{minipage}%
+\begin{minipage}[t]{.4\linewidth}
+    \begin{itemize}
+        \item Bootloader
+        \item Program launcher
+        \item Shell-like interface
+    \end{itemize}
+\end{minipage}
+\end{center}
+
+\subsection{Interfacce dell'API} 
+
+\subsubsection{USART}
+\begin{lstlisting}[language=C, basicstyle=\ttfamily]
+void usart_set_baudrate(uint16_t baudrate);
+void usart_set_parity(int mode);
+void usart_set_stop_bits(int count);
+void usart_set_word_length(int length);
+void usart_set_autoflow(int mode);
+
+inline void usart_init(uint16_t baudrate, int parity, int stop_bits); 
+
+void usart_transmit(uint8_t data);
+uint8_t usart_receive();
+
+int usart_write(uint8_t *data, size_t size);
+int usart_read(uint8_t *buffer, size_t count);
+\end{lstlisting}
+
+% \subsection{PIO}
+
+\subsection{Toolchain per la compilazione}
+
+Per compilare il software del progetto si utilizza SDCC, un progetto
+open-source che supporta la compilazione di binari per l'architettura dello
+Z80. Nella mia configurazione utilizzo GNU make con il seguente makefile.
+
+\newpage
+\begin{lstlisting}[language=make, numbers=left, basicstyle=\ttfamily]
+####
+# Source code settings
+#
+OSNAME := helvetiOS
+
+CSOURCES    := $(wildcard kernel/*.c) $(wildcard libc/*.c)
+OBJECTS     := $(patsubst %.c,build/%.rel,$(CSOURCES))
+HEXFILE     := build/$(OSNAME).hex
+BINARY      := build/$(OSNAME).bin
+
+###
+# Compiler settings
+
+CC      := sdcc
+
+CFLAGS  := -mz80 \
+            -I kernel/include -I libc/include -DDEBUG
+
+LDFLAGS := -mz80 --no-std-crt0 crt0.rel \
+            --code-loc 0x0800 --data-loc 0x8000
+
+.PHONY: dirs dis clean
+all: $(BINARY)
+
+# build binary
+$(BINARY): $(OBJECTS) dirs
+    $(CC) $(LDFLAGS) $(OBJECTS) -o $(HEXFILE)
+    xxd -r -p $(HEXFILE) $(BINARY)
+
+$(OBJECTS): build/%.rel : %.c $(CSOURCES) dirs crt0.rel
+    $(CC) $(CFLAGS) -c $< -o $@
+
+crt0.rel: crt0.s
+    sdasz80 -o $<
+
+dirs:
+    mkdir -p build build/kernel build/libc
+
+dis: $(BINARY)
+    z80dasm -a -g 0h $< -o $(OSNAME).s
+
+clean:
+    - rm -rd build/*
+    - rm $(OSNAME).s
+    - rm crt0.rel
+\end{lstlisting}
+
 \end{document}
-- 
cgit v1.2.1


From 436e259b4c3d687bab51cc8ca35fe61103b430a2 Mon Sep 17 00:00:00 2001
From: Nao Pross <naopross@thearcway.org>
Date: Fri, 16 Jun 2017 13:51:06 +0200
Subject: fixed typo in usart.h and in doc

---
 doc/report/build/notes.pdf  | Bin 47404 -> 47404 bytes
 doc/report/build/z80uPC.pdf | Bin 970520 -> 970633 bytes
 doc/report/z80uPC.tex       |   3 +++
 3 files changed, 3 insertions(+)

(limited to 'doc')

diff --git a/doc/report/build/notes.pdf b/doc/report/build/notes.pdf
index 6a70bd5..5a43c7d 100644
Binary files a/doc/report/build/notes.pdf and b/doc/report/build/notes.pdf differ
diff --git a/doc/report/build/z80uPC.pdf b/doc/report/build/z80uPC.pdf
index 6c5dd23..aff4174 100644
Binary files a/doc/report/build/z80uPC.pdf and b/doc/report/build/z80uPC.pdf differ
diff --git a/doc/report/z80uPC.tex b/doc/report/z80uPC.tex
index 5a4ec64..eaad987 100644
--- a/doc/report/z80uPC.tex
+++ b/doc/report/z80uPC.tex
@@ -219,6 +219,9 @@ drivers e utility di base quali:
 
 \subsection{Interfacce dell'API} 
 
+Nel corso dello sviluppo questa sezione verr\`a continuamente espansa per
+documentare le interfacce dei vari drivers.
+
 \subsubsection{USART}
 \begin{lstlisting}[language=C, basicstyle=\ttfamily]
 void usart_set_baudrate(uint16_t baudrate);
-- 
cgit v1.2.1