summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon O'Shea <55282932+osheas1atwit@users.noreply.github.com>2020-04-21 00:13:31 -0400
committerGitHub <noreply@github.com>2020-04-21 00:13:31 -0400
commitc0163139d3ad8709575ca7fa4ab2107062de926b (patch)
tree87c319f1e218f2d6dd54720a46e353b758df3c47
Add files via upload
-rw-r--r--LC-3.circ2872
-rw-r--r--README.txt47
2 files changed, 2919 insertions, 0 deletions
diff --git a/LC-3.circ b/LC-3.circ
new file mode 100644
index 0000000..2d15c38
--- /dev/null
+++ b/LC-3.circ
@@ -0,0 +1,2872 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<project source="2.14.6" version="1.0">
+ This file is intended to be loaded by Logisim-evolution (https://github.com/reds-heig/logisim-evolution).
+
+ <lib desc="#Wiring" name="0">
+ <tool name="Splitter">
+ <a name="facing" val="south"/>
+ <a name="fanout" val="3"/>
+ <a name="incoming" val="3"/>
+ <a name="appear" val="right"/>
+ </tool>
+ <tool name="Pin">
+ <a name="facing" val="south"/>
+ </tool>
+ <tool name="Probe">
+ <a name="facing" val="west"/>
+ <a name="labelloc" val="east"/>
+ </tool>
+ <tool name="Tunnel">
+ <a name="facing" val="east"/>
+ </tool>
+ <tool name="Pull Resistor">
+ <a name="facing" val="east"/>
+ </tool>
+ <tool name="Constant">
+ <a name="width" val="16"/>
+ <a name="value" val="0xf000"/>
+ </tool>
+ </lib>
+ <lib desc="#Gates" name="1"/>
+ <lib desc="#Plexers" name="2">
+ <tool name="Multiplexer">
+ <a name="enable" val="false"/>
+ </tool>
+ <tool name="Demultiplexer">
+ <a name="enable" val="false"/>
+ </tool>
+ </lib>
+ <lib desc="#Arithmetic" name="3"/>
+ <lib desc="#Memory" name="4">
+ <tool name="ROM">
+ <a name="contents">addr/data: 8 8
+0
+</a>
+ </tool>
+ </lib>
+ <lib desc="#I/O" name="5"/>
+ <lib desc="#HDL-IP" name="6">
+ <tool name="VHDL Entity">
+ <a name="content">--------------------------------------------------------------------------------&#13;
+-- HEIG-VD, institute REDS, 1400 Yverdon-les-Bains&#13;
+-- Project :&#13;
+-- File :&#13;
+-- Autor :&#13;
+-- Date :&#13;
+--&#13;
+--------------------------------------------------------------------------------&#13;
+-- Description :&#13;
+--&#13;
+--------------------------------------------------------------------------------&#13;
+&#13;
+library ieee;&#13;
+ use ieee.std_logic_1164.all;&#13;
+ --use ieee.numeric_std.all;&#13;
+&#13;
+entity VHDL_Component is&#13;
+ port(&#13;
+ ------------------------------------------------------------------------------&#13;
+ --Insert input ports below&#13;
+ horloge_i : in std_logic; -- input bit example&#13;
+ val_i : in std_logic_vector(3 downto 0); -- input vector example&#13;
+ ------------------------------------------------------------------------------&#13;
+ --Insert output ports below&#13;
+ max_o : out std_logic; -- output bit example&#13;
+ cpt_o : out std_logic_Vector(3 downto 0) -- output vector example&#13;
+ );&#13;
+end VHDL_Component;&#13;
+&#13;
+--------------------------------------------------------------------------------&#13;
+--Complete your VHDL description below&#13;
+architecture type_architecture of VHDL_Component is&#13;
+&#13;
+&#13;
+begin&#13;
+&#13;
+&#13;
+end type_architecture;&#13;
+</a>
+ </tool>
+ </lib>
+ <lib desc="#TCL" name="7">
+ <tool name="TclGeneric">
+ <a name="content">library ieee;&#13;
+use ieee.std_logic_1164.all;&#13;
+&#13;
+entity TCL_Generic is&#13;
+ port(&#13;
+ --Insert input ports below&#13;
+ horloge_i : in std_logic; -- input bit example&#13;
+ val_i : in std_logic_vector(3 downto 0); -- input vector example&#13;
+&#13;
+ --Insert output ports below&#13;
+ max_o : out std_logic; -- output bit example&#13;
+ cpt_o : out std_logic_Vector(3 downto 0) -- output vector example&#13;
+ );&#13;
+end TCL_Generic;&#13;
+</a>
+ </tool>
+ </lib>
+ <lib desc="#Base" name="8">
+ <tool name="Text Tool">
+ <a name="text" val=""/>
+ <a name="font" val="SansSerif plain 12"/>
+ <a name="halign" val="center"/>
+ <a name="valign" val="base"/>
+ </tool>
+ </lib>
+ <lib desc="#BFH-Praktika" name="9"/>
+ <main name="main"/>
+ <options>
+ <a name="gateUndefined" val="ignore"/>
+ <a name="simlimit" val="1000"/>
+ <a name="simrand" val="0"/>
+ <a name="tickmain" val="half_period"/>
+ </options>
+ <mappings>
+ <tool lib="8" map="Button2" name="Menu Tool"/>
+ <tool lib="8" map="Button3" name="Menu Tool"/>
+ <tool lib="8" map="Ctrl Button1" name="Menu Tool"/>
+ </mappings>
+ <toolbar>
+ <tool lib="8" name="Poke Tool"/>
+ <tool lib="8" name="Edit Tool"/>
+ <tool lib="8" name="Text Tool">
+ <a name="text" val=""/>
+ <a name="font" val="SansSerif plain 12"/>
+ <a name="halign" val="center"/>
+ <a name="valign" val="base"/>
+ </tool>
+ <sep/>
+ <tool lib="0" name="Pin"/>
+ <tool lib="0" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="labelloc" val="east"/>
+ </tool>
+ <tool lib="1" name="NOT Gate"/>
+ <tool lib="1" name="AND Gate"/>
+ <tool lib="1" name="OR Gate"/>
+ </toolbar>
+ <circuit name="main">
+ <a name="circuit" val="main"/>
+ <a name="clabel" val=""/>
+ <a name="clabelup" val="east"/>
+ <a name="clabelfont" val="SansSerif bold 16"/>
+ <a name="circuitnamedbox" val="true"/>
+ <a name="circuitvhdlpath" val=""/>
+ <appear>
+ <rect height="20" stroke="none" width="40" x="60" y="60"/>
+ <rect fill="none" height="30" stroke="#000000" stroke-width="2" width="40" x="60" y="50"/>
+ <text fill="#ffffff" font-family="Dialog" font-size="14" font-weight="bold" text-anchor="middle" x="80" y="74">main</text>
+ <circ-anchor facing="east" height="6" width="6" x="47" y="47"/>
+ </appear>
+ <wire from="(650,770)" to="(650,780)"/>
+ <wire from="(930,1250)" to="(980,1250)"/>
+ <wire from="(530,610)" to="(530,620)"/>
+ <wire from="(460,1230)" to="(520,1230)"/>
+ <wire from="(690,1210)" to="(740,1210)"/>
+ <wire from="(810,210)" to="(810,240)"/>
+ <wire from="(770,240)" to="(810,240)"/>
+ <wire from="(670,650)" to="(670,680)"/>
+ <wire from="(770,90)" to="(770,120)"/>
+ <wire from="(210,1210)" to="(210,1230)"/>
+ <wire from="(460,1200)" to="(460,1230)"/>
+ <wire from="(400,1250)" to="(400,1340)"/>
+ <wire from="(510,1310)" to="(510,1460)"/>
+ <wire from="(480,1290)" to="(520,1290)"/>
+ <wire from="(960,670)" to="(980,670)"/>
+ <wire from="(940,670)" to="(960,670)"/>
+ <wire from="(1060,320)" to="(1060,370)"/>
+ <wire from="(690,1170)" to="(690,1210)"/>
+ <wire from="(1010,620)" to="(1030,620)"/>
+ <wire from="(490,1460)" to="(510,1460)"/>
+ <wire from="(500,1210)" to="(520,1210)"/>
+ <wire from="(630,780)" to="(650,780)"/>
+ <wire from="(670,630)" to="(700,630)"/>
+ <wire from="(670,650)" to="(700,650)"/>
+ <wire from="(690,1230)" to="(720,1230)"/>
+ <wire from="(370,1480)" to="(390,1480)"/>
+ <wire from="(370,1410)" to="(380,1410)"/>
+ <wire from="(370,1430)" to="(380,1430)"/>
+ <wire from="(460,1500)" to="(470,1500)"/>
+ <wire from="(930,1190)" to="(930,1250)"/>
+ <wire from="(330,1350)" to="(340,1350)"/>
+ <wire from="(690,1230)" to="(690,1290)"/>
+ <wire from="(720,1290)" to="(980,1290)"/>
+ <wire from="(690,670)" to="(700,670)"/>
+ <wire from="(410,1420)" to="(480,1420)"/>
+ <wire from="(660,680)" to="(670,680)"/>
+ <wire from="(530,610)" to="(540,610)"/>
+ <wire from="(520,620)" to="(530,620)"/>
+ <wire from="(530,590)" to="(540,590)"/>
+ <wire from="(930,310)" to="(1010,310)"/>
+ <wire from="(510,1310)" to="(520,1310)"/>
+ <wire from="(610,650)" to="(620,650)"/>
+ <wire from="(610,630)" to="(620,630)"/>
+ <wire from="(650,640)" to="(700,640)"/>
+ <wire from="(480,1290)" to="(480,1420)"/>
+ <wire from="(1010,620)" to="(1010,630)"/>
+ <wire from="(940,370)" to="(1060,370)"/>
+ <wire from="(820,1230)" to="(820,1240)"/>
+ <wire from="(230,1190)" to="(410,1190)"/>
+ <wire from="(380,1210)" to="(380,1220)"/>
+ <wire from="(400,1250)" to="(520,1250)"/>
+ <wire from="(1000,90)" to="(1000,120)"/>
+ <wire from="(470,1480)" to="(470,1500)"/>
+ <wire from="(670,600)" to="(670,630)"/>
+ <wire from="(960,580)" to="(960,670)"/>
+ <wire from="(570,600)" to="(670,600)"/>
+ <wire from="(700,90)" to="(700,120)"/>
+ <wire from="(120,170)" to="(120,190)"/>
+ <wire from="(700,550)" to="(940,550)"/>
+ <wire from="(690,670)" to="(690,750)"/>
+ <wire from="(740,1270)" to="(980,1270)"/>
+ <wire from="(830,1210)" to="(850,1210)"/>
+ <wire from="(700,550)" to="(700,590)"/>
+ <wire from="(910,1190)" to="(930,1190)"/>
+ <wire from="(1040,320)" to="(1060,320)"/>
+ <wire from="(380,1210)" to="(410,1210)"/>
+ <wire from="(370,1340)" to="(400,1340)"/>
+ <wire from="(1090,580)" to="(1100,580)"/>
+ <wire from="(670,750)" to="(690,750)"/>
+ <wire from="(670,1230)" to="(690,1230)"/>
+ <wire from="(670,1210)" to="(690,1210)"/>
+ <wire from="(1120,1250)" to="(1130,1250)"/>
+ <wire from="(300,1220)" to="(320,1220)"/>
+ <wire from="(360,1220)" to="(380,1220)"/>
+ <wire from="(440,1200)" to="(460,1200)"/>
+ <wire from="(390,1440)" to="(390,1480)"/>
+ <wire from="(190,1310)" to="(210,1310)"/>
+ <wire from="(820,1230)" to="(850,1230)"/>
+ <wire from="(480,630)" to="(490,630)"/>
+ <wire from="(480,610)" to="(490,610)"/>
+ <wire from="(960,580)" to="(1030,580)"/>
+ <wire from="(190,1200)" to="(200,1200)"/>
+ <wire from="(200,1330)" to="(210,1330)"/>
+ <wire from="(190,1180)" to="(200,1180)"/>
+ <wire from="(720,1230)" to="(720,1290)"/>
+ <wire from="(740,1210)" to="(740,1270)"/>
+ <wire from="(120,190)" to="(130,190)"/>
+ <wire from="(1000,330)" to="(1010,330)"/>
+ <wire from="(940,370)" to="(940,550)"/>
+ <wire from="(840,1190)" to="(850,1190)"/>
+ <wire from="(270,1330)" to="(340,1330)"/>
+ <wire from="(630,740)" to="(640,740)"/>
+ <wire from="(630,760)" to="(640,760)"/>
+ <comp lib="8" loc="(979,57)" name="Text">
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(980,670)" name="Tunnel">
+ <a name="width" val="16"/>
+ <a name="label" val="IR"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="4" loc="(700,580)" name="RAM">
+ <a name="addrWidth" val="16"/>
+ <a name="dataWidth" val="16"/>
+ <a name="trigger" val="falling"/>
+ <a name="databus" val="bibus"/>
+ <a name="labelvisible" val="true"/>
+ </comp>
+ <comp lib="0" loc="(1100,580)" name="Tunnel">
+ <a name="width" val="16"/>
+ <a name="label" val="LDval"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="0" loc="(1030,600)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="getOpON"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="4" loc="(1030,550)" name="Register">
+ <a name="width" val="16"/>
+ <a name="trigger" val="falling"/>
+ </comp>
+ <comp lib="8" loc="(1059,536)" name="Text">
+ <a name="text" val="until phase 4"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(1063,520)" name="Text">
+ <a name="text" val="wait to store value "/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="1" loc="(570,600)" name="AND Gate">
+ <a name="size" val="30"/>
+ </comp>
+ <comp lib="1" loc="(650,640)" name="OR Gate">
+ <a name="size" val="30"/>
+ </comp>
+ <comp lib="0" loc="(610,630)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="fetchON"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(610,650)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="getOpON"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="1" loc="(520,620)" name="OR Gate">
+ <a name="size" val="30"/>
+ </comp>
+ <comp lib="0" loc="(480,630)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="isSTR"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(480,610)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="isST"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="8" loc="(529,104)" name="Text">
+ <a name="text" val="ADD R2, R0, R1"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(554,82)" name="Text">
+ <a name="text" val="Some instructions to test (all work):"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(636,121)" name="Text">
+ <a name="text" val="1883"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(526,121)" name="Text">
+ <a name="text" val="1401"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(642,103)" name="Text">
+ <a name="text" val="ADD R4, R2, R3"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(530,590)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="evalAddON"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(740,430)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="isST"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(740,330)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="DRorSR"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(740,390)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="isLD"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(740,410)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="isLDR"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(740,470)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="evalAddON"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(740,310)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="PCout"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(740,370)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="6"/>
+ <a name="label" val="PCoffset6"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(740,450)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="isSTR"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(740,350)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="9"/>
+ <a name="label" val="PCoffset9"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp loc="(930,310)" name="pcSelector"/>
+ <comp lib="0" loc="(740,510)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="isNotArithmetic"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(740,490)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="fetchON"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="8" loc="(1057,260)" name="Text">
+ <a name="text" val="address to get instruction during FETCH"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(1061,275)" name="Text">
+ <a name="text" val="otherwise, will use the offset"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(1020,340)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="label" val="fetchON"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(1000,330)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="PCout"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="2" loc="(1040,320)" name="Multiplexer">
+ <a name="width" val="16"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="8" loc="(1064,291)" name="Text">
+ <a name="text" val="PC to store/write with"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(1058,245)" name="Text">
+ <a name="text" val="MUX will direct PC to proper"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(630,780)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="isSTR"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(630,760)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="STRsr"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(630,740)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="DRorSR"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="2" loc="(670,750)" name="Multiplexer">
+ <a name="width" val="16"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="8" loc="(515,565)" name="Text">
+ <a name="text" val="with the proper operation"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(600,821)" name="Text">
+ <a name="text" val="depending on if it's ST or STR"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(601,806)" name="Text">
+ <a name="text" val="MUX decides which value to store"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(740,116)" name="Text">
+ <a name="text" val="c000"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(736,99)" name="Text">
+ <a name="text" val="JMP R0"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(813,113)" name="Text">
+ <a name="text" val="260a"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(809,99)" name="Text">
+ <a name="text" val="LD R3 #10"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(921,116)" name="Text">
+ <a name="text" val="6649"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(919,99)" name="Text">
+ <a name="text" val="LDR desR3 bR1 #9"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(1123,101)" name="Text">
+ <a name="text" val="STR srR3 bR6 #10"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(1033,117)" name="Text">
+ <a name="text" val="3403"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(1129,118)" name="Text">
+ <a name="text" val="778a"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(1035,101)" name="Text">
+ <a name="text" val="ST R2 3"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp loc="(360,190)" name="controlUnit"/>
+ <comp lib="0" loc="(130,250)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="IR"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(360,230)" name="Tunnel">
+ <a name="label" val="fetchON"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(360,370)" name="Tunnel">
+ <a name="width" val="3"/>
+ <a name="label" val="s1Reg"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(360,450)" name="Tunnel">
+ <a name="width" val="6"/>
+ <a name="label" val="PCoffset6"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(360,250)" name="Tunnel">
+ <a name="label" val="decodeON"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(360,330)" name="Tunnel">
+ <a name="width" val="4"/>
+ <a name="label" val="opCode"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(360,270)" name="Tunnel">
+ <a name="label" val="evalAddON"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(360,430)" name="Tunnel">
+ <a name="width" val="9"/>
+ <a name="label" val="PCoffset9"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(360,290)" name="Tunnel">
+ <a name="label" val="getOpON"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(360,310)" name="Tunnel">
+ <a name="label" val="executeON"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(360,190)" name="Tunnel">
+ <a name="width" val="16"/>
+ <a name="label" val="PCout"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(360,390)" name="Tunnel">
+ <a name="width" val="3"/>
+ <a name="label" val="s2Reg"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(130,230)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="isJMP"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(360,350)" name="Tunnel">
+ <a name="width" val="3"/>
+ <a name="label" val="dReg"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(130,210)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="DRorSR"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(360,410)" name="Tunnel">
+ <a name="width" val="16"/>
+ <a name="label" val="fullInstruction"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(360,210)" name="Tunnel">
+ <a name="label" val="storeON"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(120,730)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="fullInstruction"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="0" loc="(390,750)" name="Tunnel">
+ <a name="label" val="isEmpty"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="0" loc="(390,730)" name="Tunnel">
+ <a name="label" val="isNotArithmetic"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(390,770)" name="Tunnel">
+ <a name="label" val="isJMP"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp loc="(390,730)" name="memoryOperationManagement"/>
+ <comp lib="0" loc="(390,850)" name="Tunnel">
+ <a name="label" val="isSTR"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="0" loc="(120,750)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="4"/>
+ <a name="label" val="opCode"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="0" loc="(390,790)" name="Tunnel">
+ <a name="label" val="isLD"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="0" loc="(390,830)" name="Tunnel">
+ <a name="label" val="isLDR"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="0" loc="(390,810)" name="Tunnel">
+ <a name="label" val="isST"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="8" loc="(422,1173)" name="Text">
+ <a name="text" val="store on phase 6"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(706,1331)" name="Text">
+ <a name="text" val="if STR, value"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(163,1371)" name="Text">
+ <a name="text" val="isArithmetic"/>
+ <a name="font" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="8" loc="(433,1564)" name="Text">
+ <a name="text" val="as S1, but this only applies for Storing"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(190,1200)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="LDval"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(1130,1250)" name="Tunnel">
+ <a name="width" val="16"/>
+ <a name="label" val="ALUresult"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="8" loc="(201,1143)" name="Text">
+ <a name="text" val="choose between arithmetic"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(370,1430)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="3"/>
+ <a name="label" val="dReg"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="2" loc="(230,1190)" name="Multiplexer">
+ <a name="width" val="16"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(460,1450)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="3"/>
+ <a name="label" val="s2Reg"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="8" loc="(708,1343)" name="Text">
+ <a name="text" val="to write to RAM"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp loc="(670,1210)" name="Registers"/>
+ <comp lib="0" loc="(330,1350)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="storeON"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="1" loc="(370,1340)" name="AND Gate">
+ <a name="size" val="30"/>
+ </comp>
+ <comp lib="4" loc="(850,1160)" name="Register">
+ <a name="width" val="16"/>
+ </comp>
+ <comp lib="2" loc="(410,1420)" name="Multiplexer">
+ <a name="width" val="3"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="8" loc="(433,1533)" name="Text">
+ <a name="text" val="If ST, change S1reg to the dReg value so it can"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="1" loc="(440,1200)" name="AND Gate">
+ <a name="width" val="16"/>
+ <a name="size" val="30"/>
+ </comp>
+ <comp lib="0" loc="(460,1470)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="3"/>
+ <a name="label" val="dReg"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(370,1480)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="isST"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(520,1270)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="3"/>
+ <a name="label" val="dReg"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="8" loc="(265,1292)" name="Text">
+ <a name="text" val="if it's arithmetic or LD, WE=true when phase=store"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(460,1500)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="isSTR"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(300,1220)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="storeON"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="8" loc="(201,1158)" name="Text">
+ <a name="text" val="or memory operation value"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(689,1097)" name="Text">
+ <a name="text" val="used for changing PC"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="2" loc="(490,1460)" name="Multiplexer">
+ <a name="width" val="3"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(690,1170)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="width" val="16"/>
+ <a name="label" val="DRorSR"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="1" loc="(270,1330)" name="XOR Gate">
+ <a name="inputs" val="3"/>
+ <a name="negate2" val="true"/>
+ </comp>
+ <comp lib="0" loc="(190,1310)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="isLD"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="8" loc="(420,1593)" name="Text">
+ <a name="text" val="(Same logic for second MUX but for STR and sr2 instead)"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(880,1137)" name="Text">
+ <a name="text" val="waits until phase 5"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(210,1230)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="label" val="isNotArithmetic"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="8" loc="(690,1111)" name="Text">
+ <a name="text" val="and specifying reg"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(690,1290)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="width" val="16"/>
+ <a name="label" val="STRsr"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="8" loc="(687,1135)" name="Text">
+ <a name="text" val="memory operations"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(688,1124)" name="Text">
+ <a name="text" val="to store info to from"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(830,1210)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="executeON"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="8" loc="(438,1549)" name="Text">
+ <a name="text" val="write the proper value, as dReg shares the same bit-range "/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(879,1152)" name="Text">
+ <a name="text" val="to operate"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(360,1220)" name="Bit Extender">
+ <a name="in_width" val="1"/>
+ </comp>
+ <comp lib="0" loc="(200,1330)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="isLDR"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp loc="(1120,1250)" name="ALU"/>
+ <comp lib="0" loc="(200,1350)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="isNotArithmetic"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(190,1180)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="ALUresult"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(370,1410)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="3"/>
+ <a name="label" val="s1Reg"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(840,1190)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="fullInstruction"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="8" loc="(511,548)" name="Text">
+ <a name="text" val="WE only avaliable on phase 3 and"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(770,240)" name="Clock"/>
+ <comp lib="0" loc="(810,210)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="clock"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(1010,630)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="label" val="clock"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(500,1210)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="clock"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(820,1240)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="label" val="clock"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(120,170)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="clock"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(660,680)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="clock"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="8" loc="(301,32)" name="Text">
+ <a name="text" val="DEV NOTE: the source value for a ST operation will be stored at the appropriate Address +1"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ </circuit>
+ <circuit name="controlUnit">
+ <a name="circuit" val="controlUnit"/>
+ <a name="clabel" val=""/>
+ <a name="clabelup" val="east"/>
+ <a name="clabelfont" val="SansSerif bold 16"/>
+ <a name="circuitnamedbox" val="true"/>
+ <a name="circuitvhdlpath" val=""/>
+ <wire from="(350,240)" to="(410,240)"/>
+ <wire from="(830,90)" to="(830,100)"/>
+ <wire from="(130,500)" to="(190,500)"/>
+ <wire from="(160,60)" to="(160,70)"/>
+ <wire from="(430,190)" to="(430,210)"/>
+ <wire from="(430,230)" to="(430,250)"/>
+ <wire from="(880,250)" to="(920,250)"/>
+ <wire from="(980,210)" to="(1020,210)"/>
+ <wire from="(430,250)" to="(530,250)"/>
+ <wire from="(310,420)" to="(350,420)"/>
+ <wire from="(310,480)" to="(350,480)"/>
+ <wire from="(490,220)" to="(530,220)"/>
+ <wire from="(830,100)" to="(850,100)"/>
+ <wire from="(830,120)" to="(850,120)"/>
+ <wire from="(1020,210)" to="(1040,210)"/>
+ <wire from="(990,300)" to="(1010,300)"/>
+ <wire from="(350,250)" to="(380,250)"/>
+ <wire from="(280,550)" to="(300,550)"/>
+ <wire from="(1020,110)" to="(1020,210)"/>
+ <wire from="(380,160)" to="(380,200)"/>
+ <wire from="(890,210)" to="(920,210)"/>
+ <wire from="(890,230)" to="(920,230)"/>
+ <wire from="(380,160)" to="(530,160)"/>
+ <wire from="(350,220)" to="(490,220)"/>
+ <wire from="(300,240)" to="(310,240)"/>
+ <wire from="(310,490)" to="(320,490)"/>
+ <wire from="(310,470)" to="(320,470)"/>
+ <wire from="(280,500)" to="(290,500)"/>
+ <wire from="(250,290)" to="(330,290)"/>
+ <wire from="(350,230)" to="(430,230)"/>
+ <wire from="(350,210)" to="(430,210)"/>
+ <wire from="(280,500)" to="(280,550)"/>
+ <wire from="(60,260)" to="(70,260)"/>
+ <wire from="(430,190)" to="(490,190)"/>
+ <wire from="(90,60)" to="(90,70)"/>
+ <wire from="(1060,270)" to="(1060,300)"/>
+ <wire from="(410,280)" to="(530,280)"/>
+ <wire from="(330,280)" to="(330,290)"/>
+ <wire from="(280,550)" to="(280,570)"/>
+ <wire from="(320,490)" to="(320,510)"/>
+ <wire from="(320,450)" to="(320,470)"/>
+ <wire from="(860,130)" to="(860,160)"/>
+ <wire from="(280,570)" to="(280,600)"/>
+ <wire from="(490,190)" to="(530,190)"/>
+ <wire from="(1060,270)" to="(1070,270)"/>
+ <wire from="(1050,300)" to="(1060,300)"/>
+ <wire from="(1110,260)" to="(1120,260)"/>
+ <wire from="(250,500)" to="(280,500)"/>
+ <wire from="(1040,210)" to="(1040,250)"/>
+ <wire from="(350,200)" to="(380,200)"/>
+ <wire from="(320,510)" to="(350,510)"/>
+ <wire from="(320,450)" to="(350,450)"/>
+ <wire from="(890,110)" to="(890,210)"/>
+ <wire from="(310,420)" to="(310,460)"/>
+ <wire from="(1040,250)" to="(1070,250)"/>
+ <wire from="(410,240)" to="(410,280)"/>
+ <wire from="(380,310)" to="(530,310)"/>
+ <wire from="(380,250)" to="(380,310)"/>
+ <wire from="(820,90)" to="(830,90)"/>
+ <wire from="(880,110)" to="(890,110)"/>
+ <comp lib="0" loc="(160,70)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="label" val="clock"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(160,60)" name="Pin">
+ <a name="facing" val="south"/>
+ <a name="label" val="clock"/>
+ <a name="labelloc" val="north"/>
+ </comp>
+ <comp lib="0" loc="(90,70)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="label" val="power"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(90,60)" name="Constant">
+ <a name="facing" val="south"/>
+ </comp>
+ <comp lib="0" loc="(1020,110)" name="Pin">
+ <a name="facing" val="south"/>
+ <a name="output" val="true"/>
+ <a name="width" val="16"/>
+ <a name="label" val="PCout"/>
+ <a name="labelloc" val="north"/>
+ </comp>
+ <comp lib="0" loc="(860,160)" name="Pin">
+ <a name="facing" val="north"/>
+ <a name="label" val="isJMP"/>
+ </comp>
+ <comp lib="0" loc="(1050,300)" name="Bit Extender">
+ <a name="in_width" val="1"/>
+ <a name="type" val="zero"/>
+ </comp>
+ <comp lib="0" loc="(1120,260)" name="Tunnel">
+ <a name="width" val="16"/>
+ <a name="label" val="added"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="0" loc="(890,230)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="decodeON"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="0" loc="(990,300)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="power"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(880,250)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="clock"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="4" loc="(920,180)" name="Register">
+ <a name="width" val="16"/>
+ <a name="label" val="PC"/>
+ </comp>
+ <comp lib="3" loc="(1110,260)" name="Adder">
+ <a name="width" val="16"/>
+ </comp>
+ <comp lib="2" loc="(880,110)" name="Multiplexer">
+ <a name="width" val="16"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(60,260)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="clock"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="4" loc="(70,180)" name="Counter">
+ <a name="width" val="3"/>
+ <a name="max" val="0x5"/>
+ <a name="label" val="phaseCounter"/>
+ </comp>
+ <comp lib="0" loc="(300,240)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="power"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="2" loc="(310,240)" name="Demultiplexer">
+ <a name="select" val="3"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(350,420)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="width" val="4"/>
+ <a name="label" val="opCode"/>
+ <a name="labelloc" val="east"/>
+ </comp>
+ <comp lib="0" loc="(290,500)" name="Splitter">
+ <a name="fanout" val="4"/>
+ <a name="incoming" val="16"/>
+ <a name="bit0" val="3"/>
+ <a name="bit1" val="3"/>
+ <a name="bit2" val="3"/>
+ <a name="bit3" val="none"/>
+ <a name="bit4" val="none"/>
+ <a name="bit5" val="none"/>
+ <a name="bit6" val="2"/>
+ <a name="bit7" val="2"/>
+ <a name="bit8" val="2"/>
+ <a name="bit9" val="1"/>
+ <a name="bit10" val="1"/>
+ <a name="bit11" val="1"/>
+ <a name="bit12" val="0"/>
+ <a name="bit13" val="0"/>
+ <a name="bit14" val="0"/>
+ <a name="bit15" val="0"/>
+ </comp>
+ <comp lib="0" loc="(350,510)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="width" val="3"/>
+ <a name="label" val="s2Reg"/>
+ <a name="labelloc" val="east"/>
+ </comp>
+ <comp lib="0" loc="(350,480)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="width" val="3"/>
+ <a name="label" val="s1Reg"/>
+ <a name="labelloc" val="east"/>
+ </comp>
+ <comp lib="0" loc="(350,450)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="width" val="3"/>
+ <a name="label" val="dReg"/>
+ <a name="labelloc" val="east"/>
+ </comp>
+ <comp lib="0" loc="(820,90)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="added"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="0" loc="(490,220)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="decodeON"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(530,220)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="label" val="decode_2"/>
+ <a name="labelloc" val="east"/>
+ </comp>
+ <comp lib="0" loc="(530,160)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="label" val="store_6"/>
+ <a name="labelloc" val="east"/>
+ </comp>
+ <comp lib="0" loc="(530,190)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="label" val="fetch_1"/>
+ <a name="labelloc" val="east"/>
+ </comp>
+ <comp lib="0" loc="(530,310)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="label" val="execute_5"/>
+ <a name="labelloc" val="east"/>
+ </comp>
+ <comp lib="0" loc="(530,250)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="label" val="evalAddress_3"/>
+ <a name="labelloc" val="east"/>
+ </comp>
+ <comp lib="0" loc="(530,280)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="label" val="getOperands_4"/>
+ <a name="labelloc" val="east"/>
+ </comp>
+ <comp lib="0" loc="(490,190)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="fetchON"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(190,540)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="clock"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(190,520)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="fetchON"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="4" loc="(190,470)" name="Register">
+ <a name="width" val="16"/>
+ <a name="label" val="InstrReg"/>
+ </comp>
+ <comp lib="0" loc="(130,500)" name="Pin">
+ <a name="width" val="16"/>
+ <a name="label" val="IR"/>
+ </comp>
+ <comp lib="0" loc="(830,120)" name="Pin">
+ <a name="width" val="16"/>
+ <a name="label" val="JMPdest"/>
+ <a name="radix" val="16"/>
+ </comp>
+ <comp lib="0" loc="(300,550)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="width" val="16"/>
+ <a name="label" val="fullInstruction"/>
+ <a name="labelloc" val="east"/>
+ <a name="radix" val="16"/>
+ </comp>
+ <comp lib="0" loc="(280,570)" name="Splitter">
+ <a name="fanout" val="1"/>
+ <a name="incoming" val="16"/>
+ <a name="appear" val="right"/>
+ <a name="bit1" val="0"/>
+ <a name="bit2" val="0"/>
+ <a name="bit3" val="0"/>
+ <a name="bit4" val="0"/>
+ <a name="bit5" val="0"/>
+ <a name="bit6" val="0"/>
+ <a name="bit7" val="0"/>
+ <a name="bit8" val="0"/>
+ <a name="bit9" val="none"/>
+ <a name="bit10" val="none"/>
+ <a name="bit11" val="none"/>
+ <a name="bit12" val="none"/>
+ <a name="bit13" val="none"/>
+ <a name="bit14" val="none"/>
+ <a name="bit15" val="none"/>
+ </comp>
+ <comp lib="0" loc="(280,600)" name="Splitter">
+ <a name="fanout" val="1"/>
+ <a name="incoming" val="16"/>
+ <a name="appear" val="right"/>
+ <a name="bit1" val="0"/>
+ <a name="bit2" val="0"/>
+ <a name="bit3" val="0"/>
+ <a name="bit4" val="0"/>
+ <a name="bit5" val="0"/>
+ <a name="bit6" val="none"/>
+ <a name="bit7" val="none"/>
+ <a name="bit8" val="none"/>
+ <a name="bit9" val="none"/>
+ <a name="bit10" val="none"/>
+ <a name="bit11" val="none"/>
+ <a name="bit12" val="none"/>
+ <a name="bit13" val="none"/>
+ <a name="bit14" val="none"/>
+ <a name="bit15" val="none"/>
+ </comp>
+ <comp lib="0" loc="(300,580)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="width" val="9"/>
+ <a name="label" val="PCoffset9"/>
+ <a name="labelloc" val="east"/>
+ <a name="radix" val="16"/>
+ </comp>
+ <comp lib="0" loc="(300,610)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="width" val="6"/>
+ <a name="label" val="PCoffset6"/>
+ <a name="labelloc" val="east"/>
+ <a name="radix" val="16"/>
+ </comp>
+ <comp lib="8" loc="(363,695)" name="Text">
+ <a name="text" val="operations"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(359,665)" name="Text">
+ <a name="text" val="that you can extract from the instruction"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(359,678)" name="Text">
+ <a name="text" val="that will make it easier to perform the"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(361,650)" name="Text">
+ <a name="text" val="These are all of the pieces of information"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(494,142)" name="Text">
+ <a name="text" val="Internal phase counter. In charge of order of operations"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(989,384)" name="Text">
+ <a name="text" val="to whatever the JMP destination is"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(991,349)" name="Text">
+ <a name="text" val="Program Counter increments by one every decode phase unless"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(995,367)" name="Text">
+ <a name="text" val="there's a JMP instruction. In that case, the MUX sets the PC"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ </circuit>
+ <circuit name="ALU">
+ <a name="circuit" val="ALU"/>
+ <a name="clabel" val=""/>
+ <a name="clabelup" val="east"/>
+ <a name="clabelfont" val="SansSerif bold 8"/>
+ <a name="circuitnamedbox" val="true"/>
+ <a name="circuitvhdlpath" val=""/>
+ <wire from="(760,300)" to="(760,310)"/>
+ <wire from="(910,290)" to="(960,290)"/>
+ <wire from="(110,700)" to="(360,700)"/>
+ <wire from="(120,120)" to="(180,120)"/>
+ <wire from="(200,70)" to="(260,70)"/>
+ <wire from="(110,420)" to="(360,420)"/>
+ <wire from="(890,310)" to="(890,320)"/>
+ <wire from="(390,700)" to="(440,700)"/>
+ <wire from="(110,420)" to="(110,560)"/>
+ <wire from="(110,560)" to="(110,700)"/>
+ <wire from="(300,640)" to="(300,650)"/>
+ <wire from="(310,500)" to="(310,510)"/>
+ <wire from="(690,290)" to="(750,290)"/>
+ <wire from="(220,470)" to="(220,610)"/>
+ <wire from="(340,600)" to="(340,620)"/>
+ <wire from="(110,560)" to="(350,560)"/>
+ <wire from="(720,240)" to="(720,270)"/>
+ <wire from="(780,280)" to="(880,280)"/>
+ <wire from="(180,90)" to="(180,120)"/>
+ <wire from="(400,430)" to="(440,430)"/>
+ <wire from="(400,580)" to="(440,580)"/>
+ <wire from="(690,270)" to="(690,290)"/>
+ <wire from="(200,120)" to="(230,120)"/>
+ <wire from="(860,300)" to="(880,300)"/>
+ <wire from="(330,480)" to="(350,480)"/>
+ <wire from="(320,620)" to="(340,620)"/>
+ <wire from="(720,270)" to="(750,270)"/>
+ <wire from="(220,360)" to="(220,470)"/>
+ <wire from="(350,440)" to="(350,480)"/>
+ <wire from="(180,120)" to="(200,120)"/>
+ <wire from="(300,70)" to="(310,70)"/>
+ <wire from="(290,490)" to="(300,490)"/>
+ <wire from="(280,630)" to="(290,630)"/>
+ <wire from="(340,600)" to="(350,600)"/>
+ <wire from="(350,440)" to="(360,440)"/>
+ <wire from="(220,470)" to="(300,470)"/>
+ <wire from="(200,80)" to="(210,80)"/>
+ <wire from="(220,610)" to="(290,610)"/>
+ <wire from="(110,360)" to="(110,420)"/>
+ <comp lib="0" loc="(300,70)" name="Bit Extender">
+ <a name="in_width" val="5"/>
+ </comp>
+ <comp lib="0" loc="(180,90)" name="Splitter">
+ <a name="incoming" val="16"/>
+ <a name="bit1" val="0"/>
+ <a name="bit2" val="0"/>
+ <a name="bit3" val="0"/>
+ <a name="bit4" val="0"/>
+ <a name="bit5" val="1"/>
+ <a name="bit6" val="none"/>
+ <a name="bit7" val="none"/>
+ <a name="bit8" val="none"/>
+ <a name="bit9" val="none"/>
+ <a name="bit10" val="none"/>
+ <a name="bit11" val="none"/>
+ <a name="bit12" val="none"/>
+ <a name="bit13" val="none"/>
+ <a name="bit14" val="none"/>
+ <a name="bit15" val="none"/>
+ </comp>
+ <comp lib="0" loc="(200,120)" name="Splitter">
+ <a name="facing" val="south"/>
+ <a name="fanout" val="1"/>
+ <a name="incoming" val="16"/>
+ <a name="bit0" val="none"/>
+ <a name="bit1" val="none"/>
+ <a name="bit2" val="none"/>
+ <a name="bit3" val="none"/>
+ <a name="bit4" val="none"/>
+ <a name="bit5" val="none"/>
+ <a name="bit6" val="none"/>
+ <a name="bit7" val="none"/>
+ <a name="bit8" val="none"/>
+ <a name="bit9" val="none"/>
+ <a name="bit10" val="none"/>
+ <a name="bit11" val="none"/>
+ <a name="bit12" val="none"/>
+ <a name="bit13" val="none"/>
+ <a name="bit14" val="0"/>
+ <a name="bit15" val="none"/>
+ </comp>
+ <comp lib="0" loc="(310,70)" name="Tunnel">
+ <a name="width" val="16"/>
+ <a name="label" val="immVal"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(230,120)" name="Splitter">
+ <a name="facing" val="south"/>
+ <a name="fanout" val="1"/>
+ <a name="incoming" val="16"/>
+ <a name="bit0" val="none"/>
+ <a name="bit1" val="none"/>
+ <a name="bit2" val="none"/>
+ <a name="bit3" val="none"/>
+ <a name="bit4" val="none"/>
+ <a name="bit5" val="none"/>
+ <a name="bit6" val="none"/>
+ <a name="bit7" val="none"/>
+ <a name="bit8" val="none"/>
+ <a name="bit9" val="none"/>
+ <a name="bit10" val="none"/>
+ <a name="bit11" val="none"/>
+ <a name="bit12" val="none"/>
+ <a name="bit13" val="none"/>
+ <a name="bit14" val="none"/>
+ <a name="bit15" val="0"/>
+ </comp>
+ <comp lib="0" loc="(210,140)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="label" val="b14"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(240,140)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="label" val="b15"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(210,80)" name="Tunnel">
+ <a name="label" val="check"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(120,120)" name="Pin">
+ <a name="width" val="16"/>
+ <a name="label" val="instr"/>
+ <a name="labelloc" val="north"/>
+ </comp>
+ <comp lib="8" loc="(226,178)" name="Text">
+ <a name="text" val="Collecting bit 14 and 15 for"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(226,192)" name="Text">
+ <a name="text" val="comparison"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="1" loc="(400,580)" name="AND Gate">
+ <a name="width" val="16"/>
+ </comp>
+ <comp lib="0" loc="(280,630)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="immVal"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="1" loc="(390,700)" name="NOT Gate">
+ <a name="width" val="16"/>
+ </comp>
+ <comp lib="0" loc="(300,650)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="label" val="check"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(440,430)" name="Tunnel">
+ <a name="width" val="16"/>
+ <a name="label" val="addVal"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="2" loc="(330,480)" name="Multiplexer">
+ <a name="width" val="16"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(310,510)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="label" val="check"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(440,700)" name="Tunnel">
+ <a name="width" val="16"/>
+ <a name="label" val="notVal"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="0" loc="(220,360)" name="Pin">
+ <a name="facing" val="south"/>
+ <a name="width" val="16"/>
+ <a name="label" val="in2"/>
+ <a name="labelloc" val="north"/>
+ </comp>
+ <comp lib="0" loc="(440,580)" name="Tunnel">
+ <a name="width" val="16"/>
+ <a name="label" val="andVal"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="3" loc="(400,430)" name="Adder">
+ <a name="width" val="16"/>
+ </comp>
+ <comp lib="2" loc="(320,620)" name="Multiplexer">
+ <a name="width" val="16"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(110,360)" name="Pin">
+ <a name="facing" val="south"/>
+ <a name="width" val="16"/>
+ <a name="label" val="in1"/>
+ <a name="labelloc" val="north"/>
+ </comp>
+ <comp lib="0" loc="(290,490)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="immVal"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(760,310)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="label" val="b14"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="0" loc="(960,290)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="width" val="16"/>
+ <a name="label" val="answer"/>
+ <a name="labelloc" val="east"/>
+ </comp>
+ <comp lib="0" loc="(690,270)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="width" val="16"/>
+ <a name="label" val="andVal"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="8" loc="(999,325)" name="Text">
+ <a name="text" val="filtered output"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(860,300)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="notVal"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="2" loc="(780,280)" name="Multiplexer">
+ <a name="width" val="16"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(890,320)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="label" val="b15"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="2" loc="(910,290)" name="Multiplexer">
+ <a name="width" val="16"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(720,240)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="width" val="16"/>
+ <a name="label" val="addVal"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="8" loc="(881,441)" name="Text">
+ <a name="text" val="which will change it to NOT"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(886,396)" name="Text">
+ <a name="text" val="assumes operation is whatever"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(888,425)" name="Text">
+ <a name="text" val="bit_15 = 1"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(889,380)" name="Text">
+ <a name="text" val="2nd MUX:"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(883,410)" name="Text">
+ <a name="text" val="came out of 1st MUX, unless"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(727,197)" name="Text">
+ <a name="text" val="which will change it to AND"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(731,169)" name="Text">
+ <a name="text" val="assumes operation is "/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(728,156)" name="Text">
+ <a name="text" val="1st MUX:"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(729,184)" name="Text">
+ <a name="text" val="ADD unless bit_14 = 1"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(482,473)" name="Text">
+ <a name="text" val="The proper answer if the operation "/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(471,489)" name="Text">
+ <a name="text" val="is ADD"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(479,633)" name="Text">
+ <a name="text" val="is AND"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(490,617)" name="Text">
+ <a name="text" val="The proper answer if the operation "/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(466,760)" name="Text">
+ <a name="text" val="is NOT"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(477,744)" name="Text">
+ <a name="text" val="The proper answer if the operation "/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(168,296)" name="Text">
+ <a name="text" val="The values to be operated on"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(83,78)" name="Text">
+ <a name="text" val="be output"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(82,63)" name="Text">
+ <a name="text" val="The instruction to"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ </circuit>
+ <circuit name="Registers">
+ <a name="circuit" val="Registers"/>
+ <a name="clabel" val=""/>
+ <a name="clabelup" val="east"/>
+ <a name="clabelfont" val="SansSerif bold 16"/>
+ <a name="circuitnamedbox" val="true"/>
+ <a name="circuitvhdlpath" val=""/>
+ <wire from="(690,490)" to="(690,500)"/>
+ <wire from="(690,290)" to="(690,300)"/>
+ <wire from="(410,440)" to="(470,440)"/>
+ <wire from="(680,280)" to="(730,280)"/>
+ <wire from="(210,250)" to="(210,640)"/>
+ <wire from="(220,240)" to="(220,630)"/>
+ <wire from="(200,260)" to="(200,650)"/>
+ <wire from="(190,270)" to="(190,660)"/>
+ <wire from="(420,560)" to="(470,560)"/>
+ <wire from="(180,200)" to="(300,200)"/>
+ <wire from="(690,500)" to="(730,500)"/>
+ <wire from="(680,430)" to="(720,430)"/>
+ <wire from="(680,570)" to="(720,570)"/>
+ <wire from="(690,520)" to="(730,520)"/>
+ <wire from="(410,440)" to="(410,650)"/>
+ <wire from="(710,450)" to="(710,480)"/>
+ <wire from="(720,540)" to="(720,570)"/>
+ <wire from="(190,660)" to="(420,660)"/>
+ <wire from="(160,280)" to="(160,310)"/>
+ <wire from="(700,240)" to="(700,260)"/>
+ <wire from="(700,300)" to="(700,320)"/>
+ <wire from="(720,200)" to="(720,240)"/>
+ <wire from="(680,470)" to="(700,470)"/>
+ <wire from="(710,480)" to="(730,480)"/>
+ <wire from="(680,550)" to="(700,550)"/>
+ <wire from="(770,280)" to="(790,280)"/>
+ <wire from="(680,220)" to="(710,220)"/>
+ <wire from="(700,260)" to="(730,260)"/>
+ <wire from="(700,300)" to="(730,300)"/>
+ <wire from="(720,600)" to="(750,600)"/>
+ <wire from="(200,650)" to="(410,650)"/>
+ <wire from="(140,310)" to="(160,310)"/>
+ <wire from="(460,220)" to="(470,220)"/>
+ <wire from="(160,120)" to="(170,120)"/>
+ <wire from="(180,210)" to="(250,210)"/>
+ <wire from="(230,560)" to="(300,560)"/>
+ <wire from="(750,550)" to="(750,600)"/>
+ <wire from="(680,260)" to="(690,260)"/>
+ <wire from="(680,300)" to="(690,300)"/>
+ <wire from="(720,540)" to="(730,540)"/>
+ <wire from="(720,240)" to="(730,240)"/>
+ <wire from="(690,260)" to="(690,270)"/>
+ <wire from="(690,520)" to="(690,530)"/>
+ <wire from="(210,640)" to="(400,640)"/>
+ <wire from="(680,510)" to="(730,510)"/>
+ <wire from="(180,220)" to="(240,220)"/>
+ <wire from="(400,320)" to="(400,640)"/>
+ <wire from="(240,440)" to="(300,440)"/>
+ <wire from="(230,230)" to="(230,560)"/>
+ <wire from="(180,230)" to="(230,230)"/>
+ <wire from="(250,320)" to="(300,320)"/>
+ <wire from="(690,270)" to="(730,270)"/>
+ <wire from="(680,200)" to="(720,200)"/>
+ <wire from="(680,340)" to="(720,340)"/>
+ <wire from="(690,290)" to="(730,290)"/>
+ <wire from="(710,220)" to="(710,250)"/>
+ <wire from="(220,630)" to="(390,630)"/>
+ <wire from="(720,310)" to="(720,340)"/>
+ <wire from="(180,240)" to="(220,240)"/>
+ <wire from="(700,470)" to="(700,490)"/>
+ <wire from="(700,530)" to="(700,550)"/>
+ <wire from="(240,220)" to="(240,440)"/>
+ <wire from="(180,250)" to="(210,250)"/>
+ <wire from="(420,560)" to="(420,660)"/>
+ <wire from="(720,430)" to="(720,470)"/>
+ <wire from="(680,240)" to="(700,240)"/>
+ <wire from="(710,250)" to="(730,250)"/>
+ <wire from="(680,320)" to="(700,320)"/>
+ <wire from="(770,510)" to="(790,510)"/>
+ <wire from="(390,200)" to="(390,630)"/>
+ <wire from="(680,450)" to="(710,450)"/>
+ <wire from="(700,490)" to="(730,490)"/>
+ <wire from="(700,530)" to="(730,530)"/>
+ <wire from="(720,370)" to="(750,370)"/>
+ <wire from="(250,210)" to="(250,320)"/>
+ <wire from="(180,260)" to="(200,260)"/>
+ <wire from="(180,270)" to="(190,270)"/>
+ <wire from="(130,240)" to="(140,240)"/>
+ <wire from="(390,200)" to="(470,200)"/>
+ <wire from="(100,70)" to="(110,70)"/>
+ <wire from="(750,320)" to="(750,370)"/>
+ <wire from="(400,320)" to="(470,320)"/>
+ <wire from="(680,490)" to="(690,490)"/>
+ <wire from="(680,530)" to="(690,530)"/>
+ <wire from="(720,470)" to="(730,470)"/>
+ <wire from="(720,310)" to="(730,310)"/>
+ <comp lib="0" loc="(100,70)" name="Pin">
+ <a name="label" val="clock"/>
+ </comp>
+ <comp lib="0" loc="(110,70)" name="Tunnel">
+ <a name="label" val="clock"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(160,120)" name="Pin">
+ <a name="width" val="16"/>
+ <a name="label" val="desVal"/>
+ </comp>
+ <comp lib="0" loc="(170,120)" name="Tunnel">
+ <a name="width" val="16"/>
+ <a name="label" val="val"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="4" loc="(470,270)" name="Register">
+ <a name="width" val="16"/>
+ <a name="label" val="R5"/>
+ </comp>
+ <comp lib="4" loc="(300,270)" name="Register">
+ <a name="width" val="16"/>
+ <a name="label" val="R1"/>
+ </comp>
+ <comp lib="0" loc="(470,540)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="val"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(140,310)" name="Pin">
+ <a name="width" val="3"/>
+ <a name="label" val="desReg"/>
+ </comp>
+ <comp lib="0" loc="(300,180)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="val"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(300,220)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="clock"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(360,420)" name="Tunnel">
+ <a name="width" val="16"/>
+ <a name="label" val="r2"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(300,580)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="clock"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="4" loc="(300,510)" name="Register">
+ <a name="width" val="16"/>
+ <a name="label" val="R3"/>
+ </comp>
+ <comp lib="0" loc="(470,300)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="val"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(530,420)" name="Tunnel">
+ <a name="width" val="16"/>
+ <a name="label" val="r6"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="4" loc="(470,510)" name="Register">
+ <a name="width" val="16"/>
+ <a name="label" val="R7"/>
+ </comp>
+ <comp lib="0" loc="(360,300)" name="Tunnel">
+ <a name="width" val="16"/>
+ <a name="label" val="r1"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(360,540)" name="Tunnel">
+ <a name="width" val="16"/>
+ <a name="label" val="r3"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(460,220)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="clock"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(300,460)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="clock"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="4" loc="(470,390)" name="Register">
+ <a name="width" val="16"/>
+ <a name="label" val="R6"/>
+ </comp>
+ <comp lib="0" loc="(470,180)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="val"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(470,420)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="val"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(360,180)" name="Tunnel">
+ <a name="width" val="16"/>
+ <a name="label" val="r0"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(470,580)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="clock"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(470,340)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="clock"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="4" loc="(300,150)" name="Register">
+ <a name="width" val="16"/>
+ <a name="label" val="R0"/>
+ </comp>
+ <comp lib="0" loc="(300,540)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="val"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(300,300)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="val"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(530,180)" name="Tunnel">
+ <a name="width" val="16"/>
+ <a name="label" val="r4"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="2" loc="(140,240)" name="Demultiplexer">
+ <a name="select" val="3"/>
+ </comp>
+ <comp lib="4" loc="(470,150)" name="Register">
+ <a name="width" val="16"/>
+ <a name="label" val="R4"/>
+ </comp>
+ <comp lib="0" loc="(300,340)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="clock"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(130,240)" name="Pin">
+ <a name="label" val="WE"/>
+ </comp>
+ <comp lib="0" loc="(530,540)" name="Tunnel">
+ <a name="width" val="16"/>
+ <a name="label" val="r7"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(300,420)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="val"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(530,300)" name="Tunnel">
+ <a name="width" val="16"/>
+ <a name="label" val="r5"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="4" loc="(300,390)" name="Register">
+ <a name="width" val="16"/>
+ <a name="label" val="R2"/>
+ </comp>
+ <comp lib="0" loc="(470,460)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="clock"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(680,450)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="r1"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(680,570)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="r7"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(680,510)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="r4"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(680,550)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="r6"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(680,530)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="r5"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(790,510)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="width" val="16"/>
+ <a name="label" val="sr2Val"/>
+ <a name="labelloc" val="east"/>
+ </comp>
+ <comp lib="2" loc="(770,510)" name="Multiplexer">
+ <a name="select" val="3"/>
+ <a name="width" val="16"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(680,470)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="r2"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(680,490)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="r3"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(720,600)" name="Pin">
+ <a name="width" val="3"/>
+ <a name="label" val="sr2"/>
+ </comp>
+ <comp lib="0" loc="(680,430)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="r0"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(680,340)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="r7"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(680,320)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="r6"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(680,260)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="r3"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(790,280)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="width" val="16"/>
+ <a name="label" val="sr1Val"/>
+ <a name="labelloc" val="east"/>
+ </comp>
+ <comp lib="0" loc="(680,200)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="r0"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(680,220)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="r1"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(680,280)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="r4"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="0" loc="(720,370)" name="Pin">
+ <a name="width" val="3"/>
+ <a name="label" val="sr1"/>
+ </comp>
+ <comp lib="0" loc="(680,300)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="r5"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="2" loc="(770,280)" name="Multiplexer">
+ <a name="select" val="3"/>
+ <a name="width" val="16"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(680,240)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="r2"/>
+ <a name="labelfont" val="SansSerif bold 8"/>
+ </comp>
+ <comp lib="8" loc="(847,554)" name="Text">
+ <a name="text" val="outputs the value of the"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(849,568)" name="Text">
+ <a name="text" val="designated source 2 register"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(848,321)" name="Text">
+ <a name="text" val="outputs the value of the"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(849,336)" name="Text">
+ <a name="text" val="designated source 1 register"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(101,166)" name="Text">
+ <a name="text" val="when WE is enabled, the desVal"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(101,181)" name="Text">
+ <a name="text" val="is written to the specified desReg"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ </circuit>
+ <circuit name="pcSelector">
+ <a name="circuit" val="pcSelector"/>
+ <a name="clabel" val=""/>
+ <a name="clabelup" val="east"/>
+ <a name="clabelfont" val="SansSerif bold 16"/>
+ <a name="circuitnamedbox" val="true"/>
+ <a name="circuitvhdlpath" val=""/>
+ <wire from="(440,730)" to="(440,800)"/>
+ <wire from="(440,730)" to="(500,730)"/>
+ <wire from="(930,350)" to="(930,360)"/>
+ <wire from="(970,350)" to="(970,360)"/>
+ <wire from="(540,970)" to="(720,970)"/>
+ <wire from="(840,340)" to="(840,350)"/>
+ <wire from="(880,340)" to="(880,350)"/>
+ <wire from="(790,260)" to="(850,260)"/>
+ <wire from="(180,540)" to="(180,550)"/>
+ <wire from="(880,270)" to="(940,270)"/>
+ <wire from="(390,730)" to="(390,740)"/>
+ <wire from="(240,980)" to="(240,990)"/>
+ <wire from="(430,1010)" to="(430,1030)"/>
+ <wire from="(140,730)" to="(180,730)"/>
+ <wire from="(340,810)" to="(380,810)"/>
+ <wire from="(690,1010)" to="(720,1010)"/>
+ <wire from="(280,810)" to="(300,810)"/>
+ <wire from="(530,720)" to="(690,720)"/>
+ <wire from="(730,250)" to="(760,250)"/>
+ <wire from="(360,790)" to="(380,790)"/>
+ <wire from="(420,990)" to="(440,990)"/>
+ <wire from="(490,980)" to="(510,980)"/>
+ <wire from="(80,730)" to="(100,730)"/>
+ <wire from="(170,40)" to="(190,40)"/>
+ <wire from="(170,160)" to="(190,160)"/>
+ <wire from="(170,100)" to="(190,100)"/>
+ <wire from="(170,280)" to="(190,280)"/>
+ <wire from="(170,220)" to="(190,220)"/>
+ <wire from="(170,340)" to="(190,340)"/>
+ <wire from="(160,710)" to="(180,710)"/>
+ <wire from="(200,990)" to="(220,990)"/>
+ <wire from="(370,990)" to="(380,990)"/>
+ <wire from="(480,1000)" to="(490,1000)"/>
+ <wire from="(430,1010)" to="(440,1010)"/>
+ <wire from="(350,770)" to="(360,770)"/>
+ <wire from="(150,690)" to="(160,690)"/>
+ <wire from="(140,960)" to="(150,960)"/>
+ <wire from="(170,570)" to="(180,570)"/>
+ <wire from="(220,560)" to="(230,560)"/>
+ <wire from="(930,290)" to="(940,290)"/>
+ <wire from="(930,350)" to="(940,350)"/>
+ <wire from="(840,340)" to="(850,340)"/>
+ <wire from="(840,280)" to="(850,280)"/>
+ <wire from="(680,760)" to="(690,760)"/>
+ <wire from="(260,960)" to="(510,960)"/>
+ <wire from="(510,740)" to="(510,750)"/>
+ <wire from="(380,1030)" to="(430,1030)"/>
+ <wire from="(360,770)" to="(360,790)"/>
+ <wire from="(490,980)" to="(490,1000)"/>
+ <wire from="(160,690)" to="(160,710)"/>
+ <wire from="(150,960)" to="(150,980)"/>
+ <wire from="(220,970)" to="(220,990)"/>
+ <wire from="(850,320)" to="(850,340)"/>
+ <wire from="(870,320)" to="(870,340)"/>
+ <wire from="(940,330)" to="(940,350)"/>
+ <wire from="(960,330)" to="(960,350)"/>
+ <wire from="(520,990)" to="(520,1010)"/>
+ <wire from="(770,990)" to="(790,990)"/>
+ <wire from="(410,710)" to="(500,710)"/>
+ <wire from="(200,950)" to="(230,950)"/>
+ <wire from="(220,720)" to="(380,720)"/>
+ <wire from="(740,740)" to="(760,740)"/>
+ <wire from="(350,700)" to="(380,700)"/>
+ <wire from="(420,800)" to="(440,800)"/>
+ <wire from="(610,760)" to="(640,760)"/>
+ <wire from="(620,1010)" to="(650,1010)"/>
+ <wire from="(970,280)" to="(1000,280)"/>
+ <wire from="(170,190)" to="(190,190)"/>
+ <wire from="(170,70)" to="(190,70)"/>
+ <wire from="(170,130)" to="(190,130)"/>
+ <wire from="(170,250)" to="(190,250)"/>
+ <wire from="(170,310)" to="(190,310)"/>
+ <wire from="(140,1000)" to="(160,1000)"/>
+ <wire from="(690,270)" to="(760,270)"/>
+ <wire from="(150,980)" to="(160,980)"/>
+ <wire from="(170,540)" to="(180,540)"/>
+ <wire from="(180,550)" to="(190,550)"/>
+ <wire from="(120,570)" to="(130,570)"/>
+ <wire from="(220,970)" to="(230,970)"/>
+ <wire from="(90,1000)" to="(100,1000)"/>
+ <wire from="(960,350)" to="(970,350)"/>
+ <wire from="(870,340)" to="(880,340)"/>
+ <comp lib="0" loc="(190,40)" name="Tunnel">
+ <a name="width" val="16"/>
+ <a name="label" val="PCin"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(170,160)" name="Pin">
+ <a name="label" val="isLD"/>
+ </comp>
+ <comp lib="0" loc="(170,190)" name="Pin">
+ <a name="label" val="isLDR"/>
+ </comp>
+ <comp lib="0" loc="(190,190)" name="Tunnel">
+ <a name="label" val="isLDR"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(190,160)" name="Tunnel">
+ <a name="label" val="isLD"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(190,100)" name="Tunnel">
+ <a name="width" val="9"/>
+ <a name="label" val="PCoffset9"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(190,130)" name="Tunnel">
+ <a name="width" val="6"/>
+ <a name="label" val="PCoffset6"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(170,70)" name="Pin">
+ <a name="width" val="16"/>
+ <a name="label" val="DRorSR"/>
+ <a name="radix" val="16"/>
+ </comp>
+ <comp lib="0" loc="(190,70)" name="Tunnel">
+ <a name="width" val="16"/>
+ <a name="label" val="DRorSR"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(170,40)" name="Pin">
+ <a name="width" val="16"/>
+ <a name="label" val="PCdefault"/>
+ <a name="radix" val="16"/>
+ </comp>
+ <comp lib="0" loc="(170,100)" name="Pin">
+ <a name="width" val="9"/>
+ <a name="label" val="PCoffset9"/>
+ <a name="radix" val="16"/>
+ </comp>
+ <comp lib="8" loc="(485,40)" name="Text">
+ <a name="text" val="This circuit determines how to increment and send the PC"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(487,57)" name="Text">
+ <a name="text" val="to the RAM based upon the operation being done"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(170,130)" name="Pin">
+ <a name="width" val="6"/>
+ <a name="label" val="PCoffset6"/>
+ <a name="radix" val="16"/>
+ </comp>
+ <comp lib="0" loc="(170,280)" name="Pin">
+ <a name="label" val="evalAddON"/>
+ </comp>
+ <comp lib="0" loc="(190,280)" name="Tunnel">
+ <a name="label" val="evalAddON"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(190,250)" name="Tunnel">
+ <a name="label" val="isSTR"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(170,220)" name="Pin">
+ <a name="label" val="isST"/>
+ </comp>
+ <comp lib="0" loc="(190,220)" name="Tunnel">
+ <a name="label" val="isST"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(170,250)" name="Pin">
+ <a name="label" val="isSTR"/>
+ </comp>
+ <comp lib="0" loc="(880,350)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="label" val="isLDR"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(840,280)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="ifLoad"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(730,250)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="PCin"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(840,350)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="label" val="isLD"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(930,360)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="label" val="isST"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="1" loc="(770,280)" name="NOT Gate">
+ <a name="facing" val="north"/>
+ <a name="size" val="20"/>
+ </comp>
+ <comp lib="0" loc="(930,290)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="ifStore"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="2" loc="(880,270)" name="Multiplexer">
+ <a name="width" val="16"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(770,300)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="label" val="isNotArithmetic"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="1" loc="(860,290)" name="OR Gate">
+ <a name="facing" val="north"/>
+ <a name="size" val="30"/>
+ </comp>
+ <comp lib="2" loc="(970,280)" name="Multiplexer">
+ <a name="width" val="16"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(970,360)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="label" val="isSTR"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="2" loc="(790,260)" name="Multiplexer">
+ <a name="width" val="16"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(690,270)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="ifArithmetic"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="1" loc="(950,300)" name="OR Gate">
+ <a name="facing" val="north"/>
+ <a name="size" val="30"/>
+ </comp>
+ <comp lib="8" loc="(479,87)" name="Text">
+ <a name="text" val="This is essentially the ALU of memory operations"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(170,310)" name="Pin">
+ <a name="label" val="fetchON"/>
+ </comp>
+ <comp lib="0" loc="(190,310)" name="Tunnel">
+ <a name="label" val="fetchON"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(170,340)" name="Pin">
+ <a name="label" val="isNotArithmetic"/>
+ </comp>
+ <comp lib="0" loc="(190,340)" name="Tunnel">
+ <a name="label" val="isNotArithmetic"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(1000,280)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="width" val="16"/>
+ <a name="label" val="PC"/>
+ <a name="labelloc" val="east"/>
+ </comp>
+ <comp lib="3" loc="(200,990)" name="Adder">
+ <a name="width" val="16"/>
+ </comp>
+ <comp lib="0" loc="(790,990)" name="Tunnel">
+ <a name="width" val="16"/>
+ <a name="label" val="ifStore"/>
+ </comp>
+ <comp lib="0" loc="(140,730)" name="Bit Extender">
+ <a name="in_width" val="9"/>
+ </comp>
+ <comp lib="8" loc="(109,1052)" name="Text">
+ <a name="text" val="if ST, use PC+offset"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(648,800)" name="Text">
+ <a name="text" val="only output adjusted PC when evalAdd=true"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(140,960)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="PCin"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="8" loc="(923,772)" name="Text">
+ <a name="text" val="either LD or LDR"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(132,670)" name="Text">
+ <a name="text" val="if LD, use PC+offset"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(610,760)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="evalAddON"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="8" loc="(969,990)" name="Text">
+ <a name="text" val="The proper PC value if the operation is"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(448,1069)" name="Text">
+ <a name="text" val="if STR, use baseReg+offset"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(420,990)" name="Bit Extender">
+ <a name="in_width" val="6"/>
+ </comp>
+ <comp lib="0" loc="(520,1010)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="label" val="isSTR"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="0" loc="(150,690)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="PCin"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(200,950)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="PCin"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="8" loc="(959,1006)" name="Text">
+ <a name="text" val="either ST or STR"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(690,1010)" name="Bit Extender">
+ <a name="in_width" val="1"/>
+ </comp>
+ <comp lib="0" loc="(390,740)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="label" val="isLD"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="2" loc="(410,710)" name="Multiplexer">
+ <a name="width" val="16"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(370,990)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="6"/>
+ <a name="label" val="PCoffset6"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="2" loc="(260,960)" name="Multiplexer">
+ <a name="width" val="16"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="8" loc="(933,756)" name="Text">
+ <a name="text" val="The proper PC value if the operation is"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(80,730)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="9"/>
+ <a name="label" val="PCoffset9"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(380,1030)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="DRorSR"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(760,740)" name="Tunnel">
+ <a name="width" val="16"/>
+ <a name="label" val="ifLoad"/>
+ </comp>
+ <comp lib="0" loc="(680,760)" name="Bit Extender">
+ <a name="in_width" val="1"/>
+ </comp>
+ <comp lib="2" loc="(540,970)" name="Multiplexer">
+ <a name="width" val="16"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(90,1000)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="9"/>
+ <a name="label" val="PCoffset9"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(140,1000)" name="Bit Extender">
+ <a name="in_width" val="9"/>
+ </comp>
+ <comp lib="0" loc="(240,990)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="label" val="isST"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="1" loc="(740,740)" name="AND Gate">
+ <a name="width" val="16"/>
+ </comp>
+ <comp lib="3" loc="(480,1000)" name="Adder">
+ <a name="width" val="16"/>
+ </comp>
+ <comp lib="1" loc="(770,990)" name="AND Gate">
+ <a name="width" val="16"/>
+ </comp>
+ <comp lib="3" loc="(220,720)" name="Adder">
+ <a name="width" val="16"/>
+ </comp>
+ <comp lib="0" loc="(350,700)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="PCin"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="8" loc="(519,938)" name="Text">
+ <a name="text" val="check for STR"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(243,928)" name="Text">
+ <a name="text" val="check for ST"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(620,1010)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="evalAddON"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="8" loc="(852,432)" name="Text">
+ <a name="text" val="The second MUX decides whether the operation involves loading"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(655,224)" name="Text">
+ <a name="text" val="or not. The current instruction could just be empty."/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(654,207)" name="Text">
+ <a name="text" val="The first MUX decides whether the operation is arithmetic"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(853,449)" name="Text">
+ <a name="text" val="if it is, then it uses whichever PC was evaluated for the ifLoad"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(1063,241)" name="Text">
+ <a name="text" val="if it is, then it uses whichever PC was evaluated for the ifStore"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(1062,224)" name="Text">
+ <a name="text" val="The last MUX decides whether the operation involves storing"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(230,560)" name="Tunnel">
+ <a name="width" val="16"/>
+ <a name="label" val="ifArithmetic"/>
+ </comp>
+ <comp lib="1" loc="(220,560)" name="AND Gate">
+ <a name="width" val="16"/>
+ <a name="size" val="30"/>
+ <a name="negate1" val="true"/>
+ </comp>
+ <comp lib="8" loc="(158,517)" name="Text">
+ <a name="text" val="check for arithmetic, no jumps in PC"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(170,540)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="PCin"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(170,570)" name="Bit Extender">
+ <a name="in_width" val="1"/>
+ </comp>
+ <comp lib="0" loc="(120,570)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="isNotArithmetic"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(280,810)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="6"/>
+ <a name="label" val="PCoffset6"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="3" loc="(420,800)" name="Adder">
+ <a name="width" val="16"/>
+ </comp>
+ <comp lib="0" loc="(350,770)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="DRorSR"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(340,810)" name="Bit Extender">
+ <a name="in_width" val="6"/>
+ </comp>
+ <comp lib="8" loc="(346,853)" name="Text">
+ <a name="text" val="if LDR, use base+offset"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(376,682)" name="Text">
+ <a name="text" val="check for LD"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(510,750)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="label" val="isLDR"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="2" loc="(530,720)" name="Multiplexer">
+ <a name="width" val="16"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="8" loc="(530,687)" name="Text">
+ <a name="text" val="check for LDR"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(691,1049)" name="Text">
+ <a name="text" val="only output adjusted PC when evalAdd=true"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ </circuit>
+ <circuit name="memoryOperationManagement">
+ <a name="circuit" val="memoryOperationManagement"/>
+ <a name="clabel" val=""/>
+ <a name="clabelup" val="east"/>
+ <a name="clabelfont" val="SansSerif bold 16"/>
+ <a name="circuitnamedbox" val="true"/>
+ <a name="circuitvhdlpath" val=""/>
+ <wire from="(650,370)" to="(650,380)"/>
+ <wire from="(690,430)" to="(690,440)"/>
+ <wire from="(580,620)" to="(580,630)"/>
+ <wire from="(580,760)" to="(580,770)"/>
+ <wire from="(610,430)" to="(610,440)"/>
+ <wire from="(660,640)" to="(710,640)"/>
+ <wire from="(220,500)" to="(220,510)"/>
+ <wire from="(220,640)" to="(220,650)"/>
+ <wire from="(220,400)" to="(220,410)"/>
+ <wire from="(220,720)" to="(220,730)"/>
+ <wire from="(300,520)" to="(350,520)"/>
+ <wire from="(300,740)" to="(350,740)"/>
+ <wire from="(600,470)" to="(640,470)"/>
+ <wire from="(660,470)" to="(700,470)"/>
+ <wire from="(270,420)" to="(310,420)"/>
+ <wire from="(310,420)" to="(350,420)"/>
+ <wire from="(560,770)" to="(580,770)"/>
+ <wire from="(560,730)" to="(580,730)"/>
+ <wire from="(270,630)" to="(300,630)"/>
+ <wire from="(630,750)" to="(660,750)"/>
+ <wire from="(200,170)" to="(220,170)"/>
+ <wire from="(200,650)" to="(220,650)"/>
+ <wire from="(200,610)" to="(220,610)"/>
+ <wire from="(220,620)" to="(230,620)"/>
+ <wire from="(220,640)" to="(230,640)"/>
+ <wire from="(580,740)" to="(590,740)"/>
+ <wire from="(580,760)" to="(590,760)"/>
+ <wire from="(610,430)" to="(620,430)"/>
+ <wire from="(700,470)" to="(700,480)"/>
+ <wire from="(600,470)" to="(600,480)"/>
+ <wire from="(580,650)" to="(580,660)"/>
+ <wire from="(580,730)" to="(580,740)"/>
+ <wire from="(660,750)" to="(710,750)"/>
+ <wire from="(220,530)" to="(220,540)"/>
+ <wire from="(220,610)" to="(220,620)"/>
+ <wire from="(220,430)" to="(220,440)"/>
+ <wire from="(220,750)" to="(220,760)"/>
+ <wire from="(300,630)" to="(350,630)"/>
+ <wire from="(640,430)" to="(640,470)"/>
+ <wire from="(660,430)" to="(660,470)"/>
+ <wire from="(560,660)" to="(580,660)"/>
+ <wire from="(560,620)" to="(580,620)"/>
+ <wire from="(270,520)" to="(300,520)"/>
+ <wire from="(270,740)" to="(300,740)"/>
+ <wire from="(630,640)" to="(660,640)"/>
+ <wire from="(630,430)" to="(630,530)"/>
+ <wire from="(670,430)" to="(670,530)"/>
+ <wire from="(200,220)" to="(220,220)"/>
+ <wire from="(200,760)" to="(220,760)"/>
+ <wire from="(200,720)" to="(220,720)"/>
+ <wire from="(220,430)" to="(230,430)"/>
+ <wire from="(220,410)" to="(230,410)"/>
+ <wire from="(220,730)" to="(230,730)"/>
+ <wire from="(220,750)" to="(230,750)"/>
+ <wire from="(220,510)" to="(230,510)"/>
+ <wire from="(220,530)" to="(230,530)"/>
+ <wire from="(210,540)" to="(220,540)"/>
+ <wire from="(210,500)" to="(220,500)"/>
+ <wire from="(210,400)" to="(220,400)"/>
+ <wire from="(210,440)" to="(220,440)"/>
+ <wire from="(680,430)" to="(690,430)"/>
+ <wire from="(580,630)" to="(590,630)"/>
+ <wire from="(580,650)" to="(590,650)"/>
+ <comp lib="0" loc="(350,420)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="label" val="isEmpty"/>
+ <a name="labelloc" val="east"/>
+ </comp>
+ <comp lib="0" loc="(200,220)" name="Pin">
+ <a name="width" val="4"/>
+ <a name="label" val="opCode"/>
+ </comp>
+ <comp lib="0" loc="(210,400)" name="Constant">
+ <a name="width" val="16"/>
+ <a name="value" val="0x0"/>
+ </comp>
+ <comp lib="3" loc="(270,630)" name="Comparator">
+ <a name="width" val="4"/>
+ </comp>
+ <comp lib="3" loc="(270,520)" name="Comparator">
+ <a name="width" val="4"/>
+ </comp>
+ <comp lib="8" loc="(149,406)" name="Text">
+ <a name="text" val="EMPTY"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(630,530)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="label" val="isEmpty"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="1" loc="(650,380)" name="OR Gate">
+ <a name="facing" val="north"/>
+ <a name="inputs" val="6"/>
+ </comp>
+ <comp lib="0" loc="(310,420)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="isEmpty"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(200,760)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="4"/>
+ <a name="label" val="opCode"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="0" loc="(220,220)" name="Tunnel">
+ <a name="width" val="4"/>
+ <a name="label" val="opCode"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="3" loc="(270,740)" name="Comparator">
+ <a name="width" val="4"/>
+ </comp>
+ <comp lib="0" loc="(600,480)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="label" val="isLD"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(200,650)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="4"/>
+ <a name="label" val="opCode"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="0" loc="(350,740)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="label" val="isLDR"/>
+ <a name="labelloc" val="east"/>
+ </comp>
+ <comp lib="0" loc="(220,170)" name="Tunnel">
+ <a name="width" val="16"/>
+ <a name="label" val="fullInstruction"/>
+ </comp>
+ <comp lib="0" loc="(670,530)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="label" val="isJMP"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(650,370)" name="Pin">
+ <a name="facing" val="south"/>
+ <a name="output" val="true"/>
+ <a name="label" val="notArithmetic"/>
+ <a name="labelloc" val="north"/>
+ </comp>
+ <comp lib="0" loc="(300,520)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="isJMP"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(210,440)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="16"/>
+ <a name="label" val="fullInstruction"/>
+ </comp>
+ <comp lib="0" loc="(350,630)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="label" val="isLD"/>
+ <a name="labelloc" val="east"/>
+ </comp>
+ <comp lib="0" loc="(200,720)" name="Constant">
+ <a name="width" val="4"/>
+ <a name="value" val="0x6"/>
+ </comp>
+ <comp lib="0" loc="(210,500)" name="Constant">
+ <a name="width" val="4"/>
+ <a name="value" val="0xc"/>
+ </comp>
+ <comp lib="0" loc="(210,540)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="4"/>
+ <a name="label" val="opCode"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="0" loc="(200,170)" name="Pin">
+ <a name="width" val="16"/>
+ <a name="label" val="fullInstruction"/>
+ </comp>
+ <comp lib="0" loc="(350,520)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="label" val="isJMP"/>
+ <a name="labelloc" val="east"/>
+ </comp>
+ <comp lib="0" loc="(200,610)" name="Constant">
+ <a name="width" val="4"/>
+ <a name="value" val="0x2"/>
+ </comp>
+ <comp lib="0" loc="(300,740)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="isLDR"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(700,480)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="label" val="isLDR"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="3" loc="(270,420)" name="Comparator">
+ <a name="width" val="16"/>
+ </comp>
+ <comp lib="0" loc="(300,630)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="isLD"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="8" loc="(271,354)" name="Text">
+ <a name="text" val="operation is being done"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(274,372)" name="Text">
+ <a name="text" val="for better conditional control"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(278,337)" name="Text">
+ <a name="text" val="checks opCode to determine which memory"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(135,504)" name="Text">
+ <a name="text" val="JMP (opcode in hex)"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(146,724)" name="Text">
+ <a name="text" val="LDR (in hex)"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(150,614)" name="Text">
+ <a name="text" val="LD (in hex)"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(218,75)" name="Text">
+ <a name="text" val="It simply determines which memory operation is being performed"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(223,54)" name="Text">
+ <a name="text" val="The primary reason for this circuit is to reduce visual clutter in the main"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(560,620)" name="Constant">
+ <a name="width" val="4"/>
+ <a name="value" val="0x3"/>
+ </comp>
+ <comp lib="0" loc="(560,660)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="4"/>
+ <a name="label" val="opCode"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="3" loc="(630,640)" name="Comparator">
+ <a name="width" val="4"/>
+ </comp>
+ <comp lib="0" loc="(710,640)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="label" val="isST"/>
+ <a name="labelloc" val="east"/>
+ </comp>
+ <comp lib="8" loc="(506,624)" name="Text">
+ <a name="text" val="ST (in hex)"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(660,640)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="isST"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(560,730)" name="Constant">
+ <a name="width" val="4"/>
+ <a name="value" val="0x7"/>
+ </comp>
+ <comp lib="0" loc="(560,770)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="4"/>
+ <a name="label" val="opCode"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="3" loc="(630,750)" name="Comparator">
+ <a name="width" val="4"/>
+ </comp>
+ <comp lib="0" loc="(660,750)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="isSTR"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(710,750)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="label" val="isSTR"/>
+ <a name="labelloc" val="east"/>
+ </comp>
+ <comp lib="8" loc="(500,734)" name="Text">
+ <a name="text" val="STR (in hex)"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="0" loc="(610,440)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="label" val="isST"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="0" loc="(690,440)" name="Tunnel">
+ <a name="facing" val="north"/>
+ <a name="label" val="isSTR"/>
+ <a name="labelfont" val="SansSerif bold 10"/>
+ </comp>
+ <comp lib="8" loc="(648,269)" name="Text">
+ <a name="text" val="if true, the operation doesn't involve the ALU."/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(652,305)" name="Text">
+ <a name="text" val="overwritten back in the main in case the ALU tries to"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(651,288)" name="Text">
+ <a name="text" val="this check is used to prevent registers from being"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ <comp lib="8" loc="(649,322)" name="Text">
+ <a name="text" val="perform an operation on a memory instruction"/>
+ <a name="font" val="SansSerif plain 12"/>
+ </comp>
+ </circuit>
+</project>
diff --git a/README.txt b/README.txt
new file mode 100644
index 0000000..36a2d4c
--- /dev/null
+++ b/README.txt
@@ -0,0 +1,47 @@
+Welcome to the LC-3 in Logism!
+
+This processing unit can perform basic arithmetic, logic, and memory operations.
+The following instructions are supported: ADD, AND, NOT, LD, LDR, ST, and STR. Here is an example list
+of some pre-tested instructions that you can perform (in no particular order):
+
+1401 = ADD R2, R0, R1
+1883 = ADD R4, R2, R3
+
+c000 = JMP R0
+
+260a = LD R3 #10
+6649 = LDR R3 R1 #9
+
+3403 = ST R2 #3
+778a = STR R3 R6 #10
+
+To run any of these instructions: enter the 4-digit hex-code(s) into the RAM unit found in the
+'main' circuit, enter values into the appropriate registers found within the 'Registers' circuit
+to be operated on, and begin ticking the clock. To restart the system, use the hand that allows
+you to change values (ctrl+1) and double click on the magnifying glass to enter the controlUnit.
+Within the controlUnit, reset the 'phaseCounter' and the register labeled 'PC' to 0 and then
+you're good to go.
+
+To note when using this processor: any ST instruction (not STR) should use an offset value of one-
+less than the offset that would get to the address you want to store at. The order in which the phases
+change data causes the 'pcSelector' to receive an already-incremented PC value, so when the offset is
+added during phase 3, the destination value is written one spot above the originally intended address.
+Also, if the Logisim gives a 'label collision' error when loading the circuit, just rename any of the
+tunnels that output blue wires in the 'main' circuit to 'clock'. Otherwise, everything should work as
+intended.
+
+All of the tests listed above were previously tested with various register values and proved to work
+as intended. The AND and NOT operations were also tested early in the building process and once the
+ALU was completed it has not been modified so there was no reason to retest. The LD and LDR operations
+properly read from the address instructed and store to the correct register, ST stores the value found
+within the source register but the offset needs to be subtracted by one to store to the proper address,
+and STR stores the value found within the source register to the intended address without any
+accommodations to the offset or base register. Since all of these worked as intended, I came to the
+conclusion that they were good tests. I also ran a string of instructions in a row that read a value,
+added two values together, jumped ahead 30 addresses, and then stored a value 3 addresses ahead of the
+PC, and after several full phase cycles the PC incremented properly up to the stored value from the
+store address. Everything worked as far as I could tell and I think that these are good tests for the
+instructions.
+
+All circuits were designed to be easy to follow and feature documentation describing some of the specific
+aspects of the system.