logisim-stuff/4bit cpu/4bit cpu.circ

851 lines
31 KiB
Plaintext
Raw Normal View History

2016-03-03 14:16:28 -06:00
<?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="incoming" val="8"/>
<a name="bit1" val="0"/>
<a name="bit2" val="0"/>
<a name="bit3" val="0"/>
<a name="bit4" val="1"/>
<a name="bit5" val="1"/>
<a name="bit6" val="1"/>
<a name="bit7" val="1"/>
</tool>
<tool name="Pin">
<a name="tristate" val="false"/>
</tool>
<tool name="Probe">
<a name="radix" val="10unsigned"/>
<a name="labelloc" val="east"/>
</tool>
<tool name="Tunnel">
<a name="facing" val="east"/>
<a name="width" val="8"/>
</tool>
<tool name="Constant">
<a name="value" val="0x0"/>
</tool>
</lib>
<lib desc="#Gates" name="1">
<tool name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</tool>
</lib>
<lib desc="#Plexers" name="2">
<tool name="Decoder">
<a name="select" val="3"/>
</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="#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="50000"/>
<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="tristate" val="false"/>
<a name="label" val="reset"/>
</tool>
<tool lib="0" name="Pin">
<a name="facing" val="south"/>
<a name="output" val="true"/>
<a name="width" val="2"/>
<a name="label" val="m/io i/o"/>
<a name="labelloc" val="north"/>
</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="cpu">
<a name="circuit" val="cpu"/>
<a name="clabel" val=""/>
<a name="clabelup" val="east"/>
<a name="clabelfont" val="SansSerif plain 12"/>
<wire from="(940,390)" to="(940,460)"/>
<wire from="(590,510)" to="(600,510)"/>
<wire from="(100,460)" to="(200,460)"/>
<wire from="(660,540)" to="(660,600)"/>
<wire from="(520,370)" to="(530,370)"/>
<wire from="(830,400)" to="(840,400)"/>
<wire from="(470,590)" to="(750,590)"/>
<wire from="(830,400)" to="(830,440)"/>
<wire from="(710,530)" to="(1040,530)"/>
<wire from="(770,580)" to="(770,610)"/>
<wire from="(690,500)" to="(690,630)"/>
<wire from="(830,560)" to="(860,560)"/>
<wire from="(160,370)" to="(160,470)"/>
<wire from="(820,690)" to="(850,690)"/>
<wire from="(580,640)" to="(860,640)"/>
<wire from="(880,390)" to="(880,430)"/>
<wire from="(880,440)" to="(900,440)"/>
<wire from="(860,460)" to="(910,460)"/>
<wire from="(740,710)" to="(740,760)"/>
<wire from="(500,500)" to="(600,500)"/>
<wire from="(820,590)" to="(820,660)"/>
<wire from="(920,400)" to="(950,400)"/>
<wire from="(120,410)" to="(120,420)"/>
<wire from="(170,330)" to="(330,330)"/>
<wire from="(570,440)" to="(830,440)"/>
<wire from="(190,390)" to="(190,430)"/>
<wire from="(910,390)" to="(940,390)"/>
<wire from="(1000,370)" to="(1040,370)"/>
<wire from="(860,560)" to="(860,640)"/>
<wire from="(1060,390)" to="(1060,470)"/>
<wire from="(150,380)" to="(180,380)"/>
<wire from="(890,370)" to="(900,370)"/>
<wire from="(710,530)" to="(710,550)"/>
<wire from="(10,530)" to="(100,530)"/>
<wire from="(690,630)" to="(690,770)"/>
<wire from="(1030,580)" to="(1050,580)"/>
<wire from="(920,470)" to="(920,540)"/>
<wire from="(160,470)" to="(530,470)"/>
<wire from="(800,500)" to="(800,520)"/>
<wire from="(10,420)" to="(80,420)"/>
<wire from="(960,380)" to="(960,430)"/>
<wire from="(1010,390)" to="(1010,760)"/>
<wire from="(1030,380)" to="(1030,520)"/>
<wire from="(930,360)" to="(960,360)"/>
<wire from="(1040,530)" to="(1040,560)"/>
<wire from="(910,450)" to="(910,460)"/>
<wire from="(880,430)" to="(900,430)"/>
<wire from="(470,430)" to="(470,590)"/>
<wire from="(860,430)" to="(860,460)"/>
<wire from="(530,370)" to="(580,370)"/>
<wire from="(720,550)" to="(1030,550)"/>
<wire from="(630,540)" to="(660,540)"/>
<wire from="(330,570)" to="(670,570)"/>
<wire from="(170,360)" to="(180,360)"/>
<wire from="(970,390)" to="(970,510)"/>
<wire from="(520,360)" to="(520,370)"/>
<wire from="(1020,380)" to="(1020,610)"/>
<wire from="(470,430)" to="(860,430)"/>
<wire from="(750,460)" to="(750,470)"/>
<wire from="(1030,580)" to="(1030,600)"/>
<wire from="(460,370)" to="(480,370)"/>
<wire from="(630,530)" to="(670,530)"/>
<wire from="(880,440)" to="(880,500)"/>
<wire from="(800,520)" to="(1030,520)"/>
<wire from="(500,330)" to="(500,340)"/>
<wire from="(920,470)" to="(950,470)"/>
<wire from="(950,470)" to="(1060,470)"/>
<wire from="(130,360)" to="(170,360)"/>
<wire from="(160,370)" to="(180,370)"/>
<wire from="(800,720)" to="(800,770)"/>
<wire from="(330,330)" to="(330,570)"/>
<wire from="(1040,560)" to="(1050,560)"/>
<wire from="(630,510)" to="(970,510)"/>
<wire from="(950,400)" to="(950,470)"/>
<wire from="(890,370)" to="(890,480)"/>
<wire from="(710,410)" to="(710,520)"/>
<wire from="(930,430)" to="(960,430)"/>
<wire from="(590,750)" to="(850,750)"/>
<wire from="(870,390)" to="(880,390)"/>
<wire from="(770,610)" to="(1020,610)"/>
<wire from="(920,380)" to="(920,400)"/>
<wire from="(720,550)" to="(720,560)"/>
<wire from="(960,370)" to="(970,370)"/>
<wire from="(820,370)" to="(830,370)"/>
<wire from="(170,330)" to="(170,360)"/>
<wire from="(690,500)" to="(800,500)"/>
<wire from="(630,470)" to="(750,470)"/>
<wire from="(1030,550)" to="(1030,580)"/>
<wire from="(740,710)" to="(780,710)"/>
<wire from="(940,460)" to="(1050,460)"/>
<wire from="(670,530)" to="(670,570)"/>
<wire from="(1050,390)" to="(1050,460)"/>
<wire from="(630,560)" to="(720,560)"/>
<wire from="(630,490)" to="(810,490)"/>
<wire from="(10,420)" to="(10,530)"/>
<wire from="(920,450)" to="(920,470)"/>
<wire from="(960,380)" to="(970,380)"/>
<wire from="(630,480)" to="(890,480)"/>
<wire from="(740,540)" to="(920,540)"/>
<wire from="(750,560)" to="(750,590)"/>
<wire from="(880,360)" to="(900,360)"/>
<wire from="(750,460)" to="(850,460)"/>
<wire from="(200,660)" to="(820,660)"/>
<wire from="(910,380)" to="(910,390)"/>
<wire from="(750,560)" to="(790,560)"/>
<wire from="(830,380)" to="(840,380)"/>
<wire from="(750,690)" to="(780,690)"/>
<wire from="(910,460)" to="(940,460)"/>
<wire from="(810,590)" to="(810,630)"/>
<wire from="(690,770)" to="(800,770)"/>
<wire from="(530,370)" to="(530,470)"/>
<wire from="(690,630)" to="(810,630)"/>
<wire from="(200,460)" to="(740,460)"/>
<wire from="(200,390)" to="(200,460)"/>
<wire from="(850,690)" to="(850,750)"/>
<wire from="(190,430)" to="(470,430)"/>
<wire from="(880,360)" to="(880,390)"/>
<wire from="(70,430)" to="(80,430)"/>
<wire from="(810,490)" to="(810,500)"/>
<wire from="(580,520)" to="(600,520)"/>
<wire from="(960,360)" to="(960,370)"/>
<wire from="(770,580)" to="(790,580)"/>
<wire from="(740,760)" to="(1010,760)"/>
<wire from="(1080,580)" to="(1080,600)"/>
<wire from="(590,510)" to="(590,750)"/>
<wire from="(830,370)" to="(830,380)"/>
<wire from="(570,330)" to="(570,440)"/>
<wire from="(750,590)" to="(750,690)"/>
<wire from="(80,600)" to="(660,600)"/>
<wire from="(850,410)" to="(850,460)"/>
<wire from="(80,420)" to="(80,430)"/>
<wire from="(740,460)" to="(740,540)"/>
<wire from="(200,460)" to="(200,660)"/>
<wire from="(1030,600)" to="(1080,600)"/>
<wire from="(1000,390)" to="(1010,390)"/>
<wire from="(130,360)" to="(130,380)"/>
<wire from="(1000,380)" to="(1020,380)"/>
<wire from="(80,450)" to="(80,600)"/>
<wire from="(630,550)" to="(710,550)"/>
<wire from="(100,460)" to="(100,530)"/>
<wire from="(500,330)" to="(570,330)"/>
<wire from="(1030,380)" to="(1040,380)"/>
<wire from="(810,500)" to="(880,500)"/>
<wire from="(110,410)" to="(120,410)"/>
<wire from="(630,520)" to="(710,520)"/>
<wire from="(630,500)" to="(690,500)"/>
<wire from="(500,360)" to="(500,500)"/>
<wire from="(580,520)" to="(580,640)"/>
<wire from="(150,430)" to="(190,430)"/>
<comp lib="0" loc="(70,430)" name="Pin">
<a name="tristate" val="false"/>
<a name="label" val="reset"/>
</comp>
<comp lib="4" loc="(1070,370)" name="Register">
<a name="width" val="4"/>
</comp>
<comp lib="1" loc="(110,440)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="2" loc="(870,390)" name="Multiplexer">
<a name="width" val="4"/>
<a name="disabled" val="0"/>
<a name="enable" val="false"/>
</comp>
<comp lib="0" loc="(580,370)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="width" val="8"/>
<a name="label" val="daddr"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="4" loc="(930,430)" name="Register">
<a name="width" val="4"/>
</comp>
<comp lib="0" loc="(520,360)" name="Splitter">
<a name="facing" val="west"/>
<a name="incoming" val="8"/>
<a name="appear" val="right"/>
<a name="bit1" val="0"/>
<a name="bit2" val="0"/>
<a name="bit3" val="0"/>
<a name="bit4" val="1"/>
<a name="bit5" val="1"/>
<a name="bit6" val="1"/>
<a name="bit7" val="1"/>
</comp>
<comp lib="0" loc="(460,370)" name="Pin">
<a name="width" val="13"/>
<a name="tristate" val="false"/>
<a name="label" val="cdata"/>
</comp>
<comp lib="0" loc="(480,370)" name="Splitter">
<a name="fanout" val="3"/>
<a name="incoming" val="13"/>
<a name="bit1" val="0"/>
<a name="bit2" val="0"/>
<a name="bit3" val="0"/>
<a name="bit4" val="1"/>
<a name="bit5" val="1"/>
<a name="bit6" val="1"/>
<a name="bit7" val="1"/>
<a name="bit8" val="2"/>
<a name="bit9" val="2"/>
<a name="bit10" val="2"/>
<a name="bit11" val="2"/>
<a name="bit12" val="2"/>
</comp>
<comp lib="0" loc="(1070,370)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="width" val="4"/>
<a name="label" val="ddata"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="4" loc="(930,360)" name="Register">
<a name="width" val="4"/>
</comp>
<comp lib="0" loc="(1100,590)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="width" val="2"/>
<a name="label" val="m/io i/o"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="0" loc="(820,370)" name="Pin">
<a name="width" val="4"/>
<a name="tristate" val="false"/>
<a name="label" val="ddatain"/>
</comp>
<comp lib="1" loc="(150,430)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
<a name="negate1" val="true"/>
</comp>
<comp lib="0" loc="(110,410)" name="Pin">
<a name="tristate" val="false"/>
<a name="label" val="clock"/>
</comp>
<comp lib="0" loc="(710,410)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="str"/>
<a name="labelloc" val="east"/>
</comp>
<comp loc="(1000,370)" name="alu"/>
<comp loc="(630,470)" name="ins dec"/>
<comp lib="0" loc="(210,370)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="width" val="8"/>
<a name="label" val="caddr"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="4" loc="(830,560)" name="D Flip-Flop"/>
<comp lib="4" loc="(210,370)" name="Counter"/>
<comp lib="0" loc="(1100,590)" name="Splitter">
<a name="facing" val="west"/>
<a name="appear" val="right"/>
</comp>
<comp lib="1" loc="(150,380)" name="NOT Gate">
<a name="size" val="20"/>
</comp>
<comp lib="4" loc="(820,690)" name="D Flip-Flop"/>
<comp lib="1" loc="(1080,570)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
</circuit>
<circuit name="ins dec">
<a name="circuit" val="ins dec"/>
<a name="clabel" val=""/>
<a name="clabelup" val="east"/>
<a name="clabelfont" val="SansSerif plain 12"/>
<wire from="(310,520)" to="(310,590)"/>
<wire from="(420,190)" to="(450,190)"/>
<wire from="(320,470)" to="(340,470)"/>
<wire from="(430,220)" to="(450,220)"/>
<wire from="(110,370)" to="(280,370)"/>
<wire from="(90,520)" to="(90,570)"/>
<wire from="(350,400)" to="(500,400)"/>
<wire from="(380,270)" to="(380,370)"/>
<wire from="(50,590)" to="(310,590)"/>
<wire from="(110,350)" to="(300,350)"/>
<wire from="(580,280)" to="(580,380)"/>
<wire from="(420,250)" to="(450,250)"/>
<wire from="(110,360)" to="(290,360)"/>
<wire from="(270,380)" to="(270,630)"/>
<wire from="(280,620)" to="(670,620)"/>
<wire from="(410,240)" to="(410,250)"/>
<wire from="(330,320)" to="(330,460)"/>
<wire from="(290,560)" to="(340,560)"/>
<wire from="(480,480)" to="(610,480)"/>
<wire from="(600,300)" to="(690,300)"/>
<wire from="(300,580)" to="(330,580)"/>
<wire from="(260,390)" to="(260,640)"/>
<wire from="(430,170)" to="(450,170)"/>
<wire from="(590,260)" to="(590,390)"/>
<wire from="(370,470)" to="(370,480)"/>
<wire from="(540,390)" to="(590,390)"/>
<wire from="(110,380)" to="(270,380)"/>
<wire from="(430,180)" to="(430,220)"/>
<wire from="(380,370)" to="(500,370)"/>
<wire from="(110,390)" to="(260,390)"/>
<wire from="(400,250)" to="(400,350)"/>
<wire from="(660,340)" to="(660,640)"/>
<wire from="(600,300)" to="(600,440)"/>
<wire from="(680,380)" to="(690,380)"/>
<wire from="(310,340)" to="(310,500)"/>
<wire from="(480,240)" to="(690,240)"/>
<wire from="(480,210)" to="(480,220)"/>
<wire from="(500,200)" to="(690,200)"/>
<wire from="(280,370)" to="(280,620)"/>
<wire from="(400,350)" to="(500,350)"/>
<wire from="(670,360)" to="(670,620)"/>
<wire from="(300,530)" to="(340,530)"/>
<wire from="(610,320)" to="(610,480)"/>
<wire from="(500,410)" to="(500,420)"/>
<wire from="(320,490)" to="(320,520)"/>
<wire from="(410,200)" to="(450,200)"/>
<wire from="(370,570)" to="(400,570)"/>
<wire from="(80,570)" to="(90,570)"/>
<wire from="(300,550)" to="(300,580)"/>
<wire from="(110,220)" to="(410,220)"/>
<wire from="(320,330)" to="(320,470)"/>
<wire from="(550,380)" to="(580,380)"/>
<wire from="(390,180)" to="(390,230)"/>
<wire from="(410,220)" to="(410,230)"/>
<wire from="(110,250)" to="(400,250)"/>
<wire from="(260,640)" to="(660,640)"/>
<wire from="(680,380)" to="(680,630)"/>
<wire from="(110,210)" to="(410,210)"/>
<wire from="(370,470)" to="(430,470)"/>
<wire from="(370,380)" to="(500,380)"/>
<wire from="(110,240)" to="(410,240)"/>
<wire from="(670,360)" to="(690,360)"/>
<wire from="(110,260)" to="(390,260)"/>
<wire from="(110,230)" to="(390,230)"/>
<wire from="(270,630)" to="(680,630)"/>
<wire from="(390,360)" to="(500,360)"/>
<wire from="(410,250)" to="(420,250)"/>
<wire from="(320,490)" to="(340,490)"/>
<wire from="(360,290)" to="(360,390)"/>
<wire from="(350,300)" to="(350,400)"/>
<wire from="(370,540)" to="(390,540)"/>
<wire from="(110,280)" to="(370,280)"/>
<wire from="(430,170)" to="(430,180)"/>
<wire from="(300,550)" to="(340,550)"/>
<wire from="(500,180)" to="(500,200)"/>
<wire from="(300,350)" to="(300,530)"/>
<wire from="(110,270)" to="(380,270)"/>
<wire from="(300,580)" to="(300,610)"/>
<wire from="(330,460)" to="(430,460)"/>
<wire from="(380,480)" to="(430,480)"/>
<wire from="(580,280)" to="(690,280)"/>
<wire from="(340,310)" to="(340,440)"/>
<wire from="(360,390)" to="(500,390)"/>
<wire from="(50,610)" to="(300,610)"/>
<wire from="(110,290)" to="(360,290)"/>
<wire from="(420,190)" to="(420,250)"/>
<wire from="(390,260)" to="(390,360)"/>
<wire from="(110,310)" to="(340,310)"/>
<wire from="(390,180)" to="(430,180)"/>
<wire from="(370,280)" to="(370,380)"/>
<wire from="(540,380)" to="(550,380)"/>
<wire from="(390,490)" to="(390,540)"/>
<wire from="(110,300)" to="(350,300)"/>
<wire from="(590,260)" to="(690,260)"/>
<wire from="(480,220)" to="(690,220)"/>
<wire from="(610,320)" to="(690,320)"/>
<wire from="(400,500)" to="(430,500)"/>
<wire from="(340,440)" to="(600,440)"/>
<wire from="(110,330)" to="(320,330)"/>
<wire from="(660,340)" to="(690,340)"/>
<wire from="(480,180)" to="(500,180)"/>
<wire from="(310,520)" to="(320,520)"/>
<wire from="(110,320)" to="(330,320)"/>
<wire from="(410,200)" to="(410,210)"/>
<wire from="(370,510)" to="(380,510)"/>
<wire from="(110,340)" to="(310,340)"/>
<wire from="(400,500)" to="(400,570)"/>
<wire from="(410,230)" to="(450,230)"/>
<wire from="(380,480)" to="(380,510)"/>
<wire from="(320,520)" to="(330,520)"/>
<wire from="(310,500)" to="(340,500)"/>
<wire from="(390,490)" to="(430,490)"/>
<wire from="(290,360)" to="(290,560)"/>
<comp lib="0" loc="(690,380)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="out"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="2" loc="(90,520)" name="Decoder">
<a name="select" val="5"/>
<a name="disabled" val="0"/>
<a name="enable" val="false"/>
</comp>
<comp lib="1" loc="(370,540)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="1" loc="(480,180)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="0" loc="(690,320)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="jmp"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="1" loc="(370,510)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
<a name="negate1" val="true"/>
</comp>
<comp lib="0" loc="(550,380)" name="Pull Resistor"/>
<comp lib="0" loc="(690,280)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="width" val="3"/>
<a name="label" val="op"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="0" loc="(690,200)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="sel src"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="0" loc="(500,410)" name="Constant">
<a name="value" val="0x0"/>
</comp>
<comp lib="2" loc="(540,380)" name="Priority Encoder"/>
<comp lib="1" loc="(480,480)" name="OR Gate"/>
<comp lib="1" loc="(370,480)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="0" loc="(690,240)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="en b"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="1" loc="(480,210)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="0" loc="(690,340)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="hlt"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="0" loc="(50,610)" name="Pin">
<a name="tristate" val="false"/>
<a name="label" val="carry"/>
</comp>
<comp lib="0" loc="(690,220)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="en a"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="0" loc="(80,570)" name="Pin">
<a name="width" val="5"/>
<a name="tristate" val="false"/>
<a name="label" val="ins"/>
</comp>
<comp lib="0" loc="(690,300)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="str"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="1" loc="(480,240)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="0" loc="(690,260)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="en r"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="1" loc="(370,570)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
<a name="negate1" val="true"/>
</comp>
<comp lib="0" loc="(690,360)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="in"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="0" loc="(50,590)" name="Pin">
<a name="tristate" val="false"/>
<a name="label" val="zero"/>
</comp>
</circuit>
<circuit name="alu">
<a name="circuit" val="alu"/>
<a name="clabel" val=""/>
<a name="clabelup" val="east"/>
<a name="clabelfont" val="SansSerif plain 12"/>
<wire from="(390,440)" to="(410,440)"/>
<wire from="(380,450)" to="(380,570)"/>
<wire from="(310,190)" to="(330,190)"/>
<wire from="(320,250)" to="(320,270)"/>
<wire from="(320,270)" to="(350,270)"/>
<wire from="(360,560)" to="(450,560)"/>
<wire from="(400,330)" to="(400,540)"/>
<wire from="(330,190)" to="(350,190)"/>
<wire from="(320,380)" to="(320,420)"/>
<wire from="(330,310)" to="(350,310)"/>
<wire from="(440,220)" to="(450,220)"/>
<wire from="(380,420)" to="(450,420)"/>
<wire from="(320,270)" to="(320,350)"/>
<wire from="(430,250)" to="(430,520)"/>
<wire from="(400,270)" to="(400,290)"/>
<wire from="(410,220)" to="(440,220)"/>
<wire from="(440,390)" to="(440,550)"/>
<wire from="(360,520)" to="(430,520)"/>
<wire from="(320,210)" to="(350,210)"/>
<wire from="(490,330)" to="(490,340)"/>
<wire from="(500,320)" to="(500,330)"/>
<wire from="(330,440)" to="(340,440)"/>
<wire from="(530,340)" to="(530,350)"/>
<wire from="(480,320)" to="(500,320)"/>
<wire from="(370,280)" to="(650,280)"/>
<wire from="(380,390)" to="(440,390)"/>
<wire from="(370,220)" to="(370,230)"/>
<wire from="(410,220)" to="(410,260)"/>
<wire from="(330,190)" to="(330,250)"/>
<wire from="(410,410)" to="(410,440)"/>
<wire from="(380,380)" to="(380,390)"/>
<wire from="(340,600)" to="(340,610)"/>
<wire from="(320,350)" to="(320,380)"/>
<wire from="(320,380)" to="(340,380)"/>
<wire from="(530,370)" to="(530,390)"/>
<wire from="(370,230)" to="(640,230)"/>
<wire from="(330,360)" to="(340,360)"/>
<wire from="(330,250)" to="(330,310)"/>
<wire from="(530,340)" to="(640,340)"/>
<wire from="(480,330)" to="(490,330)"/>
<wire from="(360,550)" to="(440,550)"/>
<wire from="(410,370)" to="(410,410)"/>
<wire from="(360,570)" to="(380,570)"/>
<wire from="(490,340)" to="(500,340)"/>
<wire from="(360,540)" to="(400,540)"/>
<wire from="(310,250)" to="(320,250)"/>
<wire from="(320,420)" to="(340,420)"/>
<wire from="(330,400)" to="(330,440)"/>
<wire from="(420,290)" to="(420,530)"/>
<wire from="(440,220)" to="(440,340)"/>
<wire from="(480,310)" to="(500,310)"/>
<wire from="(330,360)" to="(330,400)"/>
<wire from="(310,330)" to="(350,330)"/>
<wire from="(400,210)" to="(400,250)"/>
<wire from="(390,370)" to="(410,370)"/>
<wire from="(330,400)" to="(340,400)"/>
<wire from="(300,610)" to="(340,610)"/>
<wire from="(530,390)" to="(650,390)"/>
<wire from="(320,210)" to="(320,250)"/>
<wire from="(410,260)" to="(410,320)"/>
<wire from="(410,320)" to="(410,370)"/>
<wire from="(400,250)" to="(430,250)"/>
<wire from="(400,290)" to="(420,290)"/>
<wire from="(360,530)" to="(420,530)"/>
<wire from="(650,280)" to="(650,390)"/>
<wire from="(410,200)" to="(410,220)"/>
<wire from="(440,340)" to="(460,340)"/>
<wire from="(640,230)" to="(640,340)"/>
<wire from="(480,300)" to="(500,300)"/>
<wire from="(330,310)" to="(330,360)"/>
<wire from="(290,350)" to="(320,350)"/>
<wire from="(560,320)" to="(600,320)"/>
<wire from="(390,410)" to="(410,410)"/>
<wire from="(330,250)" to="(350,250)"/>
<wire from="(450,420)" to="(450,560)"/>
<wire from="(290,340)" to="(290,350)"/>
<comp lib="1" loc="(370,440)" name="NOT Gate">
<a name="width" val="4"/>
</comp>
<comp lib="0" loc="(290,340)" name="Splitter">
<a name="fanout" val="1"/>
<a name="incoming" val="4"/>
<a name="bit1" val="0"/>
<a name="bit2" val="none"/>
<a name="bit3" val="none"/>
</comp>
<comp lib="1" loc="(560,320)" name="NOR Gate">
<a name="inputs" val="4"/>
</comp>
<comp lib="0" loc="(600,320)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="zero out"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="1" loc="(560,360)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="0" loc="(310,190)" name="Pin">
<a name="width" val="4"/>
<a name="tristate" val="false"/>
<a name="label" val="a"/>
</comp>
<comp lib="0" loc="(310,250)" name="Pin">
<a name="width" val="4"/>
<a name="tristate" val="false"/>
<a name="label" val="b"/>
</comp>
<comp lib="1" loc="(410,200)" name="Controlled Buffer">
<a name="width" val="4"/>
</comp>
<comp lib="1" loc="(390,440)" name="Controlled Buffer">
<a name="width" val="4"/>
</comp>
<comp lib="1" loc="(410,260)" name="Controlled Buffer">
<a name="width" val="4"/>
</comp>
<comp lib="1" loc="(370,410)" name="AND Gate">
<a name="width" val="4"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="1" loc="(410,320)" name="Controlled Buffer">
<a name="width" val="4"/>
</comp>
<comp lib="1" loc="(390,410)" name="Controlled Buffer">
<a name="width" val="4"/>
</comp>
<comp lib="0" loc="(450,220)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="width" val="4"/>
<a name="label" val="r"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="1" loc="(390,370)" name="Controlled Buffer">
<a name="width" val="4"/>
</comp>
<comp lib="3" loc="(390,320)" name="Shifter">
<a name="width" val="4"/>
</comp>
<comp lib="3" loc="(390,260)" name="Subtractor">
<a name="width" val="4"/>
</comp>
<comp lib="0" loc="(560,360)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="carry out"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="2" loc="(340,600)" name="Decoder">
<a name="select" val="3"/>
<a name="disabled" val="0"/>
<a name="enable" val="false"/>
</comp>
<comp lib="0" loc="(460,340)" name="Splitter">
<a name="fanout" val="4"/>
<a name="incoming" val="4"/>
</comp>
<comp lib="0" loc="(300,610)" name="Pin">
<a name="width" val="3"/>
<a name="tristate" val="false"/>
<a name="label" val="op"/>
</comp>
<comp lib="3" loc="(390,200)" name="Adder">
<a name="width" val="4"/>
</comp>
<comp lib="1" loc="(370,370)" name="OR Gate">
<a name="width" val="4"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
</circuit>
<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="(250,300)" to="(370,300)"/>
<wire from="(400,240)" to="(400,300)"/>
<wire from="(400,330)" to="(440,330)"/>
<wire from="(220,490)" to="(230,490)"/>
<wire from="(200,570)" to="(440,570)"/>
<wire from="(360,330)" to="(370,330)"/>
<wire from="(240,550)" to="(350,550)"/>
<wire from="(240,490)" to="(240,550)"/>
<wire from="(350,320)" to="(350,550)"/>
<wire from="(440,330)" to="(440,570)"/>
<wire from="(460,310)" to="(460,540)"/>
<wire from="(310,450)" to="(330,450)"/>
<wire from="(400,320)" to="(450,320)"/>
<wire from="(90,240)" to="(400,240)"/>
<wire from="(450,320)" to="(450,520)"/>
<wire from="(400,310)" to="(460,310)"/>
<wire from="(260,490)" to="(260,500)"/>
<wire from="(230,600)" to="(540,600)"/>
<wire from="(130,450)" to="(170,450)"/>
<wire from="(130,450)" to="(130,540)"/>
<wire from="(290,320)" to="(350,320)"/>
<wire from="(250,500)" to="(260,500)"/>
<wire from="(540,320)" to="(540,600)"/>
<wire from="(200,500)" to="(200,570)"/>
<wire from="(130,540)" to="(460,540)"/>
<wire from="(230,490)" to="(230,600)"/>
<wire from="(360,330)" to="(360,340)"/>
<wire from="(200,500)" to="(220,500)"/>
<wire from="(90,240)" to="(90,300)"/>
<wire from="(140,470)" to="(140,520)"/>
<wire from="(290,340)" to="(360,340)"/>
<wire from="(200,490)" to="(200,500)"/>
<wire from="(140,470)" to="(170,470)"/>
<wire from="(400,340)" to="(490,340)"/>
<wire from="(90,300)" to="(110,300)"/>
<wire from="(330,310)" to="(330,450)"/>
<wire from="(350,320)" to="(370,320)"/>
<wire from="(140,520)" to="(450,520)"/>
<wire from="(330,310)" to="(370,310)"/>
<comp lib="1" loc="(540,320)" name="NOT Gate"/>
<comp lib="4" loc="(310,450)" name="RAM">
<a name="dataWidth" val="4"/>
<a name="bus" val="separate"/>
</comp>
<comp lib="0" loc="(290,340)" name="Pin">
<a name="tristate" val="false"/>
</comp>
<comp lib="0" loc="(290,320)" name="Clock"/>
<comp loc="(400,300)" name="cpu"/>
<comp lib="4" loc="(250,300)" name="ROM">
<a name="dataWidth" val="13"/>
<a name="contents">addr/data: 8 13
0
</a>
</comp>
<comp lib="0" loc="(490,340)" name="Splitter"/>
<comp lib="1" loc="(250,500)" name="NOT Gate"/>
</circuit>
</project>