commit 38ccb1ce2b22e77b55d1e45d4457a964fb4a2910
parent 8cca4420017e7704fb7d02cfc88b341f936804c9
Author: Paul Longtine <paul@nanner.co>
Date: Sun, 19 Jun 2022 21:23:54 -0400
TISCv2.0 Revised immediate system to support loading multiple bytes
Elaborated the tisc assembler to support easier debugging
Diffstat:
12 files changed, 2207 insertions(+), 1894 deletions(-)
diff --git a/CPU/CPU.circ b/CPU/CPU.circ
@@ -76,7 +76,7 @@
<path d="M53,12 Q57,22 61,12" fill="none" stroke="#808080" stroke-width="2"/>
<rect fill="none" height="161" stroke="#000000" stroke-width="2" width="120" x="40" y="11"/>
<rect fill="#707070" height="160" stroke="#000000" width="119" x="40" y="10"/>
- <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="86" y="159">tisc v1.4</text>
+ <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="86" y="159">tisc v2.0</text>
<text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="152" y="43">IO ENABLE</text>
<text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="152" y="85">INPUT</text>
<text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="153" y="124">ADDRESS</text>
@@ -99,6 +99,7 @@
<wire from="(340,40)" to="(340,180)"/>
<wire from="(230,150)" to="(230,160)"/>
<wire from="(460,340)" to="(510,340)"/>
+ <wire from="(310,150)" to="(310,160)"/>
<wire from="(480,200)" to="(480,220)"/>
<wire from="(170,210)" to="(170,230)"/>
<wire from="(220,130)" to="(220,220)"/>
@@ -196,16 +197,29 @@
<wire from="(210,110)" to="(210,230)"/>
<wire from="(260,250)" to="(460,250)"/>
<wire from="(330,190)" to="(400,190)"/>
- <comp loc="(160,210)" name="PC"/>
- <comp lib="0" loc="(450,380)" name="Pin">
+ <comp loc="(260,130)" name="ALU"/>
+ <comp lib="6" loc="(290,239)" name="Text"/>
+ <comp loc="(230,170)" name="ISD"/>
+ <comp loc="(280,150)" name="GPR"/>
+ <comp lib="0" loc="(510,320)" 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="IO ENABLE"/>
+ <a name="labelloc" val="east"/>
+ </comp>
+ <comp lib="0" loc="(510,300)" 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="(430,230)" 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 lib="0" loc="(510,440)" name="Pin">
<a name="facing" val="west"/>
<a name="tristate" val="false"/>
@@ -213,91 +227,78 @@
<a name="label" val="RST"/>
<a name="labelloc" val="east"/>
</comp>
- <comp lib="2" loc="(400,210)" 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="0" loc="(290,340)" name="Constant">
- <a name="facing" val="north"/>
+ <comp lib="0" loc="(510,340)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="label" val="WRITE ACTIVE"/>
+ <a name="labelloc" val="east"/>
</comp>
- <comp lib="0" loc="(450,400)" name="Pin">
+ <comp lib="0" loc="(450,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="ADDR"/>
+ <a name="label" val="OUT"/>
<a name="labelloc" val="east"/>
</comp>
- <comp loc="(280,150)" name="GPR"/>
- <comp loc="(230,170)" name="ISD"/>
- <comp loc="(200,90)" name="STK"/>
- <comp lib="4" loc="(380,300)" name="RAM">
- <a name="bus" val="separate"/>
+ <comp lib="0" loc="(510,420)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="tristate" val="false"/>
+ <a name="pull" val="down"/>
+ <a name="label" val="CLK"/>
+ <a name="labelloc" val="east"/>
</comp>
- <comp lib="2" loc="(290,80)" name="Multiplexer">
- <a name="select" val="2"/>
+ <comp lib="2" loc="(400,210)" name="Multiplexer">
+ <a name="facing" val="north"/>
+ <a name="selloc" val="tr"/>
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
+ <comp loc="(200,90)" name="STK"/>
+ <comp loc="(160,210)" name="PC"/>
<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="1" loc="(430,230)" name="AND Gate">
- <a name="facing" val="west"/>
+ <comp lib="1" loc="(310,340)" name="AND Gate">
+ <a name="facing" val="north"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate0" val="true"/>
</comp>
- <comp lib="0" loc="(510,420)" name="Pin">
+ <comp lib="0" loc="(450,360)" 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="CLK"/>
- <a name="labelloc" val="east"/>
- </comp>
- <comp lib="0" loc="(510,300)" name="Pin">
- <a name="facing" val="west"/>
- <a name="output" val="true"/>
- <a name="label" val="IO ACTIVE"/>
+ <a name="label" val="IN"/>
<a name="labelloc" val="east"/>
</comp>
- <comp lib="1" loc="(310,340)" name="AND Gate">
- <a name="facing" val="north"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="0" loc="(510,340)" name="Pin">
+ <comp lib="0" loc="(450,400)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
- <a name="label" val="WRITE ACTIVE"/>
- <a name="labelloc" val="east"/>
- </comp>
- <comp loc="(260,130)" name="ALU"/>
- <comp lib="0" loc="(450,360)" 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="label" val="ADDR"/>
<a name="labelloc" val="east"/>
</comp>
+ <comp lib="4" loc="(380,300)" name="RAM">
+ <a name="bus" val="separate"/>
+ </comp>
+ <comp lib="0" loc="(290,340)" name="Constant">
+ <a name="facing" val="north"/>
+ </comp>
<comp lib="6" loc="(303,244)" name="Text">
- <a name="text" val="TISCv1.3"/>
+ <a name="text" val="TISCv2.0"/>
<a name="font" val="Dialog plain 14"/>
</comp>
- <comp lib="6" loc="(290,239)" name="Text"/>
- <comp lib="0" loc="(510,320)" name="Pin">
- <a name="facing" val="west"/>
- <a name="tristate" val="false"/>
- <a name="pull" val="down"/>
- <a name="label" val="IO ENABLE"/>
- <a name="labelloc" val="east"/>
+ <comp lib="2" loc="(290,80)" name="Multiplexer">
+ <a name="select" val="2"/>
+ <a name="width" val="8"/>
+ <a name="enable" val="false"/>
</comp>
</circuit>
<circuit name="ALU">
@@ -668,495 +669,556 @@
<wire from="(770,200)" to="(780,200)"/>
<wire from="(530,280)" to="(540,280)"/>
<wire from="(870,100)" to="(870,150)"/>
- <comp lib="2" loc="(820,90)" name="Multiplexer">
- <a name="width" val="8"/>
- <a name="enable" val="false"/>
+ <comp lib="0" loc="(390,280)" name="Tunnel">
+ <a name="label" val="o2"/>
</comp>
- <comp lib="1" loc="(190,550)" name="XOR Gate">
+ <comp lib="1" loc="(340,370)" name="XNOR 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="(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="(390,640)" name="Tunnel">
- <a name="label" val="o6"/>
+ <comp lib="6" loc="(617,355)" name="Text">
+ <a name="text" val="Opcodes"/>
</comp>
- <comp lib="0" loc="(670,270)" name="Tunnel">
- <a name="label" val="o3"/>
+ <comp lib="0" loc="(550,60)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="b1"/>
</comp>
- <comp lib="1" loc="(190,280)" name="XOR Gate">
+ <comp lib="1" loc="(190,130)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</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="3" loc="(930,160)" name="Shifter">
+ <a name="shift" val="lr"/>
</comp>
- <comp lib="1" loc="(270,770)" name="AND Gate">
+ <comp lib="1" loc="(340,100)" name="XNOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(740,380)" name="Tunnel">
+ <comp lib="1" loc="(300,180)" name="OR Gate">
<a name="facing" val="south"/>
- <a name="label" val="!A"/>
- </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="(300,780)" name="AND 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="(830,280)" name="OR Gate">
- <a name="size" val="70"/>
- <a name="inputs" val="8"/>
- </comp>
- <comp lib="1" loc="(190,640)" name="XOR Gate">
+ <comp lib="1" loc="(250,730)" name="NOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(190,760)" name="XOR 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="(780,100)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="width" val="8"/>
- <a name="label" val="A"/>
+ <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="(300,450)" 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="2" loc="(810,190)" name="Multiplexer">
- <a name="width" val="8"/>
- <a name="enable" val="false"/>
+ <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="(300,270)" name="OR Gate">
+ <comp lib="6" loc="(472,443)" name="Text">
+ <a name="text" val="ALU STATE"/>
+ </comp>
+ <comp lib="0" loc="(790,380)" name="Tunnel">
<a name="facing" val="south"/>
+ <a name="label" val="FC"/>
+ </comp>
+ <comp lib="1" loc="(250,640)" name="NOR 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="(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="(330,850)" name="Constant">
+ <comp lib="0" loc="(760,380)" name="Tunnel">
<a name="facing" val="south"/>
- <a name="value" val="0x0"/>
+ <a name="label" val="OR"/>
</comp>
- <comp lib="1" loc="(270,230)" name="AND Gate">
+ <comp lib="1" loc="(190,580)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(550,20)" name="Tunnel">
+ <comp lib="0" loc="(550,50)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="width" val="8"/>
- <a name="label" val="B"/>
- </comp>
- <comp lib="0" loc="(790,80)" name="Constant">
- <a name="width" val="8"/>
- <a name="value" val="0x0"/>
- </comp>
- <comp lib="0" loc="(670,280)" name="Tunnel">
- <a name="label" val="o4"/>
+ <a name="label" val="b0"/>
</comp>
- <comp lib="1" loc="(300,330)" name="AND Gate">
+ <comp lib="1" loc="(300,720)" name="OR 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="(340,100)" name="XNOR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <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="(280,650)" name="OR Gate">
+ <comp lib="1" loc="(190,490)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</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 lib="3" loc="(1060,80)" name="Comparator">
+ <a name="width" val="4"/>
</comp>
- <comp lib="0" loc="(650,320)" name="Splitter">
- <a name="fanout" val="8"/>
- <a name="incoming" val="8"/>
+ <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="(750,380)" name="Tunnel">
- <a name="facing" val="south"/>
- <a name="label" val="!B"/>
+ <comp lib="1" loc="(190,670)" name="XOR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(130,390)" name="Tunnel">
+ <comp lib="0" loc="(680,120)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="a3"/>
+ <a name="label" val="a7"/>
</comp>
- <comp lib="0" loc="(130,750)" name="Tunnel">
+ <comp lib="0" loc="(130,300)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="a7"/>
+ <a name="label" val="a2"/>
</comp>
- <comp lib="1" loc="(240,490)" name="AND Gate">
+ <comp lib="1" loc="(340,190)" name="XNOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(340,850)" name="Constant">
+ <comp lib="0" loc="(180,70)" name="Tunnel">
<a name="facing" val="south"/>
- <a name="value" val="0x0"/>
+ <a name="label" val="!B"/>
</comp>
- <comp lib="1" loc="(240,580)" name="AND Gate">
+ <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="1" loc="(300,420)" name="AND Gate">
+ <comp lib="1" loc="(190,550)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(570,40)" name="Pin">
+ <comp lib="1" loc="(310,690)" name="OR Gate">
<a name="facing" val="west"/>
- <a name="width" val="8"/>
- <a name="tristate" val="false"/>
- </comp>
- <comp lib="1" loc="(250,280)" name="NOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(550,80)" name="Tunnel">
+ <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="(130,210)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="b3"/>
+ <a name="label" val="a1"/>
</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 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="(270,140)" name="AND Gate">
+ <comp lib="6" loc="(736,75)" name="Text">
+ <a name="text" val="Input A"/>
+ </comp>
+ <comp lib="1" loc="(190,100)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
- </comp>
- <comp lib="0" loc="(130,120)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="a0"/>
</comp>
- <comp lib="0" loc="(680,60)" name="Tunnel">
+ <comp lib="0" loc="(130,720)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="a1"/>
+ <a name="label" val="b7"/>
</comp>
- <comp lib="1" loc="(280,200)" name="OR Gate">
+ <comp lib="1" loc="(190,370)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(340,730)" name="XNOR Gate">
+ <comp lib="0" loc="(340,70)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="FC"/>
+ </comp>
+ <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="0" loc="(390,460)" name="Tunnel">
- <a name="label" val="o4"/>
+ <comp lib="0" loc="(640,440)" name="Constant"/>
+ <comp lib="0" loc="(710,520)" name="Splitter">
+ <a name="facing" val="west"/>
+ <a name="appear" val="center"/>
</comp>
- <comp lib="1" loc="(240,670)" 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="(240,220)" name="AND Gate">
+ <comp lib="1" loc="(240,130)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(550,60)" name="Tunnel">
+ <comp lib="0" loc="(550,120)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="b1"/>
+ <a name="label" val="b7"/>
</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 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 lib="0" loc="(680,110)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="a6"/>
</comp>
- <comp lib="1" loc="(270,590)" name="AND 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="3" loc="(1000,90)" name="BitAdder"/>
+ <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="(680,90)" name="Tunnel">
+ <comp lib="1" loc="(190,190)" name="XOR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="0" loc="(390,460)" name="Tunnel">
+ <a name="label" val="o4"/>
+ </comp>
+ <comp lib="0" loc="(390,640)" name="Tunnel">
+ <a name="label" val="o6"/>
+ </comp>
+ <comp lib="1" loc="(300,810)" name="OR Gate">
+ <a name="facing" val="south"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="0" loc="(130,630)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="a4"/>
+ <a name="label" val="b6"/>
</comp>
- <comp lib="0" loc="(390,370)" name="Tunnel">
+ <comp lib="0" loc="(670,270)" name="Tunnel">
<a name="label" val="o3"/>
</comp>
- <comp lib="0" loc="(680,120)" name="Tunnel">
+ <comp lib="0" loc="(130,660)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="a7"/>
+ <a name="label" val="a6"/>
</comp>
- <comp lib="0" loc="(340,70)" name="Tunnel">
- <a name="facing" val="south"/>
- <a name="label" val="FC"/>
+ <comp lib="0" loc="(390,190)" name="Tunnel">
+ <a name="label" val="o1"/>
</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 lib="1" loc="(190,640)" name="XOR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(300,720)" name="OR Gate">
- <a name="facing" val="south"/>
+ <comp lib="0" loc="(130,570)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="a5"/>
+ </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>
- <comp lib="6" loc="(481,532)" name="Text">
- <a name="text" val="DYN OP"/>
+ <comp lib="0" loc="(130,90)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="b0"/>
</comp>
- <comp lib="0" loc="(780,380)" name="Tunnel">
- <a name="facing" val="south"/>
- <a name="label" val="CI"/>
+ <comp lib="0" loc="(680,60)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="a1"/>
</comp>
- <comp lib="1" loc="(250,460)" name="NOR Gate">
+ <comp lib="1" loc="(280,110)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(640,440)" name="Constant"/>
- <comp lib="0" loc="(390,190)" name="Tunnel">
- <a name="label" val="o1"/>
- </comp>
- <comp lib="1" loc="(190,490)" name="XOR Gate">
+ <comp lib="1" loc="(190,460)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(330,490)" name="AND Gate">
+ <comp lib="0" loc="(130,180)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="b1"/>
+ </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="1" loc="(330,400)" name="AND Gate">
+ <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="6" loc="(602,74)" name="Text">
- <a name="text" val="Input B"/>
+ <comp lib="0" loc="(130,540)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="b5"/>
</comp>
- <comp lib="1" loc="(190,100)" name="XOR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="0" loc="(670,310)" name="Tunnel">
+ <a name="label" val="o7"/>
</comp>
- <comp lib="1" loc="(250,550)" name="NOR Gate">
+ <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="(340,550)" name="XNOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(250,100)" name="NOR Gate">
+ <comp lib="1" loc="(240,220)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(760,380)" name="Tunnel">
- <a name="facing" val="south"/>
- <a name="label" val="OR"/>
+ <comp lib="0" loc="(780,180)" name="Constant">
+ <a name="width" val="8"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="1" loc="(340,190)" name="XNOR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="0" loc="(670,550)" name="Splitter">
+ <a name="fanout" val="7"/>
+ <a name="incoming" val="7"/>
</comp>
- <comp lib="0" loc="(390,730)" name="Tunnel">
- <a name="label" val="o7"/>
+ <comp lib="0" loc="(650,320)" name="Splitter">
+ <a name="fanout" val="8"/>
+ <a name="incoming" val="8"/>
</comp>
- <comp lib="1" loc="(310,240)" name="OR Gate">
- <a name="facing" val="west"/>
+ <comp lib="1" loc="(280,560)" name="OR 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="0" loc="(490,460)" name="Pin">
+ <a name="tristate" val="false"/>
</comp>
- <comp lib="1" loc="(250,370)" name="NOR Gate">
+ <comp lib="1" loc="(280,470)" name="OR 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="1" loc="(340,280)" name="XNOR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(190,400)" name="XOR 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="(130,450)" name="Tunnel">
+ <comp lib="0" loc="(130,480)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="b4"/>
+ <a name="label" val="a4"/>
</comp>
- <comp lib="0" loc="(680,50)" name="Tunnel">
+ <comp lib="0" loc="(680,80)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="a0"/>
+ <a name="label" val="a3"/>
</comp>
- <comp lib="1" loc="(300,240)" name="AND Gate">
+ <comp lib="1" loc="(190,400)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
</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="0" loc="(670,300)" name="Tunnel">
+ <a name="label" val="o6"/>
</comp>
- <comp lib="1" loc="(270,410)" name="AND Gate">
+ <comp lib="1" loc="(340,640)" name="XNOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
</comp>
- <comp lib="1" loc="(240,760)" name="AND Gate">
+ <comp lib="1" loc="(190,760)" name="XOR 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 lib="0" loc="(670,280)" name="Tunnel">
+ <a name="label" val="o4"/>
</comp>
- <comp lib="1" loc="(190,670)" name="XOR Gate">
+ <comp lib="0" loc="(300,70)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="CI"/>
+ </comp>
+ <comp lib="1" loc="(280,200)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(670,240)" name="Tunnel">
- <a name="label" val="o0"/>
- </comp>
- <comp lib="0" loc="(130,300)" name="Tunnel">
+ <comp lib="0" loc="(130,270)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="a2"/>
+ <a name="label" val="b2"/>
</comp>
- <comp lib="1" loc="(300,180)" name="OR Gate">
+ <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="6" loc="(617,355)" name="Text">
- <a name="text" val="Opcodes"/>
- </comp>
- <comp lib="6" loc="(498,373)" name="Text">
- <a name="text" val="STATIC OPCODE"/>
+ <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>
- <comp lib="0" loc="(390,280)" name="Tunnel">
- <a name="label" val="o2"/>
+ <comp lib="2" loc="(570,400)" name="Multiplexer">
+ <a name="width" val="3"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(710,320)" name="Splitter">
+ <comp lib="6" loc="(476,260)" name="Text">
+ <a name="text" val="Output"/>
+ </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="(550,80)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="b3"/>
+ </comp>
+ <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="1" loc="(190,220)" name="XOR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="0" loc="(390,730)" name="Tunnel">
+ <a name="label" val="o7"/>
+ </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>
- <comp lib="3" loc="(1060,80)" name="Comparator">
- <a name="width" val="4"/>
+ <comp lib="1" loc="(280,380)" name="OR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(500,550)" name="Pin">
- <a name="width" val="4"/>
- <a name="tristate" val="false"/>
+ <comp lib="0" loc="(670,290)" name="Tunnel">
+ <a name="label" val="o5"/>
</comp>
- <comp lib="1" loc="(270,500)" name="AND 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"/>
- <a name="negate1" val="true"/>
</comp>
- <comp lib="1" loc="(340,280)" name="XNOR Gate">
+ <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="(260,70)" name="Tunnel">
- <a name="facing" val="south"/>
- <a name="label" val="CC"/>
+ <comp lib="0" loc="(500,550)" name="Pin">
+ <a name="width" val="4"/>
+ <a name="tristate" val="false"/>
</comp>
- <comp lib="0" loc="(300,70)" name="Tunnel">
+ <comp lib="0" loc="(140,70)" name="Tunnel">
<a name="facing" val="south"/>
- <a name="label" val="CI"/>
- </comp>
- <comp lib="3" loc="(930,160)" name="Shifter">
- <a name="shift" val="lr"/>
+ <a name="label" val="!A"/>
</comp>
- <comp lib="0" loc="(680,100)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="a5"/>
+ <comp lib="6" loc="(481,532)" name="Text">
+ <a name="text" val="DYN OP"/>
</comp>
- <comp lib="1" loc="(300,540)" name="OR Gate">
- <a name="facing" val="south"/>
+ <comp lib="1" loc="(250,100)" name="NOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(130,210)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="a1"/>
+ <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="(190,370)" name="XOR 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="(670,310)" name="Tunnel">
- <a name="label" val="o7"/>
- </comp>
- <comp lib="1" loc="(300,600)" name="AND Gate">
+ <comp lib="1" loc="(280,740)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
</comp>
- <comp lib="1" loc="(340,370)" name="XNOR 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="(270,680)" name="AND Gate">
+ <comp lib="1" loc="(240,670)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
</comp>
- <comp lib="1" loc="(330,310)" name="AND Gate">
+ <comp lib="3" loc="(930,70)" name="BitAdder"/>
+ <comp lib="0" loc="(130,450)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="b4"/>
+ </comp>
+ <comp lib="0" loc="(680,50)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="a0"/>
+ </comp>
+ <comp lib="1" loc="(310,510)" 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="(240,400)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(550,120)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="b7"/>
- </comp>
- <comp lib="1" loc="(340,460)" 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="0" loc="(550,70)" name="Tunnel">
+ <comp lib="0" loc="(680,100)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="b2"/>
+ <a name="label" val="a5"/>
</comp>
- <comp lib="0" loc="(680,20)" name="Tunnel">
+ <comp lib="0" loc="(550,20)" name="Tunnel">
<a name="facing" val="east"/>
<a name="width" val="8"/>
- <a name="label" val="A"/>
+ <a name="label" val="B"/>
</comp>
- <comp lib="0" loc="(130,720)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="b7"/>
+ <comp lib="1" loc="(240,310)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(330,760)" name="AND Gate">
+ <comp lib="1" loc="(240,490)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </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>
- <comp lib="6" loc="(476,260)" name="Text">
- <a name="text" val="Output"/>
+ <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="0" loc="(670,300)" name="Tunnel">
- <a name="label" val="o6"/>
+ <comp lib="0" loc="(740,380)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="!A"/>
</comp>
- <comp lib="1" loc="(300,360)" name="OR 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="(340,850)" name="Constant">
<a name="facing" val="south"/>
+ <a name="value" val="0x0"/>
+ </comp>
+ <comp lib="0" loc="(260,70)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="CC"/>
+ </comp>
+ <comp lib="1" loc="(250,190)" name="NOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
@@ -1164,121 +1226,127 @@
<a name="fanout" val="8"/>
<a name="incoming" val="8"/>
</comp>
- <comp lib="0" loc="(130,180)" name="Tunnel">
+ <comp lib="0" loc="(130,360)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="b1"/>
+ <a name="label" val="b3"/>
</comp>
- <comp lib="1" loc="(310,330)" name="OR Gate">
- <a name="facing" val="west"/>
+ <comp lib="0" loc="(220,70)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="OR"/>
+ </comp>
+ <comp lib="1" loc="(280,290)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(300,510)" name="AND 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="2" loc="(570,400)" name="Multiplexer">
- <a name="width" val="3"/>
- <a name="enable" val="false"/>
+ <comp lib="6" loc="(355,906)" name="Text">
+ <a name="text" val="FLAG"/>
</comp>
- <comp lib="0" loc="(670,550)" name="Splitter">
- <a name="fanout" val="7"/>
- <a name="incoming" val="7"/>
+ <comp lib="0" loc="(670,250)" name="Tunnel">
+ <a name="label" val="o1"/>
</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 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="2" loc="(320,890)" name="Multiplexer">
+ <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="1" loc="(250,550)" name="NOR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="0" loc="(780,380)" name="Tunnel">
<a name="facing" val="south"/>
- <a name="selloc" val="tr"/>
- <a name="select" val="2"/>
- <a name="enable" val="false"/>
+ <a name="label" val="CI"/>
</comp>
<comp lib="0" loc="(680,70)" name="Tunnel">
<a name="facing" val="east"/>
<a name="label" val="a2"/>
</comp>
- <comp lib="0" loc="(140,70)" name="Tunnel">
+ <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="(300,540)" name="OR Gate">
<a name="facing" val="south"/>
- <a name="label" val="!A"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(280,560)" name="OR Gate">
+ <comp lib="3" loc="(930,110)" name="Shifter"/>
+ <comp lib="1" loc="(560,300)" name="AND Gate">
+ <a name="facing" val="north"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(310,150)" name="OR Gate">
- <a name="facing" val="west"/>
+ <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="0" loc="(130,270)" name="Tunnel">
+ <comp lib="0" loc="(550,100)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="b2"/>
+ <a name="label" val="b5"/>
</comp>
- <comp lib="0" loc="(670,250)" name="Tunnel">
- <a name="label" val="o1"/>
+ <comp lib="0" loc="(390,370)" name="Tunnel">
+ <a name="label" val="o3"/>
</comp>
- <comp lib="1" loc="(300,630)" name="OR Gate">
- <a name="facing" val="south"/>
+ <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="1" loc="(280,290)" name="OR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="0" loc="(770,380)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="CC"/>
</comp>
- <comp lib="1" loc="(190,460)" name="XOR Gate">
+ <comp lib="1" loc="(240,580)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="3" loc="(930,70)" name="BitAdder"/>
- <comp lib="0" loc="(130,570)" name="Tunnel">
+ <comp lib="0" loc="(670,260)" name="Tunnel">
+ <a name="label" val="o2"/>
+ </comp>
+ <comp lib="0" loc="(680,90)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="a5"/>
+ <a name="label" val="a4"/>
</comp>
- <comp lib="0" loc="(710,520)" name="Splitter">
- <a name="facing" val="west"/>
- <a name="appear" val="center"/>
+ <comp lib="0" loc="(390,100)" name="Tunnel">
+ <a name="label" val="o0"/>
</comp>
- <comp lib="1" loc="(190,310)" name="XOR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="0" loc="(130,540)" name="Tunnel">
+ <comp lib="0" loc="(130,750)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="b5"/>
- </comp>
- <comp lib="0" loc="(670,290)" name="Tunnel">
- <a name="label" val="o5"/>
+ <a name="label" val="a7"/>
</comp>
- <comp lib="1" loc="(240,130)" name="AND Gate">
+ <comp lib="1" loc="(340,460)" name="XNOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="6" loc="(472,443)" name="Text">
- <a name="text" val="ALU STATE"/>
+ <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="(180,70)" name="Tunnel">
+ <comp lib="0" loc="(330,850)" name="Constant">
<a name="facing" val="south"/>
- <a name="label" val="!B"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="1" loc="(310,510)" name="OR 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"/>
</comp>
- <comp lib="0" loc="(390,100)" name="Tunnel">
- <a name="label" val="o0"/>
- </comp>
- <comp lib="0" loc="(390,550)" name="Tunnel">
- <a name="label" val="o5"/>
- </comp>
- <comp lib="1" loc="(190,580)" name="XOR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="0" loc="(550,110)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="b6"/>
</comp>
<comp lib="0" loc="(320,890)" name="Pin">
<a name="facing" val="north"/>
@@ -1286,39 +1354,53 @@
<a name="tristate" val="false"/>
<a name="labelloc" val="east"/>
</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 lib="0" loc="(550,70)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="b2"/>
</comp>
- <comp lib="1" loc="(190,730)" name="XOR 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="(550,100)" name="Tunnel">
+ <comp lib="2" loc="(810,190)" name="Multiplexer">
+ <a name="width" val="8"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(130,120)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="b5"/>
+ <a name="label" val="a0"/>
</comp>
- <comp lib="1" loc="(250,190)" name="NOR 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="(330,670)" name="AND Gate">
+ <comp lib="1" loc="(830,280)" name="OR Gate">
+ <a name="size" val="70"/>
+ <a name="inputs" val="8"/>
+ </comp>
+ <comp lib="0" loc="(670,240)" name="Tunnel">
+ <a name="label" val="o0"/>
+ </comp>
+ <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="1" loc="(190,190)" name="XOR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="0" loc="(530,280)" name="Pin">
+ <a name="output" val="true"/>
+ <a name="width" val="8"/>
+ <a name="labelloc" val="east"/>
</comp>
- <comp lib="0" loc="(130,360)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="b3"/>
+ <comp lib="6" loc="(498,373)" name="Text">
+ <a name="text" val="STATIC OPCODE"/>
</comp>
- <comp lib="0" loc="(550,90)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="b4"/>
+ <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="3" loc="(930,110)" name="Shifter"/>
<comp lib="4" loc="(730,400)" name="ROM">
<a name="addrWidth" val="3"/>
<a name="dataWidth" val="6"/>
@@ -1326,172 +1408,91 @@
8 3b 4 0 2 38 7 12
</a>
</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="0" loc="(510,390)" name="Pin">
- <a name="width" val="3"/>
- <a name="tristate" val="false"/>
- </comp>
- <comp lib="3" loc="(1000,90)" name="BitAdder"/>
- <comp lib="1" loc="(240,310)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="1" loc="(280,380)" name="OR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <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="2" loc="(540,280)" name="Multiplexer">
- <a name="facing" val="west"/>
- <a name="width" val="8"/>
- <a name="enable" val="false"/>
- </comp>
- <comp lib="1" loc="(300,150)" name="AND Gate">
+ <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="1" loc="(250,640)" name="NOR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <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="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="0" loc="(710,470)" name="Splitter">
- <a name="facing" val="west"/>
- <a name="fanout" val="3"/>
- <a name="incoming" val="3"/>
+ <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="0" loc="(670,260)" name="Tunnel">
- <a name="label" val="o2"/>
+ <comp lib="0" loc="(750,380)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="!B"/>
</comp>
- <comp lib="1" loc="(330,580)" 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="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="1" loc="(560,300)" name="AND Gate">
- <a name="facing" val="north"/>
+ <comp lib="1" loc="(250,460)" name="NOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(680,80)" name="Tunnel">
+ <comp lib="0" loc="(780,100)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="a3"/>
- </comp>
- <comp lib="0" loc="(220,70)" name="Tunnel">
- <a name="facing" val="south"/>
- <a name="label" val="OR"/>
- </comp>
- <comp lib="0" loc="(770,380)" name="Tunnel">
- <a name="facing" val="south"/>
- <a name="label" val="CC"/>
- </comp>
- <comp lib="1" loc="(300,690)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
+ <a name="width" val="8"/>
+ <a name="label" val="A"/>
</comp>
- <comp lib="0" loc="(680,110)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="a6"/>
+ <comp lib="0" loc="(390,550)" name="Tunnel">
+ <a name="label" val="o5"/>
</comp>
- <comp lib="0" loc="(770,200)" name="Tunnel">
- <a name="facing" val="east"/>
+ <comp lib="2" loc="(540,280)" name="Multiplexer">
+ <a name="facing" val="west"/>
<a name="width" val="8"/>
- <a name="label" val="B"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="1" loc="(280,740)" name="OR Gate">
+ <comp lib="1" loc="(250,370)" name="NOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(130,480)" name="Tunnel">
+ <comp lib="0" loc="(550,90)" 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"/>
- </comp>
- <comp lib="1" loc="(250,730)" name="NOR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <a name="label" val="b4"/>
</comp>
- <comp lib="0" loc="(550,110)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="b6"/>
+ <comp lib="0" loc="(510,390)" name="Pin">
+ <a name="width" val="3"/>
+ <a name="tristate" val="false"/>
</comp>
- <comp lib="0" loc="(130,630)" name="Tunnel">
+ <comp lib="0" loc="(130,390)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="b6"/>
+ <a name="label" val="a3"/>
</comp>
- <comp lib="0" loc="(130,660)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="a6"/>
+ <comp lib="0" loc="(790,80)" name="Constant">
+ <a name="width" val="8"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="1" loc="(330,130)" name="AND 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="(550,50)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="b0"/>
- </comp>
- <comp lib="0" loc="(130,90)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="b0"/>
+ <comp lib="2" loc="(820,90)" name="Multiplexer">
+ <a name="width" val="8"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="1" loc="(330,220)" 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="1" loc="(300,810)" name="OR Gate">
- <a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="6" loc="(602,74)" name="Text">
+ <a name="text" val="Input B"/>
</comp>
- <comp lib="1" loc="(340,640)" name="XNOR Gate">
+ <comp lib="1" loc="(190,310)" 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>
- <comp lib="1" loc="(280,470)" name="OR Gate">
+ <comp lib="1" loc="(240,760)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(490,460)" name="Pin">
+ <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="1" loc="(190,130)" name="XOR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
</circuit>
<circuit name="GPR">
<a name="circuit" val="GPR"/>
@@ -1501,52 +1502,61 @@
<appear>
<rect fill="none" height="30" stroke="#000000" stroke-width="2" width="49" x="50" y="70"/>
<text font-family="SansSerif" font-size="12" text-anchor="middle" x="74" y="89">GPR</text>
- <circ-port height="8" pin="100,90" width="8" x="86" y="96"/>
<circ-port height="8" pin="140,130" width="8" x="86" y="66"/>
<circ-port height="10" pin="140,230" width="10" x="45" y="75"/>
<circ-port height="10" pin="140,260" width="10" x="45" y="85"/>
- <circ-port height="8" pin="150,340" width="8" x="56" y="96"/>
- <circ-port height="8" pin="240,340" width="8" x="66" y="96"/>
- <circ-port height="8" pin="110,60" width="8" x="56" y="66"/>
+ <circ-port height="8" pin="140,340" width="8" x="56" y="96"/>
+ <circ-port height="8" pin="250,340" width="8" x="66" y="96"/>
+ <circ-port height="8" pin="250,120" width="8" x="56" y="66"/>
<circ-port height="8" pin="130,200" width="8" x="96" y="86"/>
+ <circ-port height="8" pin="350,280" width="8" x="76" y="96"/>
+ <circ-port height="8" pin="130,80" width="8" x="86" y="96"/>
<circ-anchor facing="east" height="6" width="6" x="47" y="97"/>
</appear>
+ <wire from="(170,120)" to="(170,190)"/>
<wire from="(220,250)" to="(220,320)"/>
+ <wire from="(220,110)" to="(220,180)"/>
<wire from="(210,120)" to="(210,190)"/>
+ <wire from="(250,120)" to="(250,190)"/>
<wire from="(140,260)" to="(190,260)"/>
- <wire from="(180,100)" to="(180,120)"/>
<wire from="(180,300)" to="(180,320)"/>
- <wire from="(170,100)" to="(170,190)"/>
<wire from="(160,130)" to="(200,130)"/>
<wire from="(270,210)" to="(270,240)"/>
+ <wire from="(280,240)" to="(280,270)"/>
+ <wire from="(170,120)" to="(210,120)"/>
<wire from="(200,130)" to="(240,130)"/>
<wire from="(230,260)" to="(270,260)"/>
<wire from="(190,260)" to="(230,260)"/>
+ <wire from="(350,250)" to="(350,280)"/>
+ <wire from="(210,120)" to="(250,120)"/>
<wire from="(170,290)" to="(170,320)"/>
<wire from="(190,210)" to="(190,240)"/>
<wire from="(230,210)" to="(230,240)"/>
<wire from="(180,280)" to="(210,280)"/>
<wire from="(170,290)" to="(200,290)"/>
- <wire from="(180,120)" to="(210,120)"/>
+ <wire from="(190,110)" to="(220,110)"/>
+ <wire from="(360,240)" to="(390,240)"/>
<wire from="(270,260)" to="(290,260)"/>
<wire from="(190,170)" to="(190,210)"/>
<wire from="(230,170)" to="(230,210)"/>
<wire from="(270,170)" to="(270,210)"/>
<wire from="(140,130)" to="(160,130)"/>
<wire from="(150,270)" to="(150,320)"/>
- <wire from="(280,220)" to="(280,270)"/>
+ <wire from="(360,220)" to="(370,220)"/>
+ <wire from="(140,340)" to="(150,340)"/>
+ <wire from="(240,340)" to="(250,340)"/>
<wire from="(150,270)" to="(280,270)"/>
+ <wire from="(150,110)" to="(150,180)"/>
<wire from="(200,220)" to="(200,290)"/>
<wire from="(180,300)" to="(240,300)"/>
- <wire from="(190,110)" to="(250,110)"/>
<wire from="(180,190)" to="(180,200)"/>
<wire from="(190,100)" to="(190,110)"/>
+ <wire from="(170,100)" to="(170,110)"/>
<wire from="(220,190)" to="(220,200)"/>
<wire from="(200,310)" to="(200,320)"/>
<wire from="(130,200)" to="(180,200)"/>
- <wire from="(240,130)" to="(290,130)"/>
<wire from="(260,190)" to="(260,200)"/>
- <wire from="(250,110)" to="(250,190)"/>
+ <wire from="(180,100)" to="(180,180)"/>
<wire from="(240,220)" to="(240,300)"/>
<wire from="(180,200)" to="(220,200)"/>
<wire from="(170,230)" to="(210,230)"/>
@@ -1560,125 +1570,138 @@
<wire from="(140,230)" to="(170,230)"/>
<wire from="(230,280)" to="(260,280)"/>
<wire from="(160,220)" to="(160,320)"/>
- <wire from="(280,220)" to="(300,220)"/>
+ <wire from="(310,230)" to="(330,230)"/>
+ <wire from="(280,240)" to="(300,240)"/>
+ <wire from="(240,130)" to="(390,130)"/>
<wire from="(160,130)" to="(160,170)"/>
<wire from="(200,130)" to="(200,170)"/>
<wire from="(230,280)" to="(230,320)"/>
<wire from="(240,130)" to="(240,170)"/>
<wire from="(210,280)" to="(210,320)"/>
+ <wire from="(390,130)" to="(390,240)"/>
+ <wire from="(300,270)" to="(300,310)"/>
<wire from="(170,210)" to="(190,210)"/>
+ <wire from="(180,180)" to="(200,180)"/>
+ <wire from="(150,110)" to="(170,110)"/>
<wire from="(250,210)" to="(270,210)"/>
<wire from="(210,210)" to="(230,210)"/>
+ <wire from="(220,180)" to="(240,180)"/>
<wire from="(260,250)" to="(270,250)"/>
<wire from="(180,250)" to="(190,250)"/>
+ <wire from="(150,180)" to="(160,180)"/>
<wire from="(220,250)" to="(230,250)"/>
- <wire from="(300,250)" to="(300,310)"/>
- <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="1" loc="(230,260)" name="Controlled Buffer">
+ <comp lib="4" loc="(190,170)" name="Register"/>
+ <comp lib="0" loc="(250,120)" name="Pin">
<a name="facing" val="south"/>
- <a name="width" val="8"/>
+ <a name="tristate" val="false"/>
</comp>
- <comp lib="1" loc="(250,230)" name="Controlled Buffer">
- <a name="facing" val="south"/>
+ <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="0" loc="(130,200)" name="Pin">
+ <comp lib="4" loc="(270,170)" name="Register"/>
+ <comp lib="0" loc="(140,130)" name="Pin">
+ <a name="width" val="8"/>
<a name="tristate" val="false"/>
+ <a name="label" val="Input"/>
</comp>
- <comp lib="2" loc="(130,80)" name="Multiplexer">
- <a name="selloc" val="tr"/>
- <a name="width" val="2"/>
- <a name="enable" val="false"/>
+ <comp lib="0" loc="(350,280)" name="Pin">
+ <a name="facing" val="north"/>
+ <a name="tristate" val="false"/>
+ <a name="label" val="Forward Input A"/>
+ <a name="labelloc" val="east"/>
</comp>
- <comp lib="0" loc="(200,180)" name="Constant"/>
- <comp lib="1" loc="(170,230)" name="Controlled Buffer">
+ <comp lib="1" loc="(230,260)" name="Controlled Buffer">
<a name="facing" val="south"/>
<a name="width" val="8"/>
</comp>
- <comp lib="4" loc="(270,170)" name="Register"/>
- <comp lib="0" loc="(140,130)" name="Pin">
- <a name="width" val="8"/>
+ <comp lib="0" loc="(130,200)" name="Pin">
<a name="tristate" val="false"/>
</comp>
- <comp lib="0" loc="(240,340)" name="Pin">
- <a name="facing" val="west"/>
+ <comp lib="1" loc="(190,260)" name="Controlled Buffer">
+ <a name="facing" val="south"/>
+ <a name="width" val="8"/>
+ </comp>
+ <comp lib="0" loc="(140,340)" name="Pin">
<a name="width" val="2"/>
<a name="tristate" val="false"/>
+ <a name="label" val="Read A"/>
</comp>
- <comp lib="2" loc="(150,340)" name="Decoder">
+ <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="(270,260)" name="Controlled Buffer">
+ <comp lib="1" loc="(250,230)" name="Controlled Buffer">
<a name="facing" val="south"/>
<a name="width" val="8"/>
</comp>
- <comp lib="0" loc="(160,180)" name="Constant"/>
- <comp lib="0" loc="(150,340)" name="Pin">
+ <comp lib="0" loc="(250,340)" name="Pin">
+ <a name="facing" val="west"/>
<a name="width" val="2"/>
<a name="tristate" val="false"/>
+ <a name="label" val="Read B"/>
+ <a name="labelloc" val="east"/>
</comp>
- <comp lib="4" loc="(190,170)" name="Register"/>
- <comp lib="4" loc="(230,170)" name="Register"/>
- <comp lib="0" loc="(110,60)" name="Pin">
+ <comp lib="1" loc="(270,260)" name="Controlled Buffer">
<a name="facing" val="south"/>
- <a name="tristate" val="false"/>
+ <a name="width" val="8"/>
</comp>
- <comp lib="0" loc="(310,230)" name="Constant">
+ <comp lib="1" loc="(290,260)" name="Controlled Buffer">
<a name="facing" val="west"/>
<a name="width" val="8"/>
- <a name="value" val="0x0"/>
+ <a name="control" val="left"/>
+ </comp>
+ <comp lib="1" loc="(170,230)" name="Controlled Buffer">
+ <a name="facing" val="south"/>
+ <a name="width" val="8"/>
</comp>
<comp lib="1" loc="(290,230)" name="Controlled Buffer">
<a name="facing" val="west"/>
<a name="width" val="8"/>
+ <a name="control" val="left"/>
</comp>
- <comp lib="0" loc="(240,180)" name="Constant"/>
- <comp lib="0" loc="(100,70)" name="Constant">
- <a name="width" val="2"/>
- <a name="value" val="0x0"/>
- </comp>
- <comp lib="0" loc="(100,90)" name="Pin">
- <a name="width" val="2"/>
- <a name="tristate" val="false"/>
+ <comp lib="0" loc="(140,260)" name="Pin">
+ <a name="output" val="true"/>
+ <a name="width" val="8"/>
+ <a name="label" val="Read B"/>
</comp>
- <comp lib="1" loc="(210,230)" name="Controlled Buffer">
- <a name="facing" val="south"/>
+ <comp lib="0" loc="(370,220)" name="Constant">
+ <a name="facing" val="west"/>
<a name="width" val="8"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="2" loc="(160,80)" name="Decoder">
+ <comp lib="1" loc="(210,230)" name="Controlled Buffer">
<a name="facing" val="south"/>
- <a name="select" val="2"/>
- <a name="enable" val="false"/>
- </comp>
- <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="(310,260)" name="Constant">
+ <comp lib="2" loc="(330,230)" name="Multiplexer">
<a name="facing" val="west"/>
<a name="width" val="8"/>
- <a name="value" val="0x0"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(240,340)" name="Decoder">
+ <comp lib="4" loc="(230,170)" name="Register"/>
+ <comp lib="2" loc="(150,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="(190,260)" name="Controlled Buffer">
- <a name="facing" val="south"/>
- <a name="width" val="8"/>
+ <comp lib="0" loc="(130,80)" name="Pin">
+ <a name="width" val="2"/>
+ <a name="tristate" val="false"/>
+ <a name="label" val="Write"/>
</comp>
- <comp lib="1" loc="(290,260)" name="Controlled Buffer">
- <a name="facing" val="west"/>
+ <comp lib="0" loc="(140,230)" name="Pin">
+ <a name="output" val="true"/>
<a name="width" val="8"/>
+ <a name="label" val="Read A"/>
+ </comp>
+ <comp lib="2" loc="(160,80)" name="Decoder">
+ <a name="facing" val="south"/>
+ <a name="select" val="2"/>
+ <a name="enable" val="false"/>
</comp>
</circuit>
<circuit name="ISD">
@@ -1690,9 +1713,9 @@
<rect fill="none" height="61" stroke="#000000" stroke-width="2" width="100" x="50" y="50"/>
<text font-family="SansSerif" font-size="12" text-anchor="middle" x="99" y="84">ISD</text>
<circ-port height="8" pin="80,50" width="8" x="146" y="76"/>
- <circ-port height="8" pin="80,80" width="8" x="66" y="106"/>
- <circ-port height="8" pin="80,250" width="8" x="146" y="96"/>
- <circ-port height="10" pin="440,1610" width="10" x="65" y="45"/>
+ <circ-port height="8" pin="50,150" width="8" x="66" y="106"/>
+ <circ-port height="8" pin="50,250" width="8" x="146" y="96"/>
+ <circ-port height="10" pin="440,1620" width="10" x="65" y="45"/>
<circ-port height="10" pin="620,1610" width="10" x="85" y="45"/>
<circ-port height="10" pin="530,1880" width="10" x="45" y="95"/>
<circ-port height="10" pin="760,1580" width="10" x="45" y="65"/>
@@ -1700,102 +1723,126 @@
<circ-port height="10" pin="840,1610" width="10" x="115" y="45"/>
<circ-port height="10" pin="880,1610" width="10" x="105" y="45"/>
<circ-port height="10" pin="920,1610" width="10" x="135" y="45"/>
- <circ-port height="10" pin="1110,1190" width="10" x="75" y="105"/>
+ <circ-port height="10" pin="1160,1190" width="10" x="75" y="105"/>
<circ-port height="10" pin="780,1880" width="10" x="45" y="75"/>
<circ-port height="8" pin="660,1880" width="8" x="56" y="46"/>
<circ-port height="8" pin="90,1640" width="8" x="46" y="106"/>
<circ-port height="10" pin="330,1680" width="10" x="55" y="105"/>
<circ-port height="8" pin="440,1690" width="8" x="46" y="86"/>
- <circ-port height="10" pin="570,1690" width="10" x="145" y="65"/>
+ <circ-port height="10" pin="530,1690" width="10" x="145" y="65"/>
<circ-port height="10" pin="1190,1480" width="10" x="75" y="45"/>
- <circ-port height="10" pin="1110,1360" width="10" x="45" y="45"/>
+ <circ-port height="10" pin="1160,1360" width="10" x="45" y="45"/>
<circ-port height="10" pin="440,1880" width="10" x="145" y="85"/>
<circ-port height="10" pin="830,1890" width="10" x="145" y="55"/>
+ <circ-port height="10" pin="1340,800" width="10" x="125" y="45"/>
<circ-anchor facing="east" height="6" width="6" x="47" y="57"/>
</appear>
+ <wire from="(610,600)" to="(610,930)"/>
<wire from="(190,580)" to="(250,580)"/>
<wire from="(1090,1500)" to="(1130,1500)"/>
<wire from="(720,1370)" to="(1040,1370)"/>
+ <wire from="(450,1140)" to="(450,1600)"/>
<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)"/>
<wire from="(220,90)" to="(220,180)"/>
<wire from="(150,1720)" to="(380,1720)"/>
<wire from="(240,970)" to="(280,970)"/>
+ <wire from="(120,120)" to="(120,150)"/>
<wire from="(240,340)" to="(270,340)"/>
+ <wire from="(200,1580)" to="(230,1580)"/>
<wire from="(850,210)" to="(850,250)"/>
+ <wire from="(1200,680)" to="(1210,680)"/>
<wire from="(180,1310)" to="(270,1310)"/>
<wire from="(1090,1530)" to="(1100,1530)"/>
<wire from="(200,1020)" to="(280,1020)"/>
+ <wire from="(1130,910)" to="(1160,910)"/>
<wire from="(450,60)" to="(450,300)"/>
<wire from="(530,1750)" to="(660,1750)"/>
<wire from="(650,60)" to="(650,570)"/>
<wire from="(920,1240)" to="(920,1290)"/>
<wire from="(840,520)" to="(840,570)"/>
+ <wire from="(960,820)" to="(1040,820)"/>
<wire from="(880,880)" to="(880,930)"/>
<wire from="(510,1100)" to="(630,1100)"/>
<wire from="(510,1280)" to="(510,1290)"/>
<wire from="(610,1050)" to="(610,1380)"/>
+ <wire from="(1080,890)" to="(1080,910)"/>
<wire from="(890,60)" to="(890,70)"/>
<wire from="(210,730)" to="(270,730)"/>
+ <wire from="(1250,740)" to="(1250,760)"/>
+ <wire from="(1180,1500)" to="(1180,1590)"/>
+ <wire from="(1220,710)" to="(1220,740)"/>
<wire from="(230,440)" to="(280,440)"/>
<wire from="(170,1410)" to="(280,1410)"/>
+ <wire from="(1310,670)" to="(1310,740)"/>
<wire from="(680,1860)" to="(720,1860)"/>
- <wire from="(1120,1770)" to="(1310,1770)"/>
+ <wire from="(70,120)" to="(70,650)"/>
<wire from="(180,500)" to="(180,590)"/>
<wire from="(200,840)" to="(200,930)"/>
<wire from="(220,540)" to="(220,630)"/>
<wire from="(240,880)" to="(240,970)"/>
<wire from="(510,1190)" to="(670,1190)"/>
<wire from="(340,1750)" to="(340,1790)"/>
+ <wire from="(1090,680)" to="(1120,680)"/>
<wire from="(570,60)" to="(570,120)"/>
<wire from="(690,1140)" to="(690,1200)"/>
<wire from="(920,210)" to="(930,210)"/>
<wire from="(180,500)" to="(250,500)"/>
+ <wire from="(760,690)" to="(770,690)"/>
<wire from="(840,970)" to="(840,1020)"/>
<wire from="(880,1330)" to="(880,1380)"/>
<wire from="(930,870)" to="(930,880)"/>
+ <wire from="(1080,700)" to="(1080,720)"/>
+ <wire from="(1320,620)" to="(1320,650)"/>
<wire from="(230,890)" to="(280,890)"/>
<wire from="(470,1370)" to="(470,1380)"/>
<wire from="(350,290)" to="(350,300)"/>
- <wire from="(910,1010)" to="(1010,1010)"/>
+ <wire from="(820,800)" to="(1110,800)"/>
<wire from="(200,1290)" to="(200,1380)"/>
<wire from="(180,950)" to="(180,1040)"/>
<wire from="(220,990)" to="(220,1080)"/>
+ <wire from="(1080,720)" to="(1390,720)"/>
<wire from="(230,260)" to="(270,260)"/>
<wire from="(150,1690)" to="(150,1720)"/>
+ <wire from="(990,840)" to="(990,1690)"/>
<wire from="(190,940)" to="(280,940)"/>
<wire from="(850,1110)" to="(850,1150)"/>
<wire from="(940,1520)" to="(940,1560)"/>
+ <wire from="(1380,680)" to="(1380,730)"/>
<wire from="(1030,1540)" to="(1030,1790)"/>
<wire from="(440,1140)" to="(450,1140)"/>
<wire from="(920,340)" to="(930,340)"/>
<wire from="(100,250)" to="(100,1780)"/>
<wire from="(880,300)" to="(890,300)"/>
<wire from="(970,560)" to="(970,1570)"/>
- <wire from="(720,780)" to="(730,780)"/>
<wire from="(260,1670)" to="(330,1670)"/>
<wire from="(800,1700)" to="(800,1750)"/>
<wire from="(640,60)" to="(650,60)"/>
<wire from="(930,1380)" to="(930,1520)"/>
<wire from="(890,960)" to="(890,970)"/>
<wire from="(850,600)" to="(850,610)"/>
- <wire from="(1070,1550)" to="(1110,1550)"/>
<wire from="(340,1790)" to="(1030,1790)"/>
+ <wire from="(190,1540)" to="(190,1550)"/>
<wire from="(230,1340)" to="(280,1340)"/>
- <wire from="(190,1540)" to="(190,1560)"/>
+ <wire from="(150,1580)" to="(200,1580)"/>
+ <wire from="(1010,640)" to="(1200,640)"/>
+ <wire from="(830,670)" to="(870,670)"/>
+ <wire from="(1200,630)" to="(1200,640)"/>
<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="(1310,740)" to="(1310,750)"/>
+ <wire from="(810,670)" to="(830,670)"/>
+ <wire from="(870,1690)" to="(890,1690)"/>
<wire from="(220,1350)" to="(250,1350)"/>
+ <wire from="(800,780)" to="(960,780)"/>
<wire from="(170,420)" to="(250,420)"/>
<wire from="(190,760)" to="(270,760)"/>
<wire from="(290,1760)" to="(300,1760)"/>
@@ -1807,15 +1854,15 @@
<wire from="(880,430)" to="(890,430)"/>
<wire from="(180,1400)" to="(180,1520)"/>
<wire from="(880,750)" to="(890,750)"/>
+ <wire from="(520,1670)" to="(530,1670)"/>
<wire from="(670,1190)" to="(670,1200)"/>
<wire from="(550,110)" to="(550,120)"/>
+ <wire from="(370,1600)" to="(430,1600)"/>
<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="(200,480)" to="(250,480)"/>
<wire from="(220,180)" to="(270,180)"/>
- <wire from="(440,1600)" to="(440,1610)"/>
<wire from="(590,560)" to="(630,560)"/>
<wire from="(170,240)" to="(170,330)"/>
<wire from="(210,280)" to="(210,370)"/>
@@ -1823,9 +1870,12 @@
<wire from="(190,580)" to="(190,670)"/>
<wire from="(940,820)" to="(940,840)"/>
<wire from="(530,150)" to="(530,300)"/>
+ <wire from="(1130,620)" to="(1130,860)"/>
+ <wire from="(510,1280)" to="(980,1280)"/>
<wire from="(1030,1350)" to="(1040,1350)"/>
+ <wire from="(1330,570)" to="(1330,620)"/>
+ <wire from="(1010,1590)" to="(1010,1780)"/>
<wire from="(670,1700)" to="(670,1820)"/>
- <wire from="(80,80)" to="(90,80)"/>
<wire from="(920,1240)" to="(930,1240)"/>
<wire from="(330,920)" to="(590,920)"/>
<wire from="(190,1540)" to="(260,1540)"/>
@@ -1837,16 +1887,13 @@
<wire from="(190,70)" to="(190,130)"/>
<wire from="(660,1750)" to="(800,1750)"/>
<wire from="(600,600)" to="(610,600)"/>
- <wire from="(330,740)" to="(710,740)"/>
<wire from="(270,1510)" to="(520,1510)"/>
<wire from="(590,920)" to="(590,930)"/>
<wire from="(800,1380)" to="(800,1580)"/>
<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)"/>
<wire from="(210,730)" to="(210,820)"/>
<wire from="(870,560)" to="(870,580)"/>
@@ -1858,13 +1905,10 @@
<wire from="(230,1070)" to="(230,1160)"/>
<wire from="(510,290)" to="(550,290)"/>
<wire from="(210,1690)" to="(210,1790)"/>
- <wire from="(1030,1540)" to="(1110,1540)"/>
<wire from="(930,300)" to="(930,340)"/>
- <wire from="(770,960)" to="(770,1380)"/>
+ <wire from="(1130,620)" to="(1140,620)"/>
<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)"/>
@@ -1875,29 +1919,33 @@
<wire from="(880,250)" to="(880,300)"/>
<wire from="(600,1050)" to="(610,1050)"/>
<wire from="(210,1500)" to="(210,1560)"/>
+ <wire from="(1370,550)" to="(1370,570)"/>
<wire from="(830,1750)" to="(950,1750)"/>
<wire from="(190,400)" to="(250,400)"/>
<wire from="(470,290)" to="(470,300)"/>
<wire from="(200,1380)" to="(250,1380)"/>
<wire from="(170,780)" to="(280,780)"/>
- <wire from="(830,650)" to="(830,670)"/>
+ <wire from="(1160,1490)" to="(1160,1560)"/>
+ <wire from="(1170,540)" to="(1170,610)"/>
<wire from="(210,1180)" to="(210,1270)"/>
<wire from="(240,250)" to="(240,340)"/>
<wire from="(170,1140)" to="(170,1230)"/>
<wire from="(870,1010)" to="(870,1030)"/>
- <wire from="(200,210)" to="(200,300)"/>
<wire from="(860,1000)" to="(860,1020)"/>
- <wire from="(120,80)" to="(120,1770)"/>
+ <wire from="(1070,890)" to="(1070,900)"/>
<wire from="(240,790)" to="(280,790)"/>
- <wire from="(570,1670)" to="(570,1690)"/>
<wire from="(470,380)" to="(510,380)"/>
<wire from="(240,160)" to="(270,160)"/>
+ <wire from="(1360,660)" to="(1370,660)"/>
+ <wire from="(1320,620)" to="(1330,620)"/>
<wire from="(180,1130)" to="(270,1130)"/>
<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="(960,780)" to="(960,820)"/>
+ <wire from="(1170,540)" to="(1240,540)"/>
<wire from="(440,60)" to="(450,60)"/>
+ <wire from="(1080,810)" to="(1240,810)"/>
<wire from="(480,420)" to="(490,420)"/>
<wire from="(200,840)" to="(280,840)"/>
<wire from="(150,1690)" to="(160,1690)"/>
@@ -1905,13 +1953,14 @@
<wire from="(210,1180)" to="(280,1180)"/>
<wire from="(800,1380)" to="(810,1380)"/>
<wire from="(800,1700)" to="(810,1700)"/>
- <wire from="(730,780)" to="(730,1660)"/>
<wire from="(920,1060)" to="(920,1110)"/>
- <wire from="(760,60)" to="(770,60)"/>
+ <wire from="(1170,1500)" to="(1170,1610)"/>
<wire from="(840,340)" to="(840,390)"/>
<wire from="(880,700)" to="(880,750)"/>
+ <wire from="(1020,730)" to="(1070,730)"/>
<wire from="(510,1100)" to="(510,1110)"/>
<wire from="(430,380)" to="(430,390)"/>
+ <wire from="(1070,700)" to="(1070,730)"/>
<wire from="(170,1230)" to="(280,1230)"/>
<wire from="(790,830)" to="(830,830)"/>
<wire from="(180,320)" to="(180,410)"/>
@@ -1923,9 +1972,8 @@
<wire from="(220,270)" to="(250,270)"/>
<wire from="(850,480)" to="(850,520)"/>
<wire from="(930,1200)" to="(930,1240)"/>
- <wire from="(1150,1420)" to="(1150,1480)"/>
+ <wire from="(1080,830)" to="(1090,830)"/>
<wire from="(250,1600)" to="(260,1600)"/>
- <wire from="(650,600)" to="(650,660)"/>
<wire from="(180,320)" to="(250,320)"/>
<wire from="(800,870)" to="(810,870)"/>
<wire from="(670,1700)" to="(680,1700)"/>
@@ -1933,44 +1981,55 @@
<wire from="(880,1150)" to="(880,1200)"/>
<wire from="(840,790)" to="(840,840)"/>
<wire from="(930,690)" to="(930,700)"/>
+ <wire from="(1190,630)" to="(1190,650)"/>
<wire from="(210,1000)" to="(270,1000)"/>
<wire from="(190,1300)" to="(250,1300)"/>
+ <wire from="(770,920)" to="(830,920)"/>
+ <wire from="(1050,650)" to="(1150,650)"/>
<wire from="(230,710)" to="(280,710)"/>
<wire from="(200,1640)" to="(250,1640)"/>
<wire from="(820,1860)" to="(820,1890)"/>
+ <wire from="(120,150)" to="(120,1770)"/>
+ <wire from="(1050,680)" to="(1050,750)"/>
<wire from="(200,1110)" to="(200,1200)"/>
<wire from="(180,770)" to="(180,860)"/>
<wire from="(220,810)" to="(220,900)"/>
<wire from="(230,80)" to="(270,80)"/>
<wire from="(240,1150)" to="(240,1240)"/>
+ <wire from="(1070,1550)" to="(1120,1550)"/>
+ <wire from="(1010,640)" to="(1010,720)"/>
<wire from="(890,1290)" to="(890,1330)"/>
- <wire from="(1180,1510)" to="(1320,1510)"/>
- <wire from="(1120,1580)" to="(1120,1770)"/>
+ <wire from="(1150,710)" to="(1160,710)"/>
<wire from="(570,330)" to="(570,390)"/>
<wire from="(350,290)" to="(430,290)"/>
<wire from="(370,60)" to="(370,300)"/>
<wire from="(650,1050)" to="(650,1110)"/>
+ <wire from="(630,650)" to="(760,650)"/>
<wire from="(920,160)" to="(930,160)"/>
<wire from="(920,480)" to="(930,480)"/>
+ <wire from="(1310,540)" to="(1330,540)"/>
+ <wire from="(800,680)" to="(810,680)"/>
<wire from="(880,120)" to="(890,120)"/>
- <wire from="(760,960)" to="(770,960)"/>
+ <wire from="(1180,730)" to="(1200,730)"/>
<wire from="(840,1240)" to="(840,1290)"/>
<wire from="(680,1850)" to="(680,1860)"/>
<wire from="(230,1160)" to="(280,1160)"/>
<wire from="(620,1400)" to="(620,1610)"/>
<wire from="(220,1260)" to="(220,1350)"/>
<wire from="(180,1220)" to="(180,1310)"/>
+ <wire from="(1280,530)" to="(1280,540)"/>
+ <wire from="(760,650)" to="(760,670)"/>
<wire from="(290,1450)" to="(830,1450)"/>
- <wire from="(90,80)" to="(120,80)"/>
<wire from="(1150,1480)" to="(1160,1480)"/>
- <wire from="(510,1280)" to="(990,1280)"/>
<wire from="(690,1770)" to="(850,1770)"/>
<wire from="(700,1780)" to="(860,1780)"/>
<wire from="(800,1750)" to="(830,1750)"/>
+ <wire from="(1020,1610)" to="(1020,1770)"/>
<wire from="(170,240)" to="(250,240)"/>
<wire from="(780,1690)" to="(780,1880)"/>
<wire from="(530,420)" to="(530,480)"/>
<wire from="(920,610)" to="(930,610)"/>
+ <wire from="(1310,670)" to="(1330,670)"/>
<wire from="(840,210)" to="(850,210)"/>
<wire from="(490,60)" to="(490,120)"/>
<wire from="(880,250)" to="(890,250)"/>
@@ -1978,57 +2037,58 @@
<wire from="(430,1810)" to="(810,1810)"/>
<wire from="(180,70)" to="(180,140)"/>
<wire from="(1030,380)" to="(1030,1350)"/>
+ <wire from="(1410,660)" to="(1410,740)"/>
<wire from="(850,870)" to="(850,880)"/>
<wire from="(1090,1520)" to="(1130,1520)"/>
<wire from="(860,1710)" to="(860,1780)"/>
+ <wire from="(90,110)" to="(90,120)"/>
<wire from="(200,300)" to="(250,300)"/>
- <wire from="(1010,1010)" to="(1010,1650)"/>
+ <wire from="(1240,810)" to="(1240,880)"/>
<wire from="(190,400)" to="(190,490)"/>
<wire from="(230,440)" to="(230,530)"/>
<wire from="(210,100)" to="(210,190)"/>
- <wire from="(940,640)" to="(940,660)"/>
<wire from="(210,640)" to="(250,640)"/>
<wire from="(950,1540)" to="(950,1750)"/>
<wire from="(180,680)" to="(280,680)"/>
+ <wire from="(1110,1570)" to="(1120,1570)"/>
<wire from="(620,1380)" to="(650,1380)"/>
- <wire from="(770,60)" to="(770,930)"/>
- <wire from="(630,650)" to="(830,650)"/>
+ <wire from="(160,1570)" to="(180,1570)"/>
+ <wire from="(200,1500)" to="(200,1550)"/>
+ <wire from="(1270,750)" to="(1300,750)"/>
<wire from="(330,1750)" to="(340,1750)"/>
+ <wire from="(1030,1540)" to="(1120,1540)"/>
<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)"/>
<wire from="(550,380)" to="(550,390)"/>
+ <wire from="(1070,730)" to="(1180,730)"/>
+ <wire from="(1090,750)" to="(1200,750)"/>
+ <wire from="(1200,710)" to="(1200,730)"/>
<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="(1050,680)" to="(1060,680)"/>
<wire from="(520,150)" to="(530,150)"/>
<wire from="(330,1370)" to="(470,1370)"/>
<wire from="(530,1320)" to="(530,1380)"/>
<wire from="(930,1520)" to="(940,1520)"/>
- <wire from="(610,690)" to="(610,930)"/>
<wire from="(880,1150)" to="(890,1150)"/>
<wire from="(840,790)" to="(850,790)"/>
<wire from="(840,1110)" to="(850,1110)"/>
<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)"/>
@@ -2046,16 +2106,22 @@
<wire from="(860,820)" to="(860,840)"/>
<wire from="(270,1550)" to="(560,1550)"/>
<wire from="(240,610)" to="(280,610)"/>
+ <wire from="(1200,730)" to="(1380,730)"/>
+ <wire from="(1150,1430)" to="(1150,1480)"/>
<wire from="(720,1370)" to="(720,1860)"/>
- <wire from="(410,1430)" to="(440,1430)"/>
+ <wire from="(1170,610)" to="(1180,610)"/>
<wire from="(180,950)" to="(270,950)"/>
<wire from="(890,210)" to="(890,250)"/>
+ <wire from="(70,650)" to="(290,650)"/>
<wire from="(180,1540)" to="(190,1540)"/>
+ <wire from="(640,600)" to="(640,660)"/>
<wire from="(840,1240)" to="(850,1240)"/>
<wire from="(920,880)" to="(920,930)"/>
<wire from="(840,160)" to="(840,210)"/>
+ <wire from="(910,1690)" to="(990,1690)"/>
<wire from="(880,520)" to="(880,570)"/>
<wire from="(930,60)" to="(930,70)"/>
+ <wire from="(1130,580)" to="(1130,600)"/>
<wire from="(190,670)" to="(250,670)"/>
<wire from="(250,1620)" to="(250,1640)"/>
<wire from="(170,1050)" to="(280,1050)"/>
@@ -2084,9 +2150,11 @@
<wire from="(210,820)" to="(270,820)"/>
<wire from="(190,1120)" to="(250,1120)"/>
<wire from="(910,560)" to="(970,560)"/>
+ <wire from="(140,1800)" to="(900,1800)"/>
<wire from="(230,530)" to="(280,530)"/>
<wire from="(370,330)" to="(370,480)"/>
<wire from="(800,1660)" to="(800,1680)"/>
+ <wire from="(1210,790)" to="(1210,800)"/>
<wire from="(200,930)" to="(200,1020)"/>
<wire from="(180,590)" to="(180,680)"/>
<wire from="(220,630)" to="(220,720)"/>
@@ -2095,36 +2163,44 @@
<wire from="(220,540)" to="(250,540)"/>
<wire from="(850,750)" to="(850,790)"/>
<wire from="(890,1110)" to="(890,1150)"/>
+ <wire from="(1300,750)" to="(1300,870)"/>
<wire from="(400,420)" to="(410,420)"/>
<wire from="(850,1710)" to="(850,1770)"/>
<wire from="(360,60)" to="(370,60)"/>
<wire from="(320,1620)" to="(330,1620)"/>
+ <wire from="(330,740)" to="(730,740)"/>
<wire from="(200,1500)" to="(210,1500)"/>
<wire from="(920,300)" to="(930,300)"/>
<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)"/>
+ <wire from="(1020,900)" to="(1020,1610)"/>
<wire from="(240,1630)" to="(290,1630)"/>
<wire from="(230,980)" to="(280,980)"/>
<wire from="(430,1100)" to="(430,1110)"/>
+ <wire from="(290,640)" to="(290,650)"/>
+ <wire from="(1000,1010)" to="(1000,1650)"/>
<wire from="(170,70)" to="(170,150)"/>
+ <wire from="(870,670)" to="(910,670)"/>
<wire from="(220,1080)" to="(220,1170)"/>
<wire from="(180,1040)" to="(180,1130)"/>
<wire from="(890,1560)" to="(890,1580)"/>
+ <wire from="(1220,610)" to="(1220,660)"/>
+ <wire from="(1360,550)" to="(1370,550)"/>
+ <wire from="(1170,680)" to="(1180,680)"/>
<wire from="(190,1030)" to="(280,1030)"/>
<wire from="(850,1200)" to="(850,1240)"/>
<wire from="(200,1380)" to="(200,1480)"/>
<wire from="(330,470)" to="(350,470)"/>
<wire from="(570,510)" to="(570,1380)"/>
- <wire from="(160,1580)" to="(180,1580)"/>
<wire from="(360,510)" to="(370,510)"/>
<wire from="(610,960)" to="(610,1020)"/>
+ <wire from="(1010,910)" to="(1080,910)"/>
<wire from="(920,430)" to="(930,430)"/>
<wire from="(920,750)" to="(930,750)"/>
+ <wire from="(1020,1610)" to="(1170,1610)"/>
<wire from="(880,70)" to="(890,70)"/>
<wire from="(880,390)" to="(890,390)"/>
<wire from="(890,1050)" to="(890,1060)"/>
@@ -2133,15 +2209,16 @@
<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)"/>
<wire from="(690,1230)" to="(690,1380)"/>
<wire from="(570,150)" to="(570,300)"/>
+ <wire from="(1260,900)" to="(1270,900)"/>
<wire from="(100,1780)" to="(250,1780)"/>
<wire from="(170,510)" to="(250,510)"/>
<wire from="(190,850)" to="(270,850)"/>
+ <wire from="(1010,720)" to="(1080,720)"/>
<wire from="(450,1750)" to="(530,1750)"/>
<wire from="(920,880)" to="(930,880)"/>
<wire from="(920,1200)" to="(930,1200)"/>
@@ -2152,11 +2229,12 @@
<wire from="(770,1690)" to="(780,1690)"/>
<wire from="(880,520)" to="(890,520)"/>
<wire from="(490,330)" to="(490,390)"/>
- <wire from="(640,600)" to="(650,600)"/>
+ <wire from="(1320,520)" to="(1320,560)"/>
<wire from="(590,560)" to="(590,570)"/>
+ <wire from="(500,1650)" to="(1000,1650)"/>
<wire from="(200,570)" to="(250,570)"/>
- <wire from="(440,1430)" to="(440,1580)"/>
- <wire from="(590,650)" to="(630,650)"/>
+ <wire from="(330,650)" to="(630,650)"/>
+ <wire from="(1110,800)" to="(1110,1570)"/>
<wire from="(170,330)" to="(170,420)"/>
<wire from="(210,370)" to="(210,460)"/>
<wire from="(230,710)" to="(230,800)"/>
@@ -2165,32 +2243,34 @@
<wire from="(330,1100)" to="(430,1100)"/>
<wire from="(910,560)" to="(910,580)"/>
<wire from="(940,910)" to="(940,930)"/>
+ <wire from="(670,1190)" to="(1160,1190)"/>
<wire from="(250,1690)" to="(250,1780)"/>
<wire from="(730,1660)" to="(730,1680)"/>
+ <wire from="(1020,730)" to="(1020,900)"/>
+ <wire from="(1210,800)" to="(1340,800)"/>
+ <wire from="(1010,720)" to="(1010,910)"/>
<wire from="(250,1620)" to="(260,1620)"/>
<wire from="(530,1140)" to="(530,1200)"/>
- <wire from="(870,1800)" to="(1070,1800)"/>
<wire from="(920,1330)" to="(930,1330)"/>
<wire from="(330,1010)" to="(590,1010)"/>
<wire from="(880,970)" to="(890,970)"/>
<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)"/>
- <wire from="(600,690)" to="(610,690)"/>
+ <wire from="(1220,660)" to="(1240,660)"/>
+ <wire from="(770,920)" to="(770,1380)"/>
+ <wire from="(820,660)" to="(820,800)"/>
<wire from="(590,1010)" to="(590,1020)"/>
<wire from="(330,1280)" to="(510,1280)"/>
<wire from="(510,290)" to="(510,300)"/>
<wire from="(220,720)" to="(270,720)"/>
<wire from="(430,1810)" to="(430,1830)"/>
<wire from="(170,780)" to="(170,870)"/>
- <wire from="(870,650)" to="(870,670)"/>
<wire from="(190,1120)" to="(190,1210)"/>
<wire from="(210,820)" to="(210,910)"/>
- <wire from="(860,640)" to="(860,660)"/>
<wire from="(910,1010)" to="(910,1030)"/>
<wire from="(900,1000)" to="(900,1020)"/>
<wire from="(210,1360)" to="(250,1360)"/>
@@ -2198,12 +2278,16 @@
<wire from="(510,380)" to="(550,380)"/>
<wire from="(180,1400)" to="(280,1400)"/>
<wire from="(1100,200)" to="(1100,1530)"/>
+ <wire from="(1040,820)" to="(1040,870)"/>
+ <wire from="(1400,660)" to="(1410,660)"/>
<wire from="(180,770)" to="(270,770)"/>
<wire from="(930,390)" to="(930,430)"/>
- <wire from="(590,920)" to="(750,920)"/>
+ <wire from="(1320,780)" to="(1320,840)"/>
+ <wire from="(1130,910)" to="(1130,970)"/>
<wire from="(480,60)" to="(490,60)"/>
<wire from="(730,1660)" to="(800,1660)"/>
- <wire from="(800,60)" to="(810,60)"/>
+ <wire from="(1230,790)" to="(1260,790)"/>
+ <wire from="(1120,680)" to="(1150,680)"/>
<wire from="(840,1060)" to="(850,1060)"/>
<wire from="(840,1380)" to="(850,1380)"/>
<wire from="(920,700)" to="(920,750)"/>
@@ -2214,7 +2298,7 @@
<wire from="(470,380)" to="(470,390)"/>
<wire from="(220,1170)" to="(270,1170)"/>
<wire from="(170,870)" to="(280,870)"/>
- <wire from="(420,650)" to="(420,670)"/>
+ <wire from="(730,740)" to="(730,1660)"/>
<wire from="(830,830)" to="(870,830)"/>
<wire from="(660,1850)" to="(660,1880)"/>
<wire from="(170,1230)" to="(170,1320)"/>
@@ -2227,23 +2311,27 @@
<wire from="(850,120)" to="(850,160)"/>
<wire from="(180,1220)" to="(270,1220)"/>
<wire from="(890,480)" to="(890,520)"/>
+ <wire from="(1280,670)" to="(1290,670)"/>
<wire from="(510,1370)" to="(720,1370)"/>
<wire from="(550,380)" to="(1030,380)"/>
<wire from="(1070,1550)" to="(1070,1800)"/>
<wire from="(480,510)" to="(490,510)"/>
<wire from="(100,70)" to="(100,250)"/>
<wire from="(210,1270)" to="(280,1270)"/>
+ <wire from="(50,150)" to="(120,150)"/>
<wire from="(330,200)" to="(1100,200)"/>
+ <wire from="(1270,860)" to="(1270,900)"/>
<wire from="(920,1150)" to="(920,1200)"/>
<wire from="(840,430)" to="(840,480)"/>
<wire from="(880,790)" to="(880,840)"/>
<wire from="(510,1190)" to="(510,1200)"/>
- <wire from="(370,1440)" to="(430,1440)"/>
<wire from="(790,830)" to="(790,840)"/>
+ <wire from="(1010,1590)" to="(1180,1590)"/>
<wire from="(810,1810)" to="(810,1820)"/>
<wire from="(230,350)" to="(280,350)"/>
<wire from="(170,1320)" to="(280,1320)"/>
<wire from="(180,410)" to="(180,500)"/>
+ <wire from="(900,1800)" to="(1070,1800)"/>
<wire from="(220,450)" to="(220,540)"/>
<wire from="(200,750)" to="(200,840)"/>
<wire from="(240,1330)" to="(280,1330)"/>
@@ -2252,26 +2340,29 @@
<wire from="(220,360)" to="(250,360)"/>
<wire from="(930,1290)" to="(930,1330)"/>
<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="(860,1780)" to="(1010,1780)"/>
+ <wire from="(1120,520)" to="(1320,520)"/>
<wire from="(610,60)" to="(610,570)"/>
<wire from="(180,410)" to="(250,410)"/>
<wire from="(200,750)" to="(270,750)"/>
+ <wire from="(990,840)" to="(1320,840)"/>
<wire from="(210,1790)" to="(340,1790)"/>
<wire from="(920,120)" to="(930,120)"/>
- <wire from="(1100,1570)" to="(1120,1570)"/>
+ <wire from="(1040,870)" to="(1060,870)"/>
<wire from="(520,1320)" to="(530,1320)"/>
<wire from="(880,1240)" to="(880,1290)"/>
<wire from="(840,880)" to="(840,930)"/>
- <wire from="(810,60)" to="(810,840)"/>
- <wire from="(750,920)" to="(750,930)"/>
<wire from="(850,60)" to="(850,70)"/>
+ <wire from="(1180,710)" to="(1180,730)"/>
<wire from="(210,1090)" to="(270,1090)"/>
<wire from="(190,1390)" to="(250,1390)"/>
<wire from="(250,100)" to="(250,110)"/>
+ <wire from="(1230,760)" to="(1230,790)"/>
<wire from="(230,800)" to="(280,800)"/>
+ <wire from="(1110,800)" to="(1210,800)"/>
+ <wire from="(1150,680)" to="(1150,710)"/>
<wire from="(690,60)" to="(690,1110)"/>
+ <wire from="(760,650)" to="(1050,650)"/>
<wire from="(220,70)" to="(220,90)"/>
<wire from="(200,1200)" to="(200,1290)"/>
<wire from="(180,860)" to="(180,950)"/>
@@ -2279,66 +2370,73 @@
<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="(1320,650)" to="(1330,650)"/>
<wire from="(330,290)" to="(350,290)"/>
+ <wire from="(150,1420)" to="(1130,1420)"/>
<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)"/>
+ <wire from="(820,800)" to="(820,810)"/>
<wire from="(890,870)" to="(890,880)"/>
<wire from="(230,1250)" to="(280,1250)"/>
- <wire from="(500,1650)" to="(1010,1650)"/>
- <wire from="(90,70)" to="(90,80)"/>
<wire from="(330,1670)" to="(380,1670)"/>
<wire from="(410,60)" to="(410,390)"/>
<wire from="(350,470)" to="(470,470)"/>
+ <wire from="(800,780)" to="(800,800)"/>
<wire from="(180,1310)" to="(180,1400)"/>
<wire from="(220,1350)" to="(220,1440)"/>
<wire from="(230,80)" to="(230,170)"/>
<wire from="(210,280)" to="(250,280)"/>
+ <wire from="(1040,820)" to="(1050,820)"/>
<wire from="(660,1380)" to="(690,1380)"/>
+ <wire from="(330,1730)" to="(980,1730)"/>
+ <wire from="(1120,520)" to="(1120,680)"/>
<wire from="(170,330)" to="(250,330)"/>
<wire from="(920,700)" to="(930,700)"/>
<wire from="(250,1780)" to="(700,1780)"/>
<wire from="(840,300)" to="(850,300)"/>
<wire from="(880,340)" to="(890,340)"/>
- <wire from="(1150,1560)" to="(1170,1560)"/>
<wire from="(600,60)" to="(610,60)"/>
<wire from="(670,1100)" to="(670,1110)"/>
- <wire from="(520,1670)" to="(570,1670)"/>
+ <wire from="(1090,750)" to="(1090,830)"/>
<wire from="(850,960)" to="(850,970)"/>
+ <wire from="(370,510)" to="(370,1600)"/>
<wire from="(890,1380)" to="(890,1510)"/>
+ <wire from="(1330,570)" to="(1370,570)"/>
<wire from="(200,390)" to="(250,390)"/>
- <wire from="(1090,560)" to="(1090,590)"/>
+ <wire from="(1130,970)" to="(1130,1420)"/>
+ <wire from="(410,420)" to="(410,1590)"/>
<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="(650,660)" to="(820,660)"/>
<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="(1280,810)" to="(1280,980)"/>
<wire from="(840,430)" to="(850,430)"/>
<wire from="(880,790)" to="(890,790)"/>
- <wire from="(840,750)" to="(850,750)"/>
<wire from="(880,1110)" to="(890,1110)"/>
+ <wire from="(840,750)" to="(850,750)"/>
<wire from="(680,1230)" to="(690,1230)"/>
+ <wire from="(760,670)" to="(770,670)"/>
<wire from="(560,150)" to="(570,150)"/>
<wire from="(920,70)" to="(920,120)"/>
+ <wire from="(1090,870)" to="(1300,870)"/>
<wire from="(140,70)" to="(140,1800)"/>
<wire from="(550,470)" to="(550,480)"/>
<wire from="(120,40)" to="(120,50)"/>
<wire from="(510,110)" to="(510,120)"/>
- <wire from="(990,1280)" to="(990,1730)"/>
+ <wire from="(1050,650)" to="(1050,680)"/>
<wire from="(830,1450)" to="(830,1580)"/>
<wire from="(490,150)" to="(490,300)"/>
<wire from="(870,560)" to="(910,560)"/>
@@ -2349,11 +2447,12 @@
<wire from="(910,830)" to="(910,850)"/>
<wire from="(900,820)" to="(900,840)"/>
<wire from="(240,250)" to="(280,250)"/>
- <wire from="(160,1420)" to="(160,1580)"/>
+ <wire from="(1200,980)" to="(1280,980)"/>
+ <wire from="(1210,610)" to="(1220,610)"/>
<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="(1010,910)" to="(1010,1590)"/>
<wire from="(330,830)" to="(790,830)"/>
<wire from="(880,1560)" to="(890,1560)"/>
<wire from="(650,1140)" to="(650,1380)"/>
@@ -2361,15 +2460,15 @@
<wire from="(840,880)" to="(850,880)"/>
<wire from="(840,1200)" to="(850,1200)"/>
<wire from="(920,520)" to="(920,570)"/>
+ <wire from="(1200,910)" to="(1220,910)"/>
+ <wire from="(1220,610)" to="(1240,610)"/>
<wire from="(600,960)" to="(610,960)"/>
<wire from="(880,160)" to="(880,210)"/>
<wire from="(650,690)" to="(650,1020)"/>
- <wire from="(670,1190)" to="(1110,1190)"/>
<wire from="(760,1380)" to="(760,1580)"/>
<wire from="(190,310)" to="(250,310)"/>
<wire from="(200,1290)" to="(250,1290)"/>
<wire from="(220,990)" to="(270,990)"/>
- <wire from="(830,650)" to="(870,650)"/>
<wire from="(870,1010)" to="(910,1010)"/>
<wire from="(830,560)" to="(830,580)"/>
<wire from="(190,1390)" to="(190,1480)"/>
@@ -2377,9 +2476,9 @@
<wire from="(170,1050)" to="(170,1140)"/>
<wire from="(210,1090)" to="(210,1180)"/>
<wire from="(240,160)" to="(240,250)"/>
- <wire from="(200,120)" to="(200,210)"/>
<wire from="(860,910)" to="(860,930)"/>
<wire from="(240,700)" to="(280,700)"/>
+ <wire from="(1330,740)" to="(1330,750)"/>
<wire from="(470,290)" to="(510,290)"/>
<wire from="(240,70)" to="(270,70)"/>
<wire from="(180,1040)" to="(270,1040)"/>
@@ -2390,6 +2489,7 @@
<wire from="(920,970)" to="(920,1020)"/>
<wire from="(840,250)" to="(840,300)"/>
<wire from="(880,610)" to="(880,660)"/>
+ <wire from="(810,670)" to="(810,680)"/>
<wire from="(210,460)" to="(270,460)"/>
<wire from="(430,290)" to="(430,300)"/>
<wire from="(300,1760)" to="(300,1770)"/>
@@ -2400,25 +2500,29 @@
<wire from="(240,610)" to="(240,700)"/>
<wire from="(220,270)" to="(220,360)"/>
<wire from="(240,1150)" to="(280,1150)"/>
+ <wire from="(530,1670)" to="(530,1690)"/>
<wire from="(210,70)" to="(210,100)"/>
<wire from="(430,380)" to="(470,380)"/>
+ <wire from="(160,1430)" to="(1150,1430)"/>
<wire from="(930,1540)" to="(950,1540)"/>
<wire from="(850,390)" to="(850,430)"/>
<wire from="(890,750)" to="(890,790)"/>
+ <wire from="(1280,620)" to="(1290,620)"/>
<wire from="(930,1110)" to="(930,1150)"/>
<wire from="(400,60)" to="(410,60)"/>
<wire from="(440,420)" to="(450,420)"/>
+ <wire from="(1130,580)" to="(1290,580)"/>
+ <wire from="(200,120)" to="(200,300)"/>
<wire from="(180,230)" to="(250,230)"/>
<wire from="(760,1380)" to="(770,1380)"/>
- <wire from="(720,60)" to="(730,60)"/>
<wire from="(520,1140)" to="(530,1140)"/>
- <wire from="(840,700)" to="(840,750)"/>
<wire from="(880,1060)" to="(880,1110)"/>
+ <wire from="(840,700)" to="(840,750)"/>
<wire from="(930,600)" to="(930,610)"/>
<wire from="(190,1210)" to="(250,1210)"/>
<wire from="(210,910)" to="(270,910)"/>
<wire from="(1090,1490)" to="(1130,1490)"/>
- <wire from="(430,1440)" to="(430,1580)"/>
+ <wire from="(80,70)" to="(80,80)"/>
<wire from="(390,380)" to="(390,390)"/>
<wire from="(230,620)" to="(280,620)"/>
<wire from="(180,680)" to="(180,770)"/>
@@ -2427,35 +2531,41 @@
<wire from="(930,1560)" to="(930,1580)"/>
<wire from="(300,1570)" to="(300,1600)"/>
<wire from="(240,1060)" to="(240,1150)"/>
+ <wire from="(900,1720)" to="(900,1800)"/>
+ <wire from="(650,640)" to="(650,660)"/>
<wire from="(220,630)" to="(250,630)"/>
- <wire from="(870,1690)" to="(870,1800)"/>
<wire from="(890,1200)" to="(890,1240)"/>
- <wire from="(330,1730)" to="(990,1730)"/>
- <wire from="(610,600)" to="(610,660)"/>
+ <wire from="(1130,600)" to="(1140,600)"/>
+ <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)"/>
- <wire from="(750,920)" to="(830,920)"/>
<wire from="(820,1890)" to="(830,1890)"/>
<wire from="(880,1510)" to="(880,1560)"/>
<wire from="(840,1150)" to="(840,1200)"/>
<wire from="(300,1770)" to="(690,1770)"/>
+ <wire from="(1020,900)" to="(1070,900)"/>
<wire from="(930,1050)" to="(930,1060)"/>
+ <wire from="(590,920)" to="(770,920)"/>
+ <wire from="(1150,630)" to="(1150,650)"/>
<wire from="(890,690)" to="(890,700)"/>
<wire from="(250,370)" to="(250,380)"/>
<wire from="(230,1070)" to="(280,1070)"/>
+ <wire from="(1240,810)" to="(1280,810)"/>
<wire from="(430,1830)" to="(430,1840)"/>
+ <wire from="(50,250)" to="(100,250)"/>
<wire from="(350,470)" to="(350,480)"/>
<wire from="(90,1640)" to="(200,1640)"/>
<wire from="(220,1170)" to="(220,1260)"/>
<wire from="(180,1130)" to="(180,1220)"/>
<wire from="(210,100)" to="(250,100)"/>
<wire from="(560,1380)" to="(560,1550)"/>
+ <wire from="(410,1590)" to="(440,1590)"/>
<wire from="(850,1290)" to="(850,1330)"/>
+ <wire from="(1130,860)" to="(1270,860)"/>
<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="(1070,1360)" to="(1160,1360)"/>
<wire from="(120,40)" to="(130,40)"/>
<wire from="(920,520)" to="(930,520)"/>
<wire from="(840,120)" to="(850,120)"/>
@@ -2463,13 +2573,20 @@
<wire from="(880,160)" to="(890,160)"/>
<wire from="(880,480)" to="(890,480)"/>
<wire from="(630,560)" to="(630,570)"/>
- <wire from="(200,210)" to="(250,210)"/>
+ <wire from="(1050,750)" to="(1090,750)"/>
+ <wire from="(980,1280)" to="(980,1730)"/>
<wire from="(210,1500)" to="(260,1500)"/>
+ <wire from="(160,1430)" to="(160,1570)"/>
+ <wire from="(760,780)" to="(800,780)"/>
<wire from="(190,310)" to="(190,400)"/>
<wire from="(230,350)" to="(230,440)"/>
<wire from="(940,550)" to="(940,570)"/>
<wire from="(210,550)" to="(250,550)"/>
+ <wire from="(290,640)" to="(650,640)"/>
+ <wire from="(150,1420)" to="(150,1580)"/>
+ <wire from="(90,120)" to="(120,120)"/>
<wire from="(920,1490)" to="(920,1530)"/>
+ <wire from="(910,1010)" to="(1000,1010)"/>
<wire from="(270,1470)" to="(480,1470)"/>
<wire from="(630,560)" to="(830,560)"/>
<wire from="(920,970)" to="(930,970)"/>
@@ -2477,29 +2594,34 @@
<wire from="(840,250)" to="(850,250)"/>
<wire from="(490,420)" to="(490,480)"/>
<wire from="(880,610)" to="(890,610)"/>
+ <wire from="(1290,580)" to="(1290,620)"/>
<wire from="(640,690)" to="(650,690)"/>
+ <wire from="(1390,680)" to="(1390,720)"/>
<wire from="(630,1010)" to="(630,1020)"/>
<wire from="(550,290)" to="(550,300)"/>
- <wire from="(590,650)" to="(590,660)"/>
<wire from="(200,660)" to="(250,660)"/>
<wire from="(330,1670)" to="(330,1680)"/>
+ <wire from="(760,690)" to="(760,780)"/>
<wire from="(630,1100)" to="(670,1100)"/>
+ <wire from="(1250,740)" to="(1310,740)"/>
<wire from="(170,420)" to="(170,510)"/>
<wire from="(190,760)" to="(190,850)"/>
<wire from="(230,800)" to="(230,890)"/>
<wire from="(210,460)" to="(210,550)"/>
- <wire from="(900,640)" to="(900,660)"/>
- <wire from="(910,650)" to="(910,670)"/>
<wire from="(940,1000)" to="(940,1020)"/>
+ <wire from="(850,1770)" to="(1020,1770)"/>
+ <wire from="(1220,760)" to="(1230,760)"/>
<wire from="(520,1410)" to="(520,1510)"/>
- <wire from="(80,250)" to="(100,250)"/>
+ <wire from="(1220,740)" to="(1250,740)"/>
<wire from="(520,60)" to="(530,60)"/>
<wire from="(630,1010)" to="(830,1010)"/>
+ <wire from="(1100,1580)" to="(1130,1580)"/>
+ <wire from="(1130,970)" to="(1160,970)"/>
<wire from="(530,1230)" to="(530,1290)"/>
<wire from="(700,1720)" to="(700,1780)"/>
- <wire from="(840,700)" to="(850,700)"/>
<wire from="(880,1060)" to="(890,1060)"/>
<wire from="(880,1380)" to="(890,1380)"/>
+ <wire from="(840,700)" to="(850,700)"/>
<wire from="(640,1140)" to="(650,1140)"/>
<wire from="(920,340)" to="(920,390)"/>
<wire from="(560,420)" to="(570,420)"/>
@@ -2508,9 +2630,11 @@
<wire from="(220,810)" to="(270,810)"/>
<wire from="(200,1110)" to="(250,1110)"/>
<wire from="(510,380)" to="(510,390)"/>
+ <wire from="(440,1590)" to="(440,1600)"/>
<wire from="(530,510)" to="(530,1110)"/>
<wire from="(870,830)" to="(910,830)"/>
<wire from="(170,870)" to="(170,960)"/>
+ <wire from="(1200,750)" to="(1200,760)"/>
<wire from="(210,910)" to="(210,1000)"/>
<wire from="(190,1210)" to="(190,1300)"/>
<wire from="(240,520)" to="(280,520)"/>
@@ -2519,13 +2643,14 @@
<wire from="(230,1250)" to="(230,1340)"/>
<wire from="(470,110)" to="(510,110)"/>
<wire from="(510,470)" to="(550,470)"/>
+ <wire from="(1330,740)" to="(1410,740)"/>
<wire from="(180,860)" to="(270,860)"/>
<wire from="(890,120)" to="(890,160)"/>
- <wire from="(140,1800)" to="(870,1800)"/>
<wire from="(930,480)" to="(930,520)"/>
<wire from="(300,1570)" to="(970,1570)"/>
<wire from="(200,70)" to="(200,120)"/>
<wire from="(480,150)" to="(490,150)"/>
+ <wire from="(80,70)" to="(90,70)"/>
<wire from="(930,1560)" to="(940,1560)"/>
<wire from="(880,1510)" to="(890,1510)"/>
<wire from="(840,1150)" to="(850,1150)"/>
@@ -2534,785 +2659,683 @@
<wire from="(840,70)" to="(840,120)"/>
<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="0" loc="(160,1670)" name="Constant">
+ <a name="width" val="8"/>
+ </comp>
+ <comp lib="2" loc="(890,690)" name="Multiplexer">
<a name="facing" val="south"/>
<a name="width" val="2"/>
+ <a name="disabled" val="0"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(860,640)" name="Constant">
+ <comp lib="0" loc="(640,60)" name="Constant">
<a name="facing" val="south"/>
- <a name="width" val="2"/>
<a name="value" val="0x0"/>
</comp>
- <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 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="(760,960)" name="OR Gate">
+ <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="(520,1320)" 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="1" loc="(440,730)" name="OR Gate">
- <a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <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="(850,60)" name="Constant">
+ <comp lib="0" loc="(860,910)" name="Constant">
<a name="facing" val="south"/>
<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="(940,820)" name="Constant">
<a name="facing" val="south"/>
<a name="width" val="2"/>
<a name="value" val="0x0"/>
</comp>
- <comp lib="1" loc="(330,470)" name="AND Gate">
+ <comp lib="1" loc="(330,1010)" name="AND Gate">
<a name="inputs" val="8"/>
- <a name="label" val="CIN"/>
- <a name="negate0" 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="(280,240)" name="Constant"/>
- <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 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="0" loc="(1190,1480)" name="Pin">
- <a name="facing" val="west"/>
- <a name="output" val="true"/>
+ <comp lib="3" loc="(1200,980)" name="Comparator">
<a name="width" val="4"/>
- <a name="label" val="Dynamic OP"/>
- <a name="labelloc" val="east"/>
</comp>
- <comp lib="1" loc="(840,1610)" name="OR Gate">
- <a name="facing" val="south"/>
+ <comp lib="0" loc="(280,570)" name="Constant"/>
+ <comp lib="0" loc="(260,1520)" name="Constant">
<a name="width" val="2"/>
+ <a name="value" val="0x0"/>
+ </comp>
+ <comp lib="1" loc="(800,680)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <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="0" loc="(520,60)" name="Constant">
- <a name="facing" val="south"/>
+ <comp lib="0" loc="(280,230)" name="Constant"/>
+ <comp lib="0" loc="(280,390)" name="Constant"/>
+ <comp lib="0" loc="(260,1480)" name="Constant">
+ <a name="width" val="2"/>
<a name="value" val="0x0"/>
</comp>
+ <comp lib="0" loc="(280,420)" 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="2" loc="(850,870)" name="Multiplexer">
- <a name="facing" val="south"/>
- <a name="width" val="2"/>
+ <comp lib="0" loc="(280,220)" 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="4" loc="(1190,1480)" name="Register">
- <a name="width" val="4"/>
- <a name="trigger" val="falling"/>
- </comp>
- <comp lib="0" loc="(280,1200)" name="Constant"/>
- <comp lib="0" loc="(280,540)" name="Constant"/>
- <comp lib="2" loc="(930,1050)" name="Multiplexer">
+ <comp lib="2" loc="(930,690)" name="Multiplexer">
<a name="facing" val="south"/>
<a name="width" val="2"/>
+ <a name="disabled" val="0"/>
<a name="enable" val="false"/>
</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="(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="0" loc="(280,1290)" name="Constant"/>
- <comp lib="1" loc="(1150,1560)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="4"/>
- <a name="negate0" val="true"/>
- <a name="negate1" val="true"/>
- </comp>
- <comp lib="1" loc="(520,1230)" name="OR Gate">
+ <comp lib="1" loc="(600,1050)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</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,1120)" name="Constant"/>
- <comp lib="0" loc="(860,910)" name="Constant">
+ <comp lib="0" loc="(940,550)" name="Constant">
<a name="facing" val="south"/>
<a name="width" val="2"/>
- <a name="value" val="0x0"/>
</comp>
- <comp lib="0" loc="(660,1880)" name="Pin">
+ <comp lib="0" loc="(620,1400)" name="Splitter">
<a name="facing" val="north"/>
- <a name="tristate" val="false"/>
- <a name="label" val="JMP FLAG"/>
- <a name="labelloc" val="south"/>
+ <a name="appear" val="center"/>
</comp>
- <comp lib="0" loc="(940,550)" name="Constant">
+ <comp lib="0" loc="(1220,890)" name="Constant">
+ <a name="width" val="5"/>
+ <a name="value" val="0x0"/>
+ </comp>
+ <comp lib="2" loc="(930,960)" 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="(900,820)" name="Constant">
+ <comp lib="0" loc="(280,280)" name="Constant"/>
+ <comp lib="0" loc="(280,1120)" name="Constant"/>
+ <comp lib="2" loc="(850,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="1" loc="(600,600)" name="OR Gate">
- <a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="0" loc="(50,250)" name="Pin">
+ <a name="tristate" val="false"/>
+ <a name="label" val="RST"/>
</comp>
- <comp lib="0" loc="(280,670)" name="Constant"/>
- <comp lib="0" loc="(440,60)" name="Constant">
- <a name="facing" val="south"/>
+ <comp lib="0" loc="(1240,560)" name="Constant">
+ <a name="width" val="5"/>
<a name="value" val="0x0"/>
</comp>
- <comp lib="0" loc="(280,410)" name="Constant"/>
- <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="1" loc="(640,1050)" name="OR Gate">
+ <comp lib="1" loc="(600,960)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <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="(940,910)" name="Constant">
<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="(360,60)" name="Constant">
- <a name="facing" val="south"/>
- <a name="value" val="0x0"/>
- </comp>
- <comp lib="2" loc="(890,870)" name="Multiplexer">
- <a name="facing" val="south"/>
- <a name="width" val="2"/>
- <a name="enable" val="false"/>
- </comp>
- <comp lib="0" loc="(160,1670)" name="Constant">
- <a name="width" val="8"/>
+ <comp lib="0" loc="(240,1630)" 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="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="1" loc="(560,330)" name="OR Gate">
+ <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="1" loc="(560,510)" name="OR Gate">
+ <comp lib="1" loc="(1040,1510)" name="AND Gate">
+ <a name="facing" val="west"/>
+ <a name="label" val="ptrinc"/>
+ </comp>
+ <comp lib="0" loc="(900,550)" name="Constant">
<a name="facing" val="south"/>
+ <a name="width" val="2"/>
+ <a name="value" val="0x0"/>
+ </comp>
+ <comp lib="2" loc="(160,50)" name="Multiplexer">
+ <a name="width" val="8"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="1" loc="(1310,540)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(440,1610)" 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="labelloc" val="south"/>
- </comp>
- <comp lib="0" loc="(280,150)" name="Constant"/>
- <comp lib="3" loc="(200,1680)" name="Adder"/>
- <comp lib="0" loc="(860,1000)" name="Constant">
+ <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="(900,1000)" 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="(280,280)" name="Constant"/>
- <comp lib="0" loc="(280,420)" name="Constant"/>
- <comp lib="0" loc="(620,1610)" name="Pin">
- <a name="facing" val="north"/>
- <a name="output" val="true"/>
+ <comp lib="0" loc="(280,120)" name="Constant"/>
+ <comp lib="0" loc="(560,60)" name="Constant">
+ <a name="facing" val="south"/>
+ <a name="value" val="0x0"/>
+ </comp>
+ <comp lib="2" loc="(850,1050)" name="Multiplexer">
+ <a name="facing" val="south"/>
<a name="width" val="2"/>
- <a name="label" val="GPR MUX"/>
- <a name="labelloc" val="south"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(280,510)" name="Constant"/>
- <comp lib="1" loc="(770,1690)" name="AND Gate">
+ <comp lib="1" loc="(360,510)" name="OR Gate">
+ <a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
- </comp>
- <comp lib="0" loc="(280,1380)" 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="(280,640)" 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="2" loc="(160,50)" name="Multiplexer">
- <a name="width" val="8"/>
- <a name="enable" val="false"/>
- </comp>
- <comp lib="0" loc="(280,1350)" name="Constant"/>
- <comp lib="0" loc="(280,490)" name="Constant"/>
- <comp lib="0" loc="(80,80)" name="Pin">
- <a name="tristate" val="false"/>
- <a name="label" val="CLK"/>
- </comp>
- <comp lib="2" loc="(290,1530)" name="Multiplexer">
- <a name="width" val="2"/>
- <a name="enable" val="false"/>
- </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>
- <comp lib="4" loc="(1070,560)" name="Register">
- <a name="width" val="1"/>
- <a name="trigger" val="falling"/>
- </comp>
- <comp lib="0" loc="(440,1880)" name="Pin">
+ <comp lib="1" loc="(670,1820)" name="AND Gate">
<a name="facing" val="north"/>
- <a name="output" val="true"/>
- <a name="label" val="Memory Select"/>
- <a name="labelloc" val="south"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(400,60)" name="Constant">
+ <comp lib="1" loc="(1320,780)" 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="1" loc="(880,1610)" name="OR Gate">
+ <comp lib="1" loc="(1210,790)" 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="(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="(320,1620)" name="Multiplexer">
+ <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="1" loc="(330,740)" name="AND Gate">
+ <comp lib="1" loc="(330,560)" name="AND Gate">
<a name="inputs" val="8"/>
- <a name="label" val="JMP"/>
- <a name="negate2" val="true"/>
- <a name="negate3" val="true"/>
- <a name="negate4" val="true"/>
- <a name="negate5" val="true"/>
+ <a name="label" val="LLI"/>
<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="(800,60)" name="Constant">
- <a name="facing" val="south"/>
- <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="(680,60)" name="Constant">
- <a name="facing" val="south"/>
- <a name="value" val="0x0"/>
- </comp>
- <comp lib="0" loc="(280,310)" name="Constant"/>
- <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,1390)" name="Constant"/>
- <comp lib="0" loc="(940,910)" name="Constant">
- <a name="facing" val="south"/>
- <a name="width" val="2"/>
- </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="0" loc="(280,270)" name="Constant"/>
- <comp lib="0" loc="(130,60)" name="Constant">
- <a name="width" val="8"/>
- <a name="value" val="0x0"/>
- </comp>
- <comp lib="0" loc="(90,1640)" name="Pin">
+ <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="ALU OUTPUT"/>
+ <a name="label" val="PC ADDRESS"/>
<a name="labelloc" val="south"/>
</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="2" loc="(850,690)" name="Multiplexer">
<a name="facing" val="south"/>
<a name="width" val="2"/>
+ <a name="disabled" val="0"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(280,330)" name="Constant"/>
- <comp lib="0" loc="(280,660)" name="Constant"/>
- <comp lib="1" loc="(920,1610)" name="OR Gate">
+ <comp lib="1" loc="(520,1230)" 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="(330,1680)" name="Pin">
- <a name="facing" val="north"/>
+ <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="0" loc="(1190,1480)" name="Pin">
+ <a name="facing" val="west"/>
<a name="output" val="true"/>
- <a name="width" val="8"/>
- <a name="label" val="MEM POINTER"/>
- <a name="labelloc" val="south"/>
+ <a name="width" val="4"/>
+ <a name="label" val="Dynamic OP"/>
+ <a name="labelloc" val="east"/>
</comp>
- <comp lib="1" loc="(430,700)" name="AND Gate">
- <a name="facing" val="south"/>
+ <comp lib="3" loc="(1280,550)" name="Comparator">
+ <a name="width" val="5"/>
+ </comp>
+ <comp lib="1" loc="(1070,1360)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
</comp>
- <comp lib="1" loc="(820,1860)" name="AND Gate">
+ <comp lib="0" loc="(280,1390)" name="Constant"/>
+ <comp lib="0" loc="(280,140)" name="Constant"/>
+ <comp lib="0" loc="(280,360)" name="Constant"/>
+ <comp lib="1" loc="(810,840)" 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="(280,230)" name="Constant"/>
- <comp lib="1" loc="(640,600)" name="OR Gate">
+ <comp lib="0" loc="(440,1620)" 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="4" loc="(1400,660)" name="Register">
+ <a name="width" val="1"/>
+ </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="1" loc="(600,690)" name="OR Gate">
- <a name="facing" val="south"/>
+ <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="2" loc="(890,1050)" name="Multiplexer">
+ <comp lib="0" loc="(600,60)" name="Constant">
<a name="facing" val="south"/>
- <a name="width" val="2"/>
- <a name="enable" val="false"/>
- </comp>
- <comp lib="0" loc="(380,1830)" name="Constant">
- <a name="width" val="8"/>
- <a name="value" val="0xf0"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="4" loc="(710,1700)" name="Register">
- <a name="width" val="1"/>
- <a name="trigger" val="falling"/>
+ <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="1" loc="(840,1690)" 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="4" loc="(870,1690)" name="Register">
- <a name="width" val="1"/>
- <a name="trigger" val="falling"/>
+ <comp lib="0" loc="(1160,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="0" loc="(280,320)" name="Constant"/>
+ <comp lib="0" loc="(1160,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,240)" name="Constant"/>
<comp lib="1" loc="(680,1140)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(600,60)" name="Constant">
- <a name="facing" val="south"/>
- <a name="value" val="0x0"/>
- </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 lib="4" loc="(260,1670)" name="Register"/>
+ <comp lib="1" loc="(1050,820)" name="AND Gate">
+ <a name="facing" val="west"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(620,1400)" name="Splitter">
+ <comp lib="0" loc="(180,1570)" name="Splitter">
<a name="facing" val="north"/>
- <a name="appear" val="center"/>
+ <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="(570,1690)" name="Pin">
+ <comp lib="0" loc="(800,1580)" name="Pin">
<a name="facing" val="north"/>
<a name="output" val="true"/>
- <a name="width" val="8"/>
- <a name="label" val="IMM VALUE"/>
+ <a name="label" val="PUSH"/>
<a name="labelloc" val="south"/>
</comp>
- <comp lib="1" loc="(440,1870)" name="AND Gate">
- <a name="facing" val="south"/>
+ <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="(640,1140)" name="OR Gate">
+ <comp lib="2" loc="(290,1450)" name="Multiplexer">
+ <a name="width" val="2"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="2" loc="(850,600)" name="Multiplexer">
+ <a name="facing" val="south"/>
+ <a name="width" val="2"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(50,150)" name="Pin">
+ <a name="tristate" val="false"/>
+ <a name="label" val="CLK"/>
+ </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="3" loc="(420,1820)" name="Comparator">
+ <a name="mode" val="unsigned"/>
+ </comp>
+ <comp lib="1" loc="(330,740)" name="AND Gate">
+ <a name="inputs" val="8"/>
+ <a name="label" val="JMP"/>
+ <a name="negate2" val="true"/>
+ <a name="negate3" val="true"/>
+ <a name="negate4" val="true"/>
+ <a name="negate5" val="true"/>
+ <a name="negate6" val="true"/>
+ </comp>
+ <comp lib="1" loc="(640,690)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <a name="inputs" val="3"/>
</comp>
- <comp lib="0" loc="(280,130)" name="Constant"/>
- <comp lib="2" loc="(850,1050)" name="Multiplexer">
+ <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="(280,510)" name="Constant"/>
+ <comp lib="1" loc="(1160,1560)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="4"/>
+ <a name="negate0" val="true"/>
+ <a name="negate1" val="true"/>
+ <a name="negate2" val="true"/>
+ </comp>
+ <comp lib="0" loc="(680,60)" name="Constant">
<a name="facing" val="south"/>
+ <a name="value" val="0x0"/>
+ </comp>
+ <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="0" loc="(280,1360)" name="Constant"/>
- <comp lib="2" loc="(930,960)" name="Multiplexer">
+ <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,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="(850,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="(280,370)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <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 lib="0" loc="(620,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="labelloc" val="south"/>
</comp>
- <comp lib="1" loc="(480,1410)" name="OR Gate">
+ <comp lib="1" loc="(560,510)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="2" loc="(230,1670)" name="Multiplexer">
- <a name="width" val="8"/>
- <a name="enable" val="false"/>
+ <comp lib="0" loc="(280,130)" name="Constant"/>
+ <comp lib="3" loc="(1260,900)" name="Adder">
+ <a name="width" val="5"/>
+ </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>
+ <comp lib="0" loc="(200,1500)" name="Splitter">
+ <a name="facing" val="north"/>
+ <a name="appear" val="center"/>
</comp>
+ <comp lib="0" loc="(280,630)" name="Constant"/>
<comp lib="0" loc="(860,820)" name="Constant">
<a name="facing" val="south"/>
<a name="width" val="2"/>
</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="0" loc="(220,1460)" name="Splitter">
+ <comp lib="0" loc="(530,1880)" name="Pin">
<a name="facing" val="north"/>
- <a name="appear" val="center"/>
+ <a name="output" val="true"/>
+ <a name="label" val="Address MUX"/>
+ <a name="labelloc" val="south"/>
</comp>
- <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 lib="0" loc="(400,60)" name="Constant">
+ <a name="facing" val="south"/>
+ <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="(330,650)" name="AND Gate">
+ <a name="inputs" val="8"/>
+ <a name="label" val="LNI/LI"/>
+ <a name="negate7" val="true"/>
</comp>
- <comp lib="2" loc="(290,1490)" name="Multiplexer">
- <a name="width" val="2"/>
+ <comp lib="2" loc="(1170,610)" name="Multiplexer">
+ <a name="width" val="5"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(840,1610)" name="Pin">
+ <comp lib="0" loc="(280,490)" name="Constant"/>
+ <comp lib="0" loc="(520,60)" name="Constant">
+ <a name="facing" val="south"/>
+ <a name="value" val="0x0"/>
+ </comp>
+ <comp lib="0" loc="(440,1620)" 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="width" val="3"/>
+ <a name="label" val="ALU OP"/>
<a name="labelloc" val="south"/>
</comp>
- <comp lib="0" loc="(260,1480)" name="Constant">
+ <comp lib="0" loc="(280,330)" name="Constant"/>
+ <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,1360)" name="Constant"/>
+ <comp lib="2" loc="(230,1670)" name="Multiplexer">
+ <a name="width" val="8"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(280,270)" 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="1" loc="(600,960)" name="OR Gate">
+ <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="(200,1500)" name="Splitter">
- <a name="facing" val="north"/>
- <a name="appear" val="center"/>
+ <comp lib="0" loc="(380,1830)" name="Constant">
+ <a name="width" val="8"/>
+ <a name="value" val="0xf0"/>
</comp>
- <comp lib="1" loc="(520,1140)" name="OR Gate">
- <a name="facing" val="south"/>
+ <comp lib="1" loc="(840,1690)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(440,330)" name="OR Gate">
+ <comp lib="2" loc="(290,1530)" name="Multiplexer">
+ <a name="width" val="2"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(280,1110)" name="Constant"/>
+ <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="1" loc="(520,1410)" name="OR Gate">
+ <comp lib="0" loc="(280,480)" 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="1" loc="(1070,1360)" name="OR Gate">
+ <comp lib="1" loc="(440,420)" name="OR Gate">
+ <a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(220,1610)" name="Constant">
- <a name="facing" val="south"/>
- <a name="width" val="4"/>
- <a name="value" val="0x0"/>
+ <comp lib="4" loc="(1090,680)" name="Register">
+ <a name="width" val="1"/>
</comp>
- <comp lib="0" loc="(280,550)" name="Constant"/>
- <comp lib="0" loc="(1110,1190)" name="Pin">
+ <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="(80,250)" name="Pin">
- <a name="tristate" val="false"/>
- <a name="label" val="RST"/>
- </comp>
- <comp lib="0" loc="(240,1630)" 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="(900,550)" 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,140)" name="Constant"/>
- <comp lib="1" loc="(480,510)" 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="0" loc="(280,630)" name="Constant"/>
- <comp lib="3" loc="(420,1820)" name="Comparator">
- <a name="mode" val="unsigned"/>
+ <comp lib="0" loc="(1240,630)" name="Constant">
+ <a name="width" val="5"/>
</comp>
- <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="1" loc="(1210,680)" name="AND Gate">
+ <a name="facing" val="north"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
+ <comp lib="0" loc="(280,1200)" 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="0" loc="(240,1580)" name="Constant">
- <a name="facing" val="south"/>
- <a name="width" val="4"/>
- <a name="value" val="0x0"/>
- </comp>
- <comp lib="0" loc="(880,1610)" name="Pin">
+ <comp lib="0" loc="(330,1680)" name="Pin">
<a name="facing" val="north"/>
<a name="output" val="true"/>
- <a name="width" val="2"/>
- <a name="label" val="B (R)"/>
+ <a name="width" val="8"/>
+ <a name="label" val="MEM POINTER"/>
<a name="labelloc" val="south"/>
</comp>
- <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,1210)" name="Constant"/>
- <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="(280,300)" name="Constant"/>
- <comp lib="1" loc="(440,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,210)" name="Constant"/>
- <comp lib="0" loc="(280,220)" name="Constant"/>
- <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="(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 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,580)" name="Constant"/>
- <comp lib="0" loc="(720,60)" name="Constant">
- <a name="facing" val="south"/>
- <a name="value" val="0x0"/>
+ <comp lib="0" loc="(1150,1480)" name="Splitter">
+ <a name="facing" val="west"/>
+ <a name="fanout" val="4"/>
+ <a name="incoming" val="4"/>
</comp>
- <comp lib="1" loc="(720,780)" 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="6" loc="(233,1834)" name="Text">
- <a name="text" val="This input defines the range of MMIO -->"/>
- </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="1" loc="(480,420)" name="OR Gate">
+ <comp lib="2" loc="(890,600)" 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="2" loc="(930,870)" name="Multiplexer">
+ <comp lib="0" loc="(860,660)" 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="0" loc="(280,570)" name="Constant"/>
- <comp lib="4" loc="(260,1670)" name="Register"/>
- <comp lib="1" loc="(300,1740)" name="OR Gate">
- <a name="facing" val="west"/>
+ <comp lib="1" loc="(1360,660)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(280,480)" name="Constant"/>
- <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,290)" name="AND Gate">
- <a name="inputs" val="8"/>
- <a name="label" val="NAND"/>
- <a name="negate1" val="true"/>
- </comp>
- <comp lib="0" loc="(640,60)" name="Constant">
+ <comp lib="0" loc="(480,60)" name="Constant">
<a name="facing" val="south"/>
<a name="value" val="0x0"/>
</comp>
- <comp lib="1" loc="(360,330)" name="OR Gate">
+ <comp lib="0" loc="(440,60)" name="Constant">
<a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </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="value" val="0x0"/>
</comp>
- <comp lib="0" loc="(1150,1480)" name="Splitter">
- <a name="facing" val="west"/>
- <a name="fanout" val="4"/>
- <a name="incoming" val="4"/>
+ <comp lib="4" loc="(710,1700)" name="Register">
+ <a name="width" val="1"/>
+ <a name="trigger" val="falling"/>
</comp>
- <comp lib="1" loc="(670,1820)" name="AND Gate">
+ <comp lib="1" loc="(80,80)" name="AND Gate">
<a name="facing" val="north"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
+ <a name="negate0" val="true"/>
</comp>
- <comp lib="2" loc="(890,600)" name="Multiplexer">
+ <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="(280,1300)" 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="1" loc="(280,100)" name="OR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="0" loc="(280,400)" name="Constant"/>
- <comp lib="0" loc="(280,120)" name="Constant"/>
- <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="0" loc="(830,1890)" name="Pin">
+ <comp lib="0" loc="(1340,800)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
- <a name="label" val="External Address Select"/>
+ <a name="tristate" val="false"/>
+ <a name="label" val="GPR Forward Input"/>
<a name="labelloc" val="east"/>
</comp>
- <comp lib="1" loc="(600,1050)" name="OR Gate">
+ <comp lib="0" loc="(1160,990)" name="Constant">
+ <a name="width" val="4"/>
+ <a name="value" val="0x0"/>
+ </comp>
+ <comp lib="4" loc="(110,50)" name="Register">
+ <a name="trigger" val="falling"/>
+ </comp>
+ <comp lib="0" loc="(280,660)" name="Constant"/>
+ <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="0" loc="(180,1580)" name="Splitter">
+ <comp lib="2" loc="(890,870)" name="Multiplexer">
+ <a name="facing" val="south"/>
+ <a name="width" val="2"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(220,1460)" 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="appear" val="center"/>
</comp>
- <comp lib="0" loc="(890,60)" name="Constant">
+ <comp lib="0" loc="(900,660)" name="Constant">
<a name="facing" val="south"/>
<a name="width" val="2"/>
<a name="value" val="0x0"/>
@@ -3325,85 +3348,89 @@
<a name="negate4" val="true"/>
<a name="negate6" val="true"/>
</comp>
- <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="(940,640)" name="Constant">
- <a name="facing" val="south"/>
- <a name="width" val="2"/>
- </comp>
- <comp lib="2" loc="(930,600)" name="Multiplexer">
- <a name="facing" val="south"/>
- <a name="width" val="2"/>
- <a name="enable" val="false"/>
+ <comp lib="3" loc="(1280,670)" name="Comparator">
+ <a name="width" val="5"/>
</comp>
- <comp lib="1" loc="(640,690)" name="OR Gate">
+ <comp lib="3" loc="(200,1680)" name="Adder"/>
+ <comp lib="0" loc="(280,1290)" name="Constant"/>
+ <comp lib="0" loc="(280,400)" name="Constant"/>
+ <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="(800,1580)" name="Pin">
+ <comp lib="0" loc="(280,90)" name="Constant"/>
+ <comp lib="0" loc="(130,60)" name="Constant">
+ <a name="width" val="8"/>
+ <a name="value" val="0x0"/>
+ </comp>
+ <comp lib="0" loc="(530,1690)" name="Pin">
<a name="facing" val="north"/>
<a name="output" val="true"/>
- <a name="label" val="PUSH"/>
+ <a name="width" val="8"/>
+ <a name="label" val="IMM VALUE"/>
<a name="labelloc" val="south"/>
</comp>
- <comp lib="0" loc="(760,60)" name="Constant">
+ <comp lib="0" loc="(280,150)" name="Constant"/>
+ <comp lib="1" loc="(520,1410)" 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="1" loc="(680,1230)" name="OR Gate">
+ <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="1" loc="(330,1370)" name="AND Gate">
+ <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="3" loc="(1280,620)" name="Subtractor">
+ <a name="width" val="5"/>
+ </comp>
+ <comp lib="1" loc="(330,1100)" name="AND Gate">
<a name="inputs" val="8"/>
- <a name="label" val="CMP"/>
+ <a name="label" val="LB"/>
+ <a name="negate3" val="true"/>
+ <a name="negate6" val="true"/>
</comp>
- <comp lib="0" loc="(940,1000)" name="Constant">
+ <comp lib="0" loc="(280,550)" name="Constant"/>
+ <comp lib="1" loc="(880,1610)" name="OR Gate">
<a name="facing" val="south"/>
<a name="width" val="2"/>
- <a name="value" val="0x3"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="2" loc="(890,690)" name="Multiplexer">
+ <comp lib="0" loc="(900,1000)" 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="0" loc="(280,500)" name="Constant"/>
- <comp lib="1" loc="(520,150)" name="OR Gate">
+ <comp lib="0" loc="(280,1380)" name="Constant"/>
+ <comp lib="1" loc="(680,1230)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(900,640)" name="Constant">
+ <comp lib="1" loc="(360,330)" name="OR Gate">
<a name="facing" val="south"/>
- <a name="width" val="2"/>
- </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"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="2" loc="(850,600)" name="Multiplexer">
+ <comp lib="0" loc="(890,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,330)" name="OR Gate">
+ <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="(280,90)" name="Constant"/>
- <comp lib="1" loc="(360,510)" name="OR Gate">
+ <comp lib="1" loc="(520,510)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
@@ -3413,46 +3440,241 @@
<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="1" loc="(1040,1510)" name="AND Gate">
- <a name="facing" val="west"/>
- <a name="label" val="ptrinc"/>
- </comp>
- <comp lib="0" loc="(440,1690)" name="Pin">
+ <comp lib="0" loc="(200,1580)" name="Splitter">
<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"/>
+ <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="(280,390)" name="Constant"/>
- <comp lib="0" loc="(560,60)" name="Constant">
+ <comp lib="1" loc="(560,330)" 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="2" loc="(290,1450)" name="Multiplexer">
+ <comp lib="0" loc="(280,1350)" name="Constant"/>
+ <comp lib="0" loc="(280,1300)" 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="(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,540)" name="Constant"/>
+ <comp lib="0" loc="(840,1610)" 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="labelloc" val="south"/>
+ </comp>
+ <comp lib="0" loc="(280,410)" name="Constant"/>
+ <comp lib="1" loc="(1360,550)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ <a name="negate1" val="true"/>
+ </comp>
+ <comp lib="1" loc="(1310,670)" name="NOT Gate">
+ <a name="size" val="20"/>
+ </comp>
+ <comp lib="4" loc="(1090,870)" name="Register">
+ <a name="width" val="1"/>
+ </comp>
+ <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="1" loc="(1170,680)" name="AND Gate">
+ <a name="facing" val="north"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="0" loc="(280,1210)" name="Constant"/>
+ <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="1" loc="(330,1370)" name="AND Gate">
+ <a name="inputs" val="8"/>
+ <a name="label" val="CMP"/>
+ </comp>
+ <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="4" loc="(1190,1480)" name="Register">
+ <a name="width" val="4"/>
+ <a name="trigger" val="falling"/>
+ </comp>
+ <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="4" loc="(1210,610)" name="Register">
+ <a name="width" val="5"/>
+ </comp>
+ <comp lib="0" loc="(940,660)" name="Constant">
+ <a name="facing" val="south"/>
+ <a name="width" val="2"/>
+ </comp>
+ <comp lib="1" loc="(900,1720)" name="OR Gate">
+ <a name="facing" val="south"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="1" loc="(1190,650)" name="OR Gate">
+ <a name="facing" val="north"/>
+ <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,320)" name="Constant"/>
+ <comp lib="0" loc="(1240,680)" name="Constant">
+ <a name="width" val="5"/>
+ <a name="value" val="0x0"/>
+ </comp>
+ <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="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,1110)" name="Constant"/>
- <comp lib="1" loc="(480,150)" name="OR Gate">
+ <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="(300,1740)" name="OR Gate">
+ <a name="facing" val="west"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="0" loc="(220,1610)" name="Constant">
+ <a name="facing" val="south"/>
+ <a name="width" val="4"/>
+ <a name="value" val="0x0"/>
+ </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="0" loc="(260,1440)" name="Constant">
+ <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="0" loc="(1200,910)" name="Bit Extender">
+ <a name="in_width" val="4"/>
+ <a name="out_width" val="5"/>
+ </comp>
+ <comp lib="0" loc="(280,580)" 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="(920,1610)" name="Pin">
+ <comp lib="0" loc="(280,500)" name="Constant"/>
+ <comp lib="0" loc="(280,670)" name="Constant"/>
+ <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="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="C (W)"/>
+ <a name="label" val="B (R)"/>
+ <a name="labelloc" val="south"/>
+ </comp>
+ <comp lib="1" loc="(280,100)" name="OR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="2" loc="(290,1490)" name="Multiplexer">
+ <a name="width" val="2"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <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="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(280,300)" name="Constant"/>
+ <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="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="0" loc="(930,60)" name="Constant">
+ <a name="facing" val="south"/>
+ <a name="width" val="2"/>
+ <a name="value" val="0x0"/>
+ </comp>
+ <comp lib="0" loc="(900,820)" name="Constant">
+ <a name="facing" val="south"/>
+ <a name="width" val="2"/>
+ <a name="value" val="0x0"/>
+ </comp>
+ <comp lib="0" loc="(180,1540)" name="Splitter">
+ <a name="facing" val="north"/>
+ <a name="appear" val="center"/>
+ </comp>
+ <comp lib="6" loc="(233,1834)" name="Text">
+ <a name="text" val="This input defines the range of MMIO -->"/>
+ </comp>
+ <comp lib="1" loc="(1260,790)" 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="2" loc="(890,1050)" name="Multiplexer">
+ <a name="facing" val="south"/>
+ <a name="width" val="2"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <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="(280,210)" name="Constant"/>
+ <comp lib="0" loc="(280,310)" name="Constant"/>
</circuit>
<circuit name="STK">
<a name="circuit" val="STK"/>
@@ -3464,7 +3686,7 @@
<text font-family="SansSerif" font-size="12" text-anchor="middle" x="63" y="80">STK</text>
<circ-port height="10" pin="150,220" width="10" x="55" y="55"/>
<circ-port height="8" pin="150,270" width="8" x="76" y="66"/>
- <circ-port height="8" pin="90,290" width="8" x="76" y="76"/>
+ <circ-port height="8" pin="90,300" width="8" x="76" y="76"/>
<circ-port height="8" pin="90,330" width="8" x="56" y="86"/>
<circ-port height="8" pin="90,360" width="8" x="66" y="86"/>
<circ-port height="8" pin="180,320" width="8" x="46" y="76"/>
@@ -3485,6 +3707,8 @@
<wire from="(1860,260)" to="(1860,270)"/>
<wire from="(2460,220)" to="(2460,270)"/>
<wire from="(2230,270)" to="(2240,270)"/>
+ <wire from="(990,340)" to="(1100,340)"/>
+ <wire from="(2200,280)" to="(2200,340)"/>
<wire from="(2690,250)" to="(2700,250)"/>
<wire from="(1040,230)" to="(1250,230)"/>
<wire from="(3210,320)" to="(3320,320)"/>
@@ -3501,14 +3725,19 @@
<wire from="(700,220)" to="(700,270)"/>
<wire from="(930,250)" to="(940,250)"/>
<wire from="(2870,300)" to="(2980,300)"/>
+ <wire from="(440,280)" to="(440,340)"/>
+ <wire from="(2750,340)" to="(2860,340)"/>
<wire from="(3620,260)" to="(3620,270)"/>
<wire from="(3040,310)" to="(3150,310)"/>
<wire from="(3220,270)" to="(3230,270)"/>
<wire from="(1370,220)" to="(1370,250)"/>
+ <wire from="(1980,340)" to="(2090,340)"/>
+ <wire from="(3190,280)" to="(3190,340)"/>
<wire from="(2100,300)" to="(2210,300)"/>
<wire from="(1700,230)" to="(1700,250)"/>
<wire from="(1120,290)" to="(1120,320)"/>
<wire from="(950,280)" to="(950,310)"/>
+ <wire from="(220,340)" to="(330,340)"/>
<wire from="(510,310)" to="(620,310)"/>
<wire from="(340,300)" to="(450,300)"/>
<wire from="(680,320)" to="(790,320)"/>
@@ -3520,10 +3749,10 @@
<wire from="(3460,230)" to="(3460,250)"/>
<wire from="(1460,270)" to="(1470,270)"/>
<wire from="(2850,260)" to="(2850,270)"/>
+ <wire from="(1430,280)" to="(1430,340)"/>
<wire from="(1920,250)" to="(1930,250)"/>
<wire from="(2270,310)" to="(2380,310)"/>
<wire from="(3130,220)" to="(3130,250)"/>
- <wire from="(150,300)" to="(230,300)"/>
<wire from="(160,250)" to="(170,250)"/>
<wire from="(2880,290)" to="(2880,320)"/>
<wire from="(2440,320)" to="(2550,320)"/>
@@ -3533,6 +3762,7 @@
<wire from="(3200,290)" to="(3200,300)"/>
<wire from="(1470,270)" to="(1490,270)"/>
<wire from="(670,290)" to="(670,300)"/>
+ <wire from="(1210,340)" to="(1320,340)"/>
<wire from="(1940,280)" to="(1940,310)"/>
<wire from="(3020,230)" to="(3230,230)"/>
<wire from="(1500,310)" to="(1610,310)"/>
@@ -3544,35 +3774,38 @@
<wire from="(320,260)" to="(320,270)"/>
<wire from="(2450,270)" to="(2460,270)"/>
<wire from="(2080,260)" to="(2080,270)"/>
+ <wire from="(2420,280)" to="(2420,340)"/>
<wire from="(2910,250)" to="(2920,250)"/>
<wire from="(2680,220)" to="(2680,270)"/>
<wire from="(350,290)" to="(350,320)"/>
<wire from="(180,280)" to="(180,310)"/>
<wire from="(930,220)" to="(1140,220)"/>
<wire from="(3260,310)" to="(3370,310)"/>
- <wire from="(90,290)" to="(120,290)"/>
<wire from="(3430,320)" to="(3540,320)"/>
<wire from="(700,270)" to="(720,270)"/>
<wire from="(1150,250)" to="(1160,250)"/>
<wire from="(1970,270)" to="(1980,270)"/>
<wire from="(1960,260)" to="(1970,260)"/>
- <wire from="(110,320)" to="(130,320)"/>
<wire from="(2430,290)" to="(2430,300)"/>
<wire from="(200,260)" to="(210,260)"/>
<wire from="(210,270)" to="(220,270)"/>
+ <wire from="(660,280)" to="(660,340)"/>
<wire from="(1250,230)" to="(1250,270)"/>
<wire from="(3090,300)" to="(3200,300)"/>
<wire from="(690,270)" to="(700,270)"/>
<wire from="(920,220)" to="(920,270)"/>
<wire from="(1260,230)" to="(1470,230)"/>
<wire from="(2110,290)" to="(2110,320)"/>
+ <wire from="(2970,340)" to="(3080,340)"/>
<wire from="(3440,270)" to="(3450,270)"/>
<wire from="(180,320)" to="(240,320)"/>
<wire from="(1590,220)" to="(1590,250)"/>
<wire from="(1920,230)" to="(1920,250)"/>
<wire from="(1340,290)" to="(1340,320)"/>
<wire from="(1170,280)" to="(1170,310)"/>
+ <wire from="(3410,280)" to="(3410,340)"/>
<wire from="(1660,290)" to="(1660,300)"/>
+ <wire from="(440,340)" to="(550,340)"/>
<wire from="(160,230)" to="(160,250)"/>
<wire from="(2140,250)" to="(2150,250)"/>
<wire from="(3450,270)" to="(3470,270)"/>
@@ -3585,12 +3818,14 @@
<wire from="(1200,270)" to="(1210,270)"/>
<wire from="(3070,260)" to="(3070,270)"/>
<wire from="(1190,260)" to="(1200,260)"/>
+ <wire from="(1650,280)" to="(1650,340)"/>
<wire from="(3350,220)" to="(3350,250)"/>
<wire from="(1680,270)" to="(1690,270)"/>
<wire from="(3100,290)" to="(3100,320)"/>
<wire from="(2320,300)" to="(2430,300)"/>
<wire from="(2930,280)" to="(2930,310)"/>
<wire from="(380,250)" to="(390,250)"/>
+ <wire from="(2200,340)" to="(2310,340)"/>
<wire from="(1690,270)" to="(1710,270)"/>
<wire from="(2490,310)" to="(2600,310)"/>
<wire from="(3420,290)" to="(3420,300)"/>
@@ -3600,9 +3835,10 @@
<wire from="(2680,270)" to="(2700,270)"/>
<wire from="(1550,300)" to="(1660,300)"/>
<wire from="(890,290)" to="(890,300)"/>
+ <wire from="(1430,340)" to="(1540,340)"/>
<wire from="(1720,310)" to="(1830,310)"/>
- <wire from="(110,310)" to="(110,320)"/>
<wire from="(1890,320)" to="(2000,320)"/>
+ <wire from="(2640,280)" to="(2640,340)"/>
<wire from="(570,290)" to="(570,320)"/>
<wire from="(2190,270)" to="(2200,270)"/>
<wire from="(2180,260)" to="(2190,260)"/>
@@ -3616,11 +3852,14 @@
<wire from="(1370,250)" to="(1380,250)"/>
<wire from="(920,270)" to="(940,270)"/>
<wire from="(2650,290)" to="(2650,300)"/>
+ <wire from="(3190,340)" to="(3300,340)"/>
<wire from="(1140,220)" to="(1140,270)"/>
+ <wire from="(130,340)" to="(220,340)"/>
<wire from="(3480,310)" to="(3590,310)"/>
<wire from="(2300,260)" to="(2300,270)"/>
<wire from="(430,270)" to="(440,270)"/>
<wire from="(420,260)" to="(430,260)"/>
+ <wire from="(880,280)" to="(880,340)"/>
<wire from="(1480,230)" to="(1690,230)"/>
<wire from="(910,270)" to="(920,270)"/>
<wire from="(2330,290)" to="(2330,320)"/>
@@ -3634,12 +3873,15 @@
<wire from="(3170,260)" to="(3180,260)"/>
<wire from="(1560,290)" to="(1560,320)"/>
<wire from="(1390,280)" to="(1390,310)"/>
+ <wire from="(3630,280)" to="(3630,340)"/>
<wire from="(380,230)" to="(380,250)"/>
<wire from="(2360,250)" to="(2370,250)"/>
<wire from="(1880,290)" to="(1880,300)"/>
+ <wire from="(660,340)" to="(770,340)"/>
<wire from="(950,310)" to="(1060,310)"/>
<wire from="(1530,260)" to="(1530,270)"/>
<wire from="(780,300)" to="(890,300)"/>
+ <wire from="(1870,280)" to="(1870,340)"/>
<wire from="(1410,260)" to="(1420,260)"/>
<wire from="(1420,270)" to="(1430,270)"/>
<wire from="(3570,220)" to="(3570,250)"/>
@@ -3651,6 +3893,7 @@
<wire from="(1910,270)" to="(1930,270)"/>
<wire from="(2540,300)" to="(2650,300)"/>
<wire from="(2140,230)" to="(2140,250)"/>
+ <wire from="(2420,340)" to="(2530,340)"/>
<wire from="(2880,320)" to="(2990,320)"/>
<wire from="(2710,310)" to="(2820,310)"/>
<wire from="(3290,260)" to="(3290,270)"/>
@@ -3661,6 +3904,7 @@
<wire from="(3130,220)" to="(3340,220)"/>
<wire from="(3350,250)" to="(3360,250)"/>
<wire from="(1770,300)" to="(1880,300)"/>
+ <wire from="(1650,340)" to="(1760,340)"/>
<wire from="(1940,310)" to="(2050,310)"/>
<wire from="(180,310)" to="(290,310)"/>
<wire from="(2400,260)" to="(2410,260)"/>
@@ -3668,17 +3912,21 @@
<wire from="(2410,270)" to="(2420,270)"/>
<wire from="(620,280)" to="(620,310)"/>
<wire from="(350,320)" to="(460,320)"/>
+ <wire from="(2860,280)" to="(2860,340)"/>
<wire from="(1110,290)" to="(1110,300)"/>
<wire from="(3460,230)" to="(3670,230)"/>
<wire from="(3450,230)" to="(3450,270)"/>
<wire from="(3120,220)" to="(3120,270)"/>
<wire from="(2890,270)" to="(2900,270)"/>
<wire from="(2870,290)" to="(2870,300)"/>
+ <wire from="(3410,340)" to="(3520,340)"/>
<wire from="(1360,220)" to="(1360,270)"/>
<wire from="(1130,270)" to="(1140,270)"/>
<wire from="(3530,300)" to="(3640,300)"/>
<wire from="(2520,260)" to="(2520,270)"/>
+ <wire from="(1100,280)" to="(1100,340)"/>
<wire from="(1590,250)" to="(1600,250)"/>
+ <wire from="(3630,340)" to="(3670,340)"/>
<wire from="(1690,230)" to="(1690,270)"/>
<wire from="(2110,320)" to="(2220,320)"/>
<wire from="(1700,230)" to="(1910,230)"/>
@@ -3704,6 +3952,8 @@
<wire from="(270,220)" to="(270,250)"/>
<wire from="(600,230)" to="(600,250)"/>
<wire from="(1000,300)" to="(1110,300)"/>
+ <wire from="(880,340)" to="(990,340)"/>
+ <wire from="(2090,280)" to="(2090,340)"/>
<wire from="(370,270)" to="(390,270)"/>
<wire from="(3540,290)" to="(3540,320)"/>
<wire from="(3370,280)" to="(3370,310)"/>
@@ -3711,7 +3961,9 @@
<wire from="(1640,270)" to="(1650,270)"/>
<wire from="(360,270)" to="(370,270)"/>
<wire from="(2360,230)" to="(2360,250)"/>
+ <wire from="(330,280)" to="(330,340)"/>
<wire from="(820,250)" to="(830,250)"/>
+ <wire from="(2640,340)" to="(2750,340)"/>
<wire from="(2760,300)" to="(2870,300)"/>
<wire from="(3100,320)" to="(3210,320)"/>
<wire from="(2930,310)" to="(3040,310)"/>
@@ -3721,12 +3973,14 @@
<wire from="(3120,270)" to="(3140,270)"/>
<wire from="(980,260)" to="(980,270)"/>
<wire from="(1990,300)" to="(2100,300)"/>
+ <wire from="(1870,340)" to="(1980,340)"/>
<wire from="(150,220)" to="(260,220)"/>
<wire from="(2630,270)" to="(2640,270)"/>
<wire from="(1010,290)" to="(1010,320)"/>
<wire from="(2620,260)" to="(2630,260)"/>
<wire from="(230,300)" to="(340,300)"/>
<wire from="(840,280)" to="(840,310)"/>
+ <wire from="(3080,280)" to="(3080,340)"/>
<wire from="(400,310)" to="(510,310)"/>
<wire from="(3640,300)" to="(3670,300)"/>
<wire from="(3110,270)" to="(3120,270)"/>
@@ -3738,6 +3992,7 @@
<wire from="(1350,270)" to="(1360,270)"/>
<wire from="(2740,260)" to="(2740,270)"/>
<wire from="(3090,290)" to="(3090,300)"/>
+ <wire from="(1320,280)" to="(1320,340)"/>
<wire from="(1580,220)" to="(1580,270)"/>
<wire from="(160,230)" to="(370,230)"/>
<wire from="(1810,250)" to="(1820,250)"/>
@@ -3747,7 +4002,6 @@
<wire from="(2770,290)" to="(2770,320)"/>
<wire from="(1910,230)" to="(1910,270)"/>
<wire from="(1590,220)" to="(1800,220)"/>
- <wire from="(110,310)" to="(120,310)"/>
<wire from="(1360,270)" to="(1380,270)"/>
<wire from="(2600,280)" to="(2600,310)"/>
<wire from="(870,270)" to="(880,270)"/>
@@ -3757,6 +4011,7 @@
<wire from="(2000,290)" to="(2000,320)"/>
<wire from="(3620,270)" to="(3630,270)"/>
<wire from="(560,290)" to="(560,300)"/>
+ <wire from="(1100,340)" to="(1210,340)"/>
<wire from="(1830,280)" to="(1830,310)"/>
<wire from="(1560,320)" to="(1670,320)"/>
<wire from="(1390,310)" to="(1500,310)"/>
@@ -3768,6 +4023,7 @@
<wire from="(490,220)" to="(490,250)"/>
<wire from="(2800,250)" to="(2810,250)"/>
<wire from="(240,290)" to="(240,320)"/>
+ <wire from="(2310,280)" to="(2310,340)"/>
<wire from="(3320,320)" to="(3430,320)"/>
<wire from="(590,270)" to="(610,270)"/>
<wire from="(3590,280)" to="(3590,310)"/>
@@ -3775,7 +4031,9 @@
<wire from="(1850,260)" to="(1860,260)"/>
<wire from="(1860,270)" to="(1870,270)"/>
<wire from="(2580,230)" to="(2580,250)"/>
+ <wire from="(550,280)" to="(550,340)"/>
<wire from="(1040,250)" to="(1050,250)"/>
+ <wire from="(2860,340)" to="(2970,340)"/>
<wire from="(2250,220)" to="(2250,250)"/>
<wire from="(3150,310)" to="(3260,310)"/>
<wire from="(580,270)" to="(590,270)"/>
@@ -3784,10 +4042,13 @@
<wire from="(3560,220)" to="(3560,270)"/>
<wire from="(2130,230)" to="(2130,270)"/>
<wire from="(1230,290)" to="(1230,320)"/>
+ <wire from="(2090,340)" to="(2200,340)"/>
<wire from="(2140,230)" to="(2350,230)"/>
<wire from="(1060,280)" to="(1060,310)"/>
+ <wire from="(3300,280)" to="(3300,340)"/>
<wire from="(100,360)" to="(150,360)"/>
<wire from="(450,300)" to="(560,300)"/>
+ <wire from="(330,340)" to="(440,340)"/>
<wire from="(1200,260)" to="(1200,270)"/>
<wire from="(620,310)" to="(730,310)"/>
<wire from="(1550,290)" to="(1550,300)"/>
@@ -3802,6 +4063,7 @@
<wire from="(2030,250)" to="(2040,250)"/>
<wire from="(1800,220)" to="(1800,270)"/>
<wire from="(380,230)" to="(590,230)"/>
+ <wire from="(1540,280)" to="(1540,340)"/>
<wire from="(370,230)" to="(370,270)"/>
<wire from="(270,250)" to="(280,250)"/>
<wire from="(2990,290)" to="(2990,320)"/>
@@ -3814,6 +4076,7 @@
<wire from="(3310,290)" to="(3310,300)"/>
<wire from="(780,290)" to="(780,300)"/>
<wire from="(2050,280)" to="(2050,310)"/>
+ <wire from="(1320,340)" to="(1430,340)"/>
<wire from="(1440,300)" to="(1550,300)"/>
<wire from="(1780,320)" to="(1890,320)"/>
<wire from="(1610,310)" to="(1720,310)"/>
@@ -3823,6 +4086,7 @@
<wire from="(710,220)" to="(710,250)"/>
<wire from="(460,290)" to="(460,320)"/>
<wire from="(290,280)" to="(290,310)"/>
+ <wire from="(2530,280)" to="(2530,340)"/>
<wire from="(1040,230)" to="(1040,250)"/>
<wire from="(3020,250)" to="(3030,250)"/>
<wire from="(810,270)" to="(830,270)"/>
@@ -3837,12 +4101,15 @@
<wire from="(320,270)" to="(330,270)"/>
<wire from="(310,260)" to="(320,260)"/>
<wire from="(90,360)" to="(100,360)"/>
+ <wire from="(770,280)" to="(770,340)"/>
<wire from="(800,270)" to="(810,270)"/>
<wire from="(2470,220)" to="(2470,250)"/>
+ <wire from="(3080,340)" to="(3190,340)"/>
<wire from="(2800,230)" to="(2800,250)"/>
<wire from="(2220,290)" to="(2220,320)"/>
<wire from="(3550,270)" to="(3560,270)"/>
<wire from="(1450,290)" to="(1450,320)"/>
+ <wire from="(3520,280)" to="(3520,340)"/>
<wire from="(2350,230)" to="(2350,270)"/>
<wire from="(2360,230)" to="(2570,230)"/>
<wire from="(1280,280)" to="(1280,310)"/>
@@ -3852,12 +4119,14 @@
<wire from="(3060,260)" to="(3070,260)"/>
<wire from="(670,300)" to="(780,300)"/>
<wire from="(3560,270)" to="(3580,270)"/>
+ <wire from="(550,340)" to="(660,340)"/>
<wire from="(1010,320)" to="(1120,320)"/>
<wire from="(840,310)" to="(950,310)"/>
<wire from="(1420,260)" to="(1420,270)"/>
<wire from="(590,230)" to="(590,270)"/>
<wire from="(1300,260)" to="(1310,260)"/>
<wire from="(1310,270)" to="(1320,270)"/>
+ <wire from="(1760,280)" to="(1760,340)"/>
<wire from="(600,230)" to="(810,230)"/>
<wire from="(270,220)" to="(480,220)"/>
<wire from="(2020,220)" to="(2020,270)"/>
@@ -3866,7 +4135,9 @@
<wire from="(2030,220)" to="(2240,220)"/>
<wire from="(3040,280)" to="(3040,310)"/>
<wire from="(490,250)" to="(500,250)"/>
+ <wire from="(2310,340)" to="(2420,340)"/>
<wire from="(2600,310)" to="(2710,310)"/>
+ <wire from="(90,300)" to="(230,300)"/>
<wire from="(2430,300)" to="(2540,300)"/>
<wire from="(260,220)" to="(260,270)"/>
<wire from="(90,330)" to="(100,330)"/>
@@ -3876,6 +4147,7 @@
<wire from="(3530,290)" to="(3530,300)"/>
<wire from="(650,260)" to="(650,270)"/>
<wire from="(1000,290)" to="(1000,300)"/>
+ <wire from="(1540,340)" to="(1650,340)"/>
<wire from="(2790,270)" to="(2810,270)"/>
<wire from="(3240,250)" to="(3250,250)"/>
<wire from="(1260,230)" to="(1260,250)"/>
@@ -3888,13 +4160,16 @@
<wire from="(2290,260)" to="(2300,260)"/>
<wire from="(680,290)" to="(680,320)"/>
<wire from="(2300,270)" to="(2310,270)"/>
+ <wire from="(2750,280)" to="(2750,340)"/>
<wire from="(510,280)" to="(510,310)"/>
<wire from="(2780,270)" to="(2790,270)"/>
<wire from="(1480,250)" to="(1490,250)"/>
+ <wire from="(3300,340)" to="(3410,340)"/>
<wire from="(3420,300)" to="(3530,300)"/>
<wire from="(2760,290)" to="(2760,300)"/>
<wire from="(1030,270)" to="(1050,270)"/>
<wire from="(2410,260)" to="(2410,270)"/>
+ <wire from="(990,280)" to="(990,340)"/>
<wire from="(2690,220)" to="(2690,250)"/>
<wire from="(1020,270)" to="(1030,270)"/>
<wire from="(3020,230)" to="(3020,250)"/>
@@ -3917,11 +4192,13 @@
<wire from="(1640,260)" to="(1640,270)"/>
<wire from="(2470,250)" to="(2480,250)"/>
<wire from="(1990,290)" to="(1990,300)"/>
+ <wire from="(770,340)" to="(880,340)"/>
<wire from="(890,300)" to="(1000,300)"/>
<wire from="(150,310)" to="(180,310)"/>
<wire from="(1530,270)" to="(1540,270)"/>
<wire from="(1520,260)" to="(1530,260)"/>
<wire from="(820,230)" to="(1030,230)"/>
+ <wire from="(1980,280)" to="(1980,340)"/>
<wire from="(810,230)" to="(810,270)"/>
<wire from="(260,270)" to="(280,270)"/>
<wire from="(2010,270)" to="(2020,270)"/>
@@ -3929,6 +4206,7 @@
<wire from="(3430,290)" to="(3430,320)"/>
<wire from="(3260,280)" to="(3260,310)"/>
<wire from="(2020,270)" to="(2040,270)"/>
+ <wire from="(2530,340)" to="(2640,340)"/>
<wire from="(480,220)" to="(480,270)"/>
<wire from="(250,270)" to="(260,270)"/>
<wire from="(2820,310)" to="(2930,310)"/>
@@ -3936,26 +4214,30 @@
<wire from="(2650,300)" to="(2760,300)"/>
<wire from="(710,250)" to="(720,250)"/>
<wire from="(2990,320)" to="(3100,320)"/>
+ <wire from="(220,280)" to="(220,340)"/>
<wire from="(3010,270)" to="(3030,270)"/>
<wire from="(3460,250)" to="(3470,250)"/>
<wire from="(1480,230)" to="(1480,250)"/>
<wire from="(870,260)" to="(870,270)"/>
+ <wire from="(1760,340)" to="(1870,340)"/>
<wire from="(2050,310)" to="(2160,310)"/>
<wire from="(1880,300)" to="(1990,300)"/>
<wire from="(1150,220)" to="(1150,250)"/>
<wire from="(2510,260)" to="(2520,260)"/>
<wire from="(2520,270)" to="(2530,270)"/>
+ <wire from="(2970,280)" to="(2970,340)"/>
<wire from="(900,290)" to="(900,320)"/>
<wire from="(460,320)" to="(570,320)"/>
<wire from="(730,280)" to="(730,310)"/>
- <wire from="(130,320)" to="(130,340)"/>
<wire from="(290,310)" to="(400,310)"/>
<wire from="(1220,290)" to="(1220,300)"/>
<wire from="(3000,270)" to="(3010,270)"/>
<wire from="(1240,270)" to="(1250,270)"/>
<wire from="(3240,230)" to="(3240,250)"/>
<wire from="(2980,290)" to="(2980,300)"/>
+ <wire from="(3520,340)" to="(3630,340)"/>
<wire from="(2630,260)" to="(2630,270)"/>
+ <wire from="(1210,280)" to="(1210,340)"/>
<wire from="(1700,250)" to="(1710,250)"/>
<wire from="(2910,220)" to="(2910,250)"/>
<wire from="(2220,320)" to="(2330,320)"/>
@@ -3964,201 +4246,197 @@
<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="(200,260)" name="Multiplexer">
+ <comp lib="4" loc="(1460,270)" name="Register"/>
+ <comp lib="2" loc="(420,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(2340,270)" name="Register"/>
- <comp lib="4" loc="(2670,270)" name="Register"/>
- <comp lib="2" loc="(2510,260)" name="Multiplexer">
+ <comp lib="2" loc="(2290,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(3000,270)" name="Register"/>
- <comp lib="0" loc="(3670,220)" name="Constant">
- <a name="facing" val="west"/>
+ <comp lib="1" loc="(130,340)" name="OR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="2" loc="(2510,260)" name="Multiplexer">
<a name="width" val="8"/>
- <a name="value" val="0x0"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(690,270)" name="Register"/>
- <comp lib="4" loc="(1460,270)" name="Register"/>
- <comp lib="4" loc="(1240,270)" name="Register"/>
<comp lib="4" loc="(1570,270)" name="Register"/>
<comp lib="4" loc="(470,270)" name="Register"/>
- <comp lib="2" loc="(2400,260)" name="Multiplexer">
+ <comp lib="2" loc="(1410,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(2070,260)" name="Multiplexer">
+ <comp lib="4" loc="(1790,270)" name="Register"/>
+ <comp lib="2" loc="(3280,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(580,270)" name="Register"/>
- <comp lib="2" loc="(3610,260)" name="Multiplexer">
+ <comp lib="4" loc="(3550,270)" name="Register"/>
+ <comp lib="4" loc="(3330,270)" name="Register"/>
+ <comp lib="4" loc="(3220,270)" name="Register"/>
+ <comp lib="2" loc="(2950,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(2730,260)" name="Multiplexer">
+ <comp lib="4" loc="(250,270)" name="Register"/>
+ <comp lib="4" loc="(2450,270)" name="Register"/>
+ <comp lib="2" loc="(970,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(3550,270)" name="Register"/>
- <comp lib="2" loc="(1190,260)" name="Multiplexer">
+ <comp lib="4" loc="(1240,270)" name="Register"/>
+ <comp lib="4" loc="(360,270)" name="Register"/>
+ <comp lib="2" loc="(750,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(2780,270)" name="Register"/>
- <comp lib="4" loc="(1020,270)" name="Register"/>
+ <comp lib="4" loc="(3110,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="(800,270)" name="Register"/>
- <comp lib="2" loc="(1850,260)" name="Multiplexer">
+ <comp lib="4" loc="(2120,270)" name="Register"/>
+ <comp lib="4" loc="(2780,270)" name="Register"/>
+ <comp lib="2" loc="(1190,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="(3220,270)" name="Register"/>
- <comp lib="2" loc="(1410,260)" name="Multiplexer">
+ <comp lib="2" loc="(2400,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(3110,270)" name="Register"/>
- <comp lib="4" loc="(3660,270)" name="Register"/>
- <comp lib="2" loc="(310,260)" name="Multiplexer">
+ <comp lib="2" loc="(640,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(360,270)" name="Register"/>
- <comp lib="0" loc="(90,330)" name="Pin">
- <a name="tristate" val="false"/>
- </comp>
- <comp lib="0" loc="(90,360)" name="Pin">
- <a name="tristate" val="false"/>
- </comp>
- <comp lib="2" loc="(2290,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="(250,270)" name="Register"/>
- <comp lib="4" loc="(3330,270)" name="Register"/>
- <comp lib="2" loc="(1080,260)" name="Multiplexer">
+ <comp lib="2" loc="(3060,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(2230,270)" name="Register"/>
- <comp lib="4" loc="(2010,270)" name="Register"/>
- <comp lib="2" loc="(640,260)" name="Multiplexer">
+ <comp lib="2" loc="(530,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="1" loc="(130,340)" name="OR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="0" loc="(90,300)" name="Pin">
+ <a name="tristate" val="false"/>
</comp>
- <comp lib="2" loc="(420,260)" name="Multiplexer">
+ <comp lib="4" loc="(1020,270)" name="Register"/>
+ <comp lib="4" loc="(800,270)" name="Register"/>
+ <comp lib="2" loc="(3500,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="1" loc="(150,300)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="2" loc="(530,260)" name="Multiplexer">
+ <comp lib="4" loc="(2230,270)" name="Register"/>
+ <comp lib="4" loc="(2010,270)" name="Register"/>
+ <comp lib="0" loc="(150,220)" name="Pin">
+ <a name="output" val="true"/>
<a name="width" val="8"/>
- <a name="enable" val="false"/>
+ <a name="tristate" val="false"/>
+ <a name="labelloc" val="east"/>
</comp>
- <comp lib="2" loc="(2840,260)" name="Multiplexer">
+ <comp lib="2" loc="(860,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(2890,270)" name="Register"/>
<comp lib="2" loc="(1960,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(1900,270)" name="Register"/>
- <comp lib="2" loc="(750,260)" name="Multiplexer">
+ <comp lib="2" loc="(3610,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(1130,270)" name="Register"/>
- <comp lib="2" loc="(2180,260)" name="Multiplexer">
+ <comp lib="4" loc="(2340,270)" name="Register"/>
+ <comp lib="2" loc="(1300,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="(2950,260)" name="Multiplexer">
- <a name="width" val="8"/>
- <a name="enable" val="false"/>
+ <comp lib="4" loc="(1130,270)" name="Register"/>
+ <comp lib="0" loc="(90,360)" name="Pin">
+ <a name="tristate" val="false"/>
</comp>
- <comp lib="0" loc="(90,290)" name="Pin">
+ <comp lib="4" loc="(1900,270)" name="Register"/>
+ <comp lib="0" loc="(180,320)" name="Pin">
<a name="tristate" val="false"/>
</comp>
- <comp lib="2" loc="(970,260)" name="Multiplexer">
+ <comp lib="4" loc="(2670,270)" name="Register"/>
+ <comp lib="4" loc="(2890,270)" name="Register"/>
+ <comp lib="2" loc="(2620,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(1630,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="(3060,260)" name="Multiplexer">
+ <comp lib="2" loc="(1850,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(860,260)" name="Multiplexer">
+ <comp lib="2" loc="(310,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(1740,260)" name="Multiplexer">
+ <comp lib="2" loc="(2070,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(1790,270)" name="Register"/>
- <comp lib="0" loc="(150,220)" name="Pin">
- <a name="output" val="true"/>
+ <comp lib="2" loc="(200,260)" name="Multiplexer">
<a name="width" val="8"/>
- <a name="tristate" val="false"/>
- <a name="labelloc" val="east"/>
- </comp>
- <comp lib="0" loc="(180,320)" name="Pin">
- <a name="tristate" val="false"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(1680,270)" name="Register"/>
- <comp lib="2" loc="(3280,260)" name="Multiplexer">
+ <comp lib="2" loc="(3170,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="(2560,270)" name="Register"/>
- <comp lib="4" loc="(910,270)" name="Register"/>
- <comp lib="2" loc="(1300,260)" name="Multiplexer">
+ <comp lib="2" loc="(2730,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(3170,260)" name="Multiplexer">
+ <comp lib="2" loc="(1080,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(3440,270)" name="Register"/>
+ <comp lib="4" loc="(690,270)" name="Register"/>
+ <comp lib="4" loc="(910,270)" name="Register"/>
<comp lib="0" loc="(150,270)" name="Pin">
<a name="width" val="8"/>
<a name="tristate" val="false"/>
</comp>
- <comp lib="2" loc="(2620,260)" name="Multiplexer">
+ <comp lib="4" loc="(1680,270)" name="Register"/>
+ <comp lib="4" loc="(3000,270)" name="Register"/>
+ <comp lib="0" loc="(90,330)" name="Pin">
+ <a name="tristate" val="false"/>
+ </comp>
+ <comp lib="2" loc="(1630,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(1520,260)" name="Multiplexer">
+ <comp lib="2" loc="(2840,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(3500,260)" name="Multiplexer">
+ <comp lib="4" loc="(580,270)" name="Register"/>
+ <comp lib="4" loc="(1350,270)" name="Register"/>
+ <comp lib="4" loc="(3440,270)" name="Register"/>
+ <comp lib="0" loc="(3670,220)" name="Constant">
+ <a name="facing" val="west"/>
+ <a name="width" val="8"/>
+ <a name="value" val="0x0"/>
+ </comp>
+ <comp lib="2" loc="(1740,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(1350,270)" name="Register"/>
</circuit>
<circuit name="PC">
<a name="circuit" val="PC"/>
@@ -4198,52 +4476,52 @@
<wire from="(200,330)" to="(200,350)"/>
<wire from="(140,400)" to="(240,400)"/>
<wire from="(230,320)" to="(230,380)"/>
- <comp lib="2" loc="(220,310)" name="Multiplexer">
- <a name="width" val="8"/>
- <a name="enable" val="false"/>
- </comp>
- <comp lib="4" loc="(260,310)" name="Register">
- <a name="trigger" val="falling"/>
+ <comp lib="6" loc="(101,297)" name="Text">
+ <a name="text" val="Jump Address"/>
</comp>
- <comp lib="0" loc="(140,320)" name="Pin">
- <a name="width" val="8"/>
+ <comp lib="0" loc="(140,400)" name="Pin">
<a name="tristate" val="false"/>
</comp>
+ <comp lib="3" loc="(330,320)" name="Adder"/>
<comp lib="0" loc="(290,330)" name="Constant">
<a name="width" val="8"/>
</comp>
- <comp lib="0" loc="(140,430)" name="Pin">
- <a name="tristate" val="false"/>
- </comp>
- <comp lib="0" loc="(140,400)" name="Pin">
- <a name="tristate" val="false"/>
+ <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,380)" name="Pin">
<a name="tristate" val="false"/>
</comp>
- <comp lib="1" loc="(200,380)" name="NOT Gate"/>
- <comp lib="0" loc="(360,360)" name="Pin">
+ <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="labelloc" val="east"/>
</comp>
- <comp lib="3" loc="(330,320)" name="Adder"/>
- <comp lib="0" loc="(140,350)" name="Pin">
+ <comp lib="2" loc="(220,310)" name="Multiplexer">
+ <a name="width" val="8"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(140,320)" name="Pin">
+ <a name="width" val="8"/>
+ <a name="tristate" val="false"/>
+ </comp>
+ <comp lib="0" loc="(140,430)" name="Pin">
<a name="tristate" val="false"/>
</comp>
<comp lib="6" loc="(79,355)" name="Text">
<a name="text" val="Jump Enable"/>
</comp>
- <comp lib="6" loc="(101,297)" name="Text">
- <a name="text" val="Jump Address"/>
+ <comp lib="4" loc="(260,310)" name="Register">
+ <a name="trigger" val="falling"/>
</comp>
- <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="labelloc" val="east"/>
+ <comp lib="0" loc="(140,350)" name="Pin">
+ <a name="tristate" val="false"/>
</comp>
+ <comp lib="1" loc="(200,380)" name="NOT Gate"/>
</circuit>
<circuit name="ExampleConfigurationROM">
<a name="circuit" val="ExampleConfigurationROM"/>
@@ -4470,6 +4748,60 @@
<wire from="(560,710)" to="(570,710)"/>
<wire from="(550,380)" to="(560,380)"/>
<wire from="(650,80)" to="(660,80)"/>
+ <comp lib="3" loc="(540,360)" name="Comparator">
+ <a name="mode" val="unsigned"/>
+ </comp>
+ <comp lib="1" loc="(810,420)" name="Controlled Buffer">
+ <a name="facing" val="south"/>
+ <a name="width" val="8"/>
+ </comp>
+ <comp lib="0" loc="(490,920)" name="Probe">
+ <a name="facing" val="west"/>
+ <a name="radix" val="16"/>
+ <a name="label" val="Output"/>
+ <a name="labelloc" val="east"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
+ </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="3" loc="(540,760)" name="Comparator">
+ <a name="mode" val="unsigned"/>
+ </comp>
+ <comp lib="1" loc="(860,820)" name="Controlled Buffer">
+ <a name="facing" val="south"/>
+ <a name="width" val="8"/>
+ </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="4" loc="(820,60)" name="ROM">
+ <a name="addrWidth" val="16"/>
+ <a name="contents">addr/data: 16 8
+43 20 c4 30 43 fc 9f 43
+80 a7 db 83 9 ab 9b 23
+e7 83 21 bf ab f2 43 70
+f7 83 0 2b db 83 2b 83
+3 43 20 f7 83 3 7 10
+de 83 3 43 20 9f 10 de
+53 67 6e 69 70 4 a3 df
+83 0 10 7 de df 83 49
+a3 a7 f0 30 db 83 3a 83
+0 57 0 a 67 6e 6f 70
+20 43 fc 9f a3 9b d7 83
+0 83 54
+</a>
+ </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="(680,60)" name="Splitter">
<a name="facing" val="west"/>
<a name="incoming" val="16"/>
@@ -4490,154 +4822,92 @@
<a name="bit14" val="1"/>
<a name="bit15" val="1"/>
</comp>
- <comp lib="1" loc="(860,780)" name="NOT Gate">
- <a name="facing" val="south"/>
- <a name="size" val="20"/>
+ <comp lib="0" loc="(490,890)" name="Probe">
+ <a name="facing" val="west"/>
+ <a name="radix" val="16"/>
+ <a name="label" val="Address"/>
+ <a name="labelloc" val="east"/>
+ <a name="labelfont" val="SansSerif bold 12"/>
</comp>
- <comp lib="1" loc="(600,770)" name="AND Gate">
+ <comp lib="3" loc="(540,20)" name="Comparator">
+ <a name="mode" val="unsigned"/>
+ </comp>
+ <comp lib="1" loc="(590,510)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
+ <comp lib="0" loc="(320,940)" name="Pin">
+ <a name="output" val="true"/>
+ <a name="label" val="IO ENABLE"/>
+ </comp>
<comp lib="6" loc="(330,773)" name="Text">
<a name="text" val="Memory Mapped I/O Port Address"/>
<a name="halign" val="right"/>
</comp>
- <comp lib="3" loc="(540,500)" name="Comparator">
- <a name="mode" val="unsigned"/>
- </comp>
- <comp lib="5" loc="(700,370)" name="Hex Digit Display"/>
- <comp lib="3" loc="(540,360)" name="Comparator">
- <a name="mode" val="unsigned"/>
- </comp>
- <comp lib="4" loc="(820,60)" name="ROM">
- <a name="addrWidth" val="16"/>
- <a name="contents">addr/data: 16 8
-4b c4 30 33 7f 9f 63 a7
-db 83 7 ab 9b 23 e7 83
-1e bf ab f2 5f f7 83 0
-2b db 83 27 83 2 4b f7
-83 2 7 10 de 83 2 4b
-9f a7 93 33 7f 9f ab a3
-52 f7 83 0 83 28
-</a>
- </comp>
- <comp lib="1" loc="(370,260)" name="OR Gate">
- <a name="facing" val="north"/>
+ <comp lib="1" loc="(640,510)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(690,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="(680,360)" name="Register"/>
<comp lib="0" loc="(490,860)" name="Probe">
<a name="facing" val="west"/>
+ <a name="radix" val="16"/>
<a name="label" val="Input"/>
<a name="labelloc" val="east"/>
<a name="labelfont" val="SansSerif bold 12"/>
</comp>
- <comp lib="1" loc="(590,20)" name="AND Gate">
+ <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="0" loc="(570,710)" name="Splitter">
+ <a name="fanout" val="8"/>
+ <a name="incoming" val="8"/>
+ </comp>
+ <comp lib="1" loc="(640,780)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(410,60)" name="Constant">
- <a name="width" val="8"/>
- <a name="value" val="0xfc"/>
- </comp>
- <comp lib="5" loc="(700,510)" name="Hex Digit Display"/>
- <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="(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="0" loc="(320,940)" name="Pin">
- <a name="output" val="true"/>
- <a name="label" val="IO ENABLE"/>
- </comp>
- <comp lib="1" loc="(860,820)" name="Controlled Buffer">
+ <comp lib="4" loc="(680,360)" name="Register"/>
+ <comp lib="5" loc="(740,370)" name="Hex Digit Display"/>
+ <comp lib="0" loc="(810,400)" name="Pin">
<a name="facing" val="south"/>
<a name="width" val="8"/>
+ <a name="tristate" val="false"/>
</comp>
- <comp lib="1" loc="(690,720)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="3"/>
- <a name="negate0" val="true"/>
- </comp>
- <comp lib="1" loc="(690,760)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="3"/>
- </comp>
- <comp lib="4" loc="(650,80)" name="Register"/>
- <comp lib="1" loc="(590,510)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <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="(560,710)" name="Controlled Buffer">
- <a name="width" val="8"/>
+ <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="0" loc="(350,510)" name="Constant">
<a name="width" val="8"/>
<a name="value" val="0xfd"/>
</comp>
+ <comp lib="3" loc="(540,500)" name="Comparator">
+ <a name="mode" val="unsigned"/>
+ </comp>
<comp lib="0" loc="(320,900)" name="Pin">
<a name="output" val="true"/>
<a name="label" val="WRITE ACTIVE"/>
</comp>
- <comp lib="1" loc="(810,560)" name="Controlled Buffer">
- <a name="facing" val="south"/>
- <a name="width" val="8"/>
- </comp>
- <comp lib="0" loc="(320,860)" name="Pin">
- <a name="tristate" val="false"/>
- <a name="label" val="RESET"/>
- </comp>
- <comp lib="1" loc="(810,420)" name="Controlled Buffer">
- <a name="facing" val="south"/>
- <a name="width" val="8"/>
- </comp>
- <comp lib="5" loc="(730,710)" name="TTY">
- <a name="cols" val="80"/>
- <a name="trigger" val="falling"/>
- </comp>
- <comp lib="5" loc="(740,370)" name="Hex Digit Display"/>
- <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="0" loc="(870,760)" name="Splitter">
- <a name="facing" val="south"/>
- <a name="fanout" val="7"/>
- <a name="incoming" val="7"/>
- </comp>
- <comp lib="1" loc="(640,370)" name="AND Gate">
+ <comp lib="1" loc="(600,90)" name="AND Gate">
<a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <a name="inputs" val="3"/>
</comp>
- <comp lib="1" loc="(640,780)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp loc="(220,130)" name="MCU"/>
+ <comp lib="5" loc="(730,750)" name="Keyboard">
+ <a name="buflen" val="80"/>
+ <a name="trigger" val="falling"/>
</comp>
- <comp lib="0" loc="(350,370)" name="Constant">
- <a name="width" val="8"/>
- <a name="value" val="0xfe"/>
+ <comp lib="6" loc="(382,57)" name="Text">
+ <a name="halign" val="right"/>
</comp>
- <comp lib="0" loc="(690,540)" name="Splitter">
+ <comp lib="0" loc="(690,400)" name="Splitter">
<a name="facing" val="north"/>
<a name="incoming" val="8"/>
<a name="appear" val="right"/>
@@ -4649,424 +4919,136 @@ db 83 7 ab 9b 23 e7 83
<a name="bit6" val="1"/>
<a name="bit7" val="1"/>
</comp>
- <comp lib="0" loc="(490,890)" 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="(320,920)" name="Pin">
- <a name="output" val="true"/>
- <a name="label" val="IO ACTIVE"/>
- </comp>
- <comp lib="3" loc="(540,20)" name="Comparator">
- <a name="mode" val="unsigned"/>
- </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="4" loc="(680,500)" name="Register"/>
- <comp lib="1" loc="(590,370)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="0" loc="(350,770)" name="Constant">
- <a name="width" val="8"/>
- <a name="value" val="0xfc"/>
- </comp>
- <comp lib="1" loc="(870,140)" name="Controlled Buffer">
- <a name="facing" val="south"/>
+ <comp lib="0" loc="(430,60)" name="Constant">
<a name="width" val="8"/>
- </comp>
- <comp lib="1" loc="(600,90)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="3"/>
- </comp>
- <comp lib="6" loc="(388,63)" name="Text">
- <a name="text" val="Sets the memory-mapped address range"/>
- <a name="halign" val="right"/>
+ <a name="value" val="0xff"/>
</comp>
<comp lib="3" loc="(540,90)" name="Comparator">
<a name="mode" val="unsigned"/>
</comp>
- <comp lib="0" loc="(810,540)" name="Pin">
- <a name="facing" val="south"/>
- <a name="width" val="8"/>
- <a name="tristate" val="false"/>
- </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 loc="(220,130)" name="MCU"/>
- <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 lib="1" loc="(640,370)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(720,700)" name="Splitter">
- <a name="facing" val="west"/>
- <a name="fanout" val="7"/>
- <a name="incoming" val="7"/>
+ <comp lib="0" loc="(690,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="(740,510)" name="Hex Digit Display"/>
- <comp lib="0" loc="(810,400)" name="Pin">
+ <comp lib="0" loc="(810,540)" name="Pin">
<a name="facing" val="south"/>
<a name="width" val="8"/>
<a name="tristate" val="false"/>
</comp>
- <comp lib="6" loc="(382,57)" name="Text">
+ <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="1" loc="(640,510)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="0" loc="(570,710)" name="Splitter">
- <a name="fanout" val="8"/>
- <a name="incoming" val="8"/>
- </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="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="5" loc="(730,750)" name="Keyboard">
- <a name="buflen" val="80"/>
- <a name="trigger" val="falling"/>
+ <comp lib="0" loc="(320,860)" name="Pin">
+ <a name="tristate" val="false"/>
+ <a name="label" val="RESET"/>
</comp>
<comp lib="0" loc="(320,880)" name="Clock">
<a name="label" val="CLOCK"/>
</comp>
- <comp lib="0" loc="(490,920)" 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="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="0" loc="(430,60)" name="Constant">
- <a name="width" val="8"/>
- <a name="value" val="0xff"/>
- </comp>
- <comp lib="3" loc="(540,760)" name="Comparator">
- <a name="mode" val="unsigned"/>
- </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="(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="(620,520)" to="(620,530)"/>
- <wire from="(460,60)" to="(460,190)"/>
- <wire from="(430,530)" to="(620,530)"/>
- <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="(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="(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="(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="(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="(220,150)" to="(480,150)"/>
- <wire from="(870,140)" to="(870,150)"/>
- <wire from="(480,150)" to="(480,420)"/>
- <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="(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,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="(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="(870,60)" to="(870,120)"/>
- <wire from="(670,60)" to="(670,120)"/>
- <wire from="(670,60)" to="(680,60)"/>
- <wire from="(480,150)" to="(870,150)"/>
- <wire from="(550,380)" to="(560,380)"/>
- <wire from="(600,510)" to="(610,510)"/>
- <wire from="(460,470)" to="(460,910)"/>
- <comp lib="1" loc="(790,420)" name="Controlled Buffer">
- <a name="facing" val="south"/>
- <a name="width" val="8"/>
- </comp>
- <comp lib="0" loc="(350,510)" name="Constant">
- <a name="width" val="8"/>
- <a name="value" val="0xfd"/>
- </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="3" loc="(540,360)" name="Comparator">
- <a name="mode" val="unsigned"/>
- </comp>
- <comp lib="3" loc="(540,500)" name="Comparator">
- <a name="mode" val="unsigned"/>
- </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 lib="5" loc="(700,370)" name="Hex Digit Display"/>
+ <comp lib="5" loc="(700,510)" name="Hex Digit Display"/>
+ <comp lib="4" loc="(680,500)" name="Register"/>
+ <comp lib="5" loc="(730,710)" name="TTY">
+ <a name="cols" val="80"/>
+ <a name="trigger" val="falling"/>
</comp>
- <comp lib="1" loc="(650,560)" name="Controlled Buffer">
- <a name="facing" val="south"/>
- <a name="width" val="8"/>
+ <comp lib="1" loc="(690,720)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="3"/>
+ <a name="negate0" val="true"/>
</comp>
- <comp lib="5" loc="(680,370)" name="Hex Digit Display"/>
- <comp lib="6" loc="(388,63)" name="Text">
- <a name="text" val="Sets the memory-mapped address range"/>
- <a name="halign" val="right"/>
+ <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="1" loc="(870,140)" name="Controlled Buffer">
<a name="facing" val="south"/>
<a name="width" val="8"/>
</comp>
- <comp lib="0" loc="(430,60)" name="Constant">
- <a name="width" val="8"/>
- <a name="value" val="0xff"/>
- </comp>
- <comp lib="4" loc="(640,500)" name="Register"/>
- <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="4" loc="(650,80)" name="Register"/>
<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="(370,250)" name="OR Gate">
+ <comp lib="0" loc="(320,920)" name="Pin">
+ <a name="output" val="true"/>
+ <a name="label" val="IO ACTIVE"/>
+ </comp>
+ <comp lib="1" loc="(370,260)" name="OR Gate">
<a name="facing" val="north"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(590,80)" name="AND Gate">
+ <comp lib="1" loc="(590,370)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
+ <comp lib="5" loc="(740,510)" name="Hex Digit Display"/>
<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="(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="(640,360)" name="Register"/>
- <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="1" loc="(590,510)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <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="(350,370)" name="Constant">
+ <comp lib="0" loc="(350,770)" name="Constant">
<a name="width" val="8"/>
- <a name="value" val="0xfe"/>
+ <a name="value" val="0xfc"/>
</comp>
- <comp lib="4" loc="(640,80)" name="Register"/>
- <comp loc="(220,130)" name="MCU"/>
- <comp lib="0" loc="(670,400)" name="Splitter">
- <a name="facing" val="north"/>
- <a name="incoming" val="8"/>
+ <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"/>
- <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="(370,420)" name="OR Gate">
- <a name="facing" val="north"/>
+ <comp lib="1" loc="(690,760)" name="AND Gate">
<a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </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="(280,900)" name="Pin">
- <a name="facing" val="north"/>
- <a name="tristate" val="false"/>
- <a name="label" val="RESET"/>
+ <a name="inputs" val="3"/>
</comp>
<comp lib="0" loc="(410,60)" name="Constant">
<a name="width" val="8"/>
<a name="value" val="0xfc"/>
</comp>
- <comp lib="3" loc="(540,20)" name="Comparator">
- <a name="mode" val="unsigned"/>
+ <comp lib="1" loc="(560,710)" name="Controlled Buffer">
+ <a name="width" val="8"/>
</comp>
- <comp lib="1" loc="(590,370)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="1" loc="(810,560)" name="Controlled Buffer">
+ <a name="facing" val="south"/>
+ <a name="width" val="8"/>
</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 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="5" loc="(720,370)" name="Hex Digit Display"/>
- <comp lib="3" loc="(540,90)" name="Comparator">
- <a name="mode" val="unsigned"/>
+ <comp lib="0" loc="(350,370)" name="Constant">
+ <a name="width" val="8"/>
+ <a name="value" val="0xfe"/>
</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 lib="1" loc="(600,770)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="1" loc="(860,780)" name="NOT Gate">
+ <a name="facing" val="south"/>
+ <a name="size" val="20"/>
</comp>
</circuit>
</project>
diff --git a/ExamplePrograms/README.md b/ExamplePrograms/README.md
@@ -20,7 +20,7 @@ Please refer to other examples as reference.
### Argument Legend
- * `A,B,C` specifies the positional arguments as types
+ * `A<type>, B<type> , C<type>` specifies the positional arguments as types
* `<GR>` specifies the argument type as a General Register
* The following types are accepted:
@@ -37,6 +37,8 @@ Please refer to other examples as reference.
* Base 16: Prefixed with `0x`
* Base 2: Prefixed with `0b`
+ * `<bytes>` An array of integers within `<0-255>` e.g. `0xff,255,0b11111111`
+
## 0 Argument Instructions
Do nothing and reset the set operation to ADD
@@ -51,7 +53,7 @@ Pop the stack to GRA
pop
-Program Counter Read - get the program counters current address
+Program Counter Read - stores program counter value to `GRC`
pcr
@@ -101,18 +103,19 @@ Increment memory pointer (set with the `sp` instruction) by `1`
## 1 Argument Instructions
-Load immediate to `GRC`. This is a macro for successive lli and lui instructions
+Load Lower Immediate to `GRA`, Least Significant 4 bits of a byte
- li A<0-255>
+ lli A<0-15>
-Load Lower Immediate to `GRC`, Least Significant 4 bits of a byte
+Load Immediate to `GRA`, next byte in program memory is used
- lli A<0-15>
+ li A<0-255>
-Load Upper Immediate to `GRC`, Most Significant 4 bits of a byte
-> Note: This operation ORs the contents of `GRC`. (you may find this useful)
+Load `N` Bytes to `STACK`. `len(<bytes>)` must be > 1
+> Note: This instruction loads a set of bytes on to the stack, in string form
+or in byte array form
- lui A<0-15>
+ lni A<bytes>
Jumps to particular label unless the flag is set by the `cmp` instruction
executed prior to the `jmp` instruction.
diff --git a/ExamplePrograms/fibb_test.tac b/ExamplePrograms/fibb_test.tac
@@ -1,12 +1,12 @@
# This program computes the classic Fibbonacci sequence
###################### Clear GRA and GRB
-start: li 0
+start: lli 0
mov GRA GRB
###################### Set our memory pointer
li 254
sp GRA
###################### Set our inital state
- li 1
+ lli 1
mov GRA GRC
###################### Printout current state
loop: sb GRB
diff --git a/ExamplePrograms/terminal_test.tac b/ExamplePrograms/terminal_test.tac
@@ -0,0 +1,101 @@
+# This program reads the input from the 'keyboard' component and records in a
+# buffer until the user presses the return key, at that point it compares the
+# buffer with "ping", if the buffer == "ping" then it responds with "pong"
+###################### Set up our buffer pointer to live in GRC
+setup: li 32
+ mov GRA GRC
+###################### Set up our polling address
+poll: sop_xor
+ li 252
+ sp GRA
+###################### Load the bitmask for available data
+ li 128
+###################### Poll until data is available
+p_loop: lb GRB
+ cmp GRB GRA
+ jmp p_loop
+###################### Handle buffering the data and echo
+###################### Echo the byte
+ sb GRB
+###################### Clears the byte out of the buffer in the keyboard
+ sb GRA
+###################### Did we read a backspace character? If so, handle that
+ lli 8
+ cmp GRA GRB
+ jmp bcksp
+###################### Write the byte in the buffer in RAM
+ sp GRC
+ sb GRB
+###################### Increment the buffer pointer
+ cin GRC GRC
+###################### If we have reached the end of the buffer, restart
+ li 112
+ cmp GRA GRC
+ jmp setup
+###################### If the user pressed the enter key, output the buffer
+ lli 10
+ cmp GRB GRA
+ jmp cmpr
+ jmp poll
+###################### Handle backspaces
+bcksp: li 32
+###################### Are we at the start of the buffer? If so, we can return
+ cmp GRA GRC
+ jmp poll
+###################### Decrement the buffer pointer
+ lli 1
+ sop_sub
+ op GRC GRA GRC
+ jmp poll
+###################### Compare the buffer to our commands
+cmpr: li 32
+ sp GRA
+###################### Compute the length of our stored buffer
+ sop_sub
+ op GRC GRA GRC
+###################### Specify the string we will be comparing, and the length.
+###################### This is in reverse order, as the bytes will be pushed to
+###################### the stack. The last byte is the first byte out.
+###################### The last byte is the length of the string.
+# "ping"
+ lni 0x67,0x6e,0x69,0x70,0x04
+###################### If the length of our string is greater than the buffer,
+###################### just exit immediately.
+ pop
+ cmp GRC GRA
+ jmp setup
+c_loop: sop_sub
+###################### Test if we've reached the end of our comparision buffer.
+ lli 1
+ op GRC GRA GRC
+ cmp GRC GRA
+###################### If we've reached the end and haven't branched out, then
+###################### it is a match!
+ jmp ping
+###################### Pop the comparision string and get the buffer byte
+ pop
+ lb GRB
+###################### Increment our buffer pointer
+ ptrinc
+###################### If the bytes match, continue looping
+ sop_xor
+ cmp GRB GRA
+ jmp c_loop
+###################### If the bytes don't match, we quit
+ jmp setup
+###################### Respond to 'ping' with 'pong'
+###################### First, load the null-terminated string
+# "pong\n\0"
+ping: lni 0x00,0x0a,0x67,0x6e,0x6f,0x70
+###################### To test if a byte is null, we compare the byte to itself
+###################### with a bitwise AND.
+ sop_and
+###################### Set our output location
+ li 252
+ sp GRA
+###################### Print our response string until we've reached the null
+p_l: pop
+ sb GRA
+ cmp GRA GRA
+ jmp setup
+ jmp p_l
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: lui 32
+setup: li 32
mov GRA GRC
###################### Set up our polling address
poll: sop_xor
li 252
sp GRA
###################### Load the bitmask for available data
- lui 128
+ li 128
###################### Poll until data is available
p_loop: lb GRB
cmp GRB GRA
@@ -29,7 +29,7 @@ p_loop: lb GRB
###################### Increment the buffer pointer
cin GRC GRC
###################### If we have reached the end of the buffer, restart
- lui 112
+ li 112
cmp GRA GRC
jmp setup
###################### If the user pressed the enter key, output the buffer
@@ -38,7 +38,7 @@ p_loop: lb GRB
jmp output
jmp poll
###################### Handle backspaces
-bcksp: lui 32
+bcksp: li 32
###################### Are we at the start of the buffer? If so, we can return
cmp GRA GRC
jmp poll
@@ -48,7 +48,7 @@ bcksp: lui 32
op GRC GRA GRC
jmp poll
###################### Echo out all the things in the buffer to the TTY
-output: lui 32
+output: li 32
o_loop: sp GRA
lb GRB
push
diff --git a/INSTRUCTION_SET b/INSTRUCTION_SET
@@ -27,7 +27,8 @@ C B A 01 - NAND ----- C = A nand B
C B A 10 - OP ----- C = A (OP) B - perform operation set by SOP_*
C B 0010 - CIN ----- C = ++B
00<lo>11 - LLI ----- Load lower immediate to GRA
-01<hi>11 - LUI ----- Load upper immediate to GRA
+01000011 - LI ----- Load byte immediate to GRA
+01<nb>11 - LNI ----- Load <nb> length immediate to stack
10000011 - JMP ----- JMP to address in next program word if flag is false
10010011 - PSH ----- Push GRA to stack
10100011 - POP ----- Pop stack to reg GRA
diff --git a/README.md b/README.md
@@ -3,33 +3,57 @@
This is a for-fun implementation of a relatively simple micro-architecture, with
an assembler to program the simulated implementation in [Logisim](http://www.cburch.com/logisim/).
-![TISC v1.4](Screenshots/tiscv1_4.png)
+![TISC v2.0](Screenshots/tiscv2_0.png)
## Want to play with it too?
The default program loaded in the ExampleConfigurationROM circuit is the
-`ExamplePrograms/typing_test.tac` program. The program is an interactive demo
+`ExamplePrograms/terminal_test.tac` program. The program is an interactive demo
which processes text input from the keyboard component and echoes the text out
-to the TTY component. In addition, the program buffers 32 characters and echoes
-the buffer once the user inputs a line feed (enter key).
+to the TTY component. In addition, the program buffers 32 characters and tests
+the buffer once the user inputs a line feed (enter key) against a target string.
-![TISC Example configuration](Screenshots/tiscv1_4_example.png)
+![TISC Example configuration](Screenshots/tiscv2_0_example.png)
## Compiling the assembler
To compile the assembler, I recommend using GCC:
- gcc tisc.c -o tisc
+ $ gcc tisc.c -o tisc
## Using the assembler
Once the assembler is compiled, you can assemble TISC assembly code like so:
- tisc <input file> <output file>
+ $ tisc <input file> <output file>
If the assembler found no errors in the code, the output file will contain the
program that is ready to load into the Logisim circuit.
+A successful output will appear like this:
+
+ $ tisc fibb_test.tac out
+ Assembling tac file: 'fibb_test.tac'
+ ln# [addr]:label <op> <args>
+ 002 [0x00]:start lli 0
+ 003 [0x01]: mov GRA GRB
+ 005 [0x02]: li 254
+ 006 [0x04]: sp GRA
+ 008 [0x05]: lli 1
+ 009 [0x06]: mov GRA GRC
+ 011 [0x07]:loop sb GRB
+ 013 [0x08]: sop_xor
+ 014 [0x09]: op GRB GRC GRC
+ 015 [0x0a]: op GRB GRC GRB
+ 016 [0x0b]: op GRB GRC GRC
+ 018 [0x0c]: sop_add
+ 019 [0x0d]: op GRB GRC GRB
+ 021 [0x0e]: cmp GRB GRC
+ 022 [0x0f]: jmp loop
+ 024 [0x11]: sb GRB
+ 025 [0x12]:end jmp end
+ Finished assembling tac file: 'fibb_test.tac', program size: 20 bytes
+
## Loading a program
The provided example application in the circuit ExampleConfigurationROM is a
diff --git a/Screenshots/tiscv1_4.png b/Screenshots/tiscv1_4.png
Binary files differ.
diff --git a/Screenshots/tiscv1_4_example.png b/Screenshots/tiscv1_4_example.png
Binary files differ.
diff --git a/Screenshots/tiscv2_0.png b/Screenshots/tiscv2_0.png
Binary files differ.
diff --git a/Screenshots/tiscv2_0_example.png b/Screenshots/tiscv2_0_example.png
Binary files differ.
diff --git a/tisc.c b/tisc.c
@@ -65,6 +65,30 @@ int validins(InstructionDefinition_t *ins, const char *opcode, char *arg[])
return status;
}
+void add_label(const char* label, int address)
+{
+ //add label to table 'o' label
+ strcpy(symbols[validSymbols], label);
+ addresses[validSymbols] = address;
+ validSymbols++;
+}
+
+int longest_label()
+{
+ int i, labelLen = 0;
+
+ for (i = 0; i < validSymbols; i++)
+ {
+ int len = strlen(symbols[i]);
+ if (len > labelLen)
+ {
+ labelLen = len;
+ }
+ }
+
+ return (labelLen > 5) ? labelLen : 5;
+}
+
int label_address(const char *label)
{
int i, address = -1;
@@ -81,6 +105,20 @@ int label_address(const char *label)
return address;
}
+void update_label(const char* label, int address)
+{
+ int i;
+
+ for (i = 0; i < validSymbols; i++)
+ {
+ if (strncmp(symbols[i], label, strlen(symbols[i])) == 0)
+ {
+ addresses[i] = address;
+ break;
+ }
+ }
+}
+
int labelexists(const char *label)
{
int i, status = 0;
@@ -96,7 +134,7 @@ int labelexists(const char *label)
return status;
}
-int process_label(char *label, int address)
+int process_label_initial(char *label, int address)
{
int status = 0;
@@ -105,11 +143,30 @@ int process_label(char *label, int address)
//duplicate label check
if (labelexists(label) == 0)
{
- //add label to table 'o' label
- strcpy(symbols[validSymbols], label);
- addresses[validSymbols] = address;
- validSymbols++;
+ add_label(label, address);
+
+ status = 1;
+ }
+ }
+ else
+ {
+ status = 1;
+ }
+
+ return status;
+}
+
+int process_label_final(char *label, int address)
+{
+ int status = 0;
+ if (label != NULL)
+ {
+ //make sure the label exists
+ if (labelexists(label) == 1)
+ {
+ update_label(label, address);
+
status = 1;
}
}
@@ -248,7 +305,7 @@ int stringToInteger(char* str)
return return_value;
}
-int assemble_immediate(
+int assemble_lli(
InstructionDefinition_t *definition,
char* arg[3], uint8_t* write_buffer)
{
@@ -256,19 +313,16 @@ int assemble_immediate(
int immediate_value = stringToInteger(arg[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;
-
+ }
+ else
+ {
+ printf("FATAL: Value provided is invalid: (%i)", immediate_value);
+ printf("FATAL: Value must not be > 15");
}
return return_value;
@@ -282,11 +336,72 @@ int assemble_li(
int immediate_value = stringToInteger(arg[0]);
- if (immediate_value <= 0xFF && immediate_value >= 0)
+ if (immediate_value < 256 && immediate_value >= 0)
+ {
+ write_buffer[0] = definition->opcode_mask;
+ write_buffer[1] = immediate_value;
+
+ return_value = 1;
+ }
+ else
+ {
+ printf("FATAL: value provided is invalid %i\n", immediate_value);
+ printf("FATAL: value must be < 256 && >= 0\n");
+ }
+
+ return return_value;
+}
+
+int assemble_lni(
+ InstructionDefinition_t *definition,
+ char* arg[3], uint8_t* write_buffer)
+{
+ int return_value = 0;
+
+ int byte_len = 0;
+ int bytes[16];
+
+ char* byte_str = strtok(arg[0], ",");
+
+ while (byte_str != NULL)
+ {
+ int value = stringToInteger(byte_str);
+
+ if (value > 255 || value < 0)
+ {
+ byte_len = 0;
+ printf("FATAL: value provided is invalid %i\n", value);
+ break;
+ }
+
+ byte_str = strtok(NULL, ",");
+ bytes[byte_len] = value;
+ byte_len++;
+
+ if (byte_len > 16)
+ {
+ byte_len = 0;
+ printf("FATAL: byte array has too many elements. length must be <= 16\n");
+ break;
+ }
+ }
+
+ if (byte_len <= 1)
{
- write_buffer[0] = 0x03 | (immediate_value & 0x0F) << 2;
- write_buffer[1] = 0x43 | ((immediate_value & 0xF0) >> 4) << 2;
-
+ printf("FATAL: must provide byte array length > 1\n");
+ }
+
+ if (byte_len > 1)
+ {
+ definition->instructionLength = byte_len + 1;
+
+ write_buffer[0] = definition->opcode_mask | (byte_len - 1) << 2;
+
+ for (int i = 1; (i-1) < byte_len; i++)
+ {
+ write_buffer[i] = bytes[i - 1];
+ }
+
return_value = 1;
}
@@ -331,9 +446,9 @@ InstructionDefinition_t definitions[TOT_INSTRUCTIONS] =
{ "sop_lsh", 0, 1, 0x60, assemble_0arg },
{ "sop_rsh", 0, 1, 0x70, assemble_0arg },
{ "ptrinc", 0, 1, 0xF0, assemble_0arg },
- { "li", 1, 2, 0x00, assemble_li },
- { "lli", 1, 1, 0x03, assemble_immediate },
- { "lui", 1, 1, 0x43, assemble_immediate },
+ { "lli", 1, 1, 0x03, assemble_lli },
+ { "lni", 1, 1, 0x43, assemble_lni },
+ { "li", 1, 2, 0x43, assemble_li },
{ "jmp", 1, 2, 0x83, assemble_jmp },
{ "lb", 1, 1, 0x87, assemble_1arg },
{ "sb", 1, 1, 0x8B, assemble_1arg },
@@ -411,7 +526,27 @@ int parse(int* line_number, FILE *file, char *line, char **label, char **opcode,
return success;
}
-/* int preprocess -> 1st pass over file, links symbols to address
+/* int labelprocess -> 1st pass over file, defines all labels
+ */
+int labelprocess(int line, int *address, char *label, char *opcode,
+ char *arg[3])
+{
+
+ int status = 1;
+
+ if (process_label_initial(label, 0) == 0)
+ {
+ printf(
+ "Error:%i: re-use of existing label '%s'\n",
+ line, label );
+
+ status = 0;
+ }
+
+ return status;
+}
+
+/* int preprocess -> 2nd pass over file, links symbols to address
and reports syntax errors, fails if returns -1 */
int preprocess(int line, int *address, char *label, char *opcode,
char *arg[3])
@@ -450,31 +585,24 @@ int preprocess(int line, int *address, char *label, char *opcode,
status = 0;
}
- if (status)
- {
- if (process_label(label, *address) == 0)
- {
- printf(
- "Error:%i: re-use of existing label '%s'\n",
- line, label );
-
- status = 0;
- }
- }
+ process_label_final(label, *address);
if (status)
{
+ uint8_t test_buffer[32];
+ status = ins->assemble(ins, arg, test_buffer);
+
*address = *address + ins->instructionLength;
}
return status;
}
-/* int process -> 2nd pass over file, instructions are turned into
+/* int process -> 3rd pass over file, instructions are turned into
machine code with symbols filled in as adresses,
fails if returns -1 */
int process(int line, int* address, uint8_t *buffer, char *label, char *opcode,
- char *arg[3])
+ char *arg[3])
{
int status = 0;
@@ -493,6 +621,56 @@ int process(int line, int* address, uint8_t *buffer, char *label, char *opcode,
return status;
}
+void print_instruction_header(int label_width)
+{
+ char* label_str = (char*)malloc(sizeof(char) * (label_width + 1));
+ for (int i = 0; i < label_width; i++)
+ {
+ label_str[i] = ' ';
+ }
+ label_str[label_width] = '\0';
+ strncpy(label_str, "label", 5);
+
+ printf("ln# [addr]:%s <op> <args>\n", label_str);
+}
+
+/* void print_instruction -> prints the instruction with some helpful information
+ about the source line number, the physical address, the label the instruction has,
+ and the args for that instruction
+*/
+void print_instruction(int line, int* address, char *label, char *opcode, char *arg[3], int label_width)
+{
+ int len = 0;
+ for (int i = 0; arg[i] != NULL && i < 3; i++)
+ {
+ len += strlen(arg[i]) + 1;
+ }
+ char* arg_str = "";
+ if (len > 0)
+ {
+ arg_str = (char*)malloc(sizeof(char) * len);
+
+ for (int i = 0; arg[i] != NULL && i < 3; i++)
+ {
+ sprintf(arg_str, "%s%s\t", arg_str, arg[i]);
+ }
+ }
+
+ char* label_str = (char*)malloc(sizeof(char) * (label_width + 1));
+ for (int i = 0; i < label_width; i++)
+ {
+ label_str[i] = ' ';
+ }
+ label_str[label_width] = '\0';
+
+ if (label != NULL)
+ {
+ strncpy(label_str, label, strlen(label));
+ }
+
+ printf("%03i [0x%02x]:%s %s\t%s\n", line, *address, label_str, opcode, arg_str);
+}
+
int output_file(FILE* output, uint8_t* bytes, int size)
{
fprintf(output, "v2.0 raw");
@@ -538,6 +716,22 @@ int main(int argc, char *argv[])
printf("Error opening file '%s'\n", output);
goto DITCH;
}
+ printf("Assembling tac file: '%s'\n", input);
+
+ while (parse(&line_number, inputf, line, &label, &opcodes, args))
+ {
+ if (labelprocess(line_number, &address, label, opcodes, args) == 0)
+ {
+ printf("Labelprocess: Error on line #%i\n", line_number);
+
+ goto CLOSEFILES;
+ }
+ }
+
+ address = 0;
+ line_number = 0;
+
+ rewind(inputf);
while (parse(&line_number, inputf, line, &label, &opcodes, args))
{
@@ -565,9 +759,15 @@ int main(int argc, char *argv[])
{
address = 0;
line_number = 0;
-
+
+ int label_width = longest_label();
+
+ print_instruction_header(label_width);
+
while (parse(&line_number, inputf, line, &label, &opcodes, args))
{
+ print_instruction(line_number - 1, &address, label, opcodes, args, label_width);
+
if (process(line_number, &address, w_buffer, label, opcodes, args) == 0)
{
printf("Process: Error on line #%i\n", line_number);
@@ -578,6 +778,8 @@ int main(int argc, char *argv[])
// Output Logisim raw v2.0 format
+ printf("Finished assembling tac file: '%s', program size: %i byte%s\n", input, full_size, (full_size > 1) ? "s":"");
+
output_file(outputf, w_buffer, full_size);
free(w_buffer);