commit 39719314755e79b7058fba07f85d5f93de15489b
parent 75f8c2c89417874ba4a65e32d81e210d8e3e9988
Author: Paul Longtine <paul@nanner.co>
Date: Tue, 21 Dec 2021 22:26:32 -0500
Modified behavior of `LUI` to AND over OR operation if the last instruction was
not `LLI` as such to enable the safe use of `LUI`
With this change, the size of the typing_test program was able to shrink by 8
bytes (output size)
Diffstat:
3 files changed, 1844 insertions(+), 1493 deletions(-)
diff --git a/CPU/CPU.circ b/CPU/CPU.circ
@@ -7,7 +7,13 @@
<a name="value" val="0x0"/>
</tool>
</lib>
- <lib desc="#Gates" name="1"/>
+ <lib desc="#Gates" name="1">
+ <tool name="AND Gate">
+ <a name="facing" val="south"/>
+ <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">
@@ -188,23 +194,6 @@
<wire from="(210,110)" to="(210,230)"/>
<wire from="(210,230)" to="(210,350)"/>
<wire from="(350,440)" to="(480,440)"/>
- <comp loc="(200,90)" name="STK"/>
- <comp loc="(280,150)" name="GPR"/>
- <comp lib="0" loc="(290,340)" name="Constant">
- <a name="facing" val="north"/>
- </comp>
- <comp lib="0" loc="(480,320)" name="Pin">
- <a name="facing" val="west"/>
- <a name="output" val="true"/>
- <a name="label" val="IO ACTIVE"/>
- <a name="labelloc" val="east"/>
- </comp>
- <comp lib="1" loc="(270,360)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp loc="(160,210)" name="PC"/>
- <comp lib="6" loc="(290,239)" name="Text"/>
<comp lib="0" loc="(480,420)" name="Pin">
<a name="facing" val="west"/>
<a name="tristate" val="false"/>
@@ -212,16 +201,42 @@
<a name="label" val="CLK"/>
<a name="labelloc" val="east"/>
</comp>
+ <comp lib="2" loc="(290,80)" name="Multiplexer">
+ <a name="select" val="2"/>
+ <a name="width" val="8"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="2" loc="(360,220)" name="Multiplexer">
+ <a name="facing" val="north"/>
+ <a name="selloc" val="tr"/>
+ <a name="width" val="8"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="1" loc="(400,240)" name="AND Gate">
+ <a name="facing" val="west"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ <a name="negate0" val="true"/>
+ </comp>
<comp loc="(260,130)" name="ALU"/>
- <comp lib="0" loc="(420,400)" name="Pin">
+ <comp lib="2" loc="(170,280)" name="Multiplexer">
+ <a name="facing" val="south"/>
+ <a name="selloc" val="tr"/>
+ <a name="width" val="8"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(420,360)" name="Pin">
<a name="facing" val="west"/>
- <a name="output" val="true"/>
<a name="width" val="8"/>
<a name="tristate" val="false"/>
<a name="pull" val="down"/>
- <a name="label" val="OUT"/>
+ <a name="label" val="IN"/>
<a name="labelloc" val="east"/>
</comp>
+ <comp loc="(200,90)" name="STK"/>
+ <comp lib="0" loc="(290,340)" name="Constant">
+ <a name="facing" val="north"/>
+ </comp>
<comp lib="0" loc="(480,340)" name="Pin">
<a name="facing" val="west"/>
<a name="tristate" val="false"/>
@@ -229,61 +244,52 @@
<a name="label" val="IO ENABLE"/>
<a name="labelloc" val="east"/>
</comp>
- <comp lib="0" loc="(420,360)" name="Pin">
+ <comp loc="(230,170)" name="ISD"/>
+ <comp lib="1" loc="(270,360)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="0" loc="(480,320)" name="Pin">
<a name="facing" val="west"/>
- <a name="width" val="8"/>
- <a name="tristate" val="false"/>
- <a name="pull" val="down"/>
- <a name="label" val="IN"/>
+ <a name="output" val="true"/>
+ <a name="label" val="IO ACTIVE"/>
<a name="labelloc" val="east"/>
</comp>
- <comp lib="0" loc="(480,440)" name="Pin">
+ <comp lib="0" loc="(420,380)" name="Pin">
<a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="width" val="8"/>
<a name="tristate" val="false"/>
<a name="pull" val="down"/>
- <a name="label" val="RST"/>
+ <a name="label" val="ADDR"/>
<a name="labelloc" val="east"/>
</comp>
- <comp lib="6" loc="(303,244)" name="Text">
- <a name="text" val="TISCv1.3"/>
- <a name="font" val="Dialog plain 14"/>
- </comp>
- <comp lib="1" loc="(400,240)" name="AND Gate">
+ <comp lib="0" loc="(420,400)" name="Pin">
<a name="facing" val="west"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- <a name="negate0" val="true"/>
- </comp>
- <comp lib="2" loc="(290,80)" name="Multiplexer">
- <a name="select" val="2"/>
- <a name="width" val="8"/>
- <a name="enable" val="false"/>
- </comp>
- <comp lib="2" loc="(170,280)" name="Multiplexer">
- <a name="facing" val="south"/>
- <a name="selloc" val="tr"/>
+ <a name="output" val="true"/>
<a name="width" val="8"/>
- <a name="enable" val="false"/>
+ <a name="tristate" val="false"/>
+ <a name="pull" val="down"/>
+ <a name="label" val="OUT"/>
+ <a name="labelloc" val="east"/>
</comp>
<comp lib="4" loc="(380,300)" name="RAM">
<a name="bus" val="separate"/>
</comp>
- <comp lib="2" loc="(360,220)" name="Multiplexer">
- <a name="facing" val="north"/>
- <a name="selloc" val="tr"/>
- <a name="width" val="8"/>
- <a name="enable" val="false"/>
+ <comp lib="6" loc="(290,239)" name="Text"/>
+ <comp lib="6" loc="(303,244)" name="Text">
+ <a name="text" val="TISCv1.3"/>
+ <a name="font" val="Dialog plain 14"/>
</comp>
- <comp lib="0" loc="(420,380)" name="Pin">
+ <comp loc="(160,210)" name="PC"/>
+ <comp lib="0" loc="(480,440)" name="Pin">
<a name="facing" val="west"/>
- <a name="output" val="true"/>
- <a name="width" val="8"/>
<a name="tristate" val="false"/>
<a name="pull" val="down"/>
- <a name="label" val="ADDR"/>
+ <a name="label" val="RST"/>
<a name="labelloc" val="east"/>
</comp>
- <comp loc="(230,170)" name="ISD"/>
+ <comp loc="(280,150)" name="GPR"/>
</circuit>
<circuit name="ALU">
<a name="circuit" val="ALU"/>
@@ -653,63 +659,103 @@
<wire from="(770,200)" to="(780,200)"/>
<wire from="(530,280)" to="(540,280)"/>
<wire from="(870,100)" to="(870,150)"/>
- <comp lib="0" loc="(130,480)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="a4"/>
- </comp>
- <comp lib="1" loc="(330,760)" name="AND Gate">
+ <comp lib="1" loc="(280,650)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
- </comp>
- <comp lib="0" loc="(510,390)" name="Pin">
- <a name="width" val="3"/>
- <a name="tristate" val="false"/>
</comp>
- <comp lib="0" loc="(550,60)" name="Tunnel">
+ <comp lib="0" loc="(550,70)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="b1"/>
+ <a name="label" val="b2"/>
</comp>
- <comp lib="1" loc="(330,580)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
+ <comp lib="6" loc="(476,260)" name="Text">
+ <a name="text" val="Output"/>
</comp>
- <comp lib="1" loc="(300,780)" name="AND Gate">
+ <comp lib="1" loc="(190,490)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
</comp>
- <comp lib="1" loc="(330,400)" name="AND Gate">
+ <comp lib="1" loc="(310,150)" name="OR Gate">
+ <a name="facing" val="west"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
</comp>
- <comp lib="1" loc="(310,240)" name="OR Gate">
+ <comp lib="0" loc="(850,150)" name="Splitter">
<a name="facing" val="west"/>
+ <a name="fanout" val="3"/>
+ <a name="incoming" val="3"/>
+ <a name="appear" val="right"/>
+ </comp>
+ <comp lib="0" loc="(390,370)" name="Tunnel">
+ <a name="label" val="o3"/>
+ </comp>
+ <comp lib="0" loc="(390,640)" name="Tunnel">
+ <a name="label" val="o6"/>
+ </comp>
+ <comp lib="0" loc="(710,320)" name="Splitter">
+ <a name="fanout" val="8"/>
+ <a name="incoming" val="8"/>
+ </comp>
+ <comp lib="0" loc="(780,180)" name="Constant">
+ <a name="width" val="8"/>
+ <a name="value" val="0x0"/>
+ </comp>
+ <comp lib="1" loc="(300,180)" name="OR Gate">
+ <a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(340,460)" name="XNOR Gate">
+ <comp lib="1" loc="(330,580)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
+ <a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(390,730)" name="Tunnel">
- <a name="label" val="o7"/>
+ <comp lib="0" loc="(670,270)" name="Tunnel">
+ <a name="label" val="o3"/>
</comp>
- <comp lib="1" loc="(190,460)" name="XOR Gate">
+ <comp lib="2" loc="(820,90)" name="Multiplexer">
+ <a name="width" val="8"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(390,190)" name="Tunnel">
+ <a name="label" val="o1"/>
+ </comp>
+ <comp lib="1" loc="(310,690)" name="OR Gate">
+ <a name="facing" val="west"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(670,270)" name="Tunnel">
- <a name="label" val="o3"/>
+ <comp lib="4" loc="(670,550)" name="ROM">
+ <a name="addrWidth" val="4"/>
+ <a name="dataWidth" val="7"/>
+ <a name="contents">addr/data: 4 7
+3 7 9 a 6 4 30 50
+</a>
+ </comp>
+ <comp lib="0" loc="(640,440)" name="Constant"/>
+ <comp lib="6" loc="(472,443)" name="Text">
+ <a name="text" val="ALU STATE"/>
+ </comp>
+ <comp lib="0" loc="(670,250)" name="Tunnel">
+ <a name="label" val="o1"/>
+ </comp>
+ <comp lib="0" loc="(130,660)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="a6"/>
+ </comp>
+ <comp lib="0" loc="(570,40)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="width" val="8"/>
+ <a name="tristate" val="false"/>
</comp>
<comp lib="0" loc="(550,50)" name="Tunnel">
<a name="facing" val="east"/>
<a name="label" val="b0"/>
</comp>
- <comp lib="2" loc="(540,280)" name="Multiplexer">
- <a name="facing" val="west"/>
+ <comp lib="0" loc="(650,320)" name="Splitter">
+ <a name="fanout" val="8"/>
+ <a name="incoming" val="8"/>
+ </comp>
+ <comp lib="2" loc="(810,190)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
@@ -717,770 +763,730 @@
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(340,100)" name="XNOR Gate">
+ <comp lib="1" loc="(300,690)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
+ <a name="negate1" val="true"/>
</comp>
- <comp lib="1" loc="(190,490)" name="XOR Gate">
+ <comp lib="1" loc="(270,140)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
+ <a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(550,120)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="b7"/>
+ <comp lib="1" loc="(830,280)" name="OR Gate">
+ <a name="size" val="70"/>
+ <a name="inputs" val="8"/>
</comp>
- <comp lib="0" loc="(780,380)" name="Tunnel">
+ <comp lib="3" loc="(930,70)" name="BitAdder"/>
+ <comp lib="1" loc="(300,450)" name="OR Gate">
<a name="facing" val="south"/>
- <a name="label" val="CI"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="2" loc="(570,400)" name="Multiplexer">
- <a name="width" val="3"/>
- <a name="enable" val="false"/>
+ <comp lib="1" loc="(300,330)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ <a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(640,440)" name="Constant"/>
- <comp lib="0" loc="(670,280)" name="Tunnel">
- <a name="label" val="o4"/>
+ <comp lib="0" loc="(680,100)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="a5"/>
</comp>
- <comp lib="6" loc="(481,532)" name="Text">
- <a name="text" val="DYN OP"/>
+ <comp lib="0" loc="(130,720)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="b7"/>
</comp>
- <comp lib="0" loc="(130,570)" name="Tunnel">
+ <comp lib="0" loc="(550,100)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="a5"/>
+ <a name="label" val="b5"/>
</comp>
- <comp lib="1" loc="(300,270)" name="OR Gate">
- <a name="facing" val="south"/>
+ <comp lib="1" loc="(280,740)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="2" loc="(320,890)" name="Multiplexer">
- <a name="facing" val="south"/>
- <a name="selloc" val="tr"/>
- <a name="select" val="2"/>
- <a name="enable" val="false"/>
- </comp>
- <comp lib="0" loc="(390,370)" name="Tunnel">
- <a name="label" val="o3"/>
+ <comp lib="0" loc="(550,20)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="8"/>
+ <a name="label" val="B"/>
</comp>
- <comp lib="1" loc="(240,670)" name="AND Gate">
+ <comp lib="1" loc="(310,330)" name="OR Gate">
+ <a name="facing" val="west"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(300,510)" name="AND Gate">
+ <comp lib="0" loc="(130,90)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="b0"/>
+ </comp>
+ <comp lib="1" loc="(280,380)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
- </comp>
- <comp lib="0" loc="(390,190)" name="Tunnel">
- <a name="label" val="o1"/>
</comp>
- <comp lib="0" loc="(180,70)" name="Tunnel">
+ <comp lib="1" loc="(300,720)" name="OR Gate">
<a name="facing" val="south"/>
- <a name="label" val="!B"/>
- </comp>
- <comp lib="0" loc="(550,90)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="b4"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(650,320)" name="Splitter">
- <a name="fanout" val="8"/>
- <a name="incoming" val="8"/>
+ <comp lib="3" loc="(930,160)" name="Shifter">
+ <a name="shift" val="lr"/>
</comp>
- <comp lib="0" loc="(670,260)" name="Tunnel">
- <a name="label" val="o2"/>
+ <comp lib="4" loc="(730,400)" name="ROM">
+ <a name="addrWidth" val="3"/>
+ <a name="dataWidth" val="6"/>
+ <a name="contents">addr/data: 3 6
+8 3b 4 0 2 38 7 12
+</a>
</comp>
- <comp lib="1" loc="(190,280)" name="XOR Gate">
+ <comp lib="1" loc="(280,200)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="6" loc="(602,74)" name="Text">
- <a name="text" val="Input B"/>
+ <comp lib="0" loc="(750,380)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="!B"/>
</comp>
- <comp lib="0" loc="(670,550)" name="Splitter">
- <a name="fanout" val="7"/>
- <a name="incoming" val="7"/>
+ <comp lib="0" loc="(680,60)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="a1"/>
</comp>
- <comp lib="1" loc="(300,360)" name="OR Gate">
+ <comp lib="1" loc="(300,270)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(780,100)" name="Tunnel">
+ <comp lib="0" loc="(680,80)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="width" val="8"/>
- <a name="label" val="A"/>
- </comp>
- <comp lib="0" loc="(710,320)" name="Splitter">
- <a name="fanout" val="8"/>
- <a name="incoming" val="8"/>
+ <a name="label" val="a3"/>
</comp>
- <comp lib="1" loc="(310,780)" name="OR Gate">
- <a name="facing" val="west"/>
+ <comp lib="1" loc="(190,640)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(680,90)" name="Tunnel">
+ <comp lib="0" loc="(130,300)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="a4"/>
- </comp>
- <comp lib="6" loc="(355,906)" name="Text">
- <a name="text" val="FLAG"/>
+ <a name="label" val="a2"/>
</comp>
- <comp lib="0" loc="(320,890)" name="Pin">
- <a name="facing" val="north"/>
- <a name="output" val="true"/>
- <a name="tristate" val="false"/>
- <a name="labelloc" val="east"/>
+ <comp lib="1" loc="(240,400)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
<comp lib="0" loc="(700,40)" name="Splitter">
<a name="facing" val="west"/>
<a name="fanout" val="8"/>
<a name="incoming" val="8"/>
</comp>
- <comp lib="1" loc="(300,450)" name="OR Gate">
- <a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="0" loc="(670,250)" name="Tunnel">
- <a name="label" val="o1"/>
+ <comp lib="0" loc="(320,890)" name="Pin">
+ <a name="facing" val="north"/>
+ <a name="output" val="true"/>
+ <a name="tristate" val="false"/>
+ <a name="labelloc" val="east"/>
</comp>
- <comp lib="1" loc="(560,300)" name="AND Gate">
+ <comp lib="1" loc="(750,490)" name="OR Gate">
<a name="facing" val="north"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(770,200)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="width" val="8"/>
- <a name="label" val="B"/>
- </comp>
- <comp lib="1" loc="(340,730)" name="XNOR Gate">
+ <comp lib="1" loc="(250,280)" name="NOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(680,100)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="a5"/>
- </comp>
- <comp lib="1" loc="(250,370)" name="NOR Gate">
+ <comp lib="1" loc="(190,460)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(130,360)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="b3"/>
- </comp>
- <comp lib="6" loc="(476,260)" name="Text">
- <a name="text" val="Output"/>
+ <comp lib="0" loc="(220,70)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="OR"/>
</comp>
- <comp lib="1" loc="(330,490)" name="AND Gate">
+ <comp lib="1" loc="(330,670)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
<a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(680,50)" name="Tunnel">
+ <comp lib="0" loc="(130,210)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="a0"/>
+ <a name="label" val="a1"/>
</comp>
- <comp lib="1" loc="(270,680)" name="AND Gate">
+ <comp lib="1" loc="(300,240)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
<a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(680,20)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="width" val="8"/>
- <a name="label" val="A"/>
- </comp>
- <comp lib="4" loc="(670,550)" name="ROM">
- <a name="addrWidth" val="4"/>
- <a name="dataWidth" val="7"/>
- <a name="contents">addr/data: 4 7
-3 7 9 a 6 4 30 50
-</a>
- </comp>
- <comp lib="0" loc="(500,550)" name="Pin">
- <a name="width" val="4"/>
- <a name="tristate" val="false"/>
- </comp>
- <comp lib="0" loc="(670,290)" name="Tunnel">
- <a name="label" val="o5"/>
- </comp>
- <comp lib="1" loc="(300,720)" name="OR Gate">
- <a name="facing" val="south"/>
+ <comp lib="1" loc="(190,760)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(280,380)" name="OR Gate">
+ <comp lib="1" loc="(330,760)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
+ <a name="negate1" val="true"/>
</comp>
- <comp lib="1" loc="(270,140)" name="AND Gate">
+ <comp lib="1" loc="(330,310)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
<a name="negate1" val="true"/>
</comp>
- <comp lib="1" loc="(310,600)" name="OR Gate">
- <a name="facing" val="west"/>
+ <comp lib="0" loc="(260,70)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="CC"/>
+ </comp>
+ <comp lib="1" loc="(340,370)" name="XNOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(130,540)" name="Tunnel">
+ <comp lib="0" loc="(550,80)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="b5"/>
+ <a name="label" val="b3"/>
</comp>
- <comp lib="1" loc="(240,400)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="0" loc="(680,90)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="a4"/>
</comp>
- <comp lib="1" loc="(190,400)" name="XOR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="0" loc="(570,40)" name="Splitter">
+ <a name="facing" val="west"/>
+ <a name="fanout" val="8"/>
+ <a name="incoming" val="8"/>
</comp>
- <comp lib="1" loc="(280,740)" name="OR Gate">
+ <comp lib="1" loc="(330,130)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
+ <a name="negate1" val="true"/>
</comp>
- <comp lib="1" loc="(240,310)" name="AND Gate">
+ <comp lib="1" loc="(310,600)" name="OR Gate">
+ <a name="facing" val="west"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(130,120)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="a0"/>
- </comp>
- <comp lib="0" loc="(670,240)" name="Tunnel">
- <a name="label" val="o0"/>
- </comp>
- <comp lib="6" loc="(472,443)" name="Text">
- <a name="text" val="ALU STATE"/>
- </comp>
- <comp lib="0" loc="(340,850)" name="Constant">
- <a name="facing" val="south"/>
- <a name="value" val="0x0"/>
- </comp>
<comp lib="0" loc="(730,400)" name="Splitter">
<a name="facing" val="north"/>
<a name="fanout" val="6"/>
<a name="incoming" val="6"/>
<a name="appear" val="right"/>
</comp>
- <comp lib="1" loc="(250,550)" name="NOR Gate">
+ <comp lib="1" loc="(340,730)" name="XNOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(130,720)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="b7"/>
- </comp>
- <comp lib="0" loc="(680,70)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="a2"/>
- </comp>
- <comp lib="1" loc="(270,320)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
+ <comp lib="0" loc="(670,260)" name="Tunnel">
+ <a name="label" val="o2"/>
</comp>
- <comp lib="0" loc="(300,70)" name="Tunnel">
+ <comp lib="0" loc="(780,380)" name="Tunnel">
<a name="facing" val="south"/>
<a name="label" val="CI"/>
</comp>
- <comp lib="0" loc="(130,660)" name="Tunnel">
+ <comp lib="0" loc="(680,110)" name="Tunnel">
<a name="facing" val="east"/>
<a name="label" val="a6"/>
</comp>
- <comp lib="1" loc="(190,670)" name="XOR Gate">
+ <comp lib="6" loc="(602,74)" name="Text">
+ <a name="text" val="Input B"/>
+ </comp>
+ <comp lib="1" loc="(190,550)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(130,450)" name="Tunnel">
+ <comp lib="0" loc="(550,120)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="b4"/>
+ <a name="label" val="b7"/>
</comp>
- <comp lib="1" loc="(270,410)" name="AND Gate">
+ <comp lib="0" loc="(130,540)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="b5"/>
+ </comp>
+ <comp lib="1" loc="(240,760)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
</comp>
- <comp lib="1" loc="(830,280)" name="OR Gate">
- <a name="size" val="70"/>
- <a name="inputs" val="8"/>
- </comp>
- <comp lib="1" loc="(250,190)" name="NOR Gate">
+ <comp lib="1" loc="(190,730)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(310,510)" name="OR Gate">
- <a name="facing" val="west"/>
+ <comp lib="0" loc="(130,180)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="b1"/>
+ </comp>
+ <comp lib="0" loc="(390,460)" name="Tunnel">
+ <a name="label" val="o4"/>
+ </comp>
+ <comp lib="1" loc="(190,370)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(330,130)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
- </comp>
- <comp lib="0" loc="(790,80)" name="Constant">
- <a name="width" val="8"/>
- <a name="value" val="0x0"/>
- </comp>
- <comp lib="0" loc="(130,750)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="a7"/>
+ <comp lib="0" loc="(390,550)" name="Tunnel">
+ <a name="label" val="o5"/>
</comp>
- <comp lib="1" loc="(190,730)" name="XOR Gate">
+ <comp lib="1" loc="(310,780)" name="OR Gate">
+ <a name="facing" val="west"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(300,540)" name="OR Gate">
+ <comp lib="1" loc="(300,630)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(130,270)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="b2"/>
+ <comp lib="1" loc="(340,460)" name="XNOR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(570,40)" name="Splitter">
- <a name="facing" val="west"/>
- <a name="fanout" val="8"/>
- <a name="incoming" val="8"/>
+ <comp lib="1" loc="(300,780)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ <a name="negate1" val="true"/>
</comp>
<comp lib="6" loc="(498,373)" name="Text">
<a name="text" val="STATIC OPCODE"/>
</comp>
- <comp lib="0" loc="(550,100)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="b5"/>
- </comp>
- <comp lib="0" loc="(740,380)" name="Tunnel">
- <a name="facing" val="south"/>
- <a name="label" val="!A"/>
- </comp>
- <comp lib="0" loc="(390,100)" name="Tunnel">
- <a name="label" val="o0"/>
- </comp>
- <comp lib="1" loc="(190,640)" name="XOR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="1" loc="(300,330)" name="AND Gate">
+ <comp lib="1" loc="(270,410)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
<a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(680,80)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="a3"/>
- </comp>
<comp lib="0" loc="(810,200)" name="Splitter">
<a name="fanout" val="8"/>
<a name="incoming" val="8"/>
</comp>
- <comp lib="1" loc="(190,550)" name="XOR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="3" loc="(1060,80)" name="Comparator">
+ <a name="width" val="4"/>
</comp>
- <comp lib="0" loc="(130,210)" name="Tunnel">
+ <comp lib="0" loc="(130,120)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="a1"/>
+ <a name="label" val="a0"/>
</comp>
- <comp lib="1" loc="(300,420)" name="AND Gate">
+ <comp lib="1" loc="(270,770)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
<a name="negate1" val="true"/>
</comp>
- <comp lib="6" loc="(880,461)" name="Text">
- <a name="text" val="OPCODES: 000: OR, 001: AND, 010: XOR, 011: ADD, 100: CIN, 101: NAND, 110: XNOR, 111: SUB"/>
- </comp>
- <comp lib="1" loc="(240,580)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="1" loc="(190,310)" name="XOR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="1" loc="(240,760)" name="AND Gate">
+ <comp lib="1" loc="(190,580)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(330,670)" name="AND Gate">
+ <comp lib="1" loc="(340,550)" name="XNOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(220,70)" name="Tunnel">
+ <comp lib="0" loc="(740,380)" name="Tunnel">
<a name="facing" val="south"/>
- <a name="label" val="OR"/>
+ <a name="label" val="!A"/>
</comp>
- <comp lib="1" loc="(310,690)" name="OR Gate">
- <a name="facing" val="west"/>
+ <comp lib="1" loc="(240,490)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(280,650)" name="OR Gate">
+ <comp lib="1" loc="(250,190)" name="NOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(130,300)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="a2"/>
- </comp>
- <comp lib="2" loc="(820,90)" name="Multiplexer">
- <a name="width" val="8"/>
- <a name="enable" val="false"/>
- </comp>
- <comp lib="1" loc="(250,100)" name="NOR Gate">
+ <comp lib="1" loc="(250,460)" name="NOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(670,310)" name="Tunnel">
- <a name="label" val="o7"/>
- </comp>
- <comp lib="1" loc="(300,690)" name="AND Gate">
+ <comp lib="1" loc="(330,220)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
<a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(390,460)" name="Tunnel">
- <a name="label" val="o4"/>
- </comp>
- <comp lib="1" loc="(190,220)" name="XOR Gate">
+ <comp lib="1" loc="(270,500)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
+ <a name="negate1" val="true"/>
</comp>
- <comp lib="1" loc="(340,640)" name="XNOR Gate">
+ <comp lib="1" loc="(250,730)" name="NOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="6" loc="(736,75)" name="Text">
- <a name="text" val="Input A"/>
+ <comp lib="0" loc="(670,300)" name="Tunnel">
+ <a name="label" val="o6"/>
</comp>
- <comp lib="3" loc="(930,70)" name="BitAdder"/>
- <comp lib="0" loc="(340,70)" name="Tunnel">
- <a name="facing" val="south"/>
- <a name="label" val="FC"/>
+ <comp lib="0" loc="(390,280)" name="Tunnel">
+ <a name="label" val="o2"/>
</comp>
- <comp lib="0" loc="(490,460)" name="Pin">
- <a name="tristate" val="false"/>
+ <comp lib="0" loc="(680,20)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="width" val="8"/>
+ <a name="label" val="A"/>
</comp>
- <comp lib="1" loc="(300,180)" name="OR Gate">
- <a name="facing" val="south"/>
+ <comp lib="0" loc="(130,270)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="b2"/>
+ </comp>
+ <comp lib="3" loc="(1000,90)" name="BitAdder"/>
+ <comp lib="1" loc="(280,560)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(550,110)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="b6"/>
- </comp>
- <comp lib="3" loc="(930,110)" name="Shifter"/>
- <comp lib="1" loc="(270,770)" name="AND Gate">
+ <comp lib="1" loc="(340,190)" name="XNOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(680,60)" name="Tunnel">
+ <comp lib="0" loc="(130,480)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="a1"/>
+ <a name="label" val="a4"/>
</comp>
- <comp lib="0" loc="(330,850)" name="Constant">
+ <comp lib="1" loc="(300,810)" name="OR Gate">
<a name="facing" val="south"/>
- <a name="value" val="0x0"/>
- </comp>
- <comp lib="0" loc="(390,640)" name="Tunnel">
- <a name="label" val="o6"/>
- </comp>
- <comp lib="1" loc="(750,490)" name="OR Gate">
- <a name="facing" val="north"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(770,380)" name="Tunnel">
+ <comp lib="0" loc="(300,70)" name="Tunnel">
<a name="facing" val="south"/>
- <a name="label" val="CC"/>
+ <a name="label" val="CI"/>
</comp>
- <comp lib="1" loc="(250,730)" name="NOR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="2" loc="(320,890)" name="Multiplexer">
+ <a name="facing" val="south"/>
+ <a name="selloc" val="tr"/>
+ <a name="select" val="2"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="1" loc="(270,230)" name="AND Gate">
+ <comp lib="1" loc="(560,300)" name="AND Gate">
+ <a name="facing" val="north"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
</comp>
- <comp lib="1" loc="(330,220)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
+ <comp lib="0" loc="(130,360)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="b3"/>
</comp>
- <comp lib="1" loc="(190,190)" name="XOR Gate">
+ <comp lib="1" loc="(330,490)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
+ <a name="negate1" val="true"/>
</comp>
- <comp lib="3" loc="(1060,80)" name="Comparator">
- <a name="width" val="4"/>
- </comp>
- <comp lib="1" loc="(340,370)" name="XNOR Gate">
+ <comp lib="1" loc="(280,290)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(280,110)" name="OR Gate">
+ <comp lib="1" loc="(310,240)" name="OR Gate">
+ <a name="facing" val="west"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(280,560)" name="OR Gate">
+ <comp lib="1" loc="(240,220)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(300,600)" name="AND Gate">
+ <comp lib="1" loc="(300,510)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
<a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(710,470)" name="Splitter">
- <a name="facing" val="west"/>
- <a name="fanout" val="3"/>
- <a name="incoming" val="3"/>
+ <comp lib="6" loc="(736,75)" name="Text">
+ <a name="text" val="Input A"/>
</comp>
- <comp lib="0" loc="(750,380)" name="Tunnel">
- <a name="facing" val="south"/>
- <a name="label" val="!B"/>
+ <comp lib="0" loc="(510,390)" name="Pin">
+ <a name="width" val="3"/>
+ <a name="tristate" val="false"/>
</comp>
- <comp lib="0" loc="(780,180)" name="Constant">
- <a name="width" val="8"/>
- <a name="value" val="0x0"/>
+ <comp lib="0" loc="(130,390)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="a3"/>
</comp>
- <comp lib="0" loc="(680,120)" name="Tunnel">
+ <comp lib="0" loc="(680,70)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="a7"/>
+ <a name="label" val="a2"/>
</comp>
- <comp lib="0" loc="(550,20)" name="Tunnel">
+ <comp lib="1" loc="(250,100)" name="NOR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="0" loc="(770,200)" name="Tunnel">
<a name="facing" val="east"/>
<a name="width" val="8"/>
<a name="label" val="B"/>
</comp>
- <comp lib="0" loc="(260,70)" name="Tunnel">
- <a name="facing" val="south"/>
- <a name="label" val="CC"/>
+ <comp lib="6" loc="(880,461)" name="Text">
+ <a name="text" val="OPCODES: 000: OR, 001: AND, 010: XOR, 011: ADD, 100: CIN, 101: NAND, 110: XNOR, 111: SUB"/>
</comp>
- <comp lib="0" loc="(680,110)" name="Tunnel">
+ <comp lib="0" loc="(130,750)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="a6"/>
- </comp>
- <comp lib="1" loc="(280,470)" name="OR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <a name="label" val="a7"/>
</comp>
- <comp lib="1" loc="(310,330)" name="OR Gate">
- <a name="facing" val="west"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="0" loc="(130,450)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="b4"/>
</comp>
- <comp lib="0" loc="(760,380)" name="Tunnel">
+ <comp lib="0" loc="(180,70)" name="Tunnel">
<a name="facing" val="south"/>
- <a name="label" val="OR"/>
+ <a name="label" val="!B"/>
</comp>
- <comp lib="1" loc="(310,420)" name="OR Gate">
- <a name="facing" val="west"/>
+ <comp lib="1" loc="(190,100)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(570,40)" name="Pin">
- <a name="facing" val="west"/>
+ <comp lib="0" loc="(790,80)" name="Constant">
<a name="width" val="8"/>
- <a name="tristate" val="false"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="0" loc="(850,150)" name="Splitter">
- <a name="facing" val="west"/>
- <a name="fanout" val="3"/>
- <a name="incoming" val="3"/>
- <a name="appear" val="right"/>
- </comp>
- <comp lib="1" loc="(190,370)" name="XOR Gate">
+ <comp lib="1" loc="(280,110)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(280,290)" name="OR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="0" loc="(790,380)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="FC"/>
</comp>
- <comp lib="1" loc="(330,310)" name="AND Gate">
+ <comp lib="0" loc="(680,50)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="a0"/>
+ </comp>
+ <comp lib="0" loc="(340,70)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="FC"/>
+ </comp>
+ <comp lib="1" loc="(250,550)" name="NOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(130,630)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="b6"/>
+ <comp lib="0" loc="(760,380)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="OR"/>
</comp>
- <comp lib="1" loc="(270,500)" name="AND Gate">
+ <comp lib="1" loc="(190,130)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
</comp>
- <comp lib="1" loc="(310,150)" name="OR Gate">
+ <comp lib="1" loc="(310,510)" name="OR Gate">
<a name="facing" val="west"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(190,130)" name="XOR Gate">
+ <comp lib="1" loc="(300,360)" name="OR Gate">
+ <a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="6" loc="(617,355)" name="Text">
- <a name="text" val="Opcodes"/>
+ <comp lib="0" loc="(390,730)" name="Tunnel">
+ <a name="label" val="o7"/>
</comp>
- <comp lib="1" loc="(300,810)" name="OR Gate">
- <a name="facing" val="south"/>
+ <comp lib="1" loc="(240,310)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(300,240)" name="AND Gate">
+ <comp lib="0" loc="(550,90)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="b4"/>
+ </comp>
+ <comp lib="3" loc="(930,110)" name="Shifter"/>
+ <comp lib="0" loc="(390,100)" name="Tunnel">
+ <a name="label" val="o0"/>
+ </comp>
+ <comp lib="6" loc="(481,532)" name="Text">
+ <a name="text" val="DYN OP"/>
+ </comp>
+ <comp lib="0" loc="(330,850)" name="Constant">
+ <a name="facing" val="south"/>
+ <a name="value" val="0x0"/>
+ </comp>
+ <comp lib="0" loc="(700,40)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="width" val="8"/>
+ <a name="tristate" val="false"/>
+ </comp>
+ <comp lib="0" loc="(680,120)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="a7"/>
+ </comp>
+ <comp lib="1" loc="(270,680)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
<a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(390,280)" name="Tunnel">
- <a name="label" val="o2"/>
+ <comp lib="0" loc="(770,380)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="CC"/>
</comp>
- <comp lib="1" loc="(240,220)" name="AND Gate">
+ <comp lib="0" loc="(550,110)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="b6"/>
+ </comp>
+ <comp lib="1" loc="(190,220)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(190,580)" name="XOR Gate">
+ <comp lib="0" loc="(130,630)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="b6"/>
+ </comp>
+ <comp lib="6" loc="(617,355)" name="Text">
+ <a name="text" val="Opcodes"/>
+ </comp>
+ <comp lib="0" loc="(670,240)" name="Tunnel">
+ <a name="label" val="o0"/>
+ </comp>
+ <comp lib="1" loc="(240,580)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(340,550)" name="XNOR Gate">
+ <comp lib="1" loc="(280,470)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="4" loc="(730,400)" name="ROM">
- <a name="addrWidth" val="3"/>
- <a name="dataWidth" val="6"/>
- <a name="contents">addr/data: 3 6
-8 3b 4 0 2 38 7 12
-</a>
+ <comp lib="0" loc="(710,470)" name="Splitter">
+ <a name="facing" val="west"/>
+ <a name="fanout" val="3"/>
+ <a name="incoming" val="3"/>
</comp>
- <comp lib="1" loc="(250,640)" name="NOR Gate">
+ <comp lib="2" loc="(540,280)" name="Multiplexer">
+ <a name="facing" val="west"/>
+ <a name="width" val="8"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(670,310)" name="Tunnel">
+ <a name="label" val="o7"/>
+ </comp>
+ <comp lib="1" loc="(270,590)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
+ <a name="negate1" val="true"/>
</comp>
<comp lib="0" loc="(710,520)" name="Splitter">
<a name="facing" val="west"/>
<a name="appear" val="center"/>
</comp>
- <comp lib="2" loc="(1010,210)" name="Multiplexer">
- <a name="facing" val="south"/>
- <a name="width" val="8"/>
- <a name="enable" val="false"/>
- </comp>
- <comp lib="3" loc="(1000,90)" name="BitAdder"/>
- <comp lib="0" loc="(130,390)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="a3"/>
+ <comp lib="1" loc="(270,230)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ <a name="negate1" val="true"/>
</comp>
- <comp lib="1" loc="(240,490)" name="AND Gate">
+ <comp lib="1" loc="(190,280)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(190,760)" name="XOR Gate">
+ <comp lib="2" loc="(570,400)" name="Multiplexer">
+ <a name="width" val="3"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(670,550)" name="Splitter">
+ <a name="fanout" val="7"/>
+ <a name="incoming" val="7"/>
+ </comp>
+ <comp lib="1" loc="(340,280)" name="XNOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(670,300)" name="Tunnel">
- <a name="label" val="o6"/>
+ <comp lib="0" loc="(670,280)" name="Tunnel">
+ <a name="label" val="o4"/>
</comp>
- <comp lib="1" loc="(280,200)" name="OR Gate">
+ <comp lib="1" loc="(300,540)" name="OR Gate">
+ <a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(300,150)" name="AND Gate">
+ <comp lib="0" loc="(490,460)" name="Pin">
+ <a name="tristate" val="false"/>
+ </comp>
+ <comp lib="1" loc="(270,320)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
<a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(550,80)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="b3"/>
- </comp>
- <comp lib="1" loc="(250,280)" name="NOR Gate">
+ <comp lib="1" loc="(250,370)" name="NOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="2" loc="(810,190)" name="Multiplexer">
+ <comp lib="0" loc="(530,280)" name="Pin">
+ <a name="output" val="true"/>
<a name="width" val="8"/>
- <a name="enable" val="false"/>
+ <a name="labelloc" val="east"/>
</comp>
- <comp lib="1" loc="(300,630)" name="OR Gate">
+ <comp lib="0" loc="(140,70)" name="Tunnel">
<a name="facing" val="south"/>
+ <a name="label" val="!A"/>
+ </comp>
+ <comp lib="1" loc="(190,310)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(190,100)" name="XOR Gate">
+ <comp lib="1" loc="(310,420)" name="OR Gate">
+ <a name="facing" val="west"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(140,70)" name="Tunnel">
- <a name="facing" val="south"/>
- <a name="label" val="!A"/>
+ <comp lib="1" loc="(250,640)" name="NOR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(550,70)" name="Tunnel">
+ <comp lib="0" loc="(550,60)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="b2"/>
+ <a name="label" val="b1"/>
</comp>
- <comp lib="1" loc="(340,280)" name="XNOR Gate">
+ <comp lib="1" loc="(330,400)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
+ <a name="negate1" val="true"/>
</comp>
- <comp lib="1" loc="(340,190)" name="XNOR Gate">
+ <comp lib="0" loc="(340,850)" name="Constant">
+ <a name="facing" val="south"/>
+ <a name="value" val="0x0"/>
+ </comp>
+ <comp lib="1" loc="(190,670)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(530,280)" name="Pin">
- <a name="output" val="true"/>
- <a name="width" val="8"/>
- <a name="labelloc" val="east"/>
+ <comp lib="1" loc="(190,400)" name="XOR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(790,380)" name="Tunnel">
- <a name="facing" val="south"/>
- <a name="label" val="FC"/>
+ <comp lib="1" loc="(190,190)" name="XOR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(130,180)" name="Tunnel">
+ <comp lib="6" loc="(355,906)" name="Text">
+ <a name="text" val="FLAG"/>
+ </comp>
+ <comp lib="1" loc="(300,150)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ <a name="negate1" val="true"/>
+ </comp>
+ <comp lib="0" loc="(780,100)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="b1"/>
+ <a name="width" val="8"/>
+ <a name="label" val="A"/>
</comp>
- <comp lib="3" loc="(930,160)" name="Shifter">
- <a name="shift" val="lr"/>
+ <comp lib="1" loc="(340,100)" name="XNOR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(390,550)" name="Tunnel">
- <a name="label" val="o5"/>
+ <comp lib="1" loc="(240,670)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(130,90)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="b0"/>
+ <comp lib="2" loc="(1010,210)" name="Multiplexer">
+ <a name="facing" val="south"/>
+ <a name="width" val="8"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="1" loc="(250,460)" name="NOR Gate">
+ <comp lib="1" loc="(340,640)" name="XNOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(270,590)" name="AND Gate">
+ <comp lib="0" loc="(670,290)" name="Tunnel">
+ <a name="label" val="o5"/>
+ </comp>
+ <comp lib="1" loc="(300,600)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
<a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(700,40)" name="Pin">
- <a name="facing" val="west"/>
- <a name="width" val="8"/>
+ <comp lib="0" loc="(130,570)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="a5"/>
+ </comp>
+ <comp lib="0" loc="(500,550)" name="Pin">
+ <a name="width" val="4"/>
<a name="tristate" val="false"/>
</comp>
- </circuit>
- <circuit name="GPR">
- <a name="circuit" val="GPR"/>
- <a name="clabel" val=""/>
+ <comp lib="1" loc="(300,420)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ <a name="negate1" val="true"/>
+ </comp>
+ </circuit>
+ <circuit name="GPR">
+ <a name="circuit" val="GPR"/>
+ <a name="clabel" val=""/>
<a name="clabelup" val="east"/>
<a name="clabelfont" val="SansSerif plain 12"/>
<appear>
@@ -1558,113 +1564,113 @@
<wire from="(180,250)" to="(190,250)"/>
<wire from="(220,250)" to="(230,250)"/>
<wire from="(300,250)" to="(300,310)"/>
- <comp lib="1" loc="(190,260)" name="Controlled Buffer">
+ <comp lib="0" loc="(310,230)" name="Constant">
+ <a name="facing" val="west"/>
+ <a name="width" val="8"/>
+ <a name="value" val="0x0"/>
+ </comp>
+ <comp lib="0" loc="(240,180)" name="Constant"/>
+ <comp lib="1" loc="(270,260)" name="Controlled Buffer">
<a name="facing" val="south"/>
<a name="width" val="8"/>
</comp>
- <comp lib="2" loc="(150,340)" name="Decoder">
+ <comp lib="0" loc="(130,200)" name="Pin">
+ <a name="tristate" val="false"/>
+ </comp>
+ <comp lib="2" loc="(240,340)" name="Decoder">
<a name="facing" val="north"/>
+ <a name="selloc" val="tr"/>
<a name="select" val="2"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="1" loc="(290,260)" name="Controlled Buffer">
- <a name="facing" val="west"/>
- <a name="width" val="8"/>
- </comp>
- <comp lib="4" loc="(190,170)" name="Register"/>
- <comp lib="4" loc="(270,170)" name="Register"/>
- <comp lib="1" loc="(290,230)" name="Controlled Buffer">
- <a name="facing" val="west"/>
- <a name="width" val="8"/>
- </comp>
- <comp lib="0" loc="(310,260)" name="Constant">
- <a name="facing" val="west"/>
- <a name="width" val="8"/>
+ <comp lib="0" loc="(160,180)" name="Constant"/>
+ <comp lib="0" loc="(100,70)" name="Constant">
+ <a name="width" val="2"/>
<a name="value" val="0x0"/>
</comp>
- <comp lib="1" loc="(230,260)" name="Controlled Buffer">
- <a name="facing" val="south"/>
- <a name="width" val="8"/>
+ <comp lib="2" loc="(150,340)" name="Decoder">
+ <a name="facing" val="north"/>
+ <a name="select" val="2"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(100,90)" name="Pin">
+ <comp lib="0" loc="(150,340)" name="Pin">
<a name="width" val="2"/>
<a name="tristate" val="false"/>
</comp>
- <comp lib="0" loc="(130,200)" name="Pin">
+ <comp lib="4" loc="(190,170)" name="Register"/>
+ <comp lib="0" loc="(110,60)" name="Pin">
+ <a name="facing" val="south"/>
<a name="tristate" val="false"/>
</comp>
- <comp lib="0" loc="(140,130)" name="Pin">
+ <comp lib="1" loc="(210,230)" name="Controlled Buffer">
+ <a name="facing" val="south"/>
<a name="width" val="8"/>
- <a name="tristate" val="false"/>
</comp>
- <comp lib="0" loc="(240,340)" name="Pin">
- <a name="facing" val="west"/>
- <a name="width" val="2"/>
- <a name="tristate" val="false"/>
- </comp>
- <comp lib="2" loc="(160,80)" name="Decoder">
+ <comp lib="1" loc="(190,260)" name="Controlled Buffer">
<a name="facing" val="south"/>
- <a name="select" val="2"/>
- <a name="enable" val="false"/>
+ <a name="width" val="8"/>
</comp>
+ <comp lib="4" loc="(230,170)" name="Register"/>
<comp lib="2" loc="(130,80)" name="Multiplexer">
<a name="selloc" val="tr"/>
<a name="width" val="2"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(110,60)" name="Pin">
- <a name="facing" val="south"/>
- <a name="tristate" val="false"/>
+ <comp lib="1" loc="(290,230)" name="Controlled Buffer">
+ <a name="facing" val="west"/>
+ <a name="width" val="8"/>
</comp>
- <comp lib="0" loc="(140,230)" name="Pin">
- <a name="output" val="true"/>
+ <comp lib="0" loc="(140,130)" name="Pin">
<a name="width" val="8"/>
- <a name="labelloc" val="east"/>
+ <a name="tristate" val="false"/>
</comp>
- <comp lib="1" loc="(250,230)" name="Controlled Buffer">
+ <comp lib="1" loc="(170,230)" name="Controlled Buffer">
<a name="facing" val="south"/>
<a name="width" val="8"/>
</comp>
- <comp lib="0" loc="(240,180)" name="Constant"/>
- <comp lib="1" loc="(210,230)" name="Controlled Buffer">
- <a name="facing" val="south"/>
+ <comp lib="0" loc="(140,230)" name="Pin">
+ <a name="output" val="true"/>
<a name="width" val="8"/>
+ <a name="labelloc" val="east"/>
</comp>
<comp lib="0" loc="(140,260)" name="Pin">
<a name="output" val="true"/>
<a name="width" val="8"/>
<a name="labelloc" val="east"/>
</comp>
- <comp lib="0" loc="(100,70)" name="Constant">
- <a name="width" val="2"/>
- <a name="value" val="0x0"/>
- </comp>
- <comp lib="2" loc="(240,340)" name="Decoder">
- <a name="facing" val="north"/>
- <a name="selloc" val="tr"/>
+ <comp lib="2" loc="(160,80)" name="Decoder">
+ <a name="facing" val="south"/>
<a name="select" val="2"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="1" loc="(270,260)" name="Controlled Buffer">
- <a name="facing" val="south"/>
+ <comp lib="4" loc="(270,170)" name="Register"/>
+ <comp lib="0" loc="(240,340)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="width" val="2"/>
+ <a name="tristate" val="false"/>
+ </comp>
+ <comp lib="0" loc="(310,260)" name="Constant">
+ <a name="facing" val="west"/>
<a name="width" val="8"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="1" loc="(170,230)" name="Controlled Buffer">
+ <comp lib="1" loc="(290,260)" name="Controlled Buffer">
+ <a name="facing" val="west"/>
+ <a name="width" val="8"/>
+ </comp>
+ <comp lib="1" loc="(230,260)" name="Controlled Buffer">
<a name="facing" val="south"/>
<a name="width" val="8"/>
</comp>
- <comp lib="0" loc="(160,180)" name="Constant"/>
- <comp lib="4" loc="(230,170)" name="Register"/>
- <comp lib="0" loc="(310,230)" name="Constant">
- <a name="facing" val="west"/>
+ <comp lib="1" loc="(250,230)" name="Controlled Buffer">
+ <a name="facing" val="south"/>
<a name="width" val="8"/>
- <a name="value" val="0x0"/>
</comp>
- <comp lib="0" loc="(200,180)" name="Constant"/>
- <comp lib="0" loc="(150,340)" name="Pin">
+ <comp lib="0" loc="(100,90)" name="Pin">
<a name="width" val="2"/>
<a name="tristate" val="false"/>
</comp>
+ <comp lib="0" loc="(200,180)" name="Constant"/>
</circuit>
<circuit name="ISD">
<a name="circuit" val="ISD"/>
@@ -1700,11 +1706,13 @@
</appear>
<wire from="(190,580)" to="(250,580)"/>
<wire from="(1090,1500)" to="(1130,1500)"/>
+ <wire from="(720,1370)" to="(1040,1370)"/>
<wire from="(470,470)" to="(470,480)"/>
<wire from="(170,960)" to="(280,960)"/>
<wire from="(210,1360)" to="(210,1440)"/>
<wire from="(830,920)" to="(870,920)"/>
<wire from="(830,830)" to="(830,850)"/>
+ <wire from="(1180,1500)" to="(1180,1510)"/>
<wire from="(170,1320)" to="(170,1410)"/>
<wire from="(200,390)" to="(200,480)"/>
<wire from="(240,430)" to="(240,520)"/>
@@ -1730,6 +1738,7 @@
<wire from="(230,440)" to="(280,440)"/>
<wire from="(170,1410)" to="(280,1410)"/>
<wire from="(680,1860)" to="(720,1860)"/>
+ <wire from="(1120,1770)" to="(1310,1770)"/>
<wire from="(180,500)" to="(180,590)"/>
<wire from="(200,840)" to="(200,930)"/>
<wire from="(220,540)" to="(220,630)"/>
@@ -1775,6 +1784,7 @@
<wire from="(190,130)" to="(190,220)"/>
<wire from="(230,170)" to="(230,260)"/>
<wire from="(230,1580)" to="(230,1610)"/>
+ <wire from="(1320,1510)" to="(1320,1780)"/>
<wire from="(210,370)" to="(250,370)"/>
<wire from="(220,1350)" to="(250,1350)"/>
<wire from="(170,420)" to="(250,420)"/>
@@ -1791,9 +1801,9 @@
<wire from="(670,1190)" to="(670,1200)"/>
<wire from="(550,110)" to="(550,120)"/>
<wire from="(850,1050)" to="(850,1060)"/>
+ <wire from="(1070,1360)" to="(1110,1360)"/>
<wire from="(440,1680)" to="(490,1680)"/>
<wire from="(530,1750)" to="(530,1880)"/>
- <wire from="(1180,1500)" to="(1180,1780)"/>
<wire from="(200,480)" to="(250,480)"/>
<wire from="(220,180)" to="(270,180)"/>
<wire from="(440,1600)" to="(440,1610)"/>
@@ -1804,6 +1814,7 @@
<wire from="(190,580)" to="(190,670)"/>
<wire from="(940,820)" to="(940,840)"/>
<wire from="(530,150)" to="(530,300)"/>
+ <wire from="(1030,1350)" to="(1040,1350)"/>
<wire from="(670,1700)" to="(670,1820)"/>
<wire from="(80,80)" to="(90,80)"/>
<wire from="(920,1240)" to="(930,1240)"/>
@@ -1824,6 +1835,7 @@
<wire from="(220,1260)" to="(280,1260)"/>
<wire from="(330,1190)" to="(510,1190)"/>
<wire from="(1090,1510)" to="(1130,1510)"/>
+ <wire from="(420,650)" to="(590,650)"/>
<wire from="(590,1010)" to="(630,1010)"/>
<wire from="(870,650)" to="(910,650)"/>
<wire from="(170,690)" to="(170,780)"/>
@@ -1843,6 +1855,7 @@
<wire from="(330,1620)" to="(330,1660)"/>
<wire from="(1170,1500)" to="(1170,1560)"/>
<wire from="(420,1830)" to="(430,1830)"/>
+ <wire from="(440,590)" to="(1090,590)"/>
<wire from="(810,870)" to="(810,1380)"/>
<wire from="(380,1670)" to="(380,1720)"/>
<wire from="(840,970)" to="(850,970)"/>
@@ -1874,6 +1887,7 @@
<wire from="(890,390)" to="(890,430)"/>
<wire from="(330,1660)" to="(490,1660)"/>
<wire from="(930,750)" to="(930,790)"/>
+ <wire from="(1050,620)" to="(1310,620)"/>
<wire from="(440,60)" to="(450,60)"/>
<wire from="(480,420)" to="(490,420)"/>
<wire from="(200,840)" to="(280,840)"/>
@@ -1889,7 +1903,6 @@
<wire from="(880,700)" to="(880,750)"/>
<wire from="(510,1100)" to="(510,1110)"/>
<wire from="(430,380)" to="(430,390)"/>
- <wire from="(860,1780)" to="(1180,1780)"/>
<wire from="(170,1230)" to="(280,1230)"/>
<wire from="(790,830)" to="(830,830)"/>
<wire from="(180,320)" to="(180,410)"/>
@@ -1913,7 +1926,6 @@
<wire from="(930,690)" to="(930,700)"/>
<wire from="(210,1000)" to="(270,1000)"/>
<wire from="(190,1300)" to="(250,1300)"/>
- <wire from="(1080,1570)" to="(1120,1570)"/>
<wire from="(230,710)" to="(280,710)"/>
<wire from="(200,1640)" to="(250,1640)"/>
<wire from="(820,1860)" to="(820,1890)"/>
@@ -1923,6 +1935,8 @@
<wire from="(230,80)" to="(270,80)"/>
<wire from="(240,1150)" to="(240,1240)"/>
<wire from="(890,1290)" to="(890,1330)"/>
+ <wire from="(1180,1510)" to="(1320,1510)"/>
+ <wire from="(1120,1580)" to="(1120,1770)"/>
<wire from="(570,330)" to="(570,390)"/>
<wire from="(350,290)" to="(430,290)"/>
<wire from="(370,60)" to="(370,300)"/>
@@ -1974,8 +1988,10 @@
<wire from="(920,1060)" to="(930,1060)"/>
<wire from="(920,1380)" to="(930,1380)"/>
<wire from="(840,340)" to="(850,340)"/>
+ <wire from="(860,1780)" to="(1320,1780)"/>
<wire from="(880,700)" to="(890,700)"/>
<wire from="(680,1140)" to="(690,1140)"/>
+ <wire from="(1070,560)" to="(1090,560)"/>
<wire from="(560,60)" to="(570,60)"/>
<wire from="(200,1500)" to="(200,1560)"/>
<wire from="(630,1100)" to="(630,1110)"/>
@@ -1983,12 +1999,14 @@
<wire from="(220,1080)" to="(280,1080)"/>
<wire from="(220,450)" to="(270,450)"/>
<wire from="(440,1870)" to="(440,1880)"/>
+ <wire from="(1320,610)" to="(1320,1510)"/>
<wire from="(170,510)" to="(170,600)"/>
<wire from="(210,550)" to="(210,640)"/>
<wire from="(190,850)" to="(190,940)"/>
<wire from="(230,890)" to="(230,980)"/>
<wire from="(450,1750)" to="(450,1840)"/>
<wire from="(510,110)" to="(550,110)"/>
+ <wire from="(330,650)" to="(420,650)"/>
<wire from="(930,120)" to="(930,160)"/>
<wire from="(520,150)" to="(530,150)"/>
<wire from="(330,1370)" to="(470,1370)"/>
@@ -2001,6 +2019,7 @@
<wire from="(920,430)" to="(920,480)"/>
<wire from="(560,510)" to="(570,510)"/>
<wire from="(880,70)" to="(880,120)"/>
+ <wire from="(440,590)" to="(440,660)"/>
<wire from="(850,1380)" to="(850,1580)"/>
<wire from="(190,220)" to="(250,220)"/>
<wire from="(470,110)" to="(470,120)"/>
@@ -2076,6 +2095,7 @@
<wire from="(200,930)" to="(270,930)"/>
<wire from="(680,60)" to="(690,60)"/>
<wire from="(840,1060)" to="(840,1110)"/>
+ <wire from="(850,1770)" to="(1120,1770)"/>
<wire from="(710,740)" to="(710,750)"/>
<wire from="(930,960)" to="(930,970)"/>
<wire from="(890,600)" to="(890,610)"/>
@@ -2104,6 +2124,7 @@
<wire from="(200,120)" to="(250,120)"/>
<wire from="(120,1770)" to="(300,1770)"/>
<wire from="(1030,1510)" to="(1030,1540)"/>
+ <wire from="(1060,580)" to="(1060,610)"/>
<wire from="(200,1640)" to="(200,1660)"/>
<wire from="(190,220)" to="(190,310)"/>
<wire from="(230,260)" to="(230,350)"/>
@@ -2125,8 +2146,8 @@
<wire from="(640,600)" to="(650,600)"/>
<wire from="(590,560)" to="(590,570)"/>
<wire from="(200,570)" to="(250,570)"/>
- <wire from="(590,650)" to="(630,650)"/>
<wire from="(440,1430)" to="(440,1580)"/>
+ <wire from="(590,650)" to="(630,650)"/>
<wire from="(170,330)" to="(170,420)"/>
<wire from="(210,370)" to="(210,460)"/>
<wire from="(230,710)" to="(230,800)"/>
@@ -2146,6 +2167,7 @@
<wire from="(840,610)" to="(850,610)"/>
<wire from="(480,1410)" to="(480,1470)"/>
<wire from="(880,1290)" to="(890,1290)"/>
+ <wire from="(450,730)" to="(450,1110)"/>
<wire from="(920,250)" to="(920,300)"/>
<wire from="(640,1050)" to="(650,1050)"/>
<wire from="(560,330)" to="(570,330)"/>
@@ -2183,7 +2205,7 @@
<wire from="(470,380)" to="(470,390)"/>
<wire from="(220,1170)" to="(270,1170)"/>
<wire from="(170,870)" to="(280,870)"/>
- <wire from="(720,1370)" to="(1080,1370)"/>
+ <wire from="(420,650)" to="(420,670)"/>
<wire from="(830,830)" to="(870,830)"/>
<wire from="(660,1850)" to="(660,1880)"/>
<wire from="(170,1230)" to="(170,1320)"/>
@@ -2223,11 +2245,13 @@
<wire from="(1030,1510)" to="(1040,1510)"/>
<wire from="(370,510)" to="(370,1440)"/>
<wire from="(410,420)" to="(410,1430)"/>
+ <wire from="(970,560)" to="(1040,560)"/>
<wire from="(610,60)" to="(610,570)"/>
<wire from="(180,410)" to="(250,410)"/>
<wire from="(200,750)" to="(270,750)"/>
<wire from="(210,1790)" to="(340,1790)"/>
<wire from="(920,120)" to="(930,120)"/>
+ <wire from="(1100,1570)" to="(1120,1570)"/>
<wire from="(520,1320)" to="(530,1320)"/>
<wire from="(880,1240)" to="(880,1290)"/>
<wire from="(840,880)" to="(840,930)"/>
@@ -2246,15 +2270,18 @@
<wire from="(230,170)" to="(270,170)"/>
<wire from="(240,1240)" to="(240,1330)"/>
<wire from="(470,1370)" to="(510,1370)"/>
+ <wire from="(450,420)" to="(450,700)"/>
<wire from="(160,1420)" to="(1150,1420)"/>
<wire from="(330,290)" to="(350,290)"/>
<wire from="(330,110)" to="(470,110)"/>
+ <wire from="(440,730)" to="(450,730)"/>
<wire from="(360,330)" to="(370,330)"/>
<wire from="(530,60)" to="(530,120)"/>
<wire from="(570,420)" to="(570,480)"/>
<wire from="(430,1100)" to="(510,1100)"/>
<wire from="(920,250)" to="(930,250)"/>
<wire from="(240,1690)" to="(240,1750)"/>
+ <wire from="(1050,580)" to="(1050,620)"/>
<wire from="(880,210)" to="(890,210)"/>
<wire from="(840,1330)" to="(840,1380)"/>
<wire from="(330,380)" to="(390,380)"/>
@@ -2282,14 +2309,15 @@
<wire from="(850,960)" to="(850,970)"/>
<wire from="(890,1380)" to="(890,1510)"/>
<wire from="(200,390)" to="(250,390)"/>
+ <wire from="(1090,560)" to="(1090,590)"/>
<wire from="(870,1490)" to="(870,1580)"/>
<wire from="(170,150)" to="(170,240)"/>
<wire from="(230,530)" to="(230,620)"/>
<wire from="(190,490)" to="(190,580)"/>
<wire from="(210,190)" to="(210,280)"/>
<wire from="(490,510)" to="(490,1380)"/>
- <wire from="(1100,1530)" to="(1100,1580)"/>
<wire from="(920,1150)" to="(930,1150)"/>
+ <wire from="(1100,1530)" to="(1100,1570)"/>
<wire from="(840,430)" to="(850,430)"/>
<wire from="(880,790)" to="(890,790)"/>
<wire from="(840,750)" to="(850,750)"/>
@@ -2309,15 +2337,14 @@
<wire from="(210,640)" to="(210,730)"/>
<wire from="(190,940)" to="(190,1030)"/>
<wire from="(230,980)" to="(230,1070)"/>
- <wire from="(1080,1570)" to="(1080,1770)"/>
<wire from="(910,830)" to="(910,850)"/>
<wire from="(900,820)" to="(900,840)"/>
<wire from="(240,250)" to="(280,250)"/>
- <wire from="(1030,1350)" to="(1080,1350)"/>
<wire from="(160,1420)" to="(160,1580)"/>
<wire from="(180,590)" to="(270,590)"/>
<wire from="(930,210)" to="(930,250)"/>
<wire from="(710,1700)" to="(730,1700)"/>
+ <wire from="(1310,620)" to="(1310,1770)"/>
<wire from="(330,830)" to="(790,830)"/>
<wire from="(880,1560)" to="(890,1560)"/>
<wire from="(650,1140)" to="(650,1380)"/>
@@ -2352,7 +2379,6 @@
<wire from="(290,1740)" to="(300,1740)"/>
<wire from="(840,1330)" to="(850,1330)"/>
<wire from="(920,970)" to="(920,1020)"/>
- <wire from="(1100,1580)" to="(1120,1580)"/>
<wire from="(840,250)" to="(840,300)"/>
<wire from="(880,610)" to="(880,660)"/>
<wire from="(210,460)" to="(270,460)"/>
@@ -2386,7 +2412,6 @@
<wire from="(430,1440)" to="(430,1580)"/>
<wire from="(390,380)" to="(390,390)"/>
<wire from="(230,620)" to="(280,620)"/>
- <wire from="(850,1770)" to="(1080,1770)"/>
<wire from="(180,680)" to="(180,770)"/>
<wire from="(220,720)" to="(220,810)"/>
<wire from="(200,1020)" to="(200,1110)"/>
@@ -2398,7 +2423,6 @@
<wire from="(890,1200)" to="(890,1240)"/>
<wire from="(330,1730)" to="(990,1730)"/>
<wire from="(610,600)" to="(610,660)"/>
- <wire from="(450,420)" to="(450,1110)"/>
<wire from="(920,390)" to="(930,390)"/>
<wire from="(730,60)" to="(730,750)"/>
<wire from="(920,70)" to="(930,70)"/>
@@ -2420,6 +2444,7 @@
<wire from="(560,1380)" to="(560,1550)"/>
<wire from="(850,1290)" to="(850,1330)"/>
<wire from="(240,1750)" to="(260,1750)"/>
+ <wire from="(1060,610)" to="(1320,610)"/>
<wire from="(170,150)" to="(250,150)"/>
<wire from="(530,330)" to="(530,390)"/>
<wire from="(120,40)" to="(130,40)"/>
@@ -2440,7 +2465,6 @@
<wire from="(630,560)" to="(830,560)"/>
<wire from="(920,970)" to="(930,970)"/>
<wire from="(920,1290)" to="(930,1290)"/>
- <wire from="(330,650)" to="(590,650)"/>
<wire from="(840,250)" to="(850,250)"/>
<wire from="(490,420)" to="(490,480)"/>
<wire from="(880,610)" to="(890,610)"/>
@@ -2502,45 +2526,74 @@
<wire from="(520,510)" to="(530,510)"/>
<wire from="(880,430)" to="(880,480)"/>
<wire from="(450,1140)" to="(450,1580)"/>
- <comp lib="2" loc="(850,960)" name="Multiplexer">
+ <comp lib="1" loc="(330,560)" name="AND Gate">
+ <a name="inputs" val="8"/>
+ <a name="label" val="LLI"/>
+ <a name="negate6" val="true"/>
+ <a name="negate7" val="true"/>
+ </comp>
+ <comp lib="0" loc="(280,1290)" name="Constant"/>
+ <comp lib="0" loc="(440,1690)" name="Pin">
+ <a name="facing" val="north"/>
+ <a name="width" val="8"/>
+ <a name="tristate" val="false"/>
+ <a name="label" val="PC ADDRESS"/>
+ <a name="labelloc" val="south"/>
+ </comp>
+ <comp lib="0" loc="(280,500)" name="Constant"/>
+ <comp lib="0" loc="(900,640)" name="Constant">
<a name="facing" val="south"/>
<a name="width" val="2"/>
- <a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(850,870)" name="Multiplexer">
+ <comp lib="0" loc="(940,1000)" name="Constant">
<a name="facing" val="south"/>
<a name="width" val="2"/>
- <a name="enable" val="false"/>
+ <a name="value" val="0x3"/>
</comp>
- <comp lib="0" loc="(280,1110)" name="Constant"/>
- <comp lib="0" loc="(280,1300)" name="Constant"/>
- <comp lib="0" loc="(560,60)" name="Constant">
+ <comp lib="1" loc="(920,1610)" name="OR Gate">
+ <a name="facing" val="south"/>
+ <a name="width" val="2"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="0" loc="(940,640)" name="Constant">
+ <a name="facing" val="south"/>
+ <a name="width" val="2"/>
+ </comp>
+ <comp lib="0" loc="(400,60)" name="Constant">
<a name="facing" val="south"/>
<a name="value" val="0x0"/>
</comp>
- <comp lib="1" loc="(400,420)" name="OR Gate">
+ <comp lib="0" loc="(800,60)" name="Constant">
+ <a name="facing" val="south"/>
+ <a name="value" val="0x0"/>
+ </comp>
+ <comp lib="0" loc="(280,670)" name="Constant"/>
+ <comp lib="1" loc="(440,330)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(280,1210)" name="Constant"/>
- <comp lib="0" loc="(160,1670)" name="Constant">
- <a name="width" val="8"/>
- </comp>
- <comp lib="1" loc="(330,1370)" name="AND Gate">
- <a name="inputs" val="8"/>
- <a name="label" val="CMP"/>
- </comp>
- <comp lib="0" loc="(280,540)" name="Constant"/>
- <comp lib="0" loc="(280,210)" name="Constant"/>
- <comp lib="1" loc="(480,1410)" name="OR Gate">
+ <comp lib="1" loc="(640,1050)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(760,60)" name="Constant">
+ <comp lib="1" loc="(440,420)" name="OR Gate">
<a name="facing" val="south"/>
- <a name="value" val="0x0"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="0" loc="(250,1600)" name="Splitter">
+ <a name="facing" val="north"/>
+ <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"/>
</comp>
<comp lib="0" loc="(570,1690)" name="Pin">
<a name="facing" val="north"/>
@@ -2549,195 +2602,278 @@
<a name="label" val="IMM VALUE"/>
<a name="labelloc" val="south"/>
</comp>
- <comp lib="0" loc="(900,910)" name="Constant">
+ <comp lib="1" loc="(680,1230)" name="OR Gate">
<a name="facing" val="south"/>
- <a name="width" val="2"/>
- <a name="value" val="0x0"/>
- </comp>
- <comp lib="0" loc="(280,120)" name="Constant"/>
- <comp lib="4" loc="(710,1700)" name="Register">
- <a name="width" val="1"/>
- <a name="trigger" val="falling"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(480,330)" name="OR Gate">
+ <comp lib="1" loc="(880,1610)" name="OR Gate">
<a name="facing" val="south"/>
+ <a name="width" val="2"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(720,60)" name="Constant">
+ <comp lib="0" loc="(280,130)" name="Constant"/>
+ <comp lib="0" loc="(280,330)" name="Constant"/>
+ <comp lib="1" loc="(680,1140)" name="OR Gate">
<a name="facing" val="south"/>
- <a name="value" val="0x0"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(280,1290)" name="Constant"/>
- <comp lib="0" loc="(930,60)" name="Constant">
- <a name="facing" val="south"/>
- <a name="width" val="2"/>
- <a name="value" val="0x0"/>
+ <comp lib="0" loc="(530,1880)" name="Pin">
+ <a name="facing" val="north"/>
+ <a name="output" val="true"/>
+ <a name="label" val="Address MUX"/>
+ <a name="labelloc" val="south"/>
</comp>
- <comp lib="2" loc="(290,1530)" name="Multiplexer">
- <a name="width" val="2"/>
- <a name="enable" val="false"/>
+ <comp lib="0" loc="(280,1390)" name="Constant"/>
+ <comp lib="0" loc="(180,1580)" name="Splitter">
+ <a name="facing" val="north"/>
+ <a name="incoming" val="4"/>
+ <a name="appear" val="right"/>
+ <a name="bit1" val="0"/>
+ <a name="bit2" val="1"/>
+ <a name="bit3" val="1"/>
</comp>
- <comp lib="0" loc="(620,1400)" name="Splitter">
+ <comp lib="0" loc="(220,1460)" name="Splitter">
<a name="facing" val="north"/>
<a name="appear" val="center"/>
</comp>
- <comp lib="1" loc="(330,470)" name="AND Gate">
- <a name="inputs" val="8"/>
- <a name="label" val="CIN"/>
- <a name="negate0" val="true"/>
- <a name="negate2" val="true"/>
- <a name="negate3" val="true"/>
- </comp>
- <comp lib="0" loc="(280,140)" name="Constant"/>
- <comp lib="1" loc="(920,1610)" name="OR Gate">
- <a name="facing" val="south"/>
- <a name="width" val="2"/>
+ <comp lib="1" loc="(840,1690)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(260,1750)" name="AND Gate">
- <a name="facing" val="west"/>
+ <comp lib="1" loc="(520,150)" name="OR Gate">
+ <a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(860,910)" name="Constant">
+ <comp lib="0" loc="(180,1540)" name="Splitter">
+ <a name="facing" val="north"/>
+ <a name="appear" val="center"/>
+ </comp>
+ <comp lib="0" loc="(940,910)" name="Constant">
<a name="facing" val="south"/>
<a name="width" val="2"/>
- <a name="value" val="0x0"/>
</comp>
- <comp lib="1" loc="(820,1860)" name="AND Gate">
- <a name="facing" val="south"/>
+ <comp lib="1" loc="(330,920)" name="AND Gate">
+ <a name="inputs" val="8"/>
+ <a name="label" val="POP"/>
+ <a name="negate2" val="true"/>
+ <a name="negate3" val="true"/>
+ <a name="negate4" val="true"/>
+ <a name="negate6" val="true"/>
+ </comp>
+ <comp lib="0" loc="(1110,1360)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="label" val="ALU State"/>
+ <a name="labelloc" val="east"/>
+ </comp>
+ <comp lib="0" loc="(280,1300)" name="Constant"/>
+ <comp lib="1" loc="(1070,1360)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate0" val="true"/>
</comp>
- <comp lib="0" loc="(620,1610)" name="Pin">
+ <comp lib="0" loc="(880,1610)" name="Pin">
<a name="facing" val="north"/>
<a name="output" val="true"/>
<a name="width" val="2"/>
- <a name="label" val="GPR MUX"/>
+ <a name="label" val="B (R)"/>
<a name="labelloc" val="south"/>
</comp>
- <comp lib="0" loc="(280,1350)" name="Constant"/>
- <comp lib="1" loc="(670,1820)" name="AND Gate">
- <a name="facing" val="north"/>
+ <comp lib="1" loc="(300,1740)" name="OR Gate">
+ <a name="facing" val="west"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="1" loc="(520,1140)" name="OR Gate">
+ <a name="facing" val="south"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="0" loc="(280,230)" name="Constant"/>
+ <comp lib="4" loc="(1190,1480)" name="Register">
+ <a name="width" val="4"/>
+ <a name="trigger" val="falling"/>
+ </comp>
+ <comp lib="1" loc="(640,600)" name="OR Gate">
+ <a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
+ <comp lib="2" loc="(890,600)" name="Multiplexer">
+ <a name="facing" val="south"/>
+ <a name="width" val="2"/>
+ <a name="enable" val="false"/>
+ </comp>
<comp lib="1" loc="(330,1280)" name="AND Gate">
<a name="inputs" val="8"/>
<a name="label" val="SP"/>
<a name="negate6" val="true"/>
</comp>
- <comp lib="1" loc="(640,1140)" name="OR Gate">
+ <comp lib="0" loc="(160,1670)" name="Constant">
+ <a name="width" val="8"/>
+ </comp>
+ <comp lib="0" loc="(280,360)" name="Constant"/>
+ <comp lib="1" loc="(560,420)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(400,60)" name="Constant">
+ <comp lib="0" loc="(930,60)" name="Constant">
<a name="facing" val="south"/>
+ <a name="width" val="2"/>
<a name="value" val="0x0"/>
</comp>
- <comp lib="2" loc="(320,1620)" name="Multiplexer">
- <a name="selloc" val="tr"/>
- <a name="width" val="8"/>
- <a name="enable" val="false"/>
+ <comp lib="0" loc="(260,1520)" name="Constant">
+ <a name="width" val="2"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="0" loc="(900,640)" name="Constant">
+ <comp lib="0" loc="(600,60)" name="Constant">
<a name="facing" val="south"/>
- <a name="width" val="2"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="0" loc="(80,50)" name="Pin">
- <a name="width" val="8"/>
- <a name="tristate" val="false"/>
- <a name="label" val="DATA"/>
- <a name="labelloc" val="north"/>
+ <comp lib="1" loc="(600,690)" name="OR Gate">
+ <a name="facing" val="south"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(530,1880)" name="Pin">
- <a name="facing" val="north"/>
- <a name="output" val="true"/>
- <a name="label" val="Address MUX"/>
- <a name="labelloc" val="south"/>
+ <comp lib="1" loc="(330,830)" name="AND Gate">
+ <a name="inputs" val="8"/>
+ <a name="label" val="PUSH"/>
+ <a name="negate2" val="true"/>
+ <a name="negate3" val="true"/>
+ <a name="negate5" val="true"/>
+ <a name="negate6" val="true"/>
</comp>
- <comp lib="0" loc="(440,1610)" name="Pin">
+ <comp lib="6" loc="(233,1834)" name="Text">
+ <a name="text" val="This input defines the range of MMIO -->"/>
+ </comp>
+ <comp lib="1" loc="(480,510)" name="OR Gate">
+ <a name="facing" val="south"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="1" loc="(330,110)" name="AND Gate">
+ <a name="inputs" val="8"/>
+ <a name="label" val="OR"/>
+ <a name="negate0" val="true"/>
+ <a name="negate1" val="true"/>
+ </comp>
+ <comp lib="0" loc="(280,220)" name="Constant"/>
+ <comp lib="0" loc="(800,1580)" name="Pin">
<a name="facing" val="north"/>
<a name="output" val="true"/>
- <a name="width" val="3"/>
- <a name="label" val="ALU OP"/>
+ <a name="label" val="PUSH"/>
<a name="labelloc" val="south"/>
</comp>
- <comp lib="1" loc="(440,1870)" name="AND Gate">
+ <comp lib="0" loc="(280,1120)" name="Constant"/>
+ <comp lib="4" loc="(870,1690)" name="Register">
+ <a name="width" val="1"/>
+ <a name="trigger" val="falling"/>
+ </comp>
+ <comp lib="1" loc="(840,1610)" name="OR Gate">
<a name="facing" val="south"/>
+ <a name="width" val="2"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="2" loc="(890,690)" name="Multiplexer">
+ <comp lib="0" loc="(900,820)" name="Constant">
<a name="facing" val="south"/>
<a name="width" val="2"/>
- <a name="enable" val="false"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="1" loc="(520,1140)" name="OR Gate">
- <a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="0" loc="(620,1400)" name="Splitter">
+ <a name="facing" val="north"/>
+ <a name="appear" val="center"/>
</comp>
- <comp lib="2" loc="(930,600)" name="Multiplexer">
+ <comp lib="2" loc="(930,870)" name="Multiplexer">
<a name="facing" val="south"/>
<a name="width" val="2"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="1" loc="(800,870)" name="OR Gate">
+ <comp lib="0" loc="(780,1880)" name="Pin">
+ <a name="facing" val="north"/>
+ <a name="output" val="true"/>
+ <a name="label" val="BRANCH"/>
+ <a name="labelloc" val="south"/>
+ </comp>
+ <comp lib="1" loc="(440,1870)" name="AND Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(920,1610)" name="Pin">
- <a name="facing" val="north"/>
- <a name="output" val="true"/>
+ <comp lib="2" loc="(930,690)" name="Multiplexer">
+ <a name="facing" val="south"/>
<a name="width" val="2"/>
- <a name="label" val="C (W)"/>
- <a name="labelloc" val="south"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="1" loc="(480,510)" name="OR Gate">
+ <comp lib="0" loc="(280,570)" name="Constant"/>
+ <comp lib="1" loc="(400,420)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(440,330)" name="OR Gate">
+ <comp lib="1" loc="(520,330)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(760,1580)" name="Pin">
+ <comp lib="0" loc="(330,1680)" name="Pin">
<a name="facing" val="north"/>
<a name="output" val="true"/>
- <a name="label" val="POP"/>
+ <a name="width" val="8"/>
+ <a name="label" val="MEM POINTER"/>
<a name="labelloc" val="south"/>
</comp>
- <comp lib="0" loc="(220,1610)" name="Constant">
+ <comp lib="0" loc="(440,60)" name="Constant">
<a name="facing" val="south"/>
- <a name="width" val="4"/>
<a name="value" val="0x0"/>
</comp>
- <comp lib="0" loc="(480,60)" name="Constant">
+ <comp lib="0" loc="(280,410)" name="Constant"/>
+ <comp lib="4" loc="(1070,560)" name="Register">
+ <a name="width" val="1"/>
+ <a name="trigger" val="falling"/>
+ </comp>
+ <comp lib="0" loc="(890,60)" name="Constant">
<a name="facing" val="south"/>
+ <a name="width" val="2"/>
<a name="value" val="0x0"/>
</comp>
- <comp lib="0" loc="(280,310)" name="Constant"/>
- <comp lib="0" loc="(940,550)" name="Constant">
+ <comp lib="1" loc="(720,780)" name="OR Gate">
+ <a name="facing" val="south"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="1" loc="(520,510)" name="OR Gate">
<a name="facing" val="south"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="4" loc="(110,50)" name="Register">
+ <a name="trigger" val="falling"/>
+ </comp>
+ <comp lib="2" loc="(290,1530)" name="Multiplexer">
<a name="width" val="2"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(1150,1480)" name="Splitter">
+ <comp lib="1" loc="(280,370)" name="OR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="1" loc="(670,1820)" name="AND Gate">
+ <a name="facing" val="north"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="1" loc="(1040,1510)" name="AND Gate">
<a name="facing" val="west"/>
- <a name="fanout" val="4"/>
- <a name="incoming" val="4"/>
+ <a name="label" val="ptrinc"/>
</comp>
- <comp lib="2" loc="(850,600)" name="Multiplexer">
+ <comp lib="0" loc="(760,60)" name="Constant">
<a name="facing" val="south"/>
- <a name="width" val="2"/>
- <a name="enable" val="false"/>
+ <a name="value" val="0x0"/>
</comp>
<comp lib="1" loc="(330,740)" name="AND Gate">
<a name="inputs" val="8"/>
@@ -2748,513 +2884,498 @@
<a name="negate5" val="true"/>
<a name="negate6" val="true"/>
</comp>
- <comp lib="2" loc="(890,870)" name="Multiplexer">
+ <comp lib="2" loc="(890,1050)" name="Multiplexer">
<a name="facing" val="south"/>
<a name="width" val="2"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(520,60)" name="Constant">
- <a name="facing" val="south"/>
- <a name="value" val="0x0"/>
- </comp>
- <comp lib="2" loc="(520,1670)" name="Multiplexer">
- <a name="selloc" val="tr"/>
- <a name="width" val="8"/>
- <a name="enable" val="false"/>
- </comp>
- <comp lib="0" loc="(440,60)" name="Constant">
+ <comp lib="0" loc="(680,60)" name="Constant">
<a name="facing" val="south"/>
<a name="value" val="0x0"/>
</comp>
- <comp lib="1" loc="(770,1690)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
- </comp>
- <comp lib="4" loc="(1190,1480)" name="Register">
- <a name="width" val="4"/>
- <a name="trigger" val="falling"/>
+ <comp lib="1" loc="(330,1100)" name="AND Gate">
+ <a name="inputs" val="8"/>
+ <a name="label" val="LB"/>
+ <a name="negate3" val="true"/>
+ <a name="negate6" val="true"/>
</comp>
- <comp lib="0" loc="(280,640)" name="Constant"/>
- <comp lib="0" loc="(1190,1480)" name="Pin">
- <a name="facing" val="west"/>
- <a name="output" val="true"/>
- <a name="width" val="4"/>
- <a name="label" val="Dynamic OP"/>
- <a name="labelloc" val="east"/>
+ <comp lib="0" loc="(280,490)" name="Constant"/>
+ <comp lib="0" loc="(280,1210)" name="Constant"/>
+ <comp lib="1" loc="(330,1190)" name="AND Gate">
+ <a name="inputs" val="8"/>
+ <a name="label" val="SB"/>
+ <a name="negate2" val="true"/>
+ <a name="negate6" val="true"/>
</comp>
- <comp lib="0" loc="(680,60)" name="Constant">
+ <comp lib="0" loc="(940,550)" name="Constant">
<a name="facing" val="south"/>
- <a name="value" val="0x0"/>
+ <a name="width" val="2"/>
</comp>
- <comp lib="1" loc="(880,1610)" name="OR Gate">
+ <comp lib="1" loc="(600,960)" name="OR Gate">
<a name="facing" val="south"/>
- <a name="width" val="2"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(900,820)" name="Constant">
+ <comp lib="2" loc="(930,600)" name="Multiplexer">
<a name="facing" val="south"/>
<a name="width" val="2"/>
- <a name="value" val="0x0"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(850,690)" name="Multiplexer">
+ <comp lib="0" loc="(900,550)" name="Constant">
<a name="facing" val="south"/>
<a name="width" val="2"/>
- <a name="enable" val="false"/>
- </comp>
- <comp lib="2" loc="(230,1670)" name="Multiplexer">
- <a name="width" val="8"/>
- <a name="enable" val="false"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="0" loc="(280,240)" name="Constant"/>
- <comp lib="0" loc="(840,1610)" name="Pin">
+ <comp lib="0" loc="(440,1880)" name="Pin">
<a name="facing" val="north"/>
<a name="output" val="true"/>
- <a name="width" val="2"/>
- <a name="label" val="A (R)"/>
+ <a name="label" val="Memory Select"/>
<a name="labelloc" val="south"/>
</comp>
- <comp lib="1" loc="(1110,1360)" name="OR Gate">
+ <comp lib="1" loc="(280,100)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(520,1230)" name="OR Gate">
+ <comp lib="0" loc="(860,820)" name="Constant">
<a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <a name="width" val="2"/>
</comp>
- <comp lib="2" loc="(890,1050)" name="Multiplexer">
- <a name="facing" val="south"/>
+ <comp lib="0" loc="(260,1440)" name="Constant">
<a name="width" val="2"/>
- <a name="enable" val="false"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="4" loc="(260,1670)" name="Register"/>
- <comp lib="1" loc="(840,1610)" name="OR Gate">
+ <comp lib="2" loc="(850,690)" name="Multiplexer">
<a name="facing" val="south"/>
<a name="width" val="2"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(280,580)" name="Constant"/>
+ <comp lib="0" loc="(280,310)" name="Constant"/>
+ <comp lib="1" loc="(1150,1560)" name="AND Gate">
<a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <a name="inputs" val="4"/>
+ <a name="negate0" val="true"/>
+ <a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(600,60)" name="Constant">
+ <comp lib="0" loc="(280,150)" name="Constant"/>
+ <comp lib="0" loc="(80,80)" name="Pin">
+ <a name="tristate" val="false"/>
+ <a name="label" val="CLK"/>
+ </comp>
+ <comp lib="0" loc="(900,910)" name="Constant">
<a name="facing" val="south"/>
+ <a name="width" val="2"/>
<a name="value" val="0x0"/>
</comp>
- <comp lib="0" loc="(880,1610)" name="Pin">
- <a name="facing" val="north"/>
+ <comp lib="0" loc="(1190,1480)" name="Pin">
+ <a name="facing" val="west"/>
<a name="output" val="true"/>
- <a name="width" val="2"/>
- <a name="label" val="B (R)"/>
- <a name="labelloc" val="south"/>
- </comp>
- <comp lib="0" loc="(280,320)" name="Constant"/>
- <comp lib="0" loc="(280,1380)" name="Constant"/>
- <comp lib="0" loc="(940,640)" name="Constant">
- <a name="facing" val="south"/>
- <a name="width" val="2"/>
+ <a name="width" val="4"/>
+ <a name="label" val="Dynamic OP"/>
+ <a name="labelloc" val="east"/>
</comp>
- <comp lib="0" loc="(280,580)" name="Constant"/>
- <comp lib="0" loc="(900,1000)" name="Constant">
+ <comp lib="2" loc="(930,960)" name="Multiplexer">
<a name="facing" val="south"/>
<a name="width" val="2"/>
- <a name="value" val="0x0"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(640,60)" name="Constant">
+ <comp lib="1" loc="(520,1230)" name="OR Gate">
<a name="facing" val="south"/>
- <a name="value" val="0x0"/>
- </comp>
- <comp lib="0" loc="(280,550)" name="Constant"/>
- <comp lib="0" loc="(180,1580)" name="Splitter">
- <a name="facing" val="north"/>
- <a name="incoming" val="4"/>
- <a name="appear" val="right"/>
- <a name="bit1" val="0"/>
- <a name="bit2" val="1"/>
- <a name="bit3" val="1"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(280,1120)" name="Constant"/>
- <comp lib="1" loc="(520,1410)" name="OR Gate">
+ <comp lib="1" loc="(600,600)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(330,1100)" name="AND Gate">
- <a name="inputs" val="8"/>
- <a name="label" val="LB"/>
- <a name="negate3" val="true"/>
- <a name="negate6" val="true"/>
- </comp>
- <comp lib="0" loc="(280,90)" name="Constant"/>
- <comp lib="1" loc="(280,100)" name="OR Gate">
+ <comp lib="1" loc="(520,1320)" name="OR Gate">
+ <a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(280,630)" name="Constant"/>
- <comp lib="0" loc="(280,570)" name="Constant"/>
- <comp lib="2" loc="(850,1050)" name="Multiplexer">
+ <comp lib="0" loc="(160,50)" name="Splitter">
<a name="facing" val="south"/>
- <a name="width" val="2"/>
- <a name="enable" val="false"/>
+ <a name="fanout" val="8"/>
+ <a name="incoming" val="8"/>
</comp>
- <comp lib="0" loc="(280,510)" name="Constant"/>
- <comp lib="1" loc="(360,510)" name="OR Gate">
+ <comp lib="1" loc="(480,420)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(280,670)" name="Constant"/>
- <comp lib="0" loc="(440,1690)" name="Pin">
- <a name="facing" val="north"/>
- <a name="width" val="8"/>
- <a name="tristate" val="false"/>
- <a name="label" val="PC ADDRESS"/>
- <a name="labelloc" val="south"/>
- </comp>
- <comp lib="2" loc="(160,50)" name="Multiplexer">
- <a name="width" val="8"/>
- <a name="enable" val="false"/>
- </comp>
- <comp lib="0" loc="(440,1600)" name="Splitter">
- <a name="facing" val="north"/>
- <a name="fanout" val="3"/>
- <a name="incoming" val="3"/>
- <a name="appear" val="center"/>
- </comp>
- <comp lib="2" loc="(930,960)" name="Multiplexer">
+ <comp lib="2" loc="(890,690)" name="Multiplexer">
<a name="facing" val="south"/>
<a name="width" val="2"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(180,1540)" name="Splitter">
- <a name="facing" val="north"/>
- <a name="appear" val="center"/>
- </comp>
- <comp lib="1" loc="(640,690)" name="OR Gate">
+ <comp lib="1" loc="(800,870)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(280,300)" name="Constant"/>
- <comp lib="1" loc="(520,330)" name="OR Gate">
+ <comp lib="1" loc="(330,1370)" name="AND Gate">
+ <a name="inputs" val="8"/>
+ <a name="label" val="CMP"/>
+ </comp>
+ <comp lib="1" loc="(480,1410)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(300,1740)" name="OR Gate">
- <a name="facing" val="west"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="0" loc="(280,210)" name="Constant"/>
+ <comp lib="0" loc="(380,1830)" name="Constant">
+ <a name="width" val="8"/>
+ <a name="value" val="0xf0"/>
</comp>
- <comp lib="1" loc="(290,1610)" name="OR Gate">
+ <comp lib="2" loc="(230,1670)" name="Multiplexer">
<a name="width" val="8"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="1" loc="(640,1050)" name="OR Gate">
+ <comp lib="0" loc="(720,60)" name="Constant">
<a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="1" loc="(440,420)" name="OR Gate">
+ <comp lib="0" loc="(280,1360)" name="Constant"/>
+ <comp lib="1" loc="(480,150)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(220,1460)" name="Splitter">
- <a name="facing" val="north"/>
- <a name="appear" val="center"/>
- </comp>
- <comp lib="0" loc="(280,410)" name="Constant"/>
- <comp lib="0" loc="(280,220)" name="Constant"/>
- <comp lib="0" loc="(330,1680)" name="Pin">
- <a name="facing" val="north"/>
- <a name="output" val="true"/>
- <a name="width" val="8"/>
- <a name="label" val="MEM POINTER"/>
- <a name="labelloc" val="south"/>
- </comp>
- <comp lib="0" loc="(890,60)" name="Constant">
+ <comp lib="0" loc="(240,1580)" name="Constant">
<a name="facing" val="south"/>
- <a name="width" val="2"/>
+ <a name="width" val="4"/>
<a name="value" val="0x0"/>
</comp>
- <comp lib="0" loc="(780,1880)" name="Pin">
+ <comp lib="0" loc="(840,1610)" name="Pin">
<a name="facing" val="north"/>
<a name="output" val="true"/>
- <a name="label" val="BRANCH"/>
+ <a name="width" val="2"/>
+ <a name="label" val="A (R)"/>
<a name="labelloc" val="south"/>
</comp>
- <comp lib="1" loc="(1150,1560)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="4"/>
+ <comp lib="1" loc="(330,380)" name="AND Gate">
+ <a name="inputs" val="8"/>
+ <a name="label" val="DYN"/>
<a name="negate0" val="true"/>
- <a name="negate1" val="true"/>
- </comp>
- <comp lib="0" loc="(830,1890)" name="Pin">
- <a name="facing" val="west"/>
- <a name="output" val="true"/>
- <a name="label" val="External Address Select"/>
- <a name="labelloc" val="east"/>
</comp>
- <comp lib="1" loc="(680,1230)" name="OR Gate">
+ <comp lib="0" loc="(280,270)" name="Constant"/>
+ <comp lib="1" loc="(640,1140)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(840,1690)" name="OR Gate">
+ <comp lib="1" loc="(520,420)" name="OR Gate">
+ <a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(1040,1510)" name="AND Gate">
- <a name="facing" val="west"/>
- <a name="label" val="ptrinc"/>
- </comp>
- <comp lib="1" loc="(330,830)" name="AND Gate">
- <a name="inputs" val="8"/>
- <a name="label" val="PUSH"/>
- <a name="negate2" val="true"/>
- <a name="negate3" val="true"/>
- <a name="negate5" val="true"/>
- <a name="negate6" val="true"/>
- </comp>
- <comp lib="0" loc="(440,1880)" name="Pin">
- <a name="facing" val="north"/>
- <a name="output" val="true"/>
- <a name="label" val="Memory Select"/>
- <a name="labelloc" val="south"/>
+ <comp lib="0" loc="(900,1000)" name="Constant">
+ <a name="facing" val="south"/>
+ <a name="width" val="2"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="1" loc="(600,600)" name="OR Gate">
+ <comp lib="1" loc="(480,330)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(280,420)" name="Constant"/>
- <comp lib="2" loc="(290,1450)" name="Multiplexer">
- <a name="width" val="2"/>
- <a name="enable" val="false"/>
+ <comp lib="0" loc="(480,60)" name="Constant">
+ <a name="facing" val="south"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="2" loc="(910,1560)" name="Multiplexer">
+ <comp lib="0" loc="(280,280)" name="Constant"/>
+ <comp lib="3" loc="(200,1680)" name="Adder"/>
+ <comp lib="2" loc="(850,600)" name="Multiplexer">
<a name="facing" val="south"/>
- <a name="selloc" val="tr"/>
<a name="width" val="2"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(280,1200)" name="Constant"/>
- <comp lib="0" loc="(800,60)" name="Constant">
- <a name="facing" val="south"/>
- <a name="value" val="0x0"/>
- </comp>
- <comp lib="0" loc="(900,550)" name="Constant">
+ <comp lib="1" loc="(600,1050)" name="OR Gate">
<a name="facing" val="south"/>
- <a name="width" val="2"/>
- <a name="value" val="0x0"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(860,550)" name="Constant">
+ <comp lib="2" loc="(890,870)" name="Multiplexer">
<a name="facing" val="south"/>
<a name="width" val="2"/>
- <a name="value" val="0x0"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(800,1580)" name="Pin">
+ <comp lib="0" loc="(440,1610)" name="Pin">
<a name="facing" val="north"/>
<a name="output" val="true"/>
- <a name="label" val="PUSH"/>
+ <a name="width" val="3"/>
+ <a name="label" val="ALU OP"/>
<a name="labelloc" val="south"/>
</comp>
- <comp lib="0" loc="(660,1880)" name="Pin">
+ <comp lib="0" loc="(230,1580)" name="Splitter">
<a name="facing" val="north"/>
- <a name="tristate" val="false"/>
- <a name="label" val="JMP FLAG"/>
- <a name="labelloc" val="south"/>
- </comp>
- <comp lib="1" loc="(330,560)" name="AND Gate">
- <a name="inputs" val="8"/>
- <a name="label" val="LLI"/>
- <a name="negate6" val="true"/>
- <a name="negate7" val="true"/>
+ <a name="incoming" val="4"/>
+ <a name="bit1" val="0"/>
+ <a name="bit2" val="1"/>
+ <a name="bit3" val="1"/>
</comp>
- <comp lib="2" loc="(890,600)" name="Multiplexer">
+ <comp lib="1" loc="(560,510)" name="OR Gate">
<a name="facing" val="south"/>
- <a name="width" val="2"/>
- <a name="enable" val="false"/>
- </comp>
- <comp lib="1" loc="(330,200)" name="AND Gate">
- <a name="inputs" val="8"/>
- <a name="label" val="SOP"/>
- <a name="negate0" val="true"/>
- <a name="negate1" val="true"/>
- <a name="negate2" val="true"/>
- <a name="negate3" val="true"/>
- </comp>
- <comp lib="1" loc="(330,110)" name="AND Gate">
- <a name="inputs" val="8"/>
- <a name="label" val="OR"/>
- <a name="negate0" val="true"/>
- <a name="negate1" val="true"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(260,1440)" name="Constant">
+ <comp lib="0" loc="(860,1000)" name="Constant">
+ <a name="facing" val="south"/>
<a name="width" val="2"/>
<a name="value" val="0x0"/>
</comp>
+ <comp lib="0" loc="(280,120)" name="Constant"/>
+ <comp lib="0" loc="(80,250)" name="Pin">
+ <a name="tristate" val="false"/>
+ <a name="label" val="RST"/>
+ </comp>
+ <comp lib="0" loc="(280,90)" name="Constant"/>
<comp lib="3" loc="(420,1820)" name="Comparator">
<a name="mode" val="unsigned"/>
</comp>
- <comp lib="1" loc="(330,1010)" name="AND Gate">
- <a name="inputs" val="8"/>
- <a name="label" val="PCR"/>
- <a name="negate2" val="true"/>
- <a name="negate3" val="true"/>
- <a name="negate6" val="true"/>
- </comp>
- <comp lib="1" loc="(680,1140)" name="OR Gate">
+ <comp lib="0" loc="(220,1610)" name="Constant">
<a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <a name="width" val="4"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="0" loc="(380,1830)" name="Constant">
- <a name="width" val="8"/>
- <a name="value" val="0xf0"/>
+ <comp lib="2" loc="(290,1490)" name="Multiplexer">
+ <a name="width" val="2"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="1" loc="(560,330)" name="OR Gate">
+ <comp lib="0" loc="(280,550)" name="Constant"/>
+ <comp lib="1" loc="(430,700)" name="AND Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
+ <a name="negate1" val="true"/>
</comp>
<comp lib="1" loc="(330,290)" name="AND Gate">
<a name="inputs" val="8"/>
<a name="label" val="NAND"/>
<a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(280,1390)" name="Constant"/>
- <comp lib="1" loc="(520,1320)" name="OR Gate">
+ <comp lib="2" loc="(850,870)" name="Multiplexer">
<a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <a name="width" val="2"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="1" loc="(440,1140)" name="OR Gate">
+ <comp lib="4" loc="(260,1670)" name="Register"/>
+ <comp lib="1" loc="(360,330)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(850,60)" name="Constant">
- <a name="facing" val="south"/>
- <a name="width" val="2"/>
- <a name="value" val="0x0"/>
- </comp>
- <comp lib="2" loc="(290,1490)" name="Multiplexer">
- <a name="width" val="2"/>
+ <comp lib="0" loc="(280,1200)" name="Constant"/>
+ <comp lib="2" loc="(320,1620)" name="Multiplexer">
+ <a name="selloc" val="tr"/>
+ <a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(280,270)" name="Constant"/>
- <comp lib="0" loc="(860,820)" name="Constant">
- <a name="facing" val="south"/>
+ <comp lib="0" loc="(280,640)" name="Constant"/>
+ <comp lib="0" loc="(280,420)" name="Constant"/>
+ <comp lib="0" loc="(280,140)" name="Constant"/>
+ <comp lib="0" loc="(260,1480)" name="Constant">
<a name="width" val="2"/>
+ <a name="value" val="0x0"/>
</comp>
<comp lib="2" loc="(890,960)" name="Multiplexer">
<a name="facing" val="south"/>
<a name="width" val="2"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(1110,1190)" name="Pin">
+ <comp lib="1" loc="(330,650)" name="AND Gate">
+ <a name="inputs" val="8"/>
+ <a name="label" val="LUI"/>
+ <a name="negate7" val="true"/>
+ </comp>
+ <comp lib="0" loc="(280,300)" name="Constant"/>
+ <comp lib="0" loc="(90,1640)" name="Pin">
+ <a name="width" val="8"/>
+ <a name="tristate" val="false"/>
+ <a name="label" val="ALU OUTPUT"/>
+ <a name="labelloc" val="south"/>
+ </comp>
+ <comp lib="1" loc="(330,200)" name="AND Gate">
+ <a name="inputs" val="8"/>
+ <a name="label" val="SOP"/>
+ <a name="negate0" val="true"/>
+ <a name="negate1" val="true"/>
+ <a name="negate2" val="true"/>
+ <a name="negate3" val="true"/>
+ </comp>
+ <comp lib="4" loc="(710,1700)" name="Register">
+ <a name="width" val="1"/>
+ <a name="trigger" val="falling"/>
+ </comp>
+ <comp lib="1" loc="(560,150)" name="OR Gate">
+ <a name="facing" val="south"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="0" loc="(830,1890)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
- <a name="label" val="Write Enable"/>
+ <a name="label" val="External Address Select"/>
<a name="labelloc" val="east"/>
</comp>
- <comp lib="0" loc="(1110,1360)" name="Pin">
+ <comp lib="0" loc="(660,1880)" name="Pin">
+ <a name="facing" val="north"/>
+ <a name="tristate" val="false"/>
+ <a name="label" val="JMP FLAG"/>
+ <a name="labelloc" val="south"/>
+ </comp>
+ <comp lib="0" loc="(80,50)" name="Pin">
+ <a name="width" val="8"/>
+ <a name="tristate" val="false"/>
+ <a name="label" val="DATA"/>
+ <a name="labelloc" val="north"/>
+ </comp>
+ <comp lib="0" loc="(1150,1480)" name="Splitter">
<a name="facing" val="west"/>
- <a name="output" val="true"/>
- <a name="label" val="ALU State"/>
- <a name="labelloc" val="east"/>
+ <a name="fanout" val="4"/>
+ <a name="incoming" val="4"/>
</comp>
- <comp lib="0" loc="(250,1600)" name="Splitter">
+ <comp lib="0" loc="(620,1610)" name="Pin">
<a name="facing" val="north"/>
- <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"/>
+ <a name="output" val="true"/>
+ <a name="width" val="2"/>
+ <a name="label" val="GPR MUX"/>
+ <a name="labelloc" val="south"/>
</comp>
- <comp lib="0" loc="(860,1000)" name="Constant">
+ <comp lib="2" loc="(910,1560)" name="Multiplexer">
<a name="facing" val="south"/>
+ <a name="selloc" val="tr"/>
<a name="width" val="2"/>
- <a name="value" val="0x0"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="1" loc="(330,650)" name="AND Gate">
+ <comp lib="1" loc="(330,1010)" name="AND Gate">
<a name="inputs" val="8"/>
- <a name="label" val="LUI"/>
- <a name="negate7" val="true"/>
+ <a name="label" val="PCR"/>
+ <a name="negate2" val="true"/>
+ <a name="negate3" val="true"/>
+ <a name="negate6" val="true"/>
</comp>
- <comp lib="0" loc="(860,640)" name="Constant">
+ <comp lib="0" loc="(280,1110)" name="Constant"/>
+ <comp lib="0" loc="(850,60)" name="Constant">
<a name="facing" val="south"/>
<a name="width" val="2"/>
<a name="value" val="0x0"/>
</comp>
- <comp lib="0" loc="(260,1480)" name="Constant">
- <a name="width" val="2"/>
+ <comp lib="0" loc="(360,60)" name="Constant">
+ <a name="facing" val="south"/>
<a name="value" val="0x0"/>
</comp>
- <comp lib="1" loc="(280,370)" name="OR Gate">
+ <comp lib="0" loc="(280,630)" name="Constant"/>
+ <comp lib="1" loc="(770,1690)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
+ <a name="negate1" val="true"/>
</comp>
- <comp lib="1" loc="(760,960)" name="OR Gate">
+ <comp lib="2" loc="(850,1050)" name="Multiplexer">
+ <a name="facing" val="south"/>
+ <a name="width" val="2"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="2" loc="(290,1450)" name="Multiplexer">
+ <a name="width" val="2"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(280,1350)" name="Constant"/>
+ <comp lib="0" loc="(280,320)" name="Constant"/>
+ <comp lib="1" loc="(440,1140)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(600,1050)" name="OR Gate">
+ <comp lib="0" loc="(280,510)" name="Constant"/>
+ <comp lib="0" loc="(920,1610)" name="Pin">
+ <a name="facing" val="north"/>
+ <a name="output" val="true"/>
+ <a name="width" val="2"/>
+ <a name="label" val="C (W)"/>
+ <a name="labelloc" val="south"/>
+ </comp>
+ <comp lib="0" loc="(280,540)" name="Constant"/>
+ <comp lib="0" loc="(130,60)" name="Constant">
+ <a name="width" val="8"/>
+ <a name="value" val="0x0"/>
+ </comp>
+ <comp lib="1" loc="(560,330)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(280,480)" name="Constant"/>
- <comp lib="1" loc="(520,420)" name="OR Gate">
+ <comp lib="1" loc="(820,1860)" name="AND Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
+ <a name="negate0" val="true"/>
</comp>
- <comp lib="0" loc="(940,910)" name="Constant">
+ <comp lib="0" loc="(860,550)" name="Constant">
<a name="facing" val="south"/>
<a name="width" val="2"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="0" loc="(280,490)" name="Constant"/>
- <comp lib="1" loc="(560,150)" name="OR Gate">
+ <comp lib="1" loc="(520,1410)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(520,150)" name="OR Gate">
+ <comp lib="0" loc="(940,820)" name="Constant">
<a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <a name="width" val="2"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="1" loc="(330,920)" name="AND Gate">
+ <comp lib="0" loc="(440,1600)" name="Splitter">
+ <a name="facing" val="north"/>
+ <a name="fanout" val="3"/>
+ <a name="incoming" val="3"/>
+ <a name="appear" val="center"/>
+ </comp>
+ <comp lib="1" loc="(330,470)" name="AND Gate">
<a name="inputs" val="8"/>
- <a name="label" val="POP"/>
+ <a name="label" val="CIN"/>
+ <a name="negate0" val="true"/>
<a name="negate2" val="true"/>
<a name="negate3" val="true"/>
- <a name="negate4" val="true"/>
- <a name="negate6" val="true"/>
</comp>
- <comp lib="1" loc="(600,960)" name="OR Gate">
- <a name="facing" val="south"/>
+ <comp lib="1" loc="(290,1610)" name="OR Gate">
+ <a name="width" val="8"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="4" loc="(110,50)" name="Register">
- <a name="trigger" val="falling"/>
+ <comp lib="1" loc="(360,510)" name="OR Gate">
+ <a name="facing" val="south"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(280,150)" name="Constant"/>
- <comp lib="1" loc="(720,780)" name="OR Gate">
+ <comp lib="1" loc="(440,730)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(280,280)" name="Constant"/>
- <comp lib="0" loc="(240,1630)" name="Splitter">
+ <comp lib="0" loc="(640,60)" name="Constant">
+ <a name="facing" val="south"/>
+ <a name="value" val="0x0"/>
+ </comp>
+ <comp lib="0" loc="(200,1500)" name="Splitter">
+ <a name="facing" val="north"/>
+ <a name="appear" val="center"/>
+ </comp>
+ <comp lib="2" loc="(930,1050)" name="Multiplexer">
+ <a name="facing" val="south"/>
+ <a name="width" val="2"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(280,390)" name="Constant"/>
+ <comp lib="0" loc="(280,1380)" name="Constant"/>
+ <comp lib="2" loc="(520,1670)" name="Multiplexer">
+ <a name="selloc" val="tr"/>
+ <a name="width" val="8"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(240,1630)" name="Splitter">
<a name="facing" val="north"/>
<a name="incoming" val="8"/>
<a name="bit1" val="0"/>
@@ -3265,146 +3386,64 @@
<a name="bit6" val="1"/>
<a name="bit7" val="1"/>
</comp>
- <comp lib="0" loc="(940,820)" name="Constant">
- <a name="facing" val="south"/>
- <a name="width" val="2"/>
- <a name="value" val="0x0"/>
- </comp>
- <comp lib="0" loc="(90,1640)" name="Pin">
- <a name="width" val="8"/>
- <a name="tristate" val="false"/>
- <a name="label" val="ALU OUTPUT"/>
- <a name="labelloc" val="south"/>
- </comp>
- <comp lib="0" loc="(80,250)" name="Pin">
- <a name="tristate" val="false"/>
- <a name="label" val="RST"/>
- </comp>
- <comp lib="1" loc="(330,380)" name="AND Gate">
- <a name="inputs" val="8"/>
- <a name="label" val="DYN"/>
- <a name="negate0" val="true"/>
- </comp>
- <comp lib="0" loc="(280,500)" name="Constant"/>
- <comp lib="0" loc="(360,60)" name="Constant">
- <a name="facing" val="south"/>
- <a name="value" val="0x0"/>
- </comp>
- <comp lib="0" loc="(260,1520)" name="Constant">
- <a name="width" val="2"/>
- <a name="value" val="0x0"/>
- </comp>
- <comp lib="0" loc="(280,400)" name="Constant"/>
- <comp lib="0" loc="(280,130)" name="Constant"/>
- <comp lib="0" loc="(280,1360)" name="Constant"/>
- <comp lib="0" loc="(240,1580)" name="Constant">
- <a name="facing" val="south"/>
- <a name="width" val="4"/>
- <a name="value" val="0x0"/>
- </comp>
- <comp lib="2" loc="(930,690)" name="Multiplexer">
- <a name="facing" val="south"/>
- <a name="width" val="2"/>
- <a name="enable" val="false"/>
- </comp>
- <comp lib="0" loc="(280,360)" name="Constant"/>
- <comp lib="0" loc="(130,60)" name="Constant">
- <a name="width" val="8"/>
- <a name="value" val="0x0"/>
+ <comp lib="0" loc="(1110,1190)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="label" val="Write Enable"/>
+ <a name="labelloc" val="east"/>
</comp>
- <comp lib="1" loc="(480,150)" name="OR Gate">
+ <comp lib="1" loc="(640,690)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="4" loc="(870,1690)" name="Register">
- <a name="width" val="1"/>
- <a name="trigger" val="falling"/>
- </comp>
- <comp lib="0" loc="(280,390)" name="Constant"/>
- <comp lib="0" loc="(940,1000)" name="Constant">
- <a name="facing" val="south"/>
- <a name="width" val="2"/>
- <a name="value" val="0x3"/>
- </comp>
- <comp lib="0" loc="(280,330)" name="Constant"/>
- <comp lib="2" loc="(930,870)" name="Multiplexer">
+ <comp lib="2" loc="(850,960)" name="Multiplexer">
<a name="facing" val="south"/>
<a name="width" val="2"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(930,1050)" name="Multiplexer">
+ <comp lib="0" loc="(560,60)" name="Constant">
<a name="facing" val="south"/>
- <a name="width" val="2"/>
- <a name="enable" val="false"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="1" loc="(520,510)" name="OR Gate">
- <a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="0" loc="(760,1580)" name="Pin">
+ <a name="facing" val="north"/>
+ <a name="output" val="true"/>
+ <a name="label" val="POP"/>
+ <a name="labelloc" val="south"/>
</comp>
- <comp lib="1" loc="(600,690)" name="OR Gate">
- <a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="0" loc="(280,480)" name="Constant"/>
+ <comp lib="2" loc="(160,50)" name="Multiplexer">
+ <a name="width" val="8"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="1" loc="(640,600)" name="OR Gate">
+ <comp lib="0" loc="(520,60)" name="Constant">
<a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="1" loc="(480,420)" name="OR Gate">
+ <comp lib="0" loc="(860,910)" name="Constant">
<a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <a name="width" val="2"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="1" loc="(560,510)" name="OR Gate">
- <a name="facing" val="south"/>
+ <comp lib="0" loc="(280,400)" name="Constant"/>
+ <comp lib="0" loc="(280,660)" name="Constant"/>
+ <comp lib="1" loc="(260,1750)" name="AND Gate">
+ <a name="facing" val="west"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(330,1190)" name="AND Gate">
- <a name="inputs" val="8"/>
- <a name="label" val="SB"/>
- <a name="negate2" val="true"/>
- <a name="negate6" val="true"/>
- </comp>
- <comp lib="3" loc="(200,1680)" name="Adder"/>
- <comp lib="0" loc="(280,230)" name="Constant"/>
- <comp lib="0" loc="(230,1580)" name="Splitter">
- <a name="facing" val="north"/>
- <a name="incoming" val="4"/>
- <a name="bit1" val="0"/>
- <a name="bit2" val="1"/>
- <a name="bit3" val="1"/>
- </comp>
- <comp lib="0" loc="(280,660)" name="Constant"/>
- <comp lib="1" loc="(560,420)" name="OR Gate">
+ <comp lib="0" loc="(860,640)" name="Constant">
<a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <a name="width" val="2"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="1" loc="(360,330)" name="OR Gate">
+ <comp lib="0" loc="(280,240)" name="Constant"/>
+ <comp lib="1" loc="(760,960)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(80,80)" name="Pin">
- <a name="tristate" val="false"/>
- <a name="label" val="CLK"/>
- </comp>
- <comp lib="0" loc="(160,50)" name="Splitter">
- <a name="facing" val="south"/>
- <a name="fanout" val="8"/>
- <a name="incoming" val="8"/>
- </comp>
- <comp lib="6" loc="(233,1834)" name="Text">
- <a name="text" val="This input defines the range of MMIO -->"/>
- </comp>
- <comp lib="0" loc="(200,1500)" name="Splitter">
- <a name="facing" val="north"/>
- <a name="appear" val="center"/>
- </comp>
</circuit>
<circuit name="STK">
<a name="circuit" val="STK"/>
@@ -3916,25 +3955,31 @@
<wire from="(750,260)" to="(760,260)"/>
<wire from="(760,270)" to="(770,270)"/>
<wire from="(1250,270)" to="(1270,270)"/>
- <comp lib="2" loc="(2730,260)" name="Multiplexer">
+ <comp lib="2" loc="(2950,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(2290,260)" name="Multiplexer">
+ <comp lib="0" loc="(180,320)" name="Pin">
+ <a name="tristate" val="false"/>
+ </comp>
+ <comp lib="2" loc="(530,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(3220,270)" name="Register"/>
- <comp lib="2" loc="(3390,260)" name="Multiplexer">
+ <comp lib="2" loc="(3500,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(910,270)" name="Register"/>
- <comp lib="4" loc="(1790,270)" name="Register"/>
- <comp lib="2" loc="(2950,260)" name="Multiplexer">
+ <comp lib="4" loc="(3000,270)" name="Register"/>
+ <comp lib="2" loc="(2840,260)" name="Multiplexer">
+ <a name="width" val="8"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="2" loc="(3610,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
+ <comp lib="4" loc="(2010,270)" name="Register"/>
<comp lib="2" loc="(1300,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
@@ -3943,174 +3988,168 @@
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(860,260)" name="Multiplexer">
+ <comp lib="4" loc="(690,270)" name="Register"/>
+ <comp lib="2" loc="(3390,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(360,270)" name="Register"/>
- <comp lib="1" loc="(150,300)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="4" loc="(1350,270)" name="Register"/>
+ <comp lib="4" loc="(1460,270)" name="Register"/>
+ <comp lib="4" loc="(1240,270)" name="Register"/>
+ <comp lib="4" loc="(800,270)" name="Register"/>
+ <comp lib="2" loc="(1190,260)" name="Multiplexer">
+ <a name="width" val="8"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(150,220)" name="Pin">
- <a name="output" val="true"/>
+ <comp lib="4" loc="(2450,270)" name="Register"/>
+ <comp lib="2" loc="(1630,260)" name="Multiplexer">
<a name="width" val="8"/>
- <a name="tristate" val="false"/>
- <a name="labelloc" val="east"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(690,270)" name="Register"/>
- <comp lib="0" loc="(150,270)" name="Pin">
+ <comp lib="0" loc="(3670,220)" name="Constant">
+ <a name="facing" val="west"/>
<a name="width" val="8"/>
- <a name="tristate" val="false"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="4" loc="(2780,270)" name="Register"/>
- <comp lib="4" loc="(3550,270)" name="Register"/>
- <comp lib="4" loc="(1680,270)" name="Register"/>
- <comp lib="4" loc="(1570,270)" name="Register"/>
- <comp lib="4" loc="(1900,270)" name="Register"/>
- <comp lib="2" loc="(2180,260)" name="Multiplexer">
+ <comp lib="4" loc="(3220,270)" name="Register"/>
+ <comp lib="4" loc="(2340,270)" name="Register"/>
+ <comp lib="2" loc="(2730,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(3610,260)" name="Multiplexer">
+ <comp lib="4" loc="(1130,270)" name="Register"/>
+ <comp lib="2" loc="(1850,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(530,260)" name="Multiplexer">
+ <comp lib="4" loc="(910,270)" name="Register"/>
+ <comp lib="2" loc="(1080,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(2120,270)" name="Register"/>
- <comp lib="4" loc="(2010,270)" name="Register"/>
- <comp lib="2" loc="(1190,260)" name="Multiplexer">
+ <comp lib="2" loc="(3060,260)" name="Multiplexer">
+ <a name="width" val="8"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="2" loc="(970,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(1240,270)" name="Register"/>
- <comp lib="4" loc="(3440,270)" name="Register"/>
- <comp lib="4" loc="(250,270)" name="Register"/>
<comp lib="0" loc="(90,290)" name="Pin">
<a name="tristate" val="false"/>
</comp>
- <comp lib="2" loc="(3500,260)" name="Multiplexer">
+ <comp lib="0" loc="(150,220)" name="Pin">
+ <a name="output" val="true"/>
<a name="width" val="8"/>
- <a name="enable" val="false"/>
- </comp>
- <comp lib="4" loc="(2670,270)" name="Register"/>
- <comp lib="4" loc="(2560,270)" name="Register"/>
- <comp lib="0" loc="(90,360)" name="Pin">
<a name="tristate" val="false"/>
+ <a name="labelloc" val="east"/>
</comp>
<comp lib="4" loc="(580,270)" name="Register"/>
- <comp lib="2" loc="(2510,260)" name="Multiplexer">
+ <comp lib="0" loc="(150,270)" name="Pin">
<a name="width" val="8"/>
- <a name="enable" val="false"/>
+ <a name="tristate" val="false"/>
</comp>
- <comp lib="2" loc="(2400,260)" name="Multiplexer">
- <a name="width" val="8"/>
- <a name="enable" val="false"/>
- </comp>
- <comp lib="4" loc="(1350,270)" name="Register"/>
- <comp lib="4" loc="(2230,270)" name="Register"/>
- <comp lib="2" loc="(420,260)" name="Multiplexer">
- <a name="width" val="8"/>
- <a name="enable" val="false"/>
- </comp>
- <comp lib="2" loc="(1080,260)" name="Multiplexer">
+ <comp lib="4" loc="(3550,270)" name="Register"/>
+ <comp lib="4" loc="(1900,270)" name="Register"/>
+ <comp lib="4" loc="(2120,270)" name="Register"/>
+ <comp lib="4" loc="(1020,270)" name="Register"/>
+ <comp lib="4" loc="(2670,270)" name="Register"/>
+ <comp lib="4" loc="(1790,270)" name="Register"/>
+ <comp lib="4" loc="(1680,270)" name="Register"/>
+ <comp lib="4" loc="(3330,270)" name="Register"/>
+ <comp lib="4" loc="(470,270)" name="Register"/>
+ <comp lib="2" loc="(3170,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(1130,270)" name="Register"/>
- <comp lib="4" loc="(2890,270)" name="Register"/>
- <comp lib="0" loc="(90,330)" name="Pin">
- <a name="tristate" val="false"/>
- </comp>
- <comp lib="4" loc="(3000,270)" name="Register"/>
- <comp lib="0" loc="(180,320)" name="Pin">
+ <comp lib="0" loc="(90,360)" name="Pin">
<a name="tristate" val="false"/>
</comp>
- <comp lib="1" loc="(130,340)" name="OR Gate">
+ <comp lib="4" loc="(3660,270)" name="Register"/>
+ <comp lib="1" loc="(150,300)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="2" loc="(3170,260)" name="Multiplexer">
+ <comp lib="2" loc="(2290,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(640,260)" name="Multiplexer">
+ <comp lib="4" loc="(1570,270)" name="Register"/>
+ <comp lib="2" loc="(860,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(1410,260)" name="Multiplexer">
+ <comp lib="2" loc="(1520,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(3660,270)" name="Register"/>
- <comp lib="4" loc="(470,270)" name="Register"/>
- <comp lib="2" loc="(1960,260)" name="Multiplexer">
+ <comp lib="4" loc="(250,270)" name="Register"/>
+ <comp lib="2" loc="(3280,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(1850,260)" name="Multiplexer">
+ <comp lib="2" loc="(2180,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(970,260)" name="Multiplexer">
+ <comp lib="4" loc="(2560,270)" name="Register"/>
+ <comp lib="2" loc="(1410,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(1020,270)" name="Register"/>
- <comp lib="4" loc="(3110,270)" name="Register"/>
- <comp lib="2" loc="(2070,260)" name="Multiplexer">
+ <comp lib="2" loc="(1960,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(1520,260)" name="Multiplexer">
+ <comp lib="4" loc="(3440,270)" name="Register"/>
+ <comp lib="2" loc="(310,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(3060,260)" name="Multiplexer">
- <a name="width" val="8"/>
- <a name="enable" val="false"/>
+ <comp lib="1" loc="(130,340)" name="OR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
+ <comp lib="4" loc="(3110,270)" name="Register"/>
+ <comp lib="4" loc="(360,270)" name="Register"/>
<comp lib="2" loc="(2620,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(800,270)" name="Register"/>
- <comp lib="4" loc="(2340,270)" name="Register"/>
- <comp lib="4" loc="(3330,270)" name="Register"/>
- <comp lib="2" loc="(750,260)" name="Multiplexer">
+ <comp lib="2" loc="(420,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(1460,270)" name="Register"/>
- <comp lib="2" loc="(1630,260)" name="Multiplexer">
+ <comp lib="4" loc="(2230,270)" name="Register"/>
+ <comp lib="2" loc="(640,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(310,260)" name="Multiplexer">
+ <comp lib="0" loc="(90,330)" name="Pin">
+ <a name="tristate" val="false"/>
+ </comp>
+ <comp lib="2" loc="(2070,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(3670,220)" name="Constant">
- <a name="facing" val="west"/>
+ <comp lib="4" loc="(2890,270)" name="Register"/>
+ <comp lib="2" loc="(2400,260)" name="Multiplexer">
<a name="width" val="8"/>
- <a name="value" val="0x0"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(3280,260)" name="Multiplexer">
+ <comp lib="2" loc="(1740,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(2450,270)" name="Register"/>
- <comp lib="2" loc="(1740,260)" name="Multiplexer">
+ <comp lib="2" loc="(750,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(2840,260)" name="Multiplexer">
+ <comp lib="2" loc="(2510,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
+ <comp lib="4" loc="(2780,270)" name="Register"/>
</circuit>
<circuit name="PC">
<a name="circuit" val="PC"/>
@@ -4150,22 +4189,20 @@
<wire from="(200,330)" to="(200,350)"/>
<wire from="(140,400)" to="(240,400)"/>
<wire from="(230,320)" to="(230,380)"/>
- <comp lib="6" loc="(79,355)" name="Text">
- <a name="text" val="Jump Enable"/>
+ <comp lib="0" loc="(290,330)" name="Constant">
+ <a name="width" val="8"/>
</comp>
- <comp lib="1" loc="(200,380)" name="NOT Gate"/>
- <comp lib="0" loc="(140,350)" name="Pin">
+ <comp lib="0" loc="(140,400)" name="Pin">
<a name="tristate" val="false"/>
</comp>
<comp lib="0" loc="(140,380)" name="Pin">
<a name="tristate" val="false"/>
</comp>
- <comp lib="4" loc="(260,310)" name="Register">
- <a name="trigger" val="falling"/>
- </comp>
- <comp lib="2" loc="(220,310)" name="Multiplexer">
+ <comp lib="0" loc="(270,360)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
<a name="width" val="8"/>
- <a name="enable" val="false"/>
+ <a name="labelloc" val="east"/>
</comp>
<comp lib="0" loc="(140,430)" name="Pin">
<a name="tristate" val="false"/>
@@ -4173,47 +4210,61 @@
<comp lib="6" loc="(101,297)" name="Text">
<a name="text" val="Jump Address"/>
</comp>
- <comp lib="0" loc="(360,360)" name="Pin">
- <a name="facing" val="west"/>
- <a name="output" val="true"/>
- <a name="width" val="8"/>
- <a name="labelloc" val="east"/>
+ <comp lib="0" loc="(140,350)" name="Pin">
+ <a name="tristate" val="false"/>
</comp>
- <comp lib="3" loc="(330,320)" name="Adder"/>
- <comp lib="0" loc="(290,330)" name="Constant">
+ <comp lib="2" loc="(220,310)" name="Multiplexer">
<a name="width" val="8"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(140,400)" name="Pin">
+ <comp lib="0" loc="(140,320)" name="Pin">
+ <a name="width" val="8"/>
<a name="tristate" val="false"/>
</comp>
- <comp lib="0" loc="(270,360)" name="Pin">
+ <comp lib="4" loc="(260,310)" name="Register">
+ <a name="trigger" val="falling"/>
+ </comp>
+ <comp lib="1" loc="(200,380)" name="NOT Gate"/>
+ <comp lib="6" loc="(79,355)" name="Text">
+ <a name="text" val="Jump Enable"/>
+ </comp>
+ <comp lib="0" loc="(360,360)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="width" val="8"/>
<a name="labelloc" val="east"/>
</comp>
- <comp lib="0" loc="(140,320)" name="Pin">
- <a name="width" val="8"/>
- <a name="tristate" val="false"/>
- </comp>
+ <comp lib="3" loc="(330,320)" name="Adder"/>
</circuit>
<circuit name="ExampleConfigurationROM">
<a name="circuit" val="ExampleConfigurationROM"/>
<a name="clabel" val=""/>
<a name="clabelup" val="east"/>
<a name="clabelfont" val="SansSerif plain 12"/>
+ <wire from="(650,770)" to="(650,780)"/>
<wire from="(420,540)" to="(420,800)"/>
+ <wire from="(820,60)" to="(870,60)"/>
<wire from="(620,380)" to="(620,390)"/>
+ <wire from="(460,730)" to="(520,730)"/>
+ <wire from="(480,560)" to="(480,820)"/>
+ <wire from="(600,80)" to="(600,90)"/>
<wire from="(430,390)" to="(620,390)"/>
<wire from="(600,410)" to="(780,410)"/>
<wire from="(220,170)" to="(470,170)"/>
<wire from="(420,400)" to="(420,540)"/>
+ <wire from="(480,420)" to="(480,560)"/>
<wire from="(480,420)" to="(790,420)"/>
<wire from="(360,280)" to="(360,290)"/>
<wire from="(420,800)" to="(590,800)"/>
+ <wire from="(470,30)" to="(470,50)"/>
+ <wire from="(850,810)" to="(850,840)"/>
<wire from="(540,700)" to="(640,700)"/>
+ <wire from="(440,550)" to="(550,550)"/>
<wire from="(720,800)" to="(720,830)"/>
+ <wire from="(710,750)" to="(710,780)"/>
+ <wire from="(620,100)" to="(620,120)"/>
<wire from="(290,800)" to="(290,900)"/>
+ <wire from="(550,30)" to="(550,70)"/>
<wire from="(650,730)" to="(650,770)"/>
<wire from="(420,130)" to="(420,230)"/>
<wire from="(710,710)" to="(710,750)"/>
@@ -4221,180 +4272,610 @@
<wire from="(540,10)" to="(560,10)"/>
<wire from="(470,490)" to="(500,490)"/>
<wire from="(640,750)" to="(660,750)"/>
+ <wire from="(650,400)" to="(670,400)"/>
<wire from="(540,690)" to="(700,690)"/>
+ <wire from="(540,650)" to="(700,650)"/>
+ <wire from="(420,130)" to="(630,130)"/>
<wire from="(460,60)" to="(610,60)"/>
<wire from="(220,210)" to="(430,210)"/>
<wire from="(350,510)" to="(500,510)"/>
+ <wire from="(430,210)" to="(430,390)"/>
<wire from="(460,470)" to="(600,470)"/>
+ <wire from="(470,170)" to="(470,350)"/>
<wire from="(410,10)" to="(410,60)"/>
<wire from="(590,20)" to="(850,20)"/>
+ <wire from="(380,450)" to="(780,450)"/>
+ <wire from="(850,130)" to="(860,130)"/>
+ <wire from="(860,780)" to="(870,780)"/>
<wire from="(650,770)" to="(660,770)"/>
+ <wire from="(650,730)" to="(660,730)"/>
+ <wire from="(430,100)" to="(500,100)"/>
+ <wire from="(550,70)" to="(560,70)"/>
<wire from="(640,360)" to="(650,360)"/>
+ <wire from="(640,80)" to="(650,80)"/>
+ <wire from="(590,510)" to="(600,510)"/>
+ <wire from="(600,360)" to="(610,360)"/>
+ <wire from="(680,370)" to="(680,380)"/>
<wire from="(750,720)" to="(750,730)"/>
<wire from="(720,370)" to="(720,380)"/>
<wire from="(460,470)" to="(460,730)"/>
<wire from="(430,120)" to="(620,120)"/>
<wire from="(460,330)" to="(460,470)"/>
+ <wire from="(470,50)" to="(650,50)"/>
<wire from="(550,70)" to="(550,140)"/>
+ <wire from="(780,550)" to="(780,580)"/>
+ <wire from="(220,190)" to="(460,190)"/>
<wire from="(550,520)" to="(550,550)"/>
<wire from="(600,330)" to="(600,360)"/>
<wire from="(590,800)" to="(590,830)"/>
<wire from="(630,520)" to="(630,540)"/>
<wire from="(650,60)" to="(650,80)"/>
+ <wire from="(610,60)" to="(610,80)"/>
<wire from="(370,450)" to="(370,550)"/>
+ <wire from="(600,770)" to="(600,810)"/>
+ <wire from="(600,370)" to="(600,410)"/>
+ <wire from="(650,500)" to="(650,540)"/>
+ <wire from="(750,760)" to="(750,800)"/>
+ <wire from="(540,500)" to="(560,500)"/>
<wire from="(710,710)" to="(730,710)"/>
+ <wire from="(710,750)" to="(730,750)"/>
<wire from="(540,660)" to="(700,660)"/>
<wire from="(690,520)" to="(720,520)"/>
<wire from="(420,540)" to="(630,540)"/>
<wire from="(310,790)" to="(310,900)"/>
<wire from="(380,280)" to="(850,280)"/>
+ <wire from="(480,850)" to="(490,850)"/>
<wire from="(460,730)" to="(460,910)"/>
<wire from="(360,450)" to="(370,450)"/>
<wire from="(360,290)" to="(370,290)"/>
+ <wire from="(380,580)" to="(780,580)"/>
+ <wire from="(290,800)" to="(420,800)"/>
+ <wire from="(220,230)" to="(420,230)"/>
<wire from="(670,120)" to="(680,120)"/>
<wire from="(370,130)" to="(370,250)"/>
+ <wire from="(550,520)" to="(560,520)"/>
+ <wire from="(590,80)" to="(600,80)"/>
<wire from="(600,770)" to="(610,770)"/>
<wire from="(600,370)" to="(610,370)"/>
<wire from="(370,590)" to="(370,840)"/>
+ <wire from="(600,90)" to="(610,90)"/>
+ <wire from="(640,700)" to="(640,710)"/>
+ <wire from="(430,530)" to="(430,790)"/>
<wire from="(480,820)" to="(860,820)"/>
+ <wire from="(470,490)" to="(470,750)"/>
+ <wire from="(620,520)" to="(620,530)"/>
<wire from="(460,60)" to="(460,190)"/>
+ <wire from="(430,530)" to="(620,530)"/>
+ <wire from="(470,750)" to="(470,880)"/>
+ <wire from="(600,550)" to="(780,550)"/>
<wire from="(370,290)" to="(370,420)"/>
+ <wire from="(440,140)" to="(440,410)"/>
+ <wire from="(430,390)" to="(430,530)"/>
+ <wire from="(470,350)" to="(470,490)"/>
<wire from="(310,790)" to="(430,790)"/>
+ <wire from="(720,730)" to="(720,800)"/>
+ <wire from="(480,560)" to="(790,560)"/>
+ <wire from="(650,780)" to="(710,780)"/>
<wire from="(600,810)" to="(850,810)"/>
+ <wire from="(360,580)" to="(360,590)"/>
+ <wire from="(440,410)" to="(550,410)"/>
+ <wire from="(440,810)" to="(550,810)"/>
<wire from="(480,820)" to="(480,850)"/>
+ <wire from="(470,50)" to="(470,80)"/>
<wire from="(850,130)" to="(850,280)"/>
+ <wire from="(430,120)" to="(430,210)"/>
+ <wire from="(470,80)" to="(470,170)"/>
<wire from="(850,20)" to="(850,130)"/>
<wire from="(470,350)" to="(500,350)"/>
<wire from="(470,750)" to="(500,750)"/>
<wire from="(470,30)" to="(500,30)"/>
<wire from="(650,540)" to="(670,540)"/>
<wire from="(540,630)" to="(700,630)"/>
+ <wire from="(540,670)" to="(700,670)"/>
+ <wire from="(720,800)" to="(750,800)"/>
+ <wire from="(470,880)" to="(490,880)"/>
<wire from="(350,770)" to="(500,770)"/>
<wire from="(350,370)" to="(500,370)"/>
<wire from="(280,900)" to="(290,900)"/>
<wire from="(460,330)" to="(600,330)"/>
+ <wire from="(590,830)" to="(720,830)"/>
<wire from="(640,780)" to="(650,780)"/>
<wire from="(720,700)" to="(730,700)"/>
<wire from="(600,500)" to="(610,500)"/>
<wire from="(220,150)" to="(480,150)"/>
+ <wire from="(590,770)" to="(600,770)"/>
+ <wire from="(590,370)" to="(600,370)"/>
+ <wire from="(640,500)" to="(650,500)"/>
<wire from="(680,510)" to="(680,520)"/>
+ <wire from="(720,510)" to="(720,520)"/>
<wire from="(440,550)" to="(440,810)"/>
<wire from="(690,760)" to="(740,760)"/>
+ <wire from="(690,720)" to="(740,720)"/>
<wire from="(870,140)" to="(870,150)"/>
+ <wire from="(480,150)" to="(480,420)"/>
<wire from="(440,410)" to="(440,550)"/>
<wire from="(430,790)" to="(610,790)"/>
<wire from="(460,190)" to="(460,330)"/>
+ <wire from="(440,140)" to="(550,140)"/>
<wire from="(550,780)" to="(550,810)"/>
<wire from="(550,380)" to="(550,410)"/>
+ <wire from="(630,100)" to="(630,130)"/>
+ <wire from="(600,470)" to="(600,500)"/>
<wire from="(440,110)" to="(440,140)"/>
+ <wire from="(520,710)" to="(520,730)"/>
<wire from="(630,380)" to="(630,400)"/>
<wire from="(410,10)" to="(500,10)"/>
<wire from="(600,510)" to="(600,550)"/>
<wire from="(640,710)" to="(640,750)"/>
+ <wire from="(650,360)" to="(650,400)"/>
+ <wire from="(540,760)" to="(560,760)"/>
+ <wire from="(540,360)" to="(560,360)"/>
+ <wire from="(780,410)" to="(780,450)"/>
<wire from="(470,80)" to="(500,80)"/>
+ <wire from="(460,910)" to="(490,910)"/>
<wire from="(370,840)" to="(850,840)"/>
<wire from="(220,110)" to="(440,110)"/>
<wire from="(540,680)" to="(700,680)"/>
<wire from="(690,380)" to="(720,380)"/>
<wire from="(420,400)" to="(630,400)"/>
+ <wire from="(540,640)" to="(700,640)"/>
<wire from="(720,730)" to="(750,730)"/>
<wire from="(220,130)" to="(370,130)"/>
<wire from="(420,230)" to="(420,400)"/>
+ <wire from="(430,60)" to="(430,100)"/>
<wire from="(870,60)" to="(870,120)"/>
+ <wire from="(360,590)" to="(370,590)"/>
+ <wire from="(670,60)" to="(670,120)"/>
<wire from="(670,60)" to="(680,60)"/>
- <wire from="(650,770)" to="(650,780)"/>
- <wire from="(820,60)" to="(870,60)"/>
- <wire from="(460,730)" to="(520,730)"/>
- <wire from="(480,560)" to="(480,820)"/>
- <wire from="(600,80)" to="(600,90)"/>
- <wire from="(480,420)" to="(480,560)"/>
- <wire from="(470,30)" to="(470,50)"/>
- <wire from="(850,810)" to="(850,840)"/>
- <wire from="(440,550)" to="(550,550)"/>
- <wire from="(710,750)" to="(710,780)"/>
- <wire from="(620,100)" to="(620,120)"/>
- <wire from="(550,30)" to="(550,70)"/>
- <wire from="(650,400)" to="(670,400)"/>
- <wire from="(540,650)" to="(700,650)"/>
- <wire from="(420,130)" to="(630,130)"/>
- <wire from="(430,210)" to="(430,390)"/>
- <wire from="(470,170)" to="(470,350)"/>
- <wire from="(380,450)" to="(780,450)"/>
- <wire from="(850,130)" to="(860,130)"/>
- <wire from="(860,780)" to="(870,780)"/>
- <wire from="(650,730)" to="(660,730)"/>
- <wire from="(430,100)" to="(500,100)"/>
- <wire from="(550,70)" to="(560,70)"/>
- <wire from="(640,80)" to="(650,80)"/>
- <wire from="(590,510)" to="(600,510)"/>
- <wire from="(600,360)" to="(610,360)"/>
- <wire from="(680,370)" to="(680,380)"/>
- <wire from="(470,50)" to="(650,50)"/>
- <wire from="(780,550)" to="(780,580)"/>
- <wire from="(220,190)" to="(460,190)"/>
- <wire from="(610,60)" to="(610,80)"/>
- <wire from="(600,770)" to="(600,810)"/>
- <wire from="(600,370)" to="(600,410)"/>
- <wire from="(650,500)" to="(650,540)"/>
- <wire from="(750,760)" to="(750,800)"/>
- <wire from="(540,500)" to="(560,500)"/>
- <wire from="(710,750)" to="(730,750)"/>
+ <wire from="(640,710)" to="(650,710)"/>
+ <wire from="(480,150)" to="(870,150)"/>
+ <wire from="(550,780)" to="(560,780)"/>
+ <wire from="(550,380)" to="(560,380)"/>
+ <wire from="(600,510)" to="(610,510)"/>
+ <comp lib="0" loc="(490,850)" name="Probe">
+ <a name="facing" val="west"/>
+ <a name="label" val="Input"/>
+ <a name="labelloc" val="east"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="6" loc="(329,514)" name="Text">
+ <a name="text" val="Memory Mapped I/O Port Address"/>
+ <a name="halign" val="right"/>
+ </comp>
+ <comp lib="0" loc="(350,770)" name="Constant">
+ <a name="width" val="8"/>
+ <a name="value" val="0xfc"/>
+ </comp>
+ <comp lib="0" loc="(860,800)" name="Splitter">
+ <a name="facing" val="north"/>
+ <a name="fanout" val="8"/>
+ <a name="incoming" val="8"/>
+ <a name="appear" val="right"/>
+ </comp>
+ <comp lib="5" loc="(730,710)" name="TTY">
+ <a name="cols" val="80"/>
+ <a name="trigger" val="falling"/>
+ </comp>
+ <comp lib="1" loc="(860,820)" name="Controlled Buffer">
+ <a name="facing" val="south"/>
+ <a name="width" val="8"/>
+ </comp>
+ <comp lib="6" loc="(382,57)" name="Text">
+ <a name="halign" val="right"/>
+ </comp>
+ <comp lib="1" loc="(370,250)" name="OR Gate">
+ <a name="facing" val="north"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="5" loc="(730,750)" name="Keyboard">
+ <a name="buflen" val="80"/>
+ <a name="trigger" val="falling"/>
+ </comp>
+ <comp lib="4" loc="(640,500)" name="Register"/>
+ <comp lib="1" loc="(590,510)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="1" loc="(690,720)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ <a name="negate0" val="true"/>
+ </comp>
+ <comp lib="1" loc="(640,780)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="6" loc="(883,753)" name="Text">
+ <a name="text" val=" ← Keyboard"/>
+ <a name="font" val="SansSerif bold 16"/>
+ <a name="halign" val="left"/>
+ </comp>
+ <comp lib="0" loc="(870,760)" name="Splitter">
+ <a name="facing" val="south"/>
+ <a name="fanout" val="7"/>
+ <a name="incoming" val="7"/>
+ </comp>
+ <comp lib="0" loc="(790,400)" name="Pin">
+ <a name="facing" val="south"/>
+ <a name="width" val="8"/>
+ <a name="tristate" val="false"/>
+ </comp>
+ <comp lib="4" loc="(640,360)" name="Register"/>
+ <comp lib="6" loc="(678,17)" name="Text">
+ <a name="text" val="PROGRAM MEMORY"/>
+ <a name="font" val="SansSerif bold 12"/>
+ <a name="halign" val="left"/>
+ </comp>
+ <comp lib="1" loc="(590,80)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="1" loc="(370,550)" name="OR Gate">
+ <a name="facing" val="north"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="0" loc="(350,370)" name="Constant">
+ <a name="width" val="8"/>
+ <a name="value" val="0xfe"/>
+ </comp>
+ <comp lib="4" loc="(640,80)" name="Register"/>
+ <comp lib="0" loc="(670,540)" name="Splitter">
+ <a name="facing" val="north"/>
+ <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="5" loc="(720,510)" name="Hex Digit Display"/>
+ <comp lib="1" loc="(790,560)" name="Controlled Buffer">
+ <a name="facing" val="south"/>
+ <a name="width" val="8"/>
+ </comp>
+ <comp lib="5" loc="(680,370)" name="Hex Digit Display"/>
+ <comp lib="0" loc="(490,880)" name="Probe">
+ <a name="facing" val="west"/>
+ <a name="label" val="Address"/>
+ <a name="labelloc" val="east"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="0" loc="(720,700)" name="Splitter">
+ <a name="facing" val="west"/>
+ <a name="fanout" val="7"/>
+ <a name="incoming" val="7"/>
+ <a name="appear" val="right"/>
+ </comp>
+ <comp lib="6" loc="(388,63)" name="Text">
+ <a name="text" val="Sets the memory-mapped address range"/>
+ <a name="halign" val="right"/>
+ </comp>
+ <comp lib="1" loc="(590,770)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="0" loc="(350,510)" name="Constant">
+ <a name="width" val="8"/>
+ <a name="value" val="0xfd"/>
+ </comp>
+ <comp lib="1" loc="(590,20)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ <a name="negate1" val="true"/>
+ </comp>
+ <comp lib="1" loc="(590,370)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp loc="(220,130)" name="MCU"/>
+ <comp lib="0" loc="(280,900)" name="Pin">
+ <a name="facing" val="north"/>
+ <a name="tristate" val="false"/>
+ <a name="label" val="RESET"/>
+ </comp>
+ <comp lib="0" loc="(790,540)" name="Pin">
+ <a name="facing" val="south"/>
+ <a name="width" val="8"/>
+ <a name="tristate" val="false"/>
+ </comp>
+ <comp lib="0" loc="(490,910)" name="Probe">
+ <a name="facing" val="west"/>
+ <a name="label" val="Output"/>
+ <a name="labelloc" val="east"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="5" loc="(680,510)" name="Hex Digit Display"/>
+ <comp lib="1" loc="(870,140)" name="Controlled Buffer">
+ <a name="facing" val="south"/>
+ <a name="width" val="8"/>
+ </comp>
+ <comp lib="0" loc="(670,60)" name="Splitter">
+ <a name="facing" val="west"/>
+ <a name="incoming" val="16"/>
+ <a name="appear" val="center"/>
+ <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="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="6" loc="(331,773)" name="Text">
+ <a name="text" val="Memory Mapped I/O Port Address"/>
+ <a name="halign" val="right"/>
+ </comp>
+ <comp lib="3" loc="(540,760)" name="Comparator">
+ <a name="mode" val="unsigned"/>
+ </comp>
+ <comp lib="1" loc="(690,760)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="1" loc="(790,420)" name="Controlled Buffer">
+ <a name="facing" val="south"/>
+ <a name="width" val="8"/>
+ </comp>
+ <comp lib="0" loc="(670,400)" name="Splitter">
+ <a name="facing" val="north"/>
+ <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="1" loc="(860,780)" name="NOT Gate">
+ <a name="facing" val="south"/>
+ <a name="size" val="20"/>
+ </comp>
+ <comp lib="0" loc="(310,900)" name="Clock">
+ <a name="facing" val="north"/>
+ <a name="label" val="CLOCK"/>
+ <a name="labelloc" val="east"/>
+ </comp>
+ <comp lib="6" loc="(656,608)" name="Text">
+ <a name="text" val="Output:"/>
+ <a name="font" val="SansSerif bold 16"/>
+ <a name="halign" val="left"/>
+ </comp>
+ <comp lib="5" loc="(720,370)" name="Hex Digit Display"/>
+ <comp lib="0" loc="(520,710)" name="Splitter">
+ <a name="fanout" val="8"/>
+ <a name="incoming" val="8"/>
+ </comp>
+ <comp lib="3" loc="(540,360)" name="Comparator">
+ <a name="mode" val="unsigned"/>
+ </comp>
+ <comp lib="0" loc="(680,120)" name="Probe">
+ <a name="facing" val="west"/>
+ <a name="label" val="Real Address"/>
+ <a name="labelloc" val="east"/>
+ </comp>
+ <comp lib="4" loc="(820,60)" name="ROM">
+ <a name="addrWidth" val="16"/>
+ <a name="contents">addr/data: 16 8
+3 4b c4 30 33 7f 9f 3
+63 a7 db 83 9 ab 9b 23
+43 e7 83 23 bf ab f2 3
+5f f7 83 0 2b 43 db 83
+2e 83 3 3 4b f7 83 3
+7 43 10 de 83 3 3 4b
+9f a7 93 33 7f 9f ab a3
+52 f7 83 0 83 30
+</a>
+ </comp>
+ <comp lib="3" loc="(540,500)" name="Comparator">
+ <a name="mode" val="unsigned"/>
+ </comp>
+ <comp lib="0" loc="(430,60)" name="Constant">
+ <a name="width" val="8"/>
+ <a name="value" val="0xff"/>
+ </comp>
+ <comp lib="3" loc="(540,20)" name="Comparator">
+ <a name="mode" val="unsigned"/>
+ </comp>
+ <comp lib="3" loc="(540,90)" name="Comparator">
+ <a name="mode" val="unsigned"/>
+ </comp>
+ <comp lib="1" loc="(370,420)" name="OR Gate">
+ <a name="facing" val="north"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="6" loc="(330,373)" name="Text">
+ <a name="text" val="Memory Mapped I/O Port Address"/>
+ <a name="halign" val="right"/>
+ </comp>
+ <comp lib="0" loc="(410,60)" name="Constant">
+ <a name="width" val="8"/>
+ <a name="value" val="0xfc"/>
+ </comp>
+ </circuit>
+ <circuit name="gridtest">
+ <a name="circuit" val="gridtest"/>
+ <a name="clabel" val=""/>
+ <a name="clabelup" val="east"/>
+ <a name="clabelfont" val="SansSerif plain 12"/>
+ <wire from="(650,530)" to="(650,540)"/>
+ <wire from="(470,490)" to="(470,880)"/>
+ <wire from="(820,60)" to="(870,60)"/>
+ <wire from="(420,540)" to="(420,800)"/>
+ <wire from="(620,380)" to="(620,390)"/>
+ <wire from="(600,80)" to="(600,90)"/>
+ <wire from="(430,390)" to="(620,390)"/>
+ <wire from="(600,410)" to="(780,410)"/>
+ <wire from="(220,170)" to="(470,170)"/>
+ <wire from="(420,400)" to="(420,540)"/>
+ <wire from="(480,420)" to="(480,560)"/>
+ <wire from="(480,420)" to="(790,420)"/>
+ <wire from="(360,280)" to="(360,290)"/>
+ <wire from="(470,30)" to="(470,50)"/>
+ <wire from="(430,530)" to="(430,930)"/>
+ <wire from="(620,100)" to="(620,130)"/>
+ <wire from="(220,110)" to="(450,110)"/>
+ <wire from="(450,410)" to="(550,410)"/>
+ <wire from="(290,800)" to="(290,900)"/>
+ <wire from="(550,30)" to="(550,70)"/>
+ <wire from="(550,70)" to="(550,110)"/>
+ <wire from="(540,90)" to="(560,90)"/>
+ <wire from="(540,10)" to="(560,10)"/>
+ <wire from="(470,490)" to="(500,490)"/>
+ <wire from="(480,560)" to="(480,850)"/>
+ <wire from="(650,400)" to="(670,400)"/>
+ <wire from="(460,60)" to="(610,60)"/>
+ <wire from="(220,210)" to="(430,210)"/>
+ <wire from="(350,510)" to="(500,510)"/>
+ <wire from="(430,210)" to="(430,390)"/>
+ <wire from="(460,470)" to="(600,470)"/>
+ <wire from="(470,170)" to="(470,350)"/>
+ <wire from="(410,10)" to="(410,60)"/>
+ <wire from="(590,20)" to="(850,20)"/>
+ <wire from="(380,450)" to="(780,450)"/>
+ <wire from="(850,130)" to="(860,130)"/>
+ <wire from="(430,100)" to="(500,100)"/>
+ <wire from="(550,70)" to="(560,70)"/>
+ <wire from="(640,360)" to="(650,360)"/>
+ <wire from="(640,80)" to="(650,80)"/>
+ <wire from="(590,510)" to="(600,510)"/>
+ <wire from="(600,360)" to="(610,360)"/>
+ <wire from="(680,370)" to="(680,380)"/>
+ <wire from="(720,370)" to="(720,380)"/>
+ <wire from="(620,510)" to="(620,520)"/>
+ <wire from="(460,330)" to="(460,470)"/>
+ <wire from="(470,50)" to="(650,50)"/>
+ <wire from="(220,190)" to="(460,190)"/>
+ <wire from="(550,520)" to="(550,550)"/>
+ <wire from="(600,330)" to="(600,360)"/>
+ <wire from="(650,60)" to="(650,80)"/>
+ <wire from="(610,60)" to="(610,80)"/>
+ <wire from="(630,520)" to="(630,540)"/>
+ <wire from="(600,370)" to="(600,410)"/>
+ <wire from="(540,500)" to="(560,500)"/>
+ <wire from="(420,540)" to="(630,540)"/>
+ <wire from="(380,280)" to="(850,280)"/>
<wire from="(480,850)" to="(490,850)"/>
- <wire from="(380,580)" to="(780,580)"/>
+ <wire from="(360,450)" to="(370,450)"/>
+ <wire from="(360,290)" to="(370,290)"/>
<wire from="(290,800)" to="(420,800)"/>
<wire from="(220,230)" to="(420,230)"/>
+ <wire from="(670,120)" to="(680,120)"/>
+ <wire from="(370,130)" to="(370,250)"/>
+ <wire from="(370,450)" to="(370,570)"/>
<wire from="(550,520)" to="(560,520)"/>
<wire from="(590,80)" to="(600,80)"/>
+ <wire from="(600,370)" to="(610,370)"/>
<wire from="(600,90)" to="(610,90)"/>
- <wire from="(640,700)" to="(640,710)"/>
- <wire from="(430,530)" to="(430,790)"/>
- <wire from="(470,490)" to="(470,750)"/>
<wire from="(620,520)" to="(620,530)"/>
+ <wire from="(460,60)" to="(460,190)"/>
<wire from="(430,530)" to="(620,530)"/>
- <wire from="(470,750)" to="(470,880)"/>
- <wire from="(600,550)" to="(780,550)"/>
- <wire from="(440,140)" to="(440,410)"/>
+ <wire from="(430,130)" to="(620,130)"/>
+ <wire from="(370,290)" to="(370,420)"/>
+ <wire from="(640,500)" to="(690,500)"/>
<wire from="(430,390)" to="(430,530)"/>
<wire from="(470,350)" to="(470,490)"/>
- <wire from="(720,730)" to="(720,800)"/>
- <wire from="(480,560)" to="(790,560)"/>
- <wire from="(650,780)" to="(710,780)"/>
- <wire from="(360,580)" to="(360,590)"/>
- <wire from="(440,410)" to="(550,410)"/>
- <wire from="(440,810)" to="(550,810)"/>
+ <wire from="(450,410)" to="(450,550)"/>
+ <wire from="(630,520)" to="(690,520)"/>
+ <wire from="(600,550)" to="(640,550)"/>
+ <wire from="(480,560)" to="(650,560)"/>
<wire from="(470,50)" to="(470,80)"/>
- <wire from="(430,120)" to="(430,210)"/>
+ <wire from="(850,130)" to="(850,280)"/>
+ <wire from="(450,110)" to="(550,110)"/>
+ <wire from="(450,550)" to="(550,550)"/>
<wire from="(470,80)" to="(470,170)"/>
- <wire from="(540,670)" to="(700,670)"/>
- <wire from="(720,800)" to="(750,800)"/>
+ <wire from="(850,20)" to="(850,130)"/>
+ <wire from="(470,350)" to="(500,350)"/>
+ <wire from="(470,30)" to="(500,30)"/>
+ <wire from="(450,110)" to="(450,410)"/>
<wire from="(470,880)" to="(490,880)"/>
- <wire from="(590,830)" to="(720,830)"/>
- <wire from="(590,770)" to="(600,770)"/>
+ <wire from="(350,370)" to="(500,370)"/>
+ <wire from="(280,900)" to="(290,900)"/>
+ <wire from="(460,330)" to="(600,330)"/>
+ <wire from="(620,510)" to="(690,510)"/>
+ <wire from="(370,570)" to="(640,570)"/>
+ <wire from="(600,500)" to="(610,500)"/>
<wire from="(590,370)" to="(600,370)"/>
- <wire from="(640,500)" to="(650,500)"/>
- <wire from="(720,510)" to="(720,520)"/>
- <wire from="(690,720)" to="(740,720)"/>
+ <wire from="(220,150)" to="(480,150)"/>
+ <wire from="(870,140)" to="(870,150)"/>
<wire from="(480,150)" to="(480,420)"/>
- <wire from="(440,140)" to="(550,140)"/>
- <wire from="(630,100)" to="(630,130)"/>
+ <wire from="(460,190)" to="(460,330)"/>
+ <wire from="(650,530)" to="(690,530)"/>
+ <wire from="(550,380)" to="(550,410)"/>
+ <wire from="(430,130)" to="(430,210)"/>
<wire from="(600,470)" to="(600,500)"/>
- <wire from="(520,710)" to="(520,730)"/>
+ <wire from="(630,380)" to="(630,400)"/>
+ <wire from="(640,550)" to="(640,570)"/>
+ <wire from="(630,100)" to="(630,120)"/>
+ <wire from="(410,10)" to="(500,10)"/>
+ <wire from="(600,510)" to="(600,550)"/>
<wire from="(650,360)" to="(650,400)"/>
- <wire from="(540,760)" to="(560,760)"/>
<wire from="(540,360)" to="(560,360)"/>
<wire from="(780,410)" to="(780,450)"/>
+ <wire from="(470,80)" to="(500,80)"/>
<wire from="(460,910)" to="(490,910)"/>
- <wire from="(540,640)" to="(700,640)"/>
+ <wire from="(690,380)" to="(720,380)"/>
+ <wire from="(420,400)" to="(630,400)"/>
+ <wire from="(420,120)" to="(420,230)"/>
+ <wire from="(420,120)" to="(630,120)"/>
+ <wire from="(220,130)" to="(370,130)"/>
+ <wire from="(420,230)" to="(420,400)"/>
<wire from="(430,60)" to="(430,100)"/>
- <wire from="(360,590)" to="(370,590)"/>
+ <wire from="(870,60)" to="(870,120)"/>
<wire from="(670,60)" to="(670,120)"/>
- <wire from="(640,710)" to="(650,710)"/>
+ <wire from="(670,60)" to="(680,60)"/>
<wire from="(480,150)" to="(870,150)"/>
- <wire from="(550,780)" to="(560,780)"/>
<wire from="(550,380)" to="(560,380)"/>
<wire from="(600,510)" to="(610,510)"/>
- <comp lib="1" loc="(370,250)" name="OR Gate">
+ <wire from="(460,470)" to="(460,910)"/>
+ <comp lib="1" loc="(590,370)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="1" loc="(590,20)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ <a name="negate1" val="true"/>
+ </comp>
+ <comp lib="1" loc="(790,420)" name="Controlled Buffer">
+ <a name="facing" val="south"/>
+ <a name="width" val="8"/>
+ </comp>
+ <comp lib="0" loc="(490,880)" name="Probe">
+ <a name="facing" val="west"/>
+ <a name="label" val="Address"/>
+ <a name="labelloc" val="east"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </comp>
+ <comp lib="0" loc="(430,930)" name="Clock">
<a name="facing" val="north"/>
+ <a name="label" val="CLOCK"/>
+ <a name="labelloc" val="east"/>
+ </comp>
+ <comp lib="0" loc="(430,60)" name="Constant">
+ <a name="width" val="8"/>
+ <a name="value" val="0xff"/>
+ </comp>
+ <comp lib="3" loc="(540,500)" name="Comparator">
+ <a name="mode" val="unsigned"/>
+ </comp>
+ <comp lib="5" loc="(680,370)" name="Hex Digit Display"/>
+ <comp lib="1" loc="(590,510)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
@@ -4402,37 +4883,55 @@
<a name="text" val="Memory Mapped I/O Port Address"/>
<a name="halign" val="right"/>
</comp>
- <comp lib="0" loc="(790,400)" name="Pin">
+ <comp lib="1" loc="(870,140)" name="Controlled Buffer">
<a name="facing" val="south"/>
<a name="width" val="8"/>
- <a name="tristate" val="false"/>
</comp>
- <comp lib="5" loc="(730,710)" name="TTY">
- <a name="cols" val="80"/>
- <a name="trigger" val="falling"/>
+ <comp lib="0" loc="(490,850)" name="Probe">
+ <a name="facing" val="west"/>
+ <a name="label" val="Input"/>
+ <a name="labelloc" val="east"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
</comp>
- <comp lib="5" loc="(730,750)" name="Keyboard">
- <a name="buflen" val="80"/>
- <a name="trigger" val="falling"/>
+ <comp lib="3" loc="(540,90)" name="Comparator">
+ <a name="mode" val="unsigned"/>
</comp>
- <comp lib="1" loc="(790,560)" name="Controlled Buffer">
- <a name="facing" val="south"/>
+ <comp lib="6" loc="(388,63)" name="Text">
+ <a name="text" val="Sets the memory-mapped address range"/>
+ <a name="halign" val="right"/>
+ </comp>
+ <comp lib="5" loc="(720,370)" name="Hex Digit Display"/>
+ <comp lib="0" loc="(350,370)" name="Constant">
<a name="width" val="8"/>
+ <a name="value" val="0xfe"/>
</comp>
- <comp lib="3" loc="(540,20)" name="Comparator">
- <a name="mode" val="unsigned"/>
+ <comp lib="0" loc="(670,400)" name="Splitter">
+ <a name="facing" val="north"/>
+ <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="4" loc="(640,80)" name="Register"/>
<comp lib="6" loc="(329,514)" name="Text">
<a name="text" val="Memory Mapped I/O Port Address"/>
<a name="halign" val="right"/>
</comp>
- <comp lib="0" loc="(310,900)" name="Clock">
+ <comp lib="0" loc="(790,400)" name="Pin">
+ <a name="facing" val="south"/>
+ <a name="width" val="8"/>
+ <a name="tristate" val="false"/>
+ </comp>
+ <comp lib="1" loc="(370,250)" name="OR Gate">
<a name="facing" val="north"/>
- <a name="label" val="CLOCK"/>
- <a name="labelloc" val="east"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp loc="(220,130)" name="MCU"/>
- <comp lib="5" loc="(680,510)" name="Hex Digit Display"/>
<comp lib="0" loc="(670,60)" name="Splitter">
<a name="facing" val="west"/>
<a name="incoming" val="16"/>
@@ -4453,113 +4952,26 @@
<a name="bit14" val="1"/>
<a name="bit15" val="1"/>
</comp>
- <comp lib="0" loc="(280,900)" name="Pin">
- <a name="facing" val="north"/>
- <a name="tristate" val="false"/>
- <a name="label" val="RESET"/>
- </comp>
- <comp lib="5" loc="(720,370)" name="Hex Digit Display"/>
- <comp lib="0" loc="(430,60)" name="Constant">
- <a name="width" val="8"/>
- <a name="value" val="0xff"/>
- </comp>
- <comp lib="3" loc="(540,360)" name="Comparator">
- <a name="mode" val="unsigned"/>
- </comp>
- <comp lib="4" loc="(640,80)" name="Register"/>
- <comp lib="1" loc="(790,420)" name="Controlled Buffer">
- <a name="facing" val="south"/>
- <a name="width" val="8"/>
- </comp>
- <comp lib="0" loc="(490,850)" name="Probe">
+ <comp lib="4" loc="(640,500)" name="Register"/>
+ <comp lib="0" loc="(490,910)" name="Probe">
<a name="facing" val="west"/>
- <a name="label" val="Input"/>
+ <a name="label" val="Output"/>
<a name="labelloc" val="east"/>
<a name="labelfont" val="SansSerif bold 12"/>
</comp>
- <comp lib="0" loc="(520,710)" name="Splitter">
- <a name="fanout" val="8"/>
- <a name="incoming" val="8"/>
- </comp>
- <comp lib="1" loc="(590,770)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="5" loc="(720,510)" name="Hex Digit Display"/>
- <comp lib="0" loc="(350,510)" name="Constant">
- <a name="width" val="8"/>
- <a name="value" val="0xfd"/>
- </comp>
+ <comp loc="(220,130)" name="MCU"/>
<comp lib="0" loc="(680,120)" name="Probe">
<a name="facing" val="west"/>
<a name="label" val="Real Address"/>
<a name="labelloc" val="east"/>
</comp>
- <comp lib="6" loc="(388,63)" name="Text">
- <a name="text" val="Sets the memory-mapped address range"/>
- <a name="halign" val="right"/>
- </comp>
- <comp lib="3" loc="(540,90)" name="Comparator">
+ <comp lib="3" loc="(540,360)" name="Comparator">
<a name="mode" val="unsigned"/>
</comp>
- <comp lib="0" loc="(410,60)" name="Constant">
- <a name="width" val="8"/>
- <a name="value" val="0xfc"/>
- </comp>
- <comp lib="6" loc="(883,753)" name="Text">
- <a name="text" val=" ← Keyboard"/>
- <a name="font" val="SansSerif bold 16"/>
- <a name="halign" val="left"/>
- </comp>
- <comp lib="1" loc="(640,780)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="0" loc="(670,540)" name="Splitter">
- <a name="facing" val="north"/>
- <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="6" loc="(382,57)" name="Text">
- <a name="halign" val="right"/>
- </comp>
- <comp lib="1" loc="(590,510)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="1" loc="(370,420)" name="OR Gate">
+ <comp lib="0" loc="(280,900)" name="Pin">
<a name="facing" val="north"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="6" loc="(678,17)" name="Text">
- <a name="text" val="PROGRAM MEMORY"/>
- <a name="font" val="SansSerif bold 12"/>
- <a name="halign" val="left"/>
- </comp>
- <comp lib="1" loc="(860,780)" name="NOT Gate">
- <a name="facing" val="south"/>
- <a name="size" val="20"/>
- </comp>
- <comp lib="0" loc="(790,540)" name="Pin">
- <a name="facing" val="south"/>
- <a name="width" val="8"/>
<a name="tristate" val="false"/>
- </comp>
- <comp lib="1" loc="(590,20)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
- </comp>
- <comp lib="3" loc="(540,760)" name="Comparator">
- <a name="mode" val="unsigned"/>
+ <a name="label" val="RESET"/>
</comp>
<comp lib="4" loc="(820,60)" name="ROM">
<a name="addrWidth" val="16"/>
@@ -4574,99 +4986,30 @@
52 f7 83 0 83 30
</a>
</comp>
- <comp lib="0" loc="(350,770)" name="Constant">
- <a name="width" val="8"/>
- <a name="value" val="0xfc"/>
- </comp>
- <comp lib="1" loc="(690,760)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="5" loc="(680,370)" name="Hex Digit Display"/>
- <comp lib="0" loc="(860,800)" name="Splitter">
+ <comp lib="1" loc="(370,420)" name="OR Gate">
<a name="facing" val="north"/>
- <a name="fanout" val="8"/>
- <a name="incoming" val="8"/>
- <a name="appear" val="right"/>
- </comp>
- <comp lib="1" loc="(590,80)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="4" loc="(640,500)" name="Register"/>
- <comp lib="1" loc="(590,370)" name="AND Gate">
+ <comp lib="4" loc="(640,360)" name="Register"/>
+ <comp lib="1" loc="(590,80)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(350,370)" name="Constant">
+ <comp lib="0" loc="(410,60)" name="Constant">
<a name="width" val="8"/>
- <a name="value" val="0xfe"/>
+ <a name="value" val="0xfc"/>
</comp>
- <comp lib="1" loc="(870,140)" name="Controlled Buffer">
- <a name="facing" val="south"/>
- <a name="width" val="8"/>
+ <comp lib="3" loc="(540,20)" name="Comparator">
+ <a name="mode" val="unsigned"/>
</comp>
- <comp lib="1" loc="(860,820)" name="Controlled Buffer">
- <a name="facing" val="south"/>
+ <comp lib="0" loc="(350,510)" name="Constant">
<a name="width" val="8"/>
+ <a name="value" val="0xfd"/>
</comp>
- <comp lib="0" loc="(870,760)" name="Splitter">
+ <comp lib="1" loc="(650,560)" name="Controlled Buffer">
<a name="facing" val="south"/>
- <a name="fanout" val="7"/>
- <a name="incoming" val="7"/>
- </comp>
- <comp lib="0" loc="(490,880)" name="Probe">
- <a name="facing" val="west"/>
- <a name="label" val="Address"/>
- <a name="labelloc" val="east"/>
- <a name="labelfont" val="SansSerif bold 12"/>
- </comp>
- <comp lib="6" loc="(656,608)" name="Text">
- <a name="text" val="Output:"/>
- <a name="font" val="SansSerif bold 16"/>
- <a name="halign" val="left"/>
- </comp>
- <comp lib="3" loc="(540,500)" name="Comparator">
- <a name="mode" val="unsigned"/>
- </comp>
- <comp lib="0" loc="(720,700)" name="Splitter">
- <a name="facing" val="west"/>
- <a name="fanout" val="7"/>
- <a name="incoming" val="7"/>
- <a name="appear" val="right"/>
- </comp>
- <comp lib="0" loc="(490,910)" name="Probe">
- <a name="facing" val="west"/>
- <a name="label" val="Output"/>
- <a name="labelloc" val="east"/>
- <a name="labelfont" val="SansSerif bold 12"/>
- </comp>
- <comp lib="4" loc="(640,360)" name="Register"/>
- <comp lib="1" loc="(370,550)" name="OR Gate">
- <a name="facing" val="north"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="1" loc="(690,720)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- <a name="negate0" val="true"/>
- </comp>
- <comp lib="0" loc="(670,400)" name="Splitter">
- <a name="facing" val="north"/>
- <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="6" loc="(331,773)" name="Text">
- <a name="text" val="Memory Mapped I/O Port Address"/>
- <a name="halign" val="right"/>
+ <a name="width" val="8"/>
</comp>
</circuit>
</project>
diff --git a/ExamplePrograms/typing_test.tac b/ExamplePrograms/typing_test.tac
@@ -2,14 +2,14 @@
# buffer until the user presses the return key, at that point it dumps the
# buffer.
###################### Set up our buffer pointer to live in GRC
-setup: li 32
+setup: lui 32
mov GRA GRC
###################### Set up our polling address
poll: sop_xor
li 252
sp GRA
###################### Load the bitmask for available data
- li 128
+ lui 128
###################### Poll until data is available
p_loop: lb GRB
cmp GRB GRA
@@ -20,7 +20,7 @@ p_loop: lb GRB
###################### Clears the byte out of the buffer in the keyboard
sb GRA
###################### Did we read a backspace character? If so, handle that
- li 8
+ lli 8
cmp GRA GRB
jmp bcksp
###################### Write the byte in the buffer in RAM
@@ -29,26 +29,26 @@ p_loop: lb GRB
###################### Increment the buffer pointer
cin GRC GRC
###################### If we have reached the end of the buffer, restart
- li 112
+ lui 112
cmp GRA GRC
jmp setup
###################### If the user pressed the enter key, output the buffer
- li 10
+ lli 10
cmp GRB GRA
jmp output
jmp poll
###################### Handle backspaces
-bcksp: li 32
+bcksp: lui 32
###################### Are we at the start of the buffer? If so, we can return
cmp GRA GRC
jmp poll
###################### Decrement the buffer pointer
- li 1
+ lli 1
sop_sub
op GRC GRA GRC
jmp poll
###################### Echo out all the things in the buffer to the TTY
-output: li 32
+output: lui 32
o_loop: sp GRA
lb GRB
push
diff --git a/tisc.c b/tisc.c
@@ -256,11 +256,19 @@ int assemble_immediate(
int immediate_value = stringToInteger(arg[0]);
- if (immediate_value < 0x0F && immediate_value >= 0)
+ if ((immediate_value & 0x0F) == 0)
{
+ immediate_value = immediate_value >> 4;
write_buffer[0] = definition->opcode_mask | immediate_value << 2;
return_value = 1;
+ } else
+ if ((immediate_value & 0xF0) == 0)
+ {
+ write_buffer[0] = definition->opcode_mask | immediate_value << 2;
+
+ return_value = 1;
+
}
return return_value;
@@ -485,13 +493,13 @@ int process(int line, int* address, uint8_t *buffer, char *label, char *opcode,
return status;
}
-int output_file(FILE* output_file, uint8_t* bytes, int size)
+int output_file(FILE* output, uint8_t* bytes, int size)
{
- fprintf(output_file, "v2.0 raw\n");
+ fprintf(output, "v2.0 raw");
for (int i = 0; i < size; i++)
{
- fprintf(output_file, "%x%s", bytes[i], (i % 8 == 0 && i != 0) ? "\n" : " ");
+ fprintf(output, "%s%x", (i % 8 == 0) ? "\n" : " ", bytes[i]);
}
return 1;
}