<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project source="2.7.1" version="1.0">
This file is intended to be loaded by Logisim (http://www.cburch.com/logisim/).
<lib desc="#Wiring" name="0">
    <tool name="Splitter">
      <a name="facing" val="south"/>
      <a name="fanout" val="3"/>
      <a name="incoming" val="3"/>
    </tool>
    <tool name="Pin">
      <a name="facing" val="north"/>
    </tool>
    <tool name="Probe">
      <a name="facing" val="south"/>
    </tool>
    <tool name="Tunnel">
      <a name="facing" val="east"/>
    </tool>
    <tool name="Constant">
      <a name="value" val="0x0"/>
    </tool>
  </lib>
  <lib desc="#Gates" name="1">
    <tool name="AND Gate">
      <a name="facing" val="west"/>
      <a name="size" val="30"/>
      <a name="inputs" val="2"/>
    </tool>
    <tool name="NOR Gate">
      <a name="size" val="30"/>
      <a name="inputs" val="2"/>
    </tool>
    <tool name="XOR Gate">
      <a name="size" val="30"/>
      <a name="inputs" val="2"/>
    </tool>
  </lib>
  <lib desc="#Plexers" name="2">
    <tool name="Multiplexer">
      <a name="width" val="8"/>
    </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">
    <tool name="Button">
      <a name="facing" val="north"/>
    </tool>
    <tool name="LED">
      <a name="facing" val="north"/>
    </tool>
  </lib>
  <lib desc="#Base" name="6">
    <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>
  <main name="main"/>
  <options>
    <a name="gateUndefined" val="ignore"/>
    <a name="simlimit" val="1000"/>
    <a name="simrand" val="0"/>
  </options>
  <mappings>
    <tool lib="6" map="Button2" name="Menu Tool"/>
    <tool lib="6" map="Ctrl Button1" name="Menu Tool"/>
    <tool lib="6" map="Button3" name="Menu Tool"/>
  </mappings>
  <toolbar>
    <tool lib="6" name="Poke Tool"/>
    <tool lib="6" name="Edit Tool"/>
    <tool lib="6" 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">
      <a name="facing" val="north"/>
      <a name="tristate" val="false"/>
    </tool>
    <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">
      <a name="size" val="20"/>
    </tool>
    <tool lib="1" name="AND Gate">
      <a name="size" val="30"/>
      <a name="inputs" val="2"/>
    </tool>
    <tool lib="1" name="OR Gate">
      <a name="facing" val="north"/>
      <a name="size" val="30"/>
      <a name="inputs" val="2"/>
    </tool>
  </toolbar>
  <circuit name="main">
    <a name="circuit" val="main"/>
    <a name="clabel" val=""/>
    <a name="clabelup" val="east"/>
    <a name="clabelfont" val="SansSerif plain 12"/>
    <wire from="(30,940)" to="(60,940)"/>
    <wire from="(20,440)" to="(20,540)"/>
    <wire from="(30,640)" to="(50,640)"/>
    <wire from="(20,540)" to="(40,540)"/>
    <wire from="(50,640)" to="(100,640)"/>
    <wire from="(200,80)" to="(220,80)"/>
    <wire from="(50,560)" to="(50,640)"/>
    <wire from="(80,540)" to="(80,620)"/>
    <wire from="(60,940)" to="(200,940)"/>
    <wire from="(80,620)" to="(90,620)"/>
    <wire from="(80,540)" to="(90,540)"/>
    <wire from="(70,540)" to="(80,540)"/>
    <wire from="(130,630)" to="(200,630)"/>
    <wire from="(200,80)" to="(200,110)"/>
    <wire from="(60,560)" to="(60,940)"/>
    <comp lib="1" loc="(130,630)" name="AND Gate">
      <a name="size" val="30"/>
      <a name="inputs" val="2"/>
      <a name="negate0" val="true"/>
    </comp>
    <comp loc="(70,540)" name="Halt"/>
    <comp lib="0" loc="(1100,90)" name="Tunnel">
      <a name="facing" val="east"/>
      <a name="width" val="12"/>
      <a name="label" val="r1"/>
    </comp>
    <comp lib="5" loc="(30,940)" name="Button">
      <a name="label" val="reset"/>
    </comp>
    <comp lib="0" loc="(950,90)" name="Tunnel">
      <a name="facing" val="east"/>
      <a name="width" val="12"/>
      <a name="label" val="r0"/>
    </comp>
    <comp lib="0" loc="(1100,130)" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="width" val="12"/>
      <a name="tristate" val="false"/>
      <a name="label" val="r5"/>
      <a name="labelloc" val="east"/>
    </comp>
    <comp lib="0" loc="(1250,130)" name="Tunnel">
      <a name="facing" val="east"/>
      <a name="width" val="12"/>
      <a name="label" val="r6"/>
    </comp>
    <comp lib="6" loc="(891,44)" name="Text">
      <a name="text" val="DO NOT CHANGE THE INPUTS AND OUTPUTS OF THIS CIRCUIT! Do not add/remove inputs or outputs. Do not even change their location or orientation."/>
      <a name="font" val="SansSerif bolditalic 22"/>
    </comp>
    <comp lib="6" loc="(76,476)" name="Text">
      <a name="text" val="current instruction"/>
    </comp>
    <comp lib="6" loc="(24,481)" name="Text">
      <a name="halign" val="left"/>
    </comp>
    <comp lib="0" loc="(1400,90)" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="width" val="12"/>
      <a name="tristate" val="false"/>
      <a name="label" val="r3"/>
      <a name="labelloc" val="east"/>
    </comp>
    <comp lib="0" loc="(1100,90)" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="width" val="12"/>
      <a name="tristate" val="false"/>
      <a name="label" val="r1"/>
      <a name="labelloc" val="east"/>
    </comp>
    <comp lib="0" loc="(90,540)" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="label" val="halt"/>
      <a name="labelloc" val="east"/>
    </comp>
    <comp lib="0" loc="(1250,130)" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="width" val="12"/>
      <a name="tristate" val="false"/>
      <a name="label" val="r6"/>
      <a name="labelloc" val="east"/>
    </comp>
    <comp lib="6" loc="(170,621)" name="Text">
      <a name="text" val="clock signal"/>
    </comp>
    <comp lib="0" loc="(1100,130)" name="Tunnel">
      <a name="facing" val="east"/>
      <a name="width" val="12"/>
      <a name="label" val="r5"/>
    </comp>
    <comp lib="0" loc="(1250,90)" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="width" val="12"/>
      <a name="tristate" val="false"/>
      <a name="label" val="r2"/>
      <a name="labelloc" val="east"/>
    </comp>
    <comp lib="0" loc="(1250,90)" name="Tunnel">
      <a name="facing" val="east"/>
      <a name="width" val="12"/>
      <a name="label" val="r2"/>
    </comp>
    <comp lib="0" loc="(30,640)" name="Clock"/>
    <comp lib="6" loc="(161,933)" name="Text">
      <a name="text" val="reset button"/>
    </comp>
    <comp lib="0" loc="(1400,130)" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="width" val="12"/>
      <a name="tristate" val="false"/>
      <a name="label" val="r7"/>
      <a name="labelloc" val="east"/>
    </comp>
    <comp lib="0" loc="(220,80)" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="width" val="12"/>
      <a name="tristate" val="false"/>
      <a name="label" val="pc"/>
      <a name="labelloc" val="east"/>
    </comp>
    <comp lib="0" loc="(1400,90)" name="Tunnel">
      <a name="facing" val="east"/>
      <a name="width" val="12"/>
      <a name="label" val="r3"/>
    </comp>
    <comp lib="0" loc="(950,130)" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="width" val="12"/>
      <a name="tristate" val="false"/>
      <a name="label" val="r4"/>
      <a name="labelloc" val="east"/>
    </comp>
    <comp lib="0" loc="(950,90)" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="width" val="12"/>
      <a name="tristate" val="false"/>
      <a name="label" val="r0"/>
      <a name="labelloc" val="east"/>
    </comp>
    <comp lib="0" loc="(1400,130)" name="Tunnel">
      <a name="facing" val="east"/>
      <a name="width" val="12"/>
      <a name="label" val="r7"/>
    </comp>
    <comp lib="0" loc="(950,130)" name="Tunnel">
      <a name="facing" val="east"/>
      <a name="width" val="12"/>
      <a name="label" val="r4"/>
    </comp>
  </circuit>
  <circuit name="Halt">
    <a name="circuit" val="Halt"/>
    <a name="clabel" val=""/>
    <a name="clabelup" val="east"/>
    <a name="clabelfont" val="SansSerif plain 12"/>
    <wire from="(260,270)" to="(320,270)"/>
    <wire from="(390,250)" to="(450,250)"/>
    <wire from="(240,300)" to="(240,310)"/>
    <wire from="(390,250)" to="(390,260)"/>
    <wire from="(250,330)" to="(300,330)"/>
    <wire from="(300,330)" to="(300,350)"/>
    <wire from="(240,280)" to="(240,300)"/>
    <wire from="(590,250)" to="(590,330)"/>
    <wire from="(300,330)" to="(590,330)"/>
    <wire from="(320,240)" to="(320,270)"/>
    <wire from="(480,240)" to="(520,240)"/>
    <wire from="(550,230)" to="(570,230)"/>
    <wire from="(490,220)" to="(520,220)"/>
    <wire from="(600,230)" to="(620,230)"/>
    <wire from="(620,230)" to="(640,230)"/>
    <wire from="(320,240)" to="(340,240)"/>
    <wire from="(240,300)" to="(580,300)"/>
    <wire from="(250,280)" to="(250,330)"/>
    <wire from="(140,210)" to="(220,210)"/>
    <wire from="(380,260)" to="(390,260)"/>
    <wire from="(260,220)" to="(340,220)"/>
    <wire from="(260,260)" to="(340,260)"/>
    <wire from="(490,170)" to="(490,220)"/>
    <wire from="(370,230)" to="(450,230)"/>
    <wire from="(620,170)" to="(620,230)"/>
    <wire from="(490,170)" to="(620,170)"/>
    <wire from="(580,250)" to="(580,300)"/>
    <comp lib="1" loc="(370,230)" name="OR Gate">
      <a name="size" val="30"/>
      <a name="inputs" val="2"/>
    </comp>
    <comp lib="0" loc="(220,230)" name="Constant">
      <a name="width" val="14"/>
      <a name="value" val="0x0"/>
    </comp>
    <comp lib="1" loc="(480,240)" name="AND Gate">
      <a name="size" val="30"/>
      <a name="inputs" val="2"/>
    </comp>
    <comp lib="0" loc="(640,230)" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="label" val="halt"/>
      <a name="labelloc" val="east"/>
    </comp>
    <comp lib="0" loc="(140,210)" name="Pin">
      <a name="width" val="14"/>
      <a name="tristate" val="false"/>
      <a name="label" val="instruction"/>
    </comp>
    <comp lib="1" loc="(550,230)" name="OR Gate">
      <a name="size" val="30"/>
      <a name="inputs" val="2"/>
    </comp>
    <comp lib="0" loc="(240,310)" name="Pin">
      <a name="facing" val="north"/>
      <a name="tristate" val="false"/>
      <a name="label" val="clock"/>
    </comp>
    <comp lib="0" loc="(300,350)" name="Pin">
      <a name="facing" val="north"/>
      <a name="tristate" val="false"/>
      <a name="label" val="reset"/>
    </comp>
    <comp lib="0" loc="(340,280)" name="Constant">
      <a name="width" val="12"/>
      <a name="value" val="0x0"/>
    </comp>
    <comp lib="6" loc="(437,81)" name="Text">
      <a name="text" val="halt becomes and stays asserted if the instruction is 0000 (not in the first clock cycle) or the end of the counter is reached (2^12)"/>
    </comp>
    <comp lib="3" loc="(380,270)" name="Comparator">
      <a name="width" val="12"/>
      <a name="mode" val="unsigned"/>
    </comp>
    <comp lib="3" loc="(260,220)" name="Comparator">
      <a name="width" val="14"/>
      <a name="mode" val="unsigned"/>
    </comp>
    <comp lib="4" loc="(260,260)" name="Counter">
      <a name="width" val="12"/>
      <a name="max" val="0xfff"/>
      <a name="trigger" val="falling"/>
    </comp>
    <comp lib="4" loc="(600,230)" name="Register">
      <a name="width" val="1"/>
    </comp>
  </circuit>
</project>
