<?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="XOR Gate">
      <a name="size" val="30"/>
      <a name="inputs" val="2"/>
    </tool>
    <tool name="XNOR Gate">
      <a name="size" val="30"/>
      <a name="inputs" val="2"/>
    </tool>
  </lib>
  <lib desc="#Plexers" name="2"/>
  <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="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="south"/>
      <a name="tristate" val="false"/>
    </tool>
    <tool lib="0" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="tristate" val="false"/>
      <a name="labelloc" val="east"/>
    </tool>
    <tool lib="1" name="NOT Gate"/>
    <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="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"/>
    <appear>
      <circ-port height="10" pin="290,140" width="10" x="75" y="75"/>
      <circ-port height="10" pin="640,180" width="10" x="75" y="85"/>
      <circ-port height="10" pin="640,270" width="10" x="75" y="95"/>
      <circ-port height="10" pin="640,370" width="10" x="75" y="105"/>
      <circ-port height="10" pin="640,470" width="10" x="75" y="115"/>
      <circ-port height="10" pin="640,570" width="10" x="75" y="125"/>
      <circ-port height="10" pin="640,610" width="10" x="75" y="135"/>
      <circ-port height="10" pin="640,670" width="10" x="75" y="145"/>
      <circ-port height="10" pin="640,700" width="10" x="75" y="155"/>
      <circ-port height="10" pin="750,830" width="10" x="75" y="165"/>
      <circ-port height="10" pin="640,870" width="10" x="75" y="175"/>
      <circ-anchor facing="east" height="6" width="6" x="77" y="67"/>
    </appear>
    <wire from="(690,810)" to="(690,820)"/>
    <wire from="(290,470)" to="(410,470)"/>
    <wire from="(450,590)" to="(450,600)"/>
    <wire from="(500,700)" to="(620,700)"/>
    <wire from="(520,750)" to="(560,750)"/>
    <wire from="(410,470)" to="(410,620)"/>
    <wire from="(610,740)" to="(610,830)"/>
    <wire from="(620,820)" to="(620,850)"/>
    <wire from="(30,170)" to="(60,170)"/>
    <wire from="(540,730)" to="(560,730)"/>
    <wire from="(470,780)" to="(630,780)"/>
    <wire from="(410,620)" to="(430,620)"/>
    <wire from="(610,830)" to="(640,830)"/>
    <wire from="(90,180)" to="(90,290)"/>
    <wire from="(540,610)" to="(540,730)"/>
    <wire from="(90,130)" to="(90,180)"/>
    <wire from="(420,370)" to="(420,610)"/>
    <wire from="(420,700)" to="(500,700)"/>
    <wire from="(290,370)" to="(420,370)"/>
    <wire from="(400,670)" to="(400,790)"/>
    <wire from="(600,740)" to="(610,740)"/>
    <wire from="(520,570)" to="(640,570)"/>
    <wire from="(420,700)" to="(420,770)"/>
    <wire from="(430,270)" to="(430,590)"/>
    <wire from="(90,690)" to="(90,890)"/>
    <wire from="(60,150)" to="(60,170)"/>
    <wire from="(540,610)" to="(640,610)"/>
    <wire from="(400,670)" to="(640,670)"/>
    <wire from="(290,670)" to="(400,670)"/>
    <wire from="(500,620)" to="(500,700)"/>
    <wire from="(90,490)" to="(130,490)"/>
    <wire from="(90,290)" to="(130,290)"/>
    <wire from="(90,590)" to="(130,590)"/>
    <wire from="(90,390)" to="(130,390)"/>
    <wire from="(90,690)" to="(130,690)"/>
    <wire from="(90,890)" to="(130,890)"/>
    <wire from="(90,180)" to="(640,180)"/>
    <wire from="(410,470)" to="(640,470)"/>
    <wire from="(630,780)" to="(630,800)"/>
    <wire from="(290,570)" to="(520,570)"/>
    <wire from="(630,800)" to="(630,840)"/>
    <wire from="(420,370)" to="(640,370)"/>
    <wire from="(400,790)" to="(430,790)"/>
    <wire from="(470,620)" to="(500,620)"/>
    <wire from="(90,390)" to="(90,490)"/>
    <wire from="(620,700)" to="(640,700)"/>
    <wire from="(620,820)" to="(640,820)"/>
    <wire from="(90,590)" to="(90,690)"/>
    <wire from="(90,290)" to="(90,390)"/>
    <wire from="(90,490)" to="(90,590)"/>
    <wire from="(670,810)" to="(690,810)"/>
    <wire from="(290,870)" to="(640,870)"/>
    <wire from="(730,830)" to="(750,830)"/>
    <wire from="(430,270)" to="(640,270)"/>
    <wire from="(670,840)" to="(700,840)"/>
    <wire from="(430,590)" to="(450,590)"/>
    <wire from="(80,140)" to="(290,140)"/>
    <wire from="(420,770)" to="(430,770)"/>
    <wire from="(420,610)" to="(430,610)"/>
    <wire from="(290,270)" to="(430,270)"/>
    <wire from="(620,700)" to="(620,820)"/>
    <wire from="(80,130)" to="(90,130)"/>
    <wire from="(520,570)" to="(520,750)"/>
    <wire from="(690,820)" to="(700,820)"/>
    <wire from="(470,610)" to="(540,610)"/>
    <wire from="(620,850)" to="(630,850)"/>
    <wire from="(630,840)" to="(640,840)"/>
    <wire from="(630,800)" to="(640,800)"/>
    <comp lib="0" loc="(150,470)" name="Splitter">
      <a name="facing" val="west"/>
      <a name="incoming" val="16"/>
      <a name="bit1" val="0"/>
      <a name="bit2" val="0"/>
      <a name="bit3" val="1"/>
      <a name="bit4" val="1"/>
      <a name="bit5" val="1"/>
      <a name="bit6" val="1"/>
      <a name="bit7" val="1"/>
      <a name="bit8" val="1"/>
      <a name="bit9" val="1"/>
      <a name="bit10" val="1"/>
      <a name="bit11" val="1"/>
      <a name="bit12" val="1"/>
      <a name="bit13" val="1"/>
      <a name="bit14" val="1"/>
      <a name="bit15" val="1"/>
    </comp>
    <comp lib="0" loc="(640,670)" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="tristate" val="false"/>
      <a name="label" val="err_oracle"/>
      <a name="labelloc" val="east"/>
    </comp>
    <comp lib="0" loc="(130,880)" name="Constant">
      <a name="width" val="3"/>
      <a name="value" val="0x5"/>
    </comp>
    <comp lib="0" loc="(130,480)" name="Constant">
      <a name="width" val="3"/>
      <a name="value" val="0x2"/>
    </comp>
    <comp lib="4" loc="(290,670)" name="RAM">
      <a name="addrWidth" val="16"/>
      <a name="dataWidth" val="1"/>
      <a name="bus" val="separate"/>
    </comp>
    <comp lib="1" loc="(670,810)" name="AND Gate">
      <a name="size" val="30"/>
      <a name="inputs" val="2"/>
    </comp>
    <comp lib="1" loc="(730,830)" name="OR Gate">
      <a name="size" val="30"/>
      <a name="inputs" val="2"/>
    </comp>
    <comp lib="0" loc="(640,870)" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="tristate" val="false"/>
      <a name="label" val="start_delimiter"/>
      <a name="labelloc" val="east"/>
    </comp>
    <comp lib="4" loc="(290,370)" name="RAM">
      <a name="addrWidth" val="16"/>
      <a name="dataWidth" val="12"/>
      <a name="bus" val="separate"/>
    </comp>
    <comp lib="0" loc="(240,510)" name="Constant">
      <a name="facing" val="north"/>
    </comp>
    <comp lib="0" loc="(640,570)" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="width" val="12"/>
      <a name="label" val="oracle"/>
      <a name="labelloc" val="east"/>
    </comp>
    <comp lib="0" loc="(150,870)" name="Splitter">
      <a name="facing" val="west"/>
      <a name="incoming" val="16"/>
      <a name="bit1" val="0"/>
      <a name="bit2" val="0"/>
      <a name="bit3" val="1"/>
      <a name="bit4" val="1"/>
      <a name="bit5" val="1"/>
      <a name="bit6" val="1"/>
      <a name="bit7" val="1"/>
      <a name="bit8" val="1"/>
      <a name="bit9" val="1"/>
      <a name="bit10" val="1"/>
      <a name="bit11" val="1"/>
      <a name="bit12" val="1"/>
      <a name="bit13" val="1"/>
      <a name="bit14" val="1"/>
      <a name="bit15" val="1"/>
    </comp>
    <comp lib="0" loc="(240,610)" name="Constant">
      <a name="facing" val="north"/>
    </comp>
    <comp lib="0" loc="(130,280)" name="Constant">
      <a name="width" val="3"/>
      <a name="value" val="0x0"/>
    </comp>
    <comp lib="0" loc="(640,180)" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="width" val="13"/>
      <a name="label" val="counter"/>
      <a name="labelloc" val="east"/>
    </comp>
    <comp lib="3" loc="(470,780)" name="Comparator">
      <a name="width" val="1"/>
      <a name="mode" val="unsigned"/>
    </comp>
    <comp lib="0" loc="(130,680)" name="Constant">
      <a name="width" val="3"/>
      <a name="value" val="0x4"/>
    </comp>
    <comp lib="0" loc="(640,270)" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="width" val="4"/>
      <a name="tristate" val="false"/>
      <a name="label" val="op"/>
      <a name="labelloc" val="east"/>
    </comp>
    <comp lib="0" loc="(240,410)" name="Constant">
      <a name="facing" val="north"/>
    </comp>
    <comp lib="4" loc="(290,870)" name="RAM">
      <a name="addrWidth" val="16"/>
      <a name="dataWidth" val="1"/>
      <a name="bus" val="separate"/>
    </comp>
    <comp lib="1" loc="(670,840)" name="AND Gate">
      <a name="size" val="30"/>
      <a name="inputs" val="3"/>
      <a name="negate2" val="true"/>
    </comp>
    <comp lib="0" loc="(750,830)" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="tristate" val="false"/>
      <a name="label" val="ok?"/>
      <a name="labelloc" val="east"/>
    </comp>
    <comp lib="0" loc="(150,370)" name="Splitter">
      <a name="facing" val="west"/>
      <a name="incoming" val="16"/>
      <a name="bit1" val="0"/>
      <a name="bit2" val="0"/>
      <a name="bit3" val="1"/>
      <a name="bit4" val="1"/>
      <a name="bit5" val="1"/>
      <a name="bit6" val="1"/>
      <a name="bit7" val="1"/>
      <a name="bit8" val="1"/>
      <a name="bit9" val="1"/>
      <a name="bit10" val="1"/>
      <a name="bit11" val="1"/>
      <a name="bit12" val="1"/>
      <a name="bit13" val="1"/>
      <a name="bit14" val="1"/>
      <a name="bit15" val="1"/>
    </comp>
    <comp lib="0" loc="(640,370)" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="width" val="12"/>
      <a name="label" val="a"/>
      <a name="labelloc" val="east"/>
    </comp>
    <comp lib="6" loc="(390,57)" name="Text">
      <a name="text" val="DO NOT EDIT THIS CIRCUIT!"/>
      <a name="font" val="SansSerif bolditalic 52"/>
    </comp>
    <comp lib="6" loc="(176,79)" name="Text">
      <a name="text" val="You must complete the circuit '12-bit ALU' instead."/>
    </comp>
    <comp lib="4" loc="(290,570)" name="RAM">
      <a name="addrWidth" val="16"/>
      <a name="dataWidth" val="12"/>
      <a name="bus" val="separate"/>
    </comp>
    <comp lib="0" loc="(150,670)" name="Splitter">
      <a name="facing" val="west"/>
      <a name="incoming" val="16"/>
      <a name="bit1" val="0"/>
      <a name="bit2" val="0"/>
      <a name="bit3" val="1"/>
      <a name="bit4" val="1"/>
      <a name="bit5" val="1"/>
      <a name="bit6" val="1"/>
      <a name="bit7" val="1"/>
      <a name="bit8" val="1"/>
      <a name="bit9" val="1"/>
      <a name="bit10" val="1"/>
      <a name="bit11" val="1"/>
      <a name="bit12" val="1"/>
      <a name="bit13" val="1"/>
      <a name="bit14" val="1"/>
      <a name="bit15" val="1"/>
    </comp>
    <comp lib="4" loc="(290,470)" name="RAM">
      <a name="addrWidth" val="16"/>
      <a name="dataWidth" val="12"/>
      <a name="bus" val="separate"/>
    </comp>
    <comp lib="0" loc="(30,170)" name="Clock"/>
    <comp lib="0" loc="(240,910)" name="Constant">
      <a name="facing" val="north"/>
    </comp>
    <comp loc="(450,600)" name="12-bit ALU"/>
    <comp lib="0" loc="(290,140)" 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="(240,310)" name="Constant">
      <a name="facing" val="north"/>
    </comp>
    <comp lib="0" loc="(640,470)" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="width" val="12"/>
      <a name="label" val="b"/>
      <a name="labelloc" val="east"/>
    </comp>
    <comp lib="4" loc="(80,130)" name="Counter">
      <a name="width" val="13"/>
      <a name="max" val="0x1fff"/>
      <a name="trigger" val="falling"/>
    </comp>
    <comp lib="3" loc="(600,740)" name="Comparator">
      <a name="width" val="12"/>
    </comp>
    <comp lib="0" loc="(640,610)" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="width" val="12"/>
      <a name="label" val="result"/>
      <a name="labelloc" val="east"/>
    </comp>
    <comp lib="0" loc="(130,380)" name="Constant">
      <a name="width" val="3"/>
    </comp>
    <comp lib="4" loc="(290,270)" name="RAM">
      <a name="addrWidth" val="16"/>
      <a name="dataWidth" val="4"/>
      <a name="bus" val="separate"/>
    </comp>
    <comp lib="0" loc="(150,270)" name="Splitter">
      <a name="facing" val="west"/>
      <a name="incoming" val="16"/>
      <a name="bit1" val="0"/>
      <a name="bit2" val="0"/>
      <a name="bit3" val="1"/>
      <a name="bit4" val="1"/>
      <a name="bit5" val="1"/>
      <a name="bit6" val="1"/>
      <a name="bit7" val="1"/>
      <a name="bit8" val="1"/>
      <a name="bit9" val="1"/>
      <a name="bit10" val="1"/>
      <a name="bit11" val="1"/>
      <a name="bit12" val="1"/>
      <a name="bit13" val="1"/>
      <a name="bit14" val="1"/>
      <a name="bit15" val="1"/>
    </comp>
    <comp lib="0" loc="(640,700)" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="tristate" val="false"/>
      <a name="label" val="error"/>
      <a name="labelloc" val="east"/>
    </comp>
    <comp lib="0" loc="(240,710)" name="Constant">
      <a name="facing" val="north"/>
    </comp>
    <comp lib="0" loc="(130,580)" name="Constant">
      <a name="width" val="3"/>
      <a name="value" val="0x3"/>
    </comp>
    <comp lib="0" loc="(150,570)" name="Splitter">
      <a name="facing" val="west"/>
      <a name="incoming" val="16"/>
      <a name="bit1" val="0"/>
      <a name="bit2" val="0"/>
      <a name="bit3" val="1"/>
      <a name="bit4" val="1"/>
      <a name="bit5" val="1"/>
      <a name="bit6" val="1"/>
      <a name="bit7" val="1"/>
      <a name="bit8" val="1"/>
      <a name="bit9" val="1"/>
      <a name="bit10" val="1"/>
      <a name="bit11" val="1"/>
      <a name="bit12" val="1"/>
      <a name="bit13" val="1"/>
      <a name="bit14" val="1"/>
      <a name="bit15" val="1"/>
    </comp>
  </circuit>
  <circuit name="12-bit ALU">
    <a name="circuit" val="12-bit ALU"/>
    <a name="clabel" val=""/>
    <a name="clabelup" val="east"/>
    <a name="clabelfont" val="SansSerif plain 12"/>
    <appear>
      <path d="M76,51 Q80,61 84,51" fill="none" stroke="#808080" stroke-width="2"/>
      <rect fill="none" height="30" stroke="#000000" stroke-width="2" width="40" x="60" y="50"/>
      <text font-family="SansSerif" font-size="12" text-anchor="middle" x="80" y="70">ALU</text>
      <circ-port height="8" pin="640,260" width="8" x="76" y="46"/>
      <circ-port height="8" pin="170,460" width="8" x="56" y="56"/>
      <circ-port height="8" pin="170,530" width="8" x="56" y="66"/>
      <circ-port height="10" pin="1170,660" width="10" x="95" y="65"/>
      <circ-port height="10" pin="1160,600" width="10" x="95" y="55"/>
      <circ-anchor facing="east" height="6" width="6" x="77" y="47"/>
    </appear>
    <wire from="(170,530)" to="(200,530)"/>
    <wire from="(170,460)" to="(200,460)"/>
    <wire from="(640,260)" to="(640,270)"/>
    <wire from="(1140,600)" to="(1160,600)"/>
    <wire from="(1150,660)" to="(1170,660)"/>
    <comp lib="0" loc="(1170,660)" name="Pin">
      <a name="facing" val="west"/>
      <a name="output" val="true"/>
      <a name="tristate" val="false"/>
      <a name="label" val="overflow"/>
      <a name="labelloc" val="east"/>
    </comp>
    <comp lib="6" loc="(515,112)" name="Text">
      <a name="text" val="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="(415,86)" name="Text">
      <a name="text" val="DO NOT CHANGE THE INPUTS AND OUTPUTS OF THIS CIRCUIT!"/>
      <a name="font" val="SansSerif bolditalic 22"/>
    </comp>
    <comp lib="6" loc="(69,164)" name="Text">
      <a name="text" val="This circuit is used as a block in the main circuit, and its layout must remain unchanged. The circuit called &quot;main&quot; should be the main circuit of this file."/>
      <a name="halign" val="left"/>
    </comp>
    <comp lib="0" loc="(170,460)" name="Pin">
      <a name="width" val="12"/>
      <a name="tristate" val="false"/>
      <a name="label" val="a"/>
    </comp>
    <comp lib="0" loc="(1160,600)" 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="result"/>
      <a name="labelloc" val="east"/>
    </comp>
    <comp lib="6" loc="(265,139)" name="Text">
      <a name="text" val="Do not change the circuit appearance."/>
      <a name="font" val="SansSerif bolditalic 22"/>
    </comp>
    <comp lib="0" loc="(170,530)" name="Pin">
      <a name="width" val="12"/>
      <a name="tristate" val="false"/>
      <a name="label" val="b"/>
    </comp>
    <comp lib="0" loc="(640,260)" name="Pin">
      <a name="facing" val="south"/>
      <a name="width" val="4"/>
      <a name="tristate" val="false"/>
      <a name="label" val="ALU code"/>
    </comp>
  </circuit>
</project>
