commit 3f084a93d16f3a7999bceed794791b9a51558298
parent c27b72dc30c4b6d1e58e1710b7a50c1b1ba57cc4
Author: Paul Longtine <paul@nanner.co>
Date: Fri, 3 Mar 2023 00:26:05 -0500
Update some screenshots, a README file, and tisc debug output format
Added an ARCHITECTURE document
Labeled the busses described in ARCHITECTURE in the Logisim circuit
Diffstat:
10 files changed, 2149 insertions(+), 2168 deletions(-)
diff --git a/ARCHITECTURE b/ARCHITECTURE
@@ -0,0 +1,95 @@
+TISCv2.3 (c) Paul Longtine <paul@nanner.co>
+Tiny Instruction Set Computer
+
+ __________ ___ ________ ________
+|\___ ___\ |\ \ |\ ____\ |\ ____\
+\|___ \ \_| \ \ \ \ \ \___|_ \ \ \___|
+ \ \ \ \ \ \ \ \_____ \ \ \ \
+ \ \ \ \ \ \ \|____|\ \ \ \ \____
+ \ \__\ \ \__\ ____\_\ \ \ \_______\
+ \|__| \|__| |\_________\ \|_______| v2.3
+ \|_________|
+
+-----------------------------------------------------------------------<--------
+ The Architecture of TISC
+-----------------------------------------------------------------------<--------
+
+The basic architecture of TISC resembles a Von-Neumann architecture with a an 8-bit
+address space and an 8-bit word. The execution of instructions and input data is
+conditionally sourced from external input or internal RAM. Internally the data loop
+has two primary busses: Register Input bus, and the ALU Output bus.
+
+There are a total of 10 busses with 7 distinct busses which compose to allow data
+to move through the architecture.
+
+The 7 distinct data busses (in no particular order) are as follows:
+
+0* ALU Output Bus
+1* Stack Output Bus
+2* Immediate Bus
+3* Program Counter Output Bus
+4* Memory Pointer Bus
+5* Memory Output Bus
+6* External Input Bus
+
+The 3 multiplexed data busses are as follows:
+
+7* The Register Input bus is multiplexed from 4 busses:
+ 0* ALU Output Bus
+ 1* Stack Output Bus
+ 2* Immediate Bus
+ 9* Internal Input Bus
+
+8* The Address Bus is multiplexed from 2 busses:
+ 3* Program Counter Output Bus
+ 4* Memory Pointer Bus
+
+9* The Internal Input Bus is multiplexed from 2 busses:
+ 5* Memory Output Bus
+ 6* External Input Bus
+
+These multiplexed busses support the modularity of the system to implement external
+instruction memory and external memory mapped components to extend the capacity of
+a TISC core by controlling the source of each multiplexed bus.
+
+-----------------------------------------------------------------------<--------
+ External Interface
+-----------------------------------------------------------------------<--------
+
+TISC is structured to be exensible through I/O context and persisting a common core
+across implementations
+
+The external interface of TISC has 8 distinct input/output ports
+
+IO ACTIVE: boolean output
+ Raised when there is an externally mapped address currently selected to support
+ memory mapped IO.
+ Known internally as the "External Address Select". The default address range
+ is 0xFC - 0xFF as memory mapped I/O ports.
+
+IO ENABLE: boolean input
+ External components raise this line to signal that the external INPUT line can be used
+
+WRITE ACTIVE: boolean output
+ Raised when there is a write operation for the selected external component.
+
+INPUT: 8-bit input bus
+ This is the 8-bit bus for incoming data from outside of the TISC core
+
+OUTPUT: 8-bit output bus
+ This is the 8-bit bus for outgoing data routed to outside of the TISC core
+
+ADDRESS: 8-bit output bus
+ The current 8-bit program counter value, used to signal for external memory mapped IO
+
+CLOCK: sync. signal
+ core clock line
+
+RESET: sync. signal
+ reset core
+
+
+
+
+
+
diff --git a/CPU/CPU.circ b/CPU/CPU.circ
@@ -85,20 +85,19 @@
<text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="152" y="163">RST</text>
<text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="152" y="24">IO ACTIVE</text>
<text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="152" y="64">WRITE ACTIVE</text>
- <circ-port height="8" pin="510,320" width="8" x="156" y="36"/>
- <circ-port height="8" pin="450,360" width="8" x="156" y="76"/>
- <circ-port height="10" pin="450,400" width="10" x="155" y="115"/>
- <circ-port height="10" pin="450,380" width="10" x="155" y="95"/>
- <circ-port height="8" pin="510,420" width="8" x="156" y="136"/>
- <circ-port height="8" pin="510,440" width="8" x="156" y="156"/>
- <circ-port height="10" pin="510,300" width="10" x="155" y="15"/>
- <circ-port height="10" pin="510,340" width="10" x="155" y="55"/>
+ <circ-port height="8" pin="620,320" width="8" x="156" y="36"/>
+ <circ-port height="8" pin="560,360" width="8" x="156" y="76"/>
+ <circ-port height="10" pin="560,400" width="10" x="155" y="115"/>
+ <circ-port height="10" pin="560,380" width="10" x="155" y="95"/>
+ <circ-port height="8" pin="620,420" width="8" x="156" y="136"/>
+ <circ-port height="8" pin="620,440" width="8" x="156" y="156"/>
+ <circ-port height="10" pin="620,300" width="10" x="155" y="15"/>
+ <circ-port height="10" pin="620,340" width="10" x="155" y="55"/>
<circ-anchor facing="east" height="6" width="6" x="157" y="37"/>
</appear>
<wire from="(350,140)" to="(350,210)"/>
<wire from="(340,40)" to="(340,180)"/>
<wire from="(230,150)" to="(230,160)"/>
- <wire from="(460,340)" to="(510,340)"/>
<wire from="(170,130)" to="(220,130)"/>
<wire from="(310,150)" to="(310,160)"/>
<wire from="(480,200)" to="(480,220)"/>
@@ -115,9 +114,9 @@
<wire from="(220,60)" to="(220,100)"/>
<wire from="(320,80)" to="(320,120)"/>
<wire from="(180,210)" to="(200,210)"/>
+ <wire from="(220,380)" to="(560,380)"/>
<wire from="(170,130)" to="(170,180)"/>
<wire from="(200,120)" to="(200,170)"/>
- <wire from="(500,300)" to="(510,300)"/>
<wire from="(210,110)" to="(290,110)"/>
<wire from="(380,300)" to="(390,300)"/>
<wire from="(220,220)" to="(230,220)"/>
@@ -140,6 +139,7 @@
<wire from="(290,80)" to="(320,80)"/>
<wire from="(400,30)" to="(400,190)"/>
<wire from="(220,220)" to="(220,320)"/>
+ <wire from="(460,340)" to="(620,340)"/>
<wire from="(260,140)" to="(280,140)"/>
<wire from="(330,210)" to="(350,210)"/>
<wire from="(160,210)" to="(160,250)"/>
@@ -155,98 +155,155 @@
<wire from="(390,240)" to="(390,300)"/>
<wire from="(190,120)" to="(190,180)"/>
<wire from="(190,80)" to="(250,80)"/>
- <wire from="(320,420)" to="(510,420)"/>
<wire from="(180,240)" to="(180,250)"/>
<wire from="(250,150)" to="(250,160)"/>
<wire from="(180,200)" to="(230,200)"/>
<wire from="(290,150)" to="(290,160)"/>
<wire from="(290,110)" to="(290,120)"/>
+ <wire from="(500,300)" to="(620,300)"/>
<wire from="(230,40)" to="(340,40)"/>
<wire from="(210,420)" to="(320,420)"/>
<wire from="(330,170)" to="(500,170)"/>
<wire from="(240,220)" to="(240,240)"/>
<wire from="(140,110)" to="(140,200)"/>
<wire from="(190,180)" to="(230,180)"/>
- <wire from="(410,360)" to="(450,360)"/>
<wire from="(220,60)" to="(250,60)"/>
- <wire from="(350,440)" to="(510,440)"/>
- <wire from="(480,320)" to="(510,320)"/>
<wire from="(170,300)" to="(170,400)"/>
<wire from="(330,140)" to="(350,140)"/>
- <wire from="(170,400)" to="(450,400)"/>
<wire from="(140,200)" to="(150,200)"/>
<wire from="(170,300)" to="(240,300)"/>
<wire from="(220,320)" to="(220,380)"/>
<wire from="(180,240)" to="(240,240)"/>
<wire from="(240,150)" to="(240,160)"/>
<wire from="(320,150)" to="(320,160)"/>
+ <wire from="(320,420)" to="(620,420)"/>
<wire from="(400,190)" to="(400,210)"/>
<wire from="(170,280)" to="(170,300)"/>
- <wire from="(220,380)" to="(450,380)"/>
<wire from="(200,170)" to="(230,170)"/>
<wire from="(200,210)" to="(230,210)"/>
<wire from="(460,240)" to="(480,240)"/>
<wire from="(140,440)" to="(350,440)"/>
+ <wire from="(410,360)" to="(560,360)"/>
<wire from="(230,90)" to="(250,90)"/>
<wire from="(330,200)" to="(480,200)"/>
<wire from="(220,320)" to="(240,320)"/>
<wire from="(470,220)" to="(480,220)"/>
+ <wire from="(480,320)" to="(620,320)"/>
<wire from="(220,130)" to="(230,130)"/>
<wire from="(190,260)" to="(200,260)"/>
+ <wire from="(350,440)" to="(620,440)"/>
<wire from="(270,100)" to="(270,160)"/>
+ <wire from="(170,400)" to="(560,400)"/>
<wire from="(230,370)" to="(300,370)"/>
<wire from="(230,250)" to="(230,370)"/>
<wire from="(210,110)" to="(210,230)"/>
<wire from="(260,250)" to="(460,250)"/>
<wire from="(330,190)" to="(400,190)"/>
- <comp lib="6" loc="(303,244)" name="Text">
- <a name="text" val="TISCv2.3"/>
- <a name="font" val="Dialog plain 14"/>
+ <comp lib="6" loc="(521,395)" name="Text">
+ <a name="text" val="8 Address Bus"/>
+ <a name="font" val="SansSerif plain 9"/>
+ <a name="halign" val="right"/>
+ </comp>
+ <comp lib="6" loc="(156,231)" name="Text">
+ <a name="text" val="3 PC Output Bus ------->"/>
+ <a name="font" val="SansSerif plain 9"/>
+ <a name="halign" val="right"/>
</comp>
<comp lib="0" loc="(290,340)" name="Constant">
<a name="facing" val="north"/>
</comp>
- <comp loc="(280,150)" name="GPR"/>
+ <comp lib="6" loc="(502,85)" name="Text">
+ <a name="text" val="<------------------------ 7 Register Input Bus"/>
+ <a name="font" val="SansSerif plain 9"/>
+ <a name="halign" val="right"/>
+ </comp>
+ <comp lib="6" loc="(406,45)" name="Text">
+ <a name="text" val="9 Internal Input Bus"/>
+ <a name="font" val="SansSerif plain 9"/>
+ <a name="halign" val="left"/>
+ </comp>
+ <comp lib="6" loc="(177,79)" name="Text"/>
+ <comp lib="0" loc="(560,400)" 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="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="2" loc="(290,80)" name="Multiplexer">
- <a name="select" val="2"/>
- <a name="width" val="8"/>
- <a name="enable" val="false"/>
+ <comp lib="6" loc="(410,40)" name="Text">
+ <a name="halign" val="left"/>
+ <a name="valign" val="top"/>
</comp>
- <comp lib="6" loc="(290,239)" name="Text"/>
- <comp lib="0" loc="(510,440)" name="Pin">
+ <comp lib="0" loc="(620,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="6" loc="(177,244)" name="Text">
+ <a name="text" val="4 Memory Pointer Bus -------------->"/>
+ <a name="font" val="SansSerif plain 9"/>
+ <a name="halign" val="right"/>
+ </comp>
+ <comp loc="(260,130)" name="ALU"/>
+ <comp lib="4" loc="(380,300)" name="RAM">
+ <a name="bus" val="separate"/>
+ </comp>
+ <comp lib="0" loc="(620,320)" name="Pin">
<a name="facing" val="west"/>
<a name="tristate" val="false"/>
<a name="pull" val="down"/>
- <a name="label" val="RST"/>
+ <a name="label" val="IO ENABLE"/>
<a name="labelloc" val="east"/>
</comp>
- <comp lib="2" loc="(400,210)" name="Multiplexer">
- <a name="facing" val="north"/>
- <a name="selloc" val="tr"/>
+ <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="2" loc="(290,80)" name="Multiplexer">
+ <a name="select" val="2"/>
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <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 lib="6" loc="(303,244)" name="Text">
+ <a name="text" val="TISCv2.3"/>
+ <a name="font" val="Dialog plain 14"/>
</comp>
- <comp lib="0" loc="(450,400)" name="Pin">
+ <comp lib="0" loc="(560,360)" name="Pin">
<a name="facing" val="west"/>
- <a name="output" val="true"/>
<a name="width" val="8"/>
<a name="tristate" val="false"/>
<a name="pull" val="down"/>
- <a name="label" val="ADDR"/>
+ <a name="label" val="IN"/>
<a name="labelloc" val="east"/>
</comp>
- <comp lib="0" loc="(450,380)" name="Pin">
+ <comp lib="6" loc="(505,65)" name="Text">
+ <a name="text" val="<----------------------- 2 Immediate Bus "/>
+ <a name="font" val="SansSerif plain 9"/>
+ <a name="halign" val="right"/>
+ </comp>
+ <comp loc="(200,90)" name="STK"/>
+ <comp lib="6" loc="(185,84)" name="Text">
+ <a name="text" val="1 Stack Output Bus --------------->"/>
+ <a name="font" val="SansSerif plain 9"/>
+ <a name="halign" val="right"/>
+ </comp>
+ <comp lib="6" loc="(513,264)" name="Text">
+ <a name="text" val="<--------------------------------------------- 5 Memory Output Bus"/>
+ <a name="font" val="SansSerif plain 9"/>
+ </comp>
+ <comp loc="(230,170)" name="ISD"/>
+ <comp loc="(160,210)" name="PC"/>
+ <comp lib="0" loc="(560,380)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="width" val="8"/>
@@ -255,20 +312,25 @@
<a name="label" val="OUT"/>
<a name="labelloc" val="east"/>
</comp>
- <comp lib="0" loc="(510,300)" name="Pin">
+ <comp loc="(280,150)" name="GPR"/>
+ <comp lib="0" loc="(620,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="0" loc="(620,340)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
- <a name="label" val="IO ACTIVE"/>
+ <a name="label" val="WRITE ACTIVE"/>
<a name="labelloc" val="east"/>
</comp>
- <comp loc="(230,170)" name="ISD"/>
- <comp loc="(200,90)" name="STK"/>
- <comp lib="0" loc="(450,360)" name="Pin">
+ <comp lib="0" loc="(620,440)" 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="RST"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="2" loc="(170,280)" name="Multiplexer">
@@ -277,30 +339,26 @@
<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"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- <a name="negate0" val="true"/>
+ <comp lib="6" loc="(521,375)" name="Text">
+ <a name="text" val="0 ALU Output Bus"/>
+ <a name="font" val="SansSerif plain 9"/>
+ <a name="halign" val="right"/>
</comp>
- <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 lib="6" loc="(290,239)" name="Text"/>
+ <comp lib="6" loc="(407,45)" name="Text">
+ <a name="halign" val="left"/>
</comp>
- <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="6" loc="(521,358)" name="Text">
+ <a name="text" val="6 External Input Bus"/>
+ <a name="font" val="SansSerif plain 9"/>
+ <a name="halign" val="right"/>
+ <a name="valign" val="bottom"/>
</comp>
- <comp loc="(260,130)" name="ALU"/>
- <comp loc="(160,210)" name="PC"/>
- <comp lib="4" loc="(380,300)" name="RAM">
- <a name="bus" val="separate"/>
+ <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>
</circuit>
<circuit name="ALU">
@@ -671,223 +729,180 @@
<wire from="(770,200)" to="(780,200)"/>
<wire from="(530,280)" to="(540,280)"/>
<wire from="(870,100)" to="(870,150)"/>
- <comp lib="1" loc="(240,760)" name="AND Gate">
+ <comp lib="1" loc="(190,130)" 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="2" loc="(810,190)" name="Multiplexer">
- <a name="width" val="8"/>
- <a name="enable" val="false"/>
- </comp>
- <comp lib="1" loc="(270,410)" name="AND Gate">
+ <comp lib="1" loc="(190,190)" 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>
- <comp lib="1" loc="(310,330)" name="OR Gate">
- <a name="facing" val="west"/>
+ <comp lib="1" loc="(340,280)" name="XNOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(300,270)" name="OR Gate">
- <a name="facing" val="south"/>
+ <comp lib="1" loc="(250,190)" name="NOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(130,210)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="a1"/>
- </comp>
- <comp lib="0" loc="(670,280)" name="Tunnel">
- <a name="label" val="o4"/>
- </comp>
- <comp lib="0" loc="(130,480)" name="Tunnel">
+ <comp lib="0" loc="(680,120)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="a4"/>
+ <a name="label" val="a7"/>
</comp>
- <comp lib="1" loc="(250,100)" name="NOR Gate">
+ <comp lib="1" loc="(340,640)" name="XNOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(680,100)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="a5"/>
+ <comp lib="0" loc="(390,730)" name="Tunnel">
+ <a name="label" val="o7"/>
</comp>
- <comp lib="0" loc="(670,300)" name="Tunnel">
- <a name="label" val="o6"/>
+ <comp lib="0" loc="(670,550)" name="Splitter">
+ <a name="fanout" val="7"/>
+ <a name="incoming" val="7"/>
</comp>
- <comp lib="2" loc="(820,90)" name="Multiplexer">
- <a name="width" val="8"/>
- <a name="enable" val="false"/>
+ <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="1" loc="(270,320)" name="AND Gate">
+ <comp lib="1" loc="(330,670)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
<a name="negate1" val="true"/>
</comp>
- <comp lib="1" loc="(190,490)" name="XOR 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="(550,70)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="b2"/>
- </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="(280,110)" name="OR 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="0" loc="(680,80)" name="Tunnel">
+ <comp lib="0" loc="(770,200)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="a3"/>
+ <a name="width" val="8"/>
+ <a name="label" val="B"/>
</comp>
- <comp lib="1" loc="(190,460)" name="XOR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="3" loc="(930,70)" name="BitAdder"/>
+ <comp lib="2" loc="(820,90)" name="Multiplexer">
+ <a name="width" val="8"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="1" loc="(280,470)" name="OR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="2" loc="(320,890)" name="Multiplexer">
+ <a name="facing" val="south"/>
+ <a name="selloc" val="tr"/>
+ <a name="select" val="2"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="1" loc="(250,280)" name="NOR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="0" loc="(650,320)" name="Splitter">
+ <a name="fanout" val="8"/>
+ <a name="incoming" val="8"/>
</comp>
- <comp lib="0" loc="(390,640)" name="Tunnel">
- <a name="label" val="o6"/>
+ <comp lib="0" loc="(550,120)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="b7"/>
</comp>
- <comp lib="1" loc="(190,730)" name="XOR Gate">
+ <comp lib="1" loc="(190,280)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(130,90)" name="Tunnel">
+ <comp lib="0" loc="(680,60)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="b0"/>
+ <a name="label" val="a1"/>
</comp>
- <comp lib="1" loc="(340,370)" name="XNOR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="0" loc="(130,180)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="b1"/>
</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="(670,280)" name="Tunnel">
+ <a name="label" val="o4"/>
</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="(810,200)" name="Splitter">
+ <a name="fanout" val="8"/>
+ <a name="incoming" val="8"/>
</comp>
- <comp lib="1" loc="(330,580)" name="AND Gate">
+ <comp lib="6" loc="(880,461)" name="Text">
+ <a name="text" val="OPCODES: 000: OR, 001: AND, 010: XOR, 011: ADD, 100: CIN, 101: NAND, 110: XNOR, 111: SUB"/>
+ </comp>
+ <comp lib="1" loc="(190,760)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
</comp>
- <comp lib="1" loc="(190,370)" name="XOR Gate">
+ <comp lib="0" loc="(140,70)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="!A"/>
+ </comp>
+ <comp lib="3" loc="(1000,90)" name="BitAdder"/>
+ <comp lib="1" loc="(240,580)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(680,20)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="width" val="8"/>
- <a name="label" val="A"/>
+ <comp lib="1" loc="(190,640)" name="XOR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(760,380)" name="Tunnel">
+ <comp lib="1" loc="(300,450)" name="OR Gate">
<a name="facing" val="south"/>
- <a name="label" val="OR"/>
- </comp>
- <comp lib="0" loc="(130,120)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="a0"/>
- </comp>
- <comp lib="1" loc="(340,100)" name="XNOR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="0" loc="(670,290)" name="Tunnel">
- <a name="label" val="o5"/>
- </comp>
- <comp lib="0" loc="(390,550)" name="Tunnel">
- <a name="label" val="o5"/>
- </comp>
- <comp lib="1" loc="(190,130)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(300,690)" name="AND 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="1" loc="(240,220)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="0" loc="(780,180)" name="Constant">
+ <comp lib="0" loc="(790,80)" name="Constant">
<a name="width" val="8"/>
<a name="value" val="0x0"/>
</comp>
- <comp lib="1" loc="(340,730)" name="XNOR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="0" loc="(130,480)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="a4"/>
</comp>
- <comp lib="1" loc="(190,760)" name="XOR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="0" loc="(670,250)" name="Tunnel">
+ <a name="label" val="o1"/>
</comp>
- <comp lib="1" loc="(300,240)" name="AND Gate">
+ <comp lib="1" loc="(330,130)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
<a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(740,380)" name="Tunnel">
- <a name="facing" val="south"/>
- <a name="label" val="!A"/>
+ <comp lib="6" loc="(617,355)" name="Text">
+ <a name="text" val="Opcodes"/>
</comp>
- <comp lib="0" loc="(710,320)" name="Splitter">
- <a name="fanout" val="8"/>
- <a name="incoming" val="8"/>
+ <comp lib="0" loc="(390,550)" name="Tunnel">
+ <a name="label" val="o5"/>
</comp>
- <comp lib="1" loc="(270,500)" name="AND Gate">
+ <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="1" loc="(300,330)" name="AND Gate">
+ <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="6" loc="(880,461)" name="Text">
- <a name="text" val="OPCODES: 000: OR, 001: AND, 010: XOR, 011: ADD, 100: CIN, 101: NAND, 110: XNOR, 111: SUB"/>
- </comp>
- <comp lib="1" loc="(280,290)" name="OR Gate">
+ <comp lib="1" loc="(250,550)" name="NOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(130,570)" name="Tunnel">
+ <comp lib="0" loc="(130,450)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="a5"/>
+ <a name="label" val="b4"/>
</comp>
- <comp lib="1" loc="(340,280)" name="XNOR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="0" loc="(260,70)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="CC"/>
</comp>
- <comp lib="1" loc="(190,280)" name="XOR Gate">
+ <comp lib="1" loc="(270,140)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
+ <a name="negate1" val="true"/>
</comp>
<comp lib="0" loc="(850,150)" name="Splitter">
<a name="facing" val="west"/>
@@ -895,245 +910,238 @@
<a name="incoming" val="3"/>
<a name="appear" val="right"/>
</comp>
- <comp lib="0" loc="(670,270)" name="Tunnel">
- <a name="label" val="o3"/>
- </comp>
- <comp lib="1" loc="(190,670)" name="XOR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="0" loc="(330,850)" name="Constant">
- <a name="facing" val="south"/>
- <a name="value" val="0x0"/>
+ <comp lib="0" loc="(320,890)" name="Pin">
+ <a name="facing" val="north"/>
+ <a name="output" val="true"/>
+ <a name="tristate" val="false"/>
+ <a name="label" val="FLAG"/>
+ <a name="labelloc" val="east"/>
</comp>
- <comp lib="1" loc="(280,560)" name="OR Gate">
+ <comp lib="0" loc="(640,440)" name="Constant"/>
+ <comp lib="1" loc="(250,730)" name="NOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(130,300)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="a2"/>
- </comp>
- <comp lib="0" loc="(130,360)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="b3"/>
- </comp>
- <comp lib="1" loc="(280,650)" name="OR Gate">
+ <comp lib="1" loc="(340,100)" name="XNOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(240,400)" name="AND Gate">
+ <comp lib="1" loc="(310,150)" name="OR Gate">
+ <a name="facing" val="west"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</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="0" loc="(550,100)" name="Tunnel">
+ <comp lib="0" loc="(130,720)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="b5"/>
- </comp>
- <comp lib="4" loc="(670,550)" name="ROM">
- <a name="addrWidth" val="4"/>
- <a name="dataWidth" val="7"/>
- <a name="contents">addr/data: 4 7
-3 7 9 a 6 4 30 50
-</a>
- </comp>
- <comp lib="0" loc="(670,550)" name="Splitter">
- <a name="fanout" val="7"/>
- <a name="incoming" val="7"/>
+ <a name="label" val="b7"/>
</comp>
- <comp lib="0" loc="(390,100)" name="Tunnel">
- <a name="label" val="o0"/>
+ <comp lib="1" loc="(190,580)" name="XOR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
<comp lib="0" loc="(390,370)" name="Tunnel">
<a name="label" val="o3"/>
</comp>
- <comp lib="0" loc="(810,200)" name="Splitter">
- <a name="fanout" val="8"/>
- <a name="incoming" val="8"/>
+ <comp lib="1" loc="(250,280)" name="NOR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(750,490)" name="OR Gate">
- <a name="facing" val="north"/>
+ <comp lib="0" loc="(670,300)" name="Tunnel">
+ <a name="label" val="o6"/>
+ </comp>
+ <comp lib="1" loc="(340,460)" name="XNOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(300,630)" name="OR Gate">
- <a name="facing" val="south"/>
+ <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,460)" name="XNOR Gate">
+ <comp lib="1" loc="(270,320)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
+ <a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(550,110)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="b6"/>
+ <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="0" loc="(680,70)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="a2"/>
+ <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="0" loc="(550,80)" name="Tunnel">
+ <comp lib="0" loc="(680,80)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="b3"/>
- </comp>
- <comp lib="0" loc="(710,470)" name="Splitter">
- <a name="facing" val="west"/>
- <a name="fanout" val="3"/>
- <a name="incoming" val="3"/>
+ <a name="label" val="a3"/>
</comp>
- <comp lib="0" loc="(650,320)" name="Splitter">
+ <comp lib="0" loc="(710,320)" name="Splitter">
<a name="fanout" val="8"/>
<a name="incoming" val="8"/>
</comp>
- <comp lib="1" loc="(190,100)" name="XOR Gate">
+ <comp lib="0" loc="(510,390)" name="Pin">
+ <a name="width" val="3"/>
+ <a name="tristate" val="false"/>
+ <a name="label" val="OPCODE"/>
+ <a name="labelloc" val="north"/>
+ </comp>
+ <comp lib="1" loc="(190,460)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="3" loc="(930,160)" name="Shifter">
- <a name="shift" val="lr"/>
+ <comp lib="0" loc="(340,70)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="FC"/>
</comp>
- <comp lib="1" loc="(330,130)" name="AND Gate">
+ <comp lib="1" loc="(300,240)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
<a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(130,540)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="b5"/>
- </comp>
- <comp lib="1" loc="(250,190)" name="NOR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="0" loc="(390,460)" name="Tunnel">
+ <a name="label" val="o4"/>
</comp>
- <comp lib="1" loc="(250,370)" name="NOR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="3" loc="(930,160)" name="Shifter">
+ <a name="shift" val="lr"/>
</comp>
- <comp lib="0" loc="(130,660)" name="Tunnel">
+ <comp lib="0" loc="(130,390)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="a6"/>
+ <a name="label" val="a3"/>
</comp>
- <comp lib="0" loc="(340,70)" name="Tunnel">
+ <comp lib="0" loc="(750,380)" name="Tunnel">
<a name="facing" val="south"/>
- <a name="label" val="FC"/>
+ <a name="label" val="!B"/>
</comp>
- <comp lib="1" loc="(300,780)" name="AND Gate">
+ <comp lib="2" loc="(810,190)" name="Multiplexer">
+ <a name="width" val="8"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="0" loc="(390,190)" name="Tunnel">
+ <a name="label" val="o1"/>
+ </comp>
+ <comp lib="1" loc="(300,420)" 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">
+ <comp lib="0" loc="(340,850)" name="Constant">
+ <a name="facing" val="south"/>
+ <a name="value" val="0x0"/>
+ </comp>
+ <comp lib="1" loc="(280,650)" name="OR 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="(310,330)" name="OR Gate">
+ <a name="facing" val="west"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(190,190)" name="XOR Gate">
+ <comp lib="1" loc="(280,110)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="4" loc="(730,400)" name="ROM">
- <a name="addrWidth" val="3"/>
- <a name="dataWidth" val="6"/>
- <a name="contents">addr/data: 3 6
-8 3b 4 0 2 38 7 12
-</a>
+ <comp lib="0" loc="(530,280)" name="Pin">
+ <a name="output" val="true"/>
+ <a name="width" val="8"/>
+ <a name="label" val="OUTPUT"/>
+ <a name="labelloc" val="north"/>
</comp>
- <comp lib="1" loc="(240,580)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="0" loc="(550,100)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="b5"/>
</comp>
- <comp lib="1" loc="(560,300)" name="AND Gate">
- <a name="facing" val="north"/>
+ <comp lib="1" loc="(190,490)" name="XOR Gate">
<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,570)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="a5"/>
</comp>
- <comp lib="1" loc="(330,490)" name="AND Gate">
+ <comp lib="0" loc="(130,120)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="a0"/>
+ </comp>
+ <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="0" loc="(140,70)" name="Tunnel">
- <a name="facing" val="south"/>
- <a name="label" val="!A"/>
- </comp>
- <comp lib="0" loc="(390,460)" name="Tunnel">
- <a name="label" val="o4"/>
- </comp>
- <comp lib="6" loc="(736,75)" name="Text">
- <a name="text" val="Input A"/>
- </comp>
- <comp lib="0" loc="(680,60)" name="Tunnel">
+ <comp lib="0" loc="(680,90)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="a1"/>
- </comp>
- <comp lib="6" loc="(498,373)" name="Text">
- <a name="text" val="STATIC OPCODE"/>
- </comp>
- <comp lib="0" loc="(570,40)" name="Pin">
- <a name="facing" val="west"/>
- <a name="width" val="8"/>
- <a name="tristate" val="false"/>
+ <a name="label" val="a4"/>
</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"/>
</comp>
- <comp lib="1" loc="(240,310)" name="AND Gate">
+ <comp lib="0" loc="(330,850)" name="Constant">
+ <a name="facing" val="south"/>
+ <a name="value" val="0x0"/>
+ </comp>
+ <comp lib="1" loc="(190,670)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(130,720)" name="Tunnel">
+ <comp lib="0" loc="(130,210)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="b7"/>
+ <a name="label" val="a1"/>
</comp>
- <comp lib="0" loc="(550,60)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="b1"/>
+ <comp lib="1" loc="(240,220)" name="AND Gate">
+ <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="2" loc="(570,400)" name="Multiplexer">
<a name="width" val="3"/>
<a name="enable" val="false"/>
</comp>
- <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 lib="0" loc="(550,50)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="b0"/>
</comp>
- <comp lib="0" loc="(750,380)" name="Tunnel">
+ <comp lib="0" loc="(550,70)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="b2"/>
+ </comp>
+ <comp lib="0" loc="(780,380)" name="Tunnel">
<a name="facing" val="south"/>
- <a name="label" val="!B"/>
+ <a name="label" val="CI"/>
</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 lib="0" loc="(550,110)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="b6"/>
</comp>
- <comp lib="0" loc="(790,80)" name="Constant">
- <a name="width" val="8"/>
- <a name="value" val="0x0"/>
+ <comp lib="0" loc="(300,70)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="CI"/>
</comp>
- <comp lib="1" loc="(270,140)" name="AND Gate">
+ <comp lib="1" loc="(330,760)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
<a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(670,260)" name="Tunnel">
- <a name="label" val="o2"/>
- </comp>
- <comp lib="1" loc="(310,780)" name="OR Gate">
+ <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="0" loc="(130,660)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="a6"/>
+ </comp>
+ <comp lib="1" loc="(280,200)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
@@ -1142,358 +1150,399 @@
<a name="inputs" val="2"/>
<a name="negate1" val="true"/>
</comp>
- <comp lib="6" loc="(617,355)" name="Text">
- <a name="text" val="Opcodes"/>
- </comp>
- <comp lib="0" loc="(390,280)" name="Tunnel">
- <a name="label" val="o2"/>
- </comp>
- <comp lib="0" loc="(730,400)" name="Splitter">
- <a name="facing" val="north"/>
- <a name="fanout" val="6"/>
- <a name="incoming" val="6"/>
- <a name="appear" val="right"/>
- </comp>
- <comp lib="1" loc="(300,810)" name="OR Gate">
- <a name="facing" val="south"/>
+ <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="(670,240)" name="Tunnel">
- <a name="label" val="o0"/>
- </comp>
- <comp lib="0" loc="(770,380)" name="Tunnel">
- <a name="facing" val="south"/>
- <a name="label" val="CC"/>
+ <comp lib="1" loc="(240,760)" name="AND 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="(240,310)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(300,150)" name="AND 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"/>
- <a name="negate1" val="true"/>
</comp>
- <comp lib="1" loc="(190,550)" name="XOR Gate">
+ <comp lib="0" loc="(700,40)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="width" val="8"/>
+ <a name="tristate" val="false"/>
+ <a name="label" val="Input A"/>
+ <a name="labelloc" val="south"/>
+ </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"/>
</comp>
<comp lib="0" loc="(130,630)" name="Tunnel">
<a name="facing" val="east"/>
<a name="label" val="b6"/>
</comp>
- <comp lib="1" loc="(190,310)" name="XOR Gate">
+ <comp lib="1" loc="(300,270)" name="OR Gate">
+ <a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(130,450)" name="Tunnel">
+ <comp lib="0" loc="(780,180)" name="Constant">
+ <a name="width" val="8"/>
+ <a name="value" val="0x0"/>
+ </comp>
+ <comp lib="0" loc="(680,100)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="b4"/>
+ <a name="label" val="a5"/>
</comp>
- <comp lib="1" loc="(330,670)" name="AND Gate">
+ <comp lib="1" loc="(250,370)" name="NOR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="1" loc="(300,600)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
<a name="negate1" val="true"/>
</comp>
- <comp lib="3" loc="(930,70)" name="BitAdder"/>
- <comp lib="0" loc="(500,550)" name="Pin">
- <a name="width" val="4"/>
+ <comp lib="3" loc="(930,110)" name="Shifter"/>
+ <comp lib="0" loc="(740,380)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="!A"/>
+ </comp>
+ <comp lib="0" loc="(570,40)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="width" val="8"/>
<a name="tristate" val="false"/>
+ <a name="label" val="Input B"/>
+ <a name="labelloc" val="south"/>
</comp>
- <comp lib="0" loc="(320,890)" name="Pin">
- <a name="facing" val="north"/>
- <a name="output" val="true"/>
+ <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="0" loc="(490,460)" name="Pin">
<a name="tristate" val="false"/>
- <a name="labelloc" val="east"/>
+ <a name="label" val="STATE"/>
+ <a name="labelloc" val="south"/>
</comp>
- <comp lib="0" loc="(780,100)" name="Tunnel">
+ <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="(680,20)" name="Tunnel">
<a name="facing" val="east"/>
<a name="width" val="8"/>
<a name="label" val="A"/>
</comp>
- <comp lib="2" loc="(320,890)" name="Multiplexer">
+ <comp lib="1" loc="(340,190)" name="XNOR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="0" loc="(220,70)" 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="OR"/>
</comp>
- <comp lib="1" loc="(270,680)" name="AND Gate">
+ <comp lib="4" loc="(730,400)" name="ROM">
+ <a name="addrWidth" val="3"/>
+ <a name="dataWidth" val="6"/>
+ <a name="contents">addr/data: 3 6
+8 3b 4 0 2 38 7 12
+</a>
+ </comp>
+ <comp lib="1" loc="(330,490)" 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">
- <a name="facing" val="south"/>
+ <comp lib="0" loc="(710,520)" name="Splitter">
+ <a name="facing" val="west"/>
+ <a name="appear" val="center"/>
+ </comp>
+ <comp lib="1" loc="(190,730)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(340,190)" name="XNOR 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="(780,380)" name="Tunnel">
+ <comp lib="1" loc="(300,630)" name="OR Gate">
<a name="facing" val="south"/>
- <a name="label" val="CI"/>
- </comp>
- <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="(550,20)" name="Tunnel">
+ <comp lib="1" loc="(830,280)" name="OR Gate">
+ <a name="size" val="70"/>
+ <a name="inputs" val="8"/>
+ </comp>
+ <comp lib="0" loc="(390,100)" name="Tunnel">
+ <a name="label" val="o0"/>
+ </comp>
+ <comp lib="0" loc="(130,90)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="width" val="8"/>
- <a name="label" val="B"/>
+ <a name="label" val="b0"/>
</comp>
- <comp lib="1" loc="(330,220)" name="AND Gate">
+ <comp lib="1" loc="(310,690)" 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="(330,760)" name="AND Gate">
+ <comp lib="0" loc="(500,550)" name="Pin">
+ <a name="width" val="4"/>
+ <a name="tristate" val="false"/>
+ <a name="label" val="DYN OP"/>
+ <a name="labelloc" val="south"/>
+ </comp>
+ <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="0" loc="(670,250)" name="Tunnel">
- <a name="label" val="o1"/>
+ <comp lib="1" loc="(190,400)" name="XOR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(390,190)" name="Tunnel">
- <a name="label" val="o1"/>
+ <comp lib="0" loc="(550,80)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="b3"/>
</comp>
- <comp lib="0" loc="(770,200)" name="Tunnel">
+ <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="(130,300)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="width" val="8"/>
- <a name="label" val="B"/>
+ <a name="label" val="a2"/>
</comp>
- <comp lib="1" loc="(300,600)" name="AND Gate">
+ <comp lib="1" loc="(330,310)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
<a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(300,70)" name="Tunnel">
- <a name="facing" val="south"/>
- <a name="label" val="CI"/>
- </comp>
- <comp lib="0" loc="(680,50)" name="Tunnel">
+ <comp lib="0" loc="(130,360)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="a0"/>
+ <a name="label" val="b3"/>
</comp>
- <comp lib="0" loc="(260,70)" name="Tunnel">
- <a name="facing" val="south"/>
- <a name="label" val="CC"/>
- </comp>
- <comp lib="0" loc="(670,310)" name="Tunnel">
- <a name="label" val="o7"/>
- </comp>
- <comp lib="1" loc="(300,540)" name="OR Gate">
- <a name="facing" val="south"/>
+ <comp lib="1" loc="(240,490)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="6" loc="(602,74)" name="Text">
- <a name="text" val="Input B"/>
- </comp>
- <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="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="(240,490)" name="AND Gate">
+ <comp lib="1" loc="(270,500)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
+ <a name="negate1" val="true"/>
</comp>
- <comp lib="1" loc="(250,730)" name="NOR Gate">
+ <comp lib="1" loc="(250,460)" name="NOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(640,440)" name="Constant"/>
- <comp lib="6" loc="(355,906)" name="Text">
- <a name="text" val="FLAG"/>
+ <comp lib="1" loc="(300,180)" name="OR Gate">
+ <a name="facing" val="south"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(680,120)" name="Tunnel">
+ <comp lib="0" loc="(130,750)" name="Tunnel">
<a name="facing" val="east"/>
<a name="label" val="a7"/>
</comp>
- <comp lib="0" loc="(550,50)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="b0"/>
+ <comp lib="0" loc="(390,640)" name="Tunnel">
+ <a name="label" val="o6"/>
</comp>
- <comp lib="1" loc="(300,720)" name="OR Gate">
- <a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="0" loc="(670,260)" name="Tunnel">
+ <a name="label" val="o2"/>
</comp>
- <comp lib="0" loc="(790,380)" name="Tunnel">
+ <comp lib="1" loc="(300,720)" name="OR Gate">
<a name="facing" val="south"/>
- <a name="label" val="FC"/>
- </comp>
- <comp lib="0" loc="(680,110)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="a6"/>
- </comp>
- <comp lib="1" loc="(190,640)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(300,510)" name="AND Gate">
+ <comp lib="1" loc="(250,100)" name="NOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
- </comp>
- <comp lib="0" loc="(710,520)" name="Splitter">
- <a name="facing" val="west"/>
- <a name="appear" val="center"/>
</comp>
- <comp lib="1" loc="(330,400)" name="AND Gate">
+ <comp lib="1" loc="(270,410)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
<a name="negate1" val="true"/>
</comp>
- <comp lib="1" loc="(280,200)" name="OR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="0" loc="(490,460)" name="Pin">
- <a name="tristate" val="false"/>
- </comp>
- <comp lib="0" loc="(680,90)" name="Tunnel">
- <a name="facing" val="east"/>
- <a name="label" val="a4"/>
- </comp>
- <comp lib="1" loc="(240,130)" 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="1" loc="(300,180)" name="OR Gate">
- <a name="facing" val="south"/>
+ <comp lib="1" loc="(190,370)" name="XOR 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"/>
+ <comp lib="1" loc="(330,400)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
+ <a name="negate1" val="true"/>
</comp>
- <comp lib="1" loc="(280,380)" name="OR Gate">
+ <comp lib="1" loc="(300,330)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
+ <a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(130,270)" name="Tunnel">
+ <comp lib="0" loc="(680,70)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="b2"/>
- </comp>
- <comp lib="3" loc="(930,110)" name="Shifter"/>
- <comp lib="2" loc="(540,280)" name="Multiplexer">
- <a name="facing" val="west"/>
- <a name="width" val="8"/>
- <a name="enable" val="false"/>
+ <a name="label" val="a2"/>
</comp>
- <comp lib="3" loc="(1000,90)" name="BitAdder"/>
- <comp lib="0" loc="(220,70)" name="Tunnel">
- <a name="facing" val="south"/>
- <a name="label" val="OR"/>
+ <comp lib="3" loc="(1060,80)" name="Comparator">
+ <a name="width" val="4"/>
</comp>
- <comp lib="0" loc="(550,120)" name="Tunnel">
+ <comp lib="0" loc="(680,50)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="b7"/>
+ <a name="label" val="a0"/>
</comp>
- <comp lib="6" loc="(476,260)" name="Text">
- <a name="text" val="Output"/>
+ <comp lib="0" loc="(550,60)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="b1"/>
</comp>
- <comp lib="1" loc="(250,640)" name="NOR 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="(130,180)" name="Tunnel">
+ <comp lib="0" loc="(130,540)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="b1"/>
+ <a name="label" val="b5"/>
</comp>
- <comp lib="0" loc="(130,390)" name="Tunnel">
+ <comp lib="0" loc="(550,20)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="a3"/>
+ <a name="width" val="8"/>
+ <a name="label" val="B"/>
</comp>
- <comp lib="1" loc="(270,230)" name="AND Gate">
+ <comp lib="0" loc="(390,280)" name="Tunnel">
+ <a name="label" val="o2"/>
+ </comp>
+ <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="(190,580)" name="XOR Gate">
+ <comp lib="1" loc="(240,400)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(270,590)" name="AND Gate">
+ <comp lib="1" loc="(310,600)" name="OR Gate">
+ <a name="facing" val="west"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
</comp>
- <comp lib="1" loc="(300,420)" name="AND Gate">
+ <comp lib="0" loc="(670,240)" name="Tunnel">
+ <a name="label" val="o0"/>
+ </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="(340,640)" name="XNOR Gate">
+ <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,600)" name="OR Gate">
- <a name="facing" val="west"/>
+ <comp lib="1" loc="(300,540)" name="OR Gate">
+ <a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(830,280)" name="OR Gate">
- <a name="size" val="70"/>
- <a name="inputs" val="8"/>
- </comp>
- <comp lib="0" loc="(510,390)" name="Pin">
- <a name="width" val="3"/>
- <a name="tristate" val="false"/>
+ <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,90)" name="Tunnel">
<a name="facing" val="east"/>
<a name="label" val="b4"/>
</comp>
- <comp lib="1" loc="(280,740)" name="OR Gate">
+ <comp lib="1" loc="(280,560)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(300,360)" name="OR Gate">
- <a name="facing" val="south"/>
+ <comp lib="1" loc="(190,550)" name="XOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(180,70)" name="Tunnel">
- <a name="facing" val="south"/>
- <a name="label" val="!B"/>
+ <comp lib="1" loc="(250,640)" name="NOR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="3" loc="(1060,80)" name="Comparator">
- <a name="width" val="4"/>
+ <comp lib="1" loc="(280,290)" name="OR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(130,750)" name="Tunnel">
+ <comp lib="0" loc="(130,270)" name="Tunnel">
<a name="facing" val="east"/>
- <a name="label" val="a7"/>
+ <a name="label" val="b2"/>
</comp>
- <comp lib="1" loc="(310,240)" name="OR Gate">
- <a name="facing" val="west"/>
+ <comp lib="0" loc="(670,270)" name="Tunnel">
+ <a name="label" val="o3"/>
+ </comp>
+ <comp lib="0" loc="(760,380)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="OR"/>
+ </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>
+ <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="1" loc="(340,550)" name="XNOR Gate">
+ <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="1" loc="(240,670)" name="AND Gate">
+ <comp lib="1" loc="(280,470)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(700,40)" name="Splitter">
+ <comp lib="0" loc="(770,380)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="CC"/>
+ </comp>
+ <comp lib="1" loc="(340,550)" name="XNOR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="0" loc="(670,290)" name="Tunnel">
+ <a name="label" val="o5"/>
+ </comp>
+ <comp lib="0" loc="(710,470)" name="Splitter">
<a name="facing" val="west"/>
- <a name="fanout" val="8"/>
- <a name="incoming" val="8"/>
+ <a name="fanout" val="3"/>
+ <a name="incoming" val="3"/>
</comp>
- <comp lib="1" loc="(250,460)" name="NOR Gate">
+ <comp lib="0" loc="(790,380)" name="Tunnel">
+ <a name="facing" val="south"/>
+ <a name="label" val="FC"/>
+ </comp>
+ <comp lib="1" loc="(330,580)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ <a name="negate1" val="true"/>
+ </comp>
+ <comp lib="1" loc="(300,510)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
+ <a name="negate1" val="true"/>
+ </comp>
+ <comp lib="0" loc="(680,110)" name="Tunnel">
+ <a name="facing" val="east"/>
+ <a name="label" val="a6"/>
</comp>
</circuit>
<circuit name="GPR">
@@ -1592,25 +1641,16 @@
<wire from="(180,250)" to="(190,250)"/>
<wire from="(150,180)" to="(160,180)"/>
<wire from="(220,250)" to="(230,250)"/>
- <comp lib="1" loc="(170,230)" 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="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="0" loc="(130,200)" name="Pin">
- <a name="tristate" val="false"/>
- </comp>
- <comp lib="0" loc="(130,80)" name="Pin">
- <a name="width" val="2"/>
+ <comp lib="4" loc="(190,170)" name="Register"/>
+ <comp lib="0" loc="(250,120)" name="Pin">
+ <a name="facing" val="south"/>
<a name="tristate" val="false"/>
- <a name="label" val="Write"/>
</comp>
- <comp lib="1" loc="(270,260)" name="Controlled Buffer">
+ <comp lib="1" loc="(230,260)" name="Controlled Buffer">
<a name="facing" val="south"/>
<a name="width" val="8"/>
</comp>
@@ -1618,37 +1658,47 @@
<a name="facing" val="south"/>
<a name="width" val="8"/>
</comp>
- <comp lib="1" loc="(290,230)" name="Controlled Buffer">
+ <comp lib="0" loc="(250,340)" name="Pin">
<a name="facing" val="west"/>
- <a name="width" val="8"/>
- <a name="control" val="left"/>
+ <a name="width" val="2"/>
+ <a name="tristate" val="false"/>
+ <a name="label" val="Read A"/>
+ <a name="labelloc" val="east"/>
</comp>
<comp lib="4" loc="(230,170)" name="Register"/>
- <comp lib="0" loc="(140,340)" name="Pin">
+ <comp lib="0" loc="(130,80)" name="Pin">
<a name="width" val="2"/>
<a name="tristate" val="false"/>
- <a name="label" val="Read A"/>
+ <a name="label" val="Write"/>
</comp>
- <comp lib="2" loc="(150,340)" name="Decoder">
+ <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="0" loc="(140,260)" name="Pin">
+ <a name="output" val="true"/>
+ <a name="width" val="8"/>
+ <a name="label" val="Read A"/>
+ </comp>
+ <comp lib="0" loc="(350,280)" name="Pin">
<a name="facing" val="north"/>
- <a name="select" val="2"/>
- <a name="enable" val="false"/>
+ <a name="tristate" val="false"/>
+ <a name="label" val="Forward Input B"/>
+ <a name="labelloc" val="east"/>
</comp>
<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="1" loc="(250,230)" name="Controlled Buffer">
- <a name="facing" val="south"/>
+ <comp lib="4" loc="(270,170)" name="Register"/>
+ <comp lib="1" loc="(290,230)" name="Controlled Buffer">
+ <a name="facing" val="west"/>
<a name="width" val="8"/>
+ <a name="control" val="left"/>
</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>
- <comp lib="0" loc="(370,220)" name="Constant">
+ <comp lib="0" loc="(310,260)" name="Constant">
<a name="facing" val="west"/>
<a name="width" val="8"/>
<a name="value" val="0x0"/>
@@ -1656,54 +1706,53 @@
<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="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="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 lib="2" loc="(150,340)" name="Decoder">
+ <a name="facing" val="north"/>
+ <a name="select" val="2"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="1" loc="(210,230)" name="Controlled Buffer">
+ <comp lib="1" loc="(270,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="(250,120)" name="Pin">
- <a name="facing" val="south"/>
- <a name="tristate" val="false"/>
- </comp>
- <comp lib="0" loc="(310,260)" 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="2" loc="(330,230)" name="Multiplexer">
<a name="facing" val="west"/>
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="1" loc="(290,260)" name="Controlled Buffer">
- <a name="facing" val="west"/>
+ <comp lib="0" loc="(130,200)" name="Pin">
+ <a name="tristate" val="false"/>
+ </comp>
+ <comp lib="0" loc="(140,340)" name="Pin">
+ <a name="width" val="2"/>
+ <a name="tristate" val="false"/>
+ <a name="label" val="Read B"/>
+ </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>
+ <comp lib="1" loc="(210,230)" name="Controlled Buffer">
+ <a name="facing" val="south"/>
<a name="width" val="8"/>
- <a name="control" val="left"/>
</comp>
- <comp lib="4" loc="(190,170)" name="Register"/>
- <comp lib="1" loc="(230,260)" name="Controlled Buffer">
+ <comp lib="1" loc="(170,230)" name="Controlled Buffer">
<a name="facing" val="south"/>
<a name="width" val="8"/>
</comp>
- <comp lib="0" loc="(350,280)" name="Pin">
+ <comp lib="2" loc="(240,340)" name="Decoder">
<a name="facing" val="north"/>
- <a name="tristate" val="false"/>
- <a name="label" val="Forward Input A"/>
- <a name="labelloc" val="east"/>
+ <a name="selloc" val="tr"/>
+ <a name="select" val="2"/>
+ <a name="enable" val="false"/>
</comp>
</circuit>
<circuit name="ISD">
@@ -1717,32 +1766,32 @@
<circ-port height="8" pin="80,50" width="8" x="146" y="76"/>
<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,1740" width="10" x="65" y="45"/>
- <circ-port height="10" pin="620,1700" width="10" x="85" y="45"/>
- <circ-port height="10" pin="530,2000" width="10" x="45" y="95"/>
- <circ-port height="10" pin="760,1700" width="10" x="45" y="65"/>
- <circ-port height="10" pin="800,1700" width="10" x="45" y="55"/>
- <circ-port height="10" pin="840,1730" width="10" x="115" y="45"/>
- <circ-port height="10" pin="880,1730" width="10" x="105" y="45"/>
- <circ-port height="10" pin="920,1730" width="10" x="135" y="45"/>
- <circ-port height="10" pin="1160,1190" width="10" x="75" y="105"/>
- <circ-port height="10" pin="760,2000" width="10" x="45" y="75"/>
- <circ-port height="8" pin="660,2000" width="8" x="56" y="46"/>
- <circ-port height="8" pin="80,1760" width="8" x="46" y="106"/>
- <circ-port height="10" pin="330,1800" width="10" x="55" y="105"/>
- <circ-port height="8" pin="460,1810" width="8" x="46" y="86"/>
- <circ-port height="10" pin="600,1810" width="10" x="145" y="65"/>
- <circ-port height="10" pin="1210,1760" width="10" x="75" y="45"/>
- <circ-port height="10" pin="1160,1360" width="10" x="45" y="45"/>
- <circ-port height="10" pin="440,2000" width="10" x="145" y="85"/>
- <circ-port height="10" pin="830,2010" width="10" x="145" y="55"/>
+ <circ-port height="10" pin="440,1490" width="10" x="65" y="45"/>
+ <circ-port height="10" pin="620,1490" width="10" x="85" y="45"/>
+ <circ-port height="10" pin="660,2000" width="10" x="45" y="95"/>
+ <circ-port height="10" pin="760,1490" width="10" x="45" y="65"/>
+ <circ-port height="10" pin="800,1490" width="10" x="45" y="55"/>
+ <circ-port height="10" pin="840,1720" width="10" x="115" y="45"/>
+ <circ-port height="10" pin="880,1720" width="10" x="105" y="45"/>
+ <circ-port height="10" pin="920,1720" width="10" x="135" y="45"/>
+ <circ-port height="10" pin="1190,1190" width="10" x="75" y="105"/>
+ <circ-port height="10" pin="770,2000" width="10" x="45" y="75"/>
+ <circ-port height="8" pin="720,1930" width="8" x="56" y="46"/>
+ <circ-port height="8" pin="80,1780" width="8" x="46" y="106"/>
+ <circ-port height="10" pin="310,1800" width="10" x="55" y="105"/>
+ <circ-port height="8" pin="260,1730" width="8" x="46" y="86"/>
+ <circ-port height="10" pin="350,1730" width="10" x="145" y="65"/>
+ <circ-port height="10" pin="1220,1810" width="10" x="75" y="45"/>
+ <circ-port height="10" pin="1190,1360" width="10" x="45" y="45"/>
+ <circ-port height="10" pin="570,2000" width="10" x="145" y="85"/>
+ <circ-port height="10" pin="440,2000" width="10" x="145" y="55"/>
<circ-port height="10" pin="1190,1410" width="10" x="125" y="45"/>
<circ-anchor facing="east" height="6" width="6" x="47" y="57"/>
</appear>
- <wire from="(370,1720)" to="(430,1720)"/>
<wire from="(610,600)" to="(610,930)"/>
+ <wire from="(1180,1820)" to="(1180,1840)"/>
<wire from="(190,580)" to="(250,580)"/>
- <wire from="(530,1870)" to="(530,2000)"/>
+ <wire from="(1290,650)" to="(1290,670)"/>
<wire from="(470,470)" to="(470,480)"/>
<wire from="(170,960)" to="(280,960)"/>
<wire from="(520,1410)" to="(520,1630)"/>
@@ -1753,148 +1802,121 @@
<wire from="(240,430)" to="(240,520)"/>
<wire from="(220,90)" to="(220,180)"/>
<wire from="(240,970)" to="(280,970)"/>
- <wire from="(1000,910)" to="(1000,1760)"/>
<wire from="(340,1170)" to="(340,1260)"/>
<wire from="(240,340)" to="(270,340)"/>
- <wire from="(850,210)" to="(850,250)"/>
- <wire from="(1200,680)" to="(1210,680)"/>
<wire from="(180,1310)" to="(270,1310)"/>
- <wire from="(1270,750)" to="(1280,750)"/>
- <wire from="(1270,820)" to="(1270,940)"/>
+ <wire from="(730,1800)" to="(750,1800)"/>
+ <wire from="(210,1810)" to="(210,1850)"/>
+ <wire from="(910,1490)" to="(1040,1490)"/>
<wire from="(200,1020)" to="(280,1020)"/>
- <wire from="(670,1820)" to="(670,1940)"/>
+ <wire from="(880,1060)" to="(880,1500)"/>
<wire from="(450,60)" to="(450,300)"/>
+ <wire from="(660,1940)" to="(660,2000)"/>
<wire from="(650,60)" to="(650,570)"/>
<wire from="(190,1660)" to="(260,1660)"/>
- <wire from="(920,1240)" to="(920,1290)"/>
<wire from="(840,520)" to="(840,570)"/>
<wire from="(880,880)" to="(880,930)"/>
<wire from="(510,1100)" to="(630,1100)"/>
+ <wire from="(650,780)" to="(650,790)"/>
+ <wire from="(310,1790)" to="(370,1790)"/>
<wire from="(510,1280)" to="(510,1290)"/>
<wire from="(270,1630)" to="(520,1630)"/>
- <wire from="(890,60)" to="(890,70)"/>
+ <wire from="(910,1680)" to="(910,1690)"/>
<wire from="(210,730)" to="(270,730)"/>
- <wire from="(1220,710)" to="(1220,740)"/>
+ <wire from="(810,810)" to="(810,880)"/>
<wire from="(230,440)" to="(280,440)"/>
<wire from="(170,1410)" to="(280,1410)"/>
<wire from="(180,500)" to="(180,590)"/>
<wire from="(200,840)" to="(200,930)"/>
<wire from="(220,540)" to="(220,630)"/>
- <wire from="(910,1680)" to="(910,1700)"/>
+ <wire from="(450,420)" to="(450,1470)"/>
+ <wire from="(850,1810)" to="(850,1890)"/>
<wire from="(240,880)" to="(240,970)"/>
- <wire from="(210,1810)" to="(210,1910)"/>
- <wire from="(790,650)" to="(1070,650)"/>
- <wire from="(1070,680)" to="(1080,680)"/>
+ <wire from="(1400,690)" to="(1410,690)"/>
+ <wire from="(1370,660)" to="(1380,660)"/>
<wire from="(510,1190)" to="(670,1190)"/>
<wire from="(590,1270)" to="(750,1270)"/>
- <wire from="(330,1740)" to="(330,1780)"/>
- <wire from="(340,1870)" to="(350,1870)"/>
+ <wire from="(890,1530)" to="(890,1630)"/>
<wire from="(420,1950)" to="(430,1950)"/>
+ <wire from="(1150,740)" to="(1180,740)"/>
<wire from="(570,60)" to="(570,120)"/>
- <wire from="(380,1790)" to="(380,1840)"/>
<wire from="(690,1140)" to="(690,1200)"/>
- <wire from="(920,210)" to="(930,210)"/>
<wire from="(180,500)" to="(250,500)"/>
<wire from="(840,970)" to="(840,1020)"/>
- <wire from="(880,1330)" to="(880,1380)"/>
<wire from="(210,1620)" to="(210,1680)"/>
- <wire from="(1260,540)" to="(1280,540)"/>
+ <wire from="(1370,670)" to="(1370,690)"/>
<wire from="(930,870)" to="(930,880)"/>
<wire from="(1100,1770)" to="(1140,1770)"/>
- <wire from="(80,1760)" to="(200,1760)"/>
<wire from="(210,1360)" to="(210,1560)"/>
<wire from="(230,890)" to="(280,890)"/>
<wire from="(470,1370)" to="(470,1380)"/>
<wire from="(350,290)" to="(350,300)"/>
- <wire from="(760,1980)" to="(760,2000)"/>
+ <wire from="(310,1850)" to="(310,1860)"/>
<wire from="(200,1290)" to="(200,1380)"/>
<wire from="(180,950)" to="(180,1040)"/>
<wire from="(220,990)" to="(220,1080)"/>
+ <wire from="(900,1480)" to="(900,1500)"/>
+ <wire from="(910,1490)" to="(910,1510)"/>
<wire from="(230,260)" to="(270,260)"/>
<wire from="(190,940)" to="(280,940)"/>
- <wire from="(850,1110)" to="(850,1150)"/>
- <wire from="(1380,680)" to="(1380,730)"/>
- <wire from="(660,1750)" to="(660,1870)"/>
- <wire from="(150,1810)" to="(160,1810)"/>
- <wire from="(920,340)" to="(930,340)"/>
- <wire from="(880,300)" to="(890,300)"/>
- <wire from="(800,1820)" to="(810,1820)"/>
+ <wire from="(670,1690)" to="(680,1690)"/>
<wire from="(640,60)" to="(650,60)"/>
+ <wire from="(370,1470)" to="(430,1470)"/>
+ <wire from="(1070,820)" to="(1070,840)"/>
<wire from="(890,960)" to="(890,970)"/>
<wire from="(850,600)" to="(850,610)"/>
- <wire from="(1310,670)" to="(1310,890)"/>
<wire from="(230,1340)" to="(280,1340)"/>
<wire from="(660,1660)" to="(890,1660)"/>
- <wire from="(1000,910)" to="(1100,910)"/>
<wire from="(830,670)" to="(870,670)"/>
- <wire from="(960,1760)" to="(1000,1760)"/>
- <wire from="(1200,630)" to="(1200,640)"/>
<wire from="(190,130)" to="(190,220)"/>
<wire from="(230,170)" to="(230,260)"/>
<wire from="(210,370)" to="(250,370)"/>
- <wire from="(1310,540)" to="(1320,540)"/>
<wire from="(660,1230)" to="(660,1660)"/>
- <wire from="(750,690)" to="(750,800)"/>
<wire from="(220,1350)" to="(250,1350)"/>
+ <wire from="(1170,790)" to="(1240,790)"/>
<wire from="(170,420)" to="(250,420)"/>
- <wire from="(250,1720)" to="(260,1720)"/>
<wire from="(190,760)" to="(270,760)"/>
- <wire from="(970,1280)" to="(970,1850)"/>
- <wire from="(920,790)" to="(930,790)"/>
- <wire from="(920,1110)" to="(930,1110)"/>
- <wire from="(840,70)" to="(850,70)"/>
- <wire from="(840,390)" to="(850,390)"/>
<wire from="(790,660)" to="(800,660)"/>
- <wire from="(880,430)" to="(890,430)"/>
- <wire from="(670,1820)" to="(680,1820)"/>
- <wire from="(1220,760)" to="(1240,760)"/>
<wire from="(670,1190)" to="(670,1200)"/>
+ <wire from="(1320,560)" to="(1320,580)"/>
<wire from="(550,110)" to="(550,120)"/>
<wire from="(850,1050)" to="(850,1060)"/>
- <wire from="(550,1790)" to="(600,1790)"/>
<wire from="(1160,1550)" to="(1160,1640)"/>
<wire from="(1100,1710)" to="(1140,1710)"/>
- <wire from="(340,1850)" to="(970,1850)"/>
+ <wire from="(1180,740)" to="(1180,770)"/>
<wire from="(200,480)" to="(250,480)"/>
<wire from="(220,180)" to="(270,180)"/>
- <wire from="(200,1760)" to="(250,1760)"/>
- <wire from="(1120,680)" to="(1120,710)"/>
+ <wire from="(310,1790)" to="(310,1800)"/>
<wire from="(590,560)" to="(630,560)"/>
- <wire from="(820,1980)" to="(820,2010)"/>
- <wire from="(1000,720)" to="(1100,720)"/>
- <wire from="(650,690)" to="(750,690)"/>
+ <wire from="(800,680)" to="(800,710)"/>
+ <wire from="(970,1280)" to="(970,1880)"/>
<wire from="(170,240)" to="(170,330)"/>
+ <wire from="(210,1850)" to="(310,1850)"/>
<wire from="(210,280)" to="(210,370)"/>
<wire from="(230,620)" to="(230,710)"/>
<wire from="(190,580)" to="(190,670)"/>
- <wire from="(1130,620)" to="(1130,820)"/>
<wire from="(940,820)" to="(940,840)"/>
<wire from="(530,150)" to="(530,300)"/>
<wire from="(750,1270)" to="(750,1290)"/>
- <wire from="(1260,940)" to="(1270,940)"/>
+ <wire from="(1040,1490)" to="(1040,1730)"/>
+ <wire from="(1180,1820)" to="(1190,1820)"/>
<wire from="(610,1320)" to="(610,1430)"/>
- <wire from="(1100,1100)" to="(1110,1100)"/>
+ <wire from="(1270,760)" to="(1410,760)"/>
+ <wire from="(1070,820)" to="(1140,820)"/>
+ <wire from="(0,60)" to="(80,60)"/>
<wire from="(100,250)" to="(100,1900)"/>
<wire from="(1110,1730)" to="(1140,1730)"/>
- <wire from="(750,1270)" to="(950,1270)"/>
- <wire from="(920,1240)" to="(930,1240)"/>
+ <wire from="(1200,630)" to="(1200,730)"/>
<wire from="(330,920)" to="(590,920)"/>
- <wire from="(840,520)" to="(850,520)"/>
<wire from="(450,330)" to="(450,390)"/>
<wire from="(880,880)" to="(890,880)"/>
- <wire from="(880,1200)" to="(890,1200)"/>
- <wire from="(920,160)" to="(920,210)"/>
<wire from="(190,70)" to="(190,130)"/>
- <wire from="(620,1520)" to="(620,1700)"/>
- <wire from="(660,1750)" to="(800,1750)"/>
<wire from="(600,600)" to="(610,600)"/>
- <wire from="(680,1970)" to="(680,1980)"/>
<wire from="(590,920)" to="(590,930)"/>
<wire from="(220,1260)" to="(280,1260)"/>
+ <wire from="(1230,920)" to="(1230,940)"/>
<wire from="(330,1190)" to="(510,1190)"/>
- <wire from="(930,1380)" to="(930,1640)"/>
- <wire from="(450,420)" to="(450,1720)"/>
- <wire from="(980,840)" to="(1400,840)"/>
+ <wire from="(870,1400)" to="(1060,1400)"/>
<wire from="(170,690)" to="(170,780)"/>
<wire from="(50,150)" to="(90,150)"/>
<wire from="(210,730)" to="(210,820)"/>
@@ -1903,204 +1925,174 @@
<wire from="(860,550)" to="(860,570)"/>
<wire from="(910,920)" to="(910,940)"/>
<wire from="(900,910)" to="(900,930)"/>
- <wire from="(780,1810)" to="(780,1960)"/>
<wire from="(230,1070)" to="(230,1160)"/>
<wire from="(510,290)" to="(550,290)"/>
+ <wire from="(1130,620)" to="(1130,890)"/>
<wire from="(290,1570)" to="(830,1570)"/>
- <wire from="(1280,770)" to="(1290,770)"/>
- <wire from="(930,300)" to="(930,340)"/>
<wire from="(1130,620)" to="(1140,620)"/>
- <wire from="(800,680)" to="(800,780)"/>
<wire from="(690,1890)" to="(850,1890)"/>
<wire from="(700,1900)" to="(860,1900)"/>
+ <wire from="(190,1800)" to="(190,1840)"/>
<wire from="(180,1400)" to="(180,1640)"/>
<wire from="(840,970)" to="(850,970)"/>
- <wire from="(880,1330)" to="(890,1330)"/>
- <wire from="(840,1290)" to="(850,1290)"/>
<wire from="(920,610)" to="(920,660)"/>
<wire from="(1030,1790)" to="(1050,1790)"/>
<wire from="(520,330)" to="(530,330)"/>
- <wire from="(880,250)" to="(880,300)"/>
<wire from="(600,1050)" to="(610,1050)"/>
- <wire from="(430,1930)" to="(810,1930)"/>
+ <wire from="(1000,870)" to="(1080,870)"/>
+ <wire from="(1010,880)" to="(1090,880)"/>
+ <wire from="(930,1790)" to="(980,1790)"/>
<wire from="(190,400)" to="(250,400)"/>
- <wire from="(1120,710)" to="(1160,710)"/>
- <wire from="(860,1830)" to="(860,1900)"/>
<wire from="(470,290)" to="(470,300)"/>
<wire from="(200,1380)" to="(250,1380)"/>
<wire from="(170,780)" to="(280,780)"/>
- <wire from="(1300,670)" to="(1300,740)"/>
- <wire from="(880,700)" to="(880,730)"/>
- <wire from="(830,740)" to="(870,740)"/>
<wire from="(1170,540)" to="(1170,610)"/>
- <wire from="(210,1180)" to="(210,1270)"/>
<wire from="(240,250)" to="(240,340)"/>
+ <wire from="(210,1180)" to="(210,1270)"/>
+ <wire from="(860,1000)" to="(860,1020)"/>
<wire from="(170,1140)" to="(170,1230)"/>
<wire from="(870,1010)" to="(870,1030)"/>
- <wire from="(860,1000)" to="(860,1020)"/>
<wire from="(590,1010)" to="(830,1010)"/>
<wire from="(240,790)" to="(280,790)"/>
<wire from="(470,380)" to="(510,380)"/>
<wire from="(240,160)" to="(270,160)"/>
+ <wire from="(1370,670)" to="(1380,670)"/>
<wire from="(180,1130)" to="(270,1130)"/>
- <wire from="(890,390)" to="(890,430)"/>
<wire from="(660,1230)" to="(680,1230)"/>
+ <wire from="(1340,520)" to="(1340,580)"/>
+ <wire from="(1170,540)" to="(1240,540)"/>
<wire from="(1020,1420)" to="(1150,1420)"/>
+ <wire from="(1180,680)" to="(1180,740)"/>
<wire from="(160,1690)" to="(180,1690)"/>
+ <wire from="(1130,890)" to="(1260,890)"/>
<wire from="(440,60)" to="(450,60)"/>
<wire from="(770,1230)" to="(770,1290)"/>
<wire from="(480,420)" to="(490,420)"/>
<wire from="(200,1620)" to="(200,1670)"/>
<wire from="(200,840)" to="(280,840)"/>
<wire from="(1110,1670)" to="(1140,1670)"/>
- <wire from="(1020,1670)" to="(1020,1770)"/>
<wire from="(110,50)" to="(120,50)"/>
<wire from="(210,1180)" to="(280,1180)"/>
<wire from="(190,1480)" to="(190,1600)"/>
- <wire from="(920,1060)" to="(920,1110)"/>
- <wire from="(1340,520)" to="(1340,560)"/>
- <wire from="(840,340)" to="(840,390)"/>
- <wire from="(1260,550)" to="(1280,550)"/>
<wire from="(510,1100)" to="(510,1110)"/>
<wire from="(1100,1780)" to="(1140,1780)"/>
+ <wire from="(1150,650)" to="(1150,740)"/>
<wire from="(430,380)" to="(430,390)"/>
- <wire from="(440,1990)" to="(440,2000)"/>
<wire from="(170,1230)" to="(280,1230)"/>
<wire from="(790,830)" to="(830,830)"/>
<wire from="(180,320)" to="(180,410)"/>
- <wire from="(820,800)" to="(1120,800)"/>
<wire from="(220,360)" to="(220,450)"/>
<wire from="(200,660)" to="(200,750)"/>
<wire from="(240,700)" to="(240,790)"/>
<wire from="(240,1240)" to="(280,1240)"/>
- <wire from="(450,1870)" to="(450,1960)"/>
+ <wire from="(230,1870)" to="(270,1870)"/>
<wire from="(590,1180)" to="(590,1200)"/>
<wire from="(170,600)" to="(270,600)"/>
<wire from="(220,270)" to="(250,270)"/>
- <wire from="(850,480)" to="(850,520)"/>
- <wire from="(930,1200)" to="(930,1240)"/>
<wire from="(1120,1830)" to="(1130,1830)"/>
<wire from="(180,320)" to="(250,320)"/>
<wire from="(930,1640)" to="(940,1640)"/>
+ <wire from="(450,1940)" to="(580,1940)"/>
+ <wire from="(1020,1670)" to="(1020,1840)"/>
<wire from="(520,1230)" to="(530,1230)"/>
- <wire from="(880,1150)" to="(880,1200)"/>
- <wire from="(840,790)" to="(840,840)"/>
+ <wire from="(880,700)" to="(880,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="(370,1790)" to="(370,1930)"/>
<wire from="(230,710)" to="(280,710)"/>
+ <wire from="(350,1710)" to="(350,1730)"/>
+ <wire from="(790,650)" to="(1150,650)"/>
+ <wire from="(1260,890)" to="(1260,960)"/>
+ <wire from="(580,1940)" to="(580,1970)"/>
<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="(1280,800)" to="(1330,800)"/>
<wire from="(240,1150)" to="(240,1240)"/>
- <wire from="(1050,1630)" to="(1130,1630)"/>
- <wire from="(1060,820)" to="(1060,870)"/>
- <wire from="(1130,820)" to="(1270,820)"/>
- <wire from="(890,1290)" to="(890,1330)"/>
- <wire from="(1190,1780)" to="(1190,1900)"/>
- <wire from="(900,1920)" to="(1120,1920)"/>
- <wire from="(1130,890)" to="(1130,950)"/>
+ <wire from="(1300,670)" to="(1300,910)"/>
+ <wire from="(440,1800)" to="(440,1840)"/>
<wire from="(330,1170)" to="(340,1170)"/>
<wire from="(570,330)" to="(570,390)"/>
<wire from="(350,290)" to="(430,290)"/>
<wire from="(370,60)" to="(370,300)"/>
<wire from="(180,1660)" to="(190,1660)"/>
- <wire from="(920,160)" to="(930,160)"/>
- <wire from="(920,480)" to="(930,480)"/>
- <wire from="(980,840)" to="(980,1790)"/>
- <wire from="(880,120)" to="(890,120)"/>
- <wire from="(1180,730)" to="(1200,730)"/>
- <wire from="(840,1240)" to="(840,1290)"/>
- <wire from="(910,560)" to="(960,560)"/>
- <wire from="(1120,800)" to="(1120,1400)"/>
- <wire from="(1110,1410)" to="(1150,1410)"/>
+ <wire from="(1190,910)" to="(1300,910)"/>
+ <wire from="(1190,630)" to="(1190,720)"/>
<wire from="(230,1160)" to="(280,1160)"/>
- <wire from="(250,1740)" to="(250,1760)"/>
+ <wire from="(870,1490)" to="(910,1490)"/>
<wire from="(220,1260)" to="(220,1350)"/>
<wire from="(180,1220)" to="(180,1310)"/>
- <wire from="(1280,530)" to="(1280,540)"/>
+ <wire from="(450,1940)" to="(450,1970)"/>
+ <wire from="(200,1460)" to="(240,1460)"/>
<wire from="(360,1180)" to="(590,1180)"/>
- <wire from="(830,1870)" to="(830,1950)"/>
<wire from="(220,1580)" to="(220,1680)"/>
- <wire from="(960,560)" to="(960,1690)"/>
+ <wire from="(720,1370)" to="(1060,1370)"/>
+ <wire from="(210,1700)" to="(210,1740)"/>
<wire from="(810,1140)" to="(810,1430)"/>
- <wire from="(910,740)" to="(1040,740)"/>
<wire from="(170,240)" to="(250,240)"/>
<wire from="(530,420)" to="(530,480)"/>
+ <wire from="(190,1800)" to="(200,1800)"/>
<wire from="(920,610)" to="(930,610)"/>
- <wire from="(840,210)" to="(850,210)"/>
<wire from="(490,60)" to="(490,120)"/>
- <wire from="(880,250)" to="(890,250)"/>
+ <wire from="(710,1680)" to="(720,1680)"/>
+ <wire from="(720,1370)" to="(720,1680)"/>
<wire from="(870,1610)" to="(920,1610)"/>
<wire from="(180,70)" to="(180,140)"/>
<wire from="(1030,380)" to="(1030,1350)"/>
- <wire from="(1010,1890)" to="(1180,1890)"/>
- <wire from="(950,1110)" to="(1070,1110)"/>
<wire from="(850,870)" to="(850,880)"/>
- <wire from="(1240,810)" to="(1240,900)"/>
- <wire from="(140,1920)" to="(900,1920)"/>
<wire from="(200,300)" to="(250,300)"/>
- <wire from="(290,630)" to="(290,650)"/>
+ <wire from="(1290,670)" to="(1290,700)"/>
+ <wire from="(800,1460)" to="(800,1490)"/>
<wire from="(790,1420)" to="(1020,1420)"/>
<wire from="(190,400)" to="(190,490)"/>
<wire from="(230,440)" to="(230,530)"/>
<wire from="(210,100)" to="(210,190)"/>
+ <wire from="(830,1490)" to="(830,1510)"/>
<wire from="(210,640)" to="(250,640)"/>
<wire from="(180,680)" to="(280,680)"/>
- <wire from="(850,1830)" to="(850,1890)"/>
- <wire from="(320,1740)" to="(330,1740)"/>
+ <wire from="(1280,780)" to="(1290,780)"/>
+ <wire from="(0,20)" to="(0,60)"/>
+ <wire from="(980,750)" to="(1240,750)"/>
<wire from="(200,1620)" to="(210,1620)"/>
<wire from="(920,1060)" to="(930,1060)"/>
- <wire from="(920,1380)" to="(930,1380)"/>
- <wire from="(840,340)" to="(850,340)"/>
<wire from="(880,700)" to="(890,700)"/>
- <wire from="(1410,660)" to="(1410,770)"/>
- <wire from="(630,650)" to="(630,700)"/>
<wire from="(680,1140)" to="(690,1140)"/>
- <wire from="(1060,870)" to="(1080,870)"/>
+ <wire from="(750,1270)" to="(830,1270)"/>
<wire from="(560,60)" to="(570,60)"/>
<wire from="(630,1100)" to="(630,1110)"/>
<wire from="(630,1420)" to="(630,1430)"/>
<wire from="(550,380)" to="(550,390)"/>
- <wire from="(1200,710)" to="(1200,730)"/>
+ <wire from="(890,1680)" to="(890,1690)"/>
<wire from="(220,1080)" to="(280,1080)"/>
<wire from="(1100,1660)" to="(1140,1660)"/>
- <wire from="(240,1750)" to="(290,1750)"/>
+ <wire from="(1280,560)" to="(1320,560)"/>
<wire from="(220,450)" to="(270,450)"/>
- <wire from="(930,760)" to="(930,790)"/>
+ <wire from="(980,20)" to="(980,750)"/>
<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="(890,1680)" to="(890,1700)"/>
<wire from="(510,110)" to="(550,110)"/>
- <wire from="(930,120)" to="(930,160)"/>
- <wire from="(950,780)" to="(950,820)"/>
<wire from="(1020,1420)" to="(1020,1670)"/>
<wire from="(520,150)" to="(530,150)"/>
<wire from="(330,1370)" to="(470,1370)"/>
- <wire from="(190,1480)" to="(270,1480)"/>
<wire from="(530,1320)" to="(530,1380)"/>
- <wire from="(1120,800)" to="(1210,800)"/>
- <wire from="(860,1900)" to="(1000,1900)"/>
- <wire from="(840,790)" to="(850,790)"/>
- <wire from="(840,1110)" to="(850,1110)"/>
- <wire from="(880,1150)" to="(890,1150)"/>
- <wire from="(920,430)" to="(920,480)"/>
<wire from="(560,510)" to="(570,510)"/>
- <wire from="(880,70)" to="(880,120)"/>
+ <wire from="(1390,710)" to="(1390,730)"/>
+ <wire from="(630,650)" to="(630,790)"/>
<wire from="(190,220)" to="(250,220)"/>
<wire from="(1100,1790)" to="(1140,1790)"/>
+ <wire from="(1190,920)" to="(1230,920)"/>
+ <wire from="(80,1780)" to="(200,1780)"/>
<wire from="(470,110)" to="(470,120)"/>
<wire from="(200,1200)" to="(250,1200)"/>
<wire from="(510,470)" to="(510,480)"/>
<wire from="(220,900)" to="(270,900)"/>
<wire from="(830,560)" to="(870,560)"/>
<wire from="(870,920)" to="(910,920)"/>
- <wire from="(200,1760)" to="(200,1780)"/>
<wire from="(170,960)" to="(170,1050)"/>
<wire from="(210,1000)" to="(210,1090)"/>
<wire from="(860,820)" to="(860,840)"/>
@@ -2108,142 +2100,132 @@
<wire from="(190,1300)" to="(190,1390)"/>
<wire from="(240,70)" to="(240,160)"/>
<wire from="(240,610)" to="(280,610)"/>
- <wire from="(770,1880)" to="(770,1960)"/>
- <wire from="(1200,730)" to="(1380,730)"/>
+ <wire from="(1160,1760)" to="(1160,1810)"/>
<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="(1060,820)" to="(1070,820)"/>
<wire from="(100,1900)" to="(250,1900)"/>
<wire from="(90,1890)" to="(240,1890)"/>
- <wire from="(1000,640)" to="(1200,640)"/>
- <wire from="(450,1870)" to="(530,1870)"/>
+ <wire from="(920,1060)" to="(920,1500)"/>
<wire from="(290,1610)" to="(870,1610)"/>
- <wire from="(770,1810)" to="(780,1810)"/>
- <wire from="(840,1240)" to="(850,1240)"/>
<wire from="(920,880)" to="(920,930)"/>
- <wire from="(840,160)" to="(840,210)"/>
- <wire from="(1200,950)" to="(1220,950)"/>
<wire from="(880,520)" to="(880,570)"/>
<wire from="(600,1320)" to="(610,1320)"/>
- <wire from="(1110,750)" to="(1110,830)"/>
- <wire from="(930,60)" to="(930,70)"/>
+ <wire from="(1090,860)" to="(1090,880)"/>
<wire from="(1130,580)" to="(1130,600)"/>
- <wire from="(1050,200)" to="(1050,1630)"/>
<wire from="(190,670)" to="(250,670)"/>
<wire from="(1040,1860)" to="(1080,1860)"/>
+ <wire from="(920,1840)" to="(920,1910)"/>
+ <wire from="(1100,840)" to="(1330,840)"/>
+ <wire from="(1170,620)" to="(1170,650)"/>
<wire from="(170,1050)" to="(280,1050)"/>
<wire from="(270,1670)" to="(570,1670)"/>
- <wire from="(1170,1770)" to="(1170,1840)"/>
<wire from="(830,1010)" to="(870,1010)"/>
- <wire from="(1220,740)" to="(1280,740)"/>
<wire from="(180,140)" to="(180,230)"/>
<wire from="(830,920)" to="(830,940)"/>
<wire from="(240,520)" to="(240,610)"/>
<wire from="(200,480)" to="(200,570)"/>
<wire from="(220,180)" to="(220,270)"/>
<wire from="(240,1060)" to="(280,1060)"/>
+ <wire from="(260,1720)" to="(300,1720)"/>
<wire from="(430,290)" to="(470,290)"/>
<wire from="(250,1810)" to="(250,1900)"/>
- <wire from="(1000,640)" to="(1000,720)"/>
+ <wire from="(930,1530)" to="(930,1640)"/>
<wire from="(220,90)" to="(250,90)"/>
<wire from="(240,430)" to="(270,430)"/>
- <wire from="(850,300)" to="(850,340)"/>
- <wire from="(1110,680)" to="(1120,680)"/>
- <wire from="(640,600)" to="(640,700)"/>
+ <wire from="(720,1700)" to="(720,1930)"/>
<wire from="(440,330)" to="(450,330)"/>
- <wire from="(250,1740)" to="(260,1740)"/>
- <wire from="(650,730)" to="(650,1110)"/>
<wire from="(180,140)" to="(250,140)"/>
- <wire from="(920,1330)" to="(920,1380)"/>
- <wire from="(1180,1780)" to="(1180,1890)"/>
- <wire from="(800,1460)" to="(800,1700)"/>
- <wire from="(770,1880)" to="(1040,1880)"/>
+ <wire from="(1290,740)" to="(1290,780)"/>
+ <wire from="(1110,1630)" to="(1130,1630)"/>
+ <wire from="(1070,710)" to="(1070,820)"/>
<wire from="(880,970)" to="(880,1020)"/>
<wire from="(840,610)" to="(840,660)"/>
+ <wire from="(620,1480)" to="(620,1490)"/>
<wire from="(510,1370)" to="(510,1380)"/>
<wire from="(210,820)" to="(270,820)"/>
<wire from="(190,1120)" to="(250,1120)"/>
<wire from="(230,530)" to="(280,530)"/>
- <wire from="(850,1380)" to="(850,1700)"/>
- <wire from="(1070,650)" to="(1070,680)"/>
- <wire from="(1100,720)" to="(1390,720)"/>
<wire from="(370,330)" to="(370,480)"/>
- <wire from="(430,1930)" to="(430,1950)"/>
- <wire from="(1210,790)" to="(1210,800)"/>
+ <wire from="(200,1700)" to="(200,1720)"/>
<wire from="(180,590)" to="(180,680)"/>
<wire from="(220,630)" to="(220,720)"/>
<wire from="(200,930)" to="(200,1020)"/>
+ <wire from="(940,1480)" to="(940,1500)"/>
+ <wire from="(930,1790)" to="(930,1810)"/>
<wire from="(240,970)" to="(240,1060)"/>
<wire from="(390,380)" to="(430,380)"/>
<wire from="(220,540)" to="(250,540)"/>
- <wire from="(890,1110)" to="(890,1150)"/>
- <wire from="(720,1370)" to="(1070,1370)"/>
- <wire from="(720,1370)" to="(720,1980)"/>
<wire from="(1160,1700)" to="(1160,1760)"/>
<wire from="(400,420)" to="(410,420)"/>
- <wire from="(940,1100)" to="(1070,1100)"/>
+ <wire from="(1030,1350)" to="(1060,1350)"/>
<wire from="(360,60)" to="(370,60)"/>
+ <wire from="(1000,870)" to="(1000,1890)"/>
+ <wire from="(1010,880)" to="(1010,1900)"/>
<wire from="(330,740)" to="(730,740)"/>
- <wire from="(920,300)" to="(930,300)"/>
+ <wire from="(640,600)" to="(640,790)"/>
+ <wire from="(140,1910)" to="(920,1910)"/>
<wire from="(200,930)" to="(270,930)"/>
+ <wire from="(580,1940)" to="(660,1940)"/>
<wire from="(800,1140)" to="(810,1140)"/>
<wire from="(680,60)" to="(690,60)"/>
- <wire from="(840,1060)" to="(840,1110)"/>
<wire from="(930,960)" to="(930,970)"/>
+ <wire from="(1110,200)" to="(1110,1630)"/>
<wire from="(890,600)" to="(890,610)"/>
- <wire from="(1290,770)" to="(1330,770)"/>
+ <wire from="(310,1420)" to="(310,1690)"/>
<wire from="(230,980)" to="(280,980)"/>
<wire from="(170,70)" to="(170,150)"/>
<wire from="(200,1380)" to="(200,1460)"/>
- <wire from="(660,1970)" to="(660,2000)"/>
<wire from="(770,920)" to="(770,1200)"/>
<wire from="(870,670)" to="(910,670)"/>
<wire from="(340,1260)" to="(340,1470)"/>
<wire from="(220,1080)" to="(220,1170)"/>
<wire from="(180,1040)" to="(180,1130)"/>
<wire from="(290,1650)" to="(900,1650)"/>
- <wire from="(660,1870)" to="(830,1870)"/>
- <wire from="(1130,950)" to="(1130,1540)"/>
<wire from="(1220,610)" to="(1220,660)"/>
- <wire from="(1170,680)" to="(1180,680)"/>
+ <wire from="(1070,520)" to="(1340,520)"/>
<wire from="(190,1030)" to="(280,1030)"/>
- <wire from="(850,1200)" to="(850,1240)"/>
<wire from="(170,1410)" to="(170,1640)"/>
<wire from="(330,470)" to="(350,470)"/>
+ <wire from="(370,1790)" to="(390,1790)"/>
+ <wire from="(1070,520)" to="(1070,710)"/>
<wire from="(360,510)" to="(370,510)"/>
<wire from="(610,960)" to="(610,1020)"/>
- <wire from="(920,430)" to="(930,430)"/>
+ <wire from="(920,1910)" to="(1120,1910)"/>
<wire from="(760,1230)" to="(770,1230)"/>
- <wire from="(880,70)" to="(890,70)"/>
- <wire from="(880,390)" to="(890,390)"/>
- <wire from="(1010,900)" to="(1090,900)"/>
+ <wire from="(280,1470)" to="(340,1470)"/>
+ <wire from="(790,1090)" to="(910,1090)"/>
<wire from="(890,1050)" to="(890,1060)"/>
<wire from="(850,690)" to="(850,700)"/>
- <wire from="(810,1930)" to="(810,1940)"/>
<wire from="(230,70)" to="(230,80)"/>
<wire from="(200,120)" to="(250,120)"/>
+ <wire from="(1000,720)" to="(1190,720)"/>
+ <wire from="(1010,730)" to="(1200,730)"/>
<wire from="(190,220)" to="(190,310)"/>
<wire from="(230,260)" to="(230,350)"/>
+ <wire from="(730,1720)" to="(730,1800)"/>
<wire from="(570,150)" to="(570,300)"/>
<wire from="(1330,650)" to="(1340,650)"/>
- <wire from="(1160,1760)" to="(1170,1760)"/>
+ <wire from="(860,1900)" to="(1010,1900)"/>
+ <wire from="(1170,810)" to="(1180,810)"/>
+ <wire from="(850,1890)" to="(1000,1890)"/>
<wire from="(1160,1640)" to="(1160,1700)"/>
+ <wire from="(0,20)" to="(80,20)"/>
+ <wire from="(370,1930)" to="(380,1930)"/>
<wire from="(170,510)" to="(250,510)"/>
<wire from="(190,850)" to="(270,850)"/>
+ <wire from="(300,1860)" to="(310,1860)"/>
<wire from="(920,880)" to="(930,880)"/>
- <wire from="(920,1200)" to="(930,1200)"/>
<wire from="(330,560)" to="(590,560)"/>
- <wire from="(840,160)" to="(850,160)"/>
- <wire from="(840,480)" to="(850,480)"/>
- <wire from="(880,520)" to="(890,520)"/>
<wire from="(490,330)" to="(490,390)"/>
<wire from="(590,560)" to="(590,570)"/>
- <wire from="(330,1780)" to="(520,1780)"/>
+ <wire from="(750,1180)" to="(870,1180)"/>
<wire from="(1100,1800)" to="(1140,1800)"/>
+ <wire from="(790,1990)" to="(1040,1990)"/>
<wire from="(200,570)" to="(250,570)"/>
+ <wire from="(1190,720)" to="(1380,720)"/>
+ <wire from="(1200,730)" to="(1390,730)"/>
<wire from="(330,650)" to="(630,650)"/>
+ <wire from="(830,1410)" to="(1060,1410)"/>
<wire from="(170,330)" to="(170,420)"/>
<wire from="(210,370)" to="(210,460)"/>
<wire from="(230,710)" to="(230,800)"/>
@@ -2251,229 +2233,193 @@
<wire from="(900,550)" to="(900,570)"/>
<wire from="(910,560)" to="(910,580)"/>
<wire from="(940,910)" to="(940,930)"/>
- <wire from="(670,1190)" to="(1160,1190)"/>
- <wire from="(940,1100)" to="(940,1180)"/>
- <wire from="(960,1760)" to="(960,1870)"/>
+ <wire from="(1380,710)" to="(1380,720)"/>
+ <wire from="(1170,620)" to="(1180,620)"/>
+ <wire from="(710,1740)" to="(740,1740)"/>
<wire from="(150,1540)" to="(1130,1540)"/>
+ <wire from="(430,1800)" to="(440,1800)"/>
<wire from="(1100,1810)" to="(1130,1810)"/>
<wire from="(530,1140)" to="(530,1200)"/>
- <wire from="(920,1330)" to="(930,1330)"/>
- <wire from="(230,1800)" to="(230,1860)"/>
<wire from="(330,1010)" to="(590,1010)"/>
<wire from="(880,970)" to="(890,970)"/>
<wire from="(840,610)" to="(850,610)"/>
- <wire from="(880,1290)" to="(890,1290)"/>
- <wire from="(920,250)" to="(920,300)"/>
- <wire from="(640,730)" to="(650,730)"/>
<wire from="(560,330)" to="(570,330)"/>
<wire from="(1220,660)" to="(1240,660)"/>
+ <wire from="(230,1800)" to="(230,1870)"/>
<wire from="(590,1010)" to="(590,1020)"/>
+ <wire from="(190,1840)" to="(440,1840)"/>
<wire from="(330,1280)" to="(510,1280)"/>
- <wire from="(330,1790)" to="(380,1790)"/>
<wire from="(510,290)" to="(510,300)"/>
<wire from="(220,720)" to="(270,720)"/>
- <wire from="(920,700)" to="(920,730)"/>
<wire from="(590,1420)" to="(630,1420)"/>
<wire from="(240,1810)" to="(240,1890)"/>
- <wire from="(870,740)" to="(910,740)"/>
<wire from="(170,780)" to="(170,870)"/>
<wire from="(190,1120)" to="(190,1210)"/>
<wire from="(210,820)" to="(210,910)"/>
- <wire from="(1280,740)" to="(1280,750)"/>
<wire from="(910,1010)" to="(910,1030)"/>
<wire from="(900,1000)" to="(900,1020)"/>
+ <wire from="(1080,860)" to="(1080,870)"/>
<wire from="(210,1360)" to="(250,1360)"/>
<wire from="(230,1160)" to="(230,1250)"/>
<wire from="(1030,1850)" to="(1080,1850)"/>
<wire from="(510,380)" to="(550,380)"/>
<wire from="(180,1400)" to="(280,1400)"/>
- <wire from="(1400,660)" to="(1410,660)"/>
+ <wire from="(1120,1860)" to="(1120,1910)"/>
<wire from="(180,770)" to="(270,770)"/>
- <wire from="(1100,810)" to="(1240,810)"/>
- <wire from="(930,390)" to="(930,430)"/>
- <wire from="(310,1470)" to="(340,1470)"/>
- <wire from="(1120,1860)" to="(1120,1920)"/>
- <wire from="(950,1110)" to="(950,1270)"/>
+ <wire from="(660,1780)" to="(660,1940)"/>
+ <wire from="(1130,910)" to="(1130,970)"/>
+ <wire from="(310,1420)" to="(590,1420)"/>
<wire from="(480,60)" to="(490,60)"/>
<wire from="(250,1900)" to="(700,1900)"/>
<wire from="(240,1890)" to="(690,1890)"/>
<wire from="(840,1060)" to="(850,1060)"/>
- <wire from="(840,1380)" to="(850,1380)"/>
<wire from="(520,420)" to="(530,420)"/>
- <wire from="(880,340)" to="(880,390)"/>
- <wire from="(1120,1400)" to="(1120,1830)"/>
<wire from="(190,490)" to="(250,490)"/>
<wire from="(210,190)" to="(270,190)"/>
- <wire from="(1070,750)" to="(1110,750)"/>
- <wire from="(1030,1350)" to="(1070,1350)"/>
<wire from="(1100,1740)" to="(1140,1740)"/>
<wire from="(470,380)" to="(470,390)"/>
<wire from="(220,1170)" to="(270,1170)"/>
- <wire from="(1000,1870)" to="(1000,1900)"/>
- <wire from="(750,1180)" to="(940,1180)"/>
<wire from="(170,870)" to="(280,870)"/>
- <wire from="(850,760)" to="(850,790)"/>
<wire from="(830,830)" to="(870,830)"/>
- <wire from="(870,1610)" to="(870,1700)"/>
+ <wire from="(1170,830)" to="(1230,830)"/>
<wire from="(170,1230)" to="(170,1320)"/>
<wire from="(200,300)" to="(200,390)"/>
<wire from="(240,340)" to="(240,430)"/>
<wire from="(210,1270)" to="(210,1360)"/>
<wire from="(240,880)" to="(280,880)"/>
- <wire from="(600,1790)" to="(600,1810)"/>
+ <wire from="(650,780)" to="(820,780)"/>
+ <wire from="(870,1610)" to="(870,1690)"/>
<wire from="(470,470)" to="(510,470)"/>
<wire from="(340,1080)" to="(340,1170)"/>
- <wire from="(850,120)" to="(850,160)"/>
+ <wire from="(1170,1840)" to="(1180,1840)"/>
<wire from="(180,1220)" to="(270,1220)"/>
- <wire from="(890,480)" to="(890,520)"/>
+ <wire from="(1250,960)" to="(1260,960)"/>
+ <wire from="(1280,670)" to="(1290,670)"/>
<wire from="(510,1370)" to="(720,1370)"/>
- <wire from="(1330,600)" to="(1330,650)"/>
<wire from="(550,380)" to="(1030,380)"/>
+ <wire from="(1160,1810)" to="(1190,1810)"/>
+ <wire from="(800,710)" to="(800,770)"/>
<wire from="(480,510)" to="(490,510)"/>
- <wire from="(1300,740)" to="(1390,740)"/>
<wire from="(1020,1670)" to="(1050,1670)"/>
<wire from="(480,1410)" to="(480,1590)"/>
<wire from="(1100,1750)" to="(1130,1750)"/>
<wire from="(100,70)" to="(100,250)"/>
- <wire from="(740,1800)" to="(810,1800)"/>
+ <wire from="(830,1570)" to="(830,1690)"/>
<wire from="(210,1270)" to="(280,1270)"/>
- <wire from="(920,1150)" to="(920,1200)"/>
- <wire from="(840,430)" to="(840,480)"/>
- <wire from="(880,790)" to="(880,840)"/>
+ <wire from="(1180,770)" to="(1180,810)"/>
+ <wire from="(710,1700)" to="(720,1700)"/>
<wire from="(570,510)" to="(570,1670)"/>
- <wire from="(650,690)" to="(650,700)"/>
<wire from="(510,1190)" to="(510,1200)"/>
+ <wire from="(920,700)" to="(920,840)"/>
+ <wire from="(700,1760)" to="(700,1900)"/>
<wire from="(230,350)" to="(280,350)"/>
- <wire from="(830,1570)" to="(830,1700)"/>
<wire from="(170,1320)" to="(280,1320)"/>
<wire from="(180,410)" to="(180,500)"/>
<wire from="(220,450)" to="(220,540)"/>
<wire from="(200,750)" to="(200,840)"/>
<wire from="(1130,1810)" to="(1130,1820)"/>
<wire from="(240,1330)" to="(280,1330)"/>
- <wire from="(950,820)" to="(1060,820)"/>
<wire from="(590,1270)" to="(590,1290)"/>
- <wire from="(980,630)" to="(980,840)"/>
<wire from="(240,790)" to="(240,880)"/>
<wire from="(170,690)" to="(270,690)"/>
- <wire from="(1070,650)" to="(1150,650)"/>
+ <wire from="(730,740)" to="(730,1720)"/>
<wire from="(220,360)" to="(250,360)"/>
- <wire from="(930,1290)" to="(930,1330)"/>
- <wire from="(710,1820)" to="(730,1820)"/>
+ <wire from="(210,1700)" to="(300,1700)"/>
<wire from="(590,1180)" to="(750,1180)"/>
- <wire from="(1130,950)" to="(1160,950)"/>
+ <wire from="(840,1060)" to="(840,1500)"/>
<wire from="(610,60)" to="(610,570)"/>
<wire from="(180,410)" to="(250,410)"/>
<wire from="(880,1680)" to="(890,1680)"/>
<wire from="(200,750)" to="(270,750)"/>
- <wire from="(920,120)" to="(930,120)"/>
- <wire from="(1400,800)" to="(1400,840)"/>
<wire from="(520,1320)" to="(530,1320)"/>
<wire from="(790,830)" to="(790,880)"/>
- <wire from="(880,1240)" to="(880,1290)"/>
<wire from="(840,880)" to="(840,930)"/>
<wire from="(810,910)" to="(810,1110)"/>
- <wire from="(850,60)" to="(850,70)"/>
- <wire from="(1180,710)" to="(1180,730)"/>
+ <wire from="(370,510)" to="(370,1470)"/>
<wire from="(210,1090)" to="(270,1090)"/>
<wire from="(190,1390)" to="(250,1390)"/>
<wire from="(250,100)" to="(250,110)"/>
<wire from="(1100,1680)" to="(1140,1680)"/>
+ <wire from="(260,1790)" to="(310,1790)"/>
<wire from="(230,800)" to="(280,800)"/>
<wire from="(690,60)" to="(690,1110)"/>
- <wire from="(660,1660)" to="(660,1750)"/>
+ <wire from="(410,420)" to="(410,1460)"/>
<wire from="(220,70)" to="(220,90)"/>
<wire from="(200,1200)" to="(200,1290)"/>
<wire from="(180,860)" to="(180,950)"/>
<wire from="(220,900)" to="(220,990)"/>
<wire from="(230,170)" to="(270,170)"/>
+ <wire from="(1160,690)" to="(1160,700)"/>
<wire from="(240,1240)" to="(240,1330)"/>
- <wire from="(350,1910)" to="(1030,1910)"/>
<wire from="(470,1370)" to="(510,1370)"/>
+ <wire from="(1330,660)" to="(1340,660)"/>
<wire from="(330,290)" to="(350,290)"/>
- <wire from="(850,1890)" to="(1010,1890)"/>
- <wire from="(730,740)" to="(730,1800)"/>
- <wire from="(210,1910)" to="(350,1910)"/>
<wire from="(330,110)" to="(470,110)"/>
+ <wire from="(660,1660)" to="(660,1780)"/>
<wire from="(360,330)" to="(370,330)"/>
<wire from="(330,1260)" to="(340,1260)"/>
<wire from="(1100,1690)" to="(1130,1690)"/>
<wire from="(530,60)" to="(530,120)"/>
<wire from="(570,420)" to="(570,480)"/>
- <wire from="(230,1860)" to="(310,1860)"/>
- <wire from="(920,250)" to="(930,250)"/>
- <wire from="(880,210)" to="(890,210)"/>
- <wire from="(840,1330)" to="(840,1380)"/>
+ <wire from="(800,710)" to="(1070,710)"/>
<wire from="(330,380)" to="(390,380)"/>
<wire from="(890,870)" to="(890,880)"/>
- <wire from="(1240,900)" to="(1240,920)"/>
+ <wire from="(780,1790)" to="(840,1790)"/>
<wire from="(230,1250)" to="(280,1250)"/>
<wire from="(410,60)" to="(410,390)"/>
<wire from="(350,470)" to="(470,470)"/>
<wire from="(790,1090)" to="(790,1110)"/>
<wire from="(180,1310)" to="(180,1400)"/>
<wire from="(230,80)" to="(230,170)"/>
+ <wire from="(860,1480)" to="(860,1500)"/>
+ <wire from="(870,1490)" to="(870,1510)"/>
+ <wire from="(1000,720)" to="(1000,870)"/>
+ <wire from="(1010,730)" to="(1010,880)"/>
<wire from="(210,280)" to="(250,280)"/>
<wire from="(360,1270)" to="(590,1270)"/>
- <wire from="(1010,730)" to="(1010,900)"/>
+ <wire from="(1280,740)" to="(1290,740)"/>
<wire from="(1120,1860)" to="(1130,1860)"/>
- <wire from="(300,1690)" to="(960,1690)"/>
<wire from="(1130,1750)" to="(1130,1810)"/>
- <wire from="(800,780)" to="(800,840)"/>
- <wire from="(1000,720)" to="(1000,910)"/>
+ <wire from="(850,1530)" to="(850,1690)"/>
<wire from="(170,330)" to="(250,330)"/>
- <wire from="(1130,890)" to="(1160,890)"/>
<wire from="(610,1230)" to="(610,1290)"/>
<wire from="(920,700)" to="(930,700)"/>
- <wire from="(840,300)" to="(850,300)"/>
- <wire from="(880,340)" to="(890,340)"/>
- <wire from="(1060,520)" to="(1060,820)"/>
- <wire from="(820,800)" to="(820,850)"/>
+ <wire from="(430,1950)" to="(560,1950)"/>
<wire from="(600,60)" to="(610,60)"/>
<wire from="(670,1100)" to="(670,1110)"/>
- <wire from="(1100,890)" to="(1100,910)"/>
+ <wire from="(930,1680)" to="(930,1690)"/>
<wire from="(850,960)" to="(850,970)"/>
<wire from="(200,390)" to="(250,390)"/>
+ <wire from="(1090,1360)" to="(1190,1360)"/>
<wire from="(90,70)" to="(90,150)"/>
<wire from="(1020,1840)" to="(1080,1840)"/>
+ <wire from="(1210,1830)" to="(1210,1900)"/>
<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="(930,1680)" to="(930,1700)"/>
- <wire from="(300,1690)" to="(300,1720)"/>
- <wire from="(900,1840)" to="(900,1920)"/>
+ <wire from="(560,1950)" to="(560,1970)"/>
<wire from="(750,1180)" to="(750,1200)"/>
<wire from="(490,510)" to="(490,1380)"/>
<wire from="(1180,1410)" to="(1190,1410)"/>
- <wire from="(70,100)" to="(70,650)"/>
<wire from="(630,650)" to="(790,650)"/>
- <wire from="(1330,670)" to="(1330,770)"/>
- <wire from="(1090,730)" to="(1180,730)"/>
- <wire from="(1110,750)" to="(1200,750)"/>
- <wire from="(920,1150)" to="(930,1150)"/>
- <wire from="(200,1460)" to="(270,1460)"/>
- <wire from="(840,430)" to="(850,430)"/>
- <wire from="(880,790)" to="(890,790)"/>
- <wire from="(880,1110)" to="(890,1110)"/>
- <wire from="(820,2010)" to="(830,2010)"/>
+ <wire from="(1120,1410)" to="(1120,1830)"/>
<wire from="(880,1630)" to="(880,1680)"/>
+ <wire from="(1330,800)" to="(1330,840)"/>
<wire from="(560,150)" to="(570,150)"/>
- <wire from="(920,70)" to="(920,120)"/>
<wire from="(550,470)" to="(550,480)"/>
- <wire from="(1100,700)" to="(1100,720)"/>
<wire from="(330,1100)" to="(510,1100)"/>
<wire from="(120,40)" to="(120,50)"/>
- <wire from="(290,630)" to="(980,630)"/>
<wire from="(510,110)" to="(510,120)"/>
<wire from="(430,1950)" to="(430,1960)"/>
<wire from="(200,1460)" to="(200,1600)"/>
<wire from="(490,150)" to="(490,300)"/>
<wire from="(220,1350)" to="(220,1560)"/>
- <wire from="(1010,900)" to="(1010,1890)"/>
<wire from="(870,560)" to="(910,560)"/>
- <wire from="(1020,1770)" to="(1020,1840)"/>
+ <wire from="(1090,1400)" to="(1150,1400)"/>
+ <wire from="(1330,670)" to="(1330,800)"/>
<wire from="(170,600)" to="(170,690)"/>
+ <wire from="(110,20)" to="(980,20)"/>
<wire from="(210,640)" to="(210,730)"/>
<wire from="(190,940)" to="(190,1030)"/>
<wire from="(230,980)" to="(230,1070)"/>
@@ -2481,32 +2427,30 @@
<wire from="(900,820)" to="(900,840)"/>
<wire from="(910,1790)" to="(910,1810)"/>
<wire from="(240,250)" to="(280,250)"/>
+ <wire from="(1380,660)" to="(1380,670)"/>
<wire from="(1210,610)" to="(1220,610)"/>
+ <wire from="(910,1390)" to="(1060,1390)"/>
<wire from="(180,590)" to="(270,590)"/>
- <wire from="(410,1710)" to="(440,1710)"/>
- <wire from="(930,210)" to="(930,250)"/>
+ <wire from="(730,1720)" to="(750,1720)"/>
<wire from="(630,1420)" to="(790,1420)"/>
+ <wire from="(1130,970)" to="(1130,1540)"/>
<wire from="(1130,1690)" to="(1130,1750)"/>
- <wire from="(350,1870)" to="(350,1910)"/>
- <wire from="(770,1320)" to="(770,1700)"/>
+ <wire from="(1160,700)" to="(1290,700)"/>
<wire from="(330,830)" to="(790,830)"/>
- <wire from="(890,1380)" to="(890,1630)"/>
- <wire from="(880,1240)" to="(890,1240)"/>
+ <wire from="(330,200)" to="(1110,200)"/>
<wire from="(840,880)" to="(850,880)"/>
- <wire from="(840,1200)" to="(850,1200)"/>
<wire from="(920,520)" to="(920,570)"/>
<wire from="(1220,610)" to="(1240,610)"/>
<wire from="(600,960)" to="(610,960)"/>
- <wire from="(880,160)" to="(880,210)"/>
- <wire from="(370,510)" to="(370,1720)"/>
<wire from="(190,310)" to="(250,310)"/>
- <wire from="(410,420)" to="(410,1710)"/>
+ <wire from="(1230,830)" to="(1230,920)"/>
+ <wire from="(690,1760)" to="(690,1890)"/>
<wire from="(200,1290)" to="(250,1290)"/>
<wire from="(220,990)" to="(270,990)"/>
<wire from="(210,1620)" to="(260,1620)"/>
<wire from="(90,150)" to="(90,1890)"/>
- <wire from="(1040,740)" to="(1040,1730)"/>
<wire from="(160,1550)" to="(160,1690)"/>
+ <wire from="(1410,690)" to="(1410,760)"/>
<wire from="(870,1010)" to="(910,1010)"/>
<wire from="(830,560)" to="(830,580)"/>
<wire from="(870,920)" to="(870,940)"/>
@@ -2517,32 +2461,25 @@
<wire from="(190,1390)" to="(190,1480)"/>
<wire from="(240,700)" to="(280,700)"/>
<wire from="(470,290)" to="(510,290)"/>
- <wire from="(530,1770)" to="(1020,1770)"/>
<wire from="(240,70)" to="(270,70)"/>
<wire from="(150,1540)" to="(150,1700)"/>
<wire from="(180,1040)" to="(270,1040)"/>
- <wire from="(890,300)" to="(890,340)"/>
<wire from="(920,1610)" to="(920,1650)"/>
<wire from="(650,1140)" to="(650,1430)"/>
+ <wire from="(650,820)" to="(650,1110)"/>
<wire from="(270,1590)" to="(480,1590)"/>
<wire from="(480,330)" to="(490,330)"/>
- <wire from="(910,1790)" to="(980,1790)"/>
- <wire from="(140,70)" to="(140,1920)"/>
- <wire from="(1060,520)" to="(1340,520)"/>
- <wire from="(840,1330)" to="(850,1330)"/>
+ <wire from="(140,70)" to="(140,1910)"/>
+ <wire from="(790,1730)" to="(790,1980)"/>
+ <wire from="(1290,700)" to="(1290,740)"/>
<wire from="(920,970)" to="(920,1020)"/>
- <wire from="(840,250)" to="(840,300)"/>
+ <wire from="(1130,970)" to="(1150,970)"/>
<wire from="(880,610)" to="(880,660)"/>
- <wire from="(1200,890)" to="(1310,890)"/>
- <wire from="(1040,1860)" to="(1040,1880)"/>
<wire from="(790,650)" to="(790,660)"/>
<wire from="(210,460)" to="(270,460)"/>
- <wire from="(1320,540)" to="(1320,570)"/>
<wire from="(430,290)" to="(430,300)"/>
- <wire from="(330,1790)" to="(330,1800)"/>
+ <wire from="(260,1720)" to="(260,1730)"/>
<wire from="(170,1140)" to="(280,1140)"/>
- <wire from="(840,700)" to="(840,730)"/>
- <wire from="(960,1870)" to="(1000,1870)"/>
<wire from="(180,230)" to="(180,320)"/>
<wire from="(830,1010)" to="(830,1030)"/>
<wire from="(200,570)" to="(200,660)"/>
@@ -2551,133 +2488,107 @@
<wire from="(240,1150)" to="(280,1150)"/>
<wire from="(210,70)" to="(210,100)"/>
<wire from="(430,380)" to="(470,380)"/>
- <wire from="(640,1460)" to="(640,1500)"/>
- <wire from="(850,390)" to="(850,430)"/>
<wire from="(1280,620)" to="(1290,620)"/>
- <wire from="(930,1110)" to="(930,1150)"/>
- <wire from="(1030,1850)" to="(1030,1910)"/>
+ <wire from="(760,1320)" to="(760,1490)"/>
+ <wire from="(300,1880)" to="(970,1880)"/>
<wire from="(1130,1630)" to="(1130,1690)"/>
<wire from="(400,60)" to="(410,60)"/>
<wire from="(440,420)" to="(450,420)"/>
<wire from="(1130,580)" to="(1290,580)"/>
- <wire from="(750,800)" to="(820,800)"/>
- <wire from="(1120,1400)" to="(1150,1400)"/>
<wire from="(200,120)" to="(200,300)"/>
- <wire from="(700,1840)" to="(700,1900)"/>
<wire from="(180,230)" to="(250,230)"/>
- <wire from="(760,1700)" to="(770,1700)"/>
<wire from="(520,1140)" to="(530,1140)"/>
- <wire from="(880,1060)" to="(880,1110)"/>
- <wire from="(1010,730)" to="(1090,730)"/>
- <wire from="(460,1800)" to="(520,1800)"/>
<wire from="(930,600)" to="(930,610)"/>
<wire from="(790,1420)" to="(790,1430)"/>
<wire from="(190,1210)" to="(250,1210)"/>
<wire from="(210,910)" to="(270,910)"/>
- <wire from="(1300,650)" to="(1300,670)"/>
- <wire from="(70,60)" to="(70,70)"/>
- <wire from="(1390,740)" to="(1390,770)"/>
<wire from="(390,380)" to="(390,390)"/>
<wire from="(230,620)" to="(280,620)"/>
- <wire from="(440,1710)" to="(440,1720)"/>
<wire from="(1040,1730)" to="(1040,1860)"/>
<wire from="(180,680)" to="(180,770)"/>
<wire from="(220,720)" to="(220,810)"/>
<wire from="(200,1020)" to="(200,1110)"/>
<wire from="(160,1550)" to="(1160,1550)"/>
<wire from="(220,1580)" to="(260,1580)"/>
- <wire from="(380,1840)" to="(380,1930)"/>
<wire from="(240,1060)" to="(240,1150)"/>
<wire from="(220,630)" to="(250,630)"/>
- <wire from="(890,1200)" to="(890,1240)"/>
+ <wire from="(410,1460)" to="(440,1460)"/>
<wire from="(1130,600)" to="(1140,600)"/>
+ <wire from="(330,1710)" to="(350,1710)"/>
+ <wire from="(660,1780)" to="(750,1780)"/>
+ <wire from="(1200,1830)" to="(1200,1890)"/>
<wire from="(330,1080)" to="(340,1080)"/>
- <wire from="(330,200)" to="(1050,200)"/>
- <wire from="(920,390)" to="(930,390)"/>
- <wire from="(930,1680)" to="(940,1680)"/>
<wire from="(880,1630)" to="(890,1630)"/>
+ <wire from="(930,1680)" to="(940,1680)"/>
<wire from="(800,910)" to="(810,910)"/>
- <wire from="(920,70)" to="(930,70)"/>
+ <wire from="(670,1740)" to="(680,1740)"/>
<wire from="(1110,1850)" to="(1130,1850)"/>
- <wire from="(730,1800)" to="(740,1800)"/>
- <wire from="(840,1150)" to="(840,1200)"/>
- <wire from="(1280,740)" to="(1300,740)"/>
+ <wire from="(1130,910)" to="(1150,910)"/>
+ <wire from="(1190,970)" to="(1210,970)"/>
+ <wire from="(840,700)" to="(840,840)"/>
<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="(800,1750)" to="(800,1820)"/>
<wire from="(50,250)" to="(100,250)"/>
<wire from="(350,470)" to="(350,480)"/>
+ <wire from="(1040,1860)" to="(1040,1990)"/>
+ <wire from="(860,1810)" to="(860,1900)"/>
<wire from="(220,1170)" to="(220,1260)"/>
<wire from="(180,1130)" to="(180,1220)"/>
- <wire from="(150,1840)" to="(380,1840)"/>
- <wire from="(1090,890)" to="(1090,900)"/>
<wire from="(210,100)" to="(250,100)"/>
- <wire from="(200,1700)" to="(230,1700)"/>
- <wire from="(850,1290)" to="(850,1330)"/>
- <wire from="(1200,1760)" to="(1210,1760)"/>
+ <wire from="(1170,770)" to="(1180,770)"/>
<wire from="(600,1460)" to="(630,1460)"/>
<wire from="(1030,1790)" to="(1030,1850)"/>
<wire from="(170,150)" to="(250,150)"/>
<wire from="(1110,1650)" to="(1140,1650)"/>
<wire from="(530,330)" to="(530,390)"/>
- <wire from="(530,1870)" to="(660,1870)"/>
<wire from="(120,40)" to="(130,40)"/>
- <wire from="(920,520)" to="(930,520)"/>
- <wire from="(840,120)" to="(850,120)"/>
- <wire from="(760,1320)" to="(770,1320)"/>
- <wire from="(880,160)" to="(890,160)"/>
- <wire from="(880,480)" to="(890,480)"/>
<wire from="(630,560)" to="(630,570)"/>
- <wire from="(1200,900)" to="(1240,900)"/>
- <wire from="(1090,700)" to="(1090,730)"/>
- <wire from="(680,1980)" to="(720,1980)"/>
+ <wire from="(1330,620)" to="(1330,650)"/>
+ <wire from="(190,1480)" to="(240,1480)"/>
<wire from="(360,1090)" to="(790,1090)"/>
+ <wire from="(830,1490)" to="(870,1490)"/>
+ <wire from="(820,780)" to="(1120,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="(1170,540)" to="(1220,540)"/>
- <wire from="(790,1090)" to="(1070,1090)"/>
+ <wire from="(980,750)" to="(980,1790)"/>
<wire from="(1040,1730)" to="(1050,1730)"/>
<wire from="(1130,1820)" to="(1140,1820)"/>
- <wire from="(1100,830)" to="(1110,830)"/>
+ <wire from="(1010,1900)" to="(1210,1900)"/>
+ <wire from="(1000,1890)" to="(1200,1890)"/>
<wire from="(630,560)" to="(830,560)"/>
- <wire from="(1290,770)" to="(1290,870)"/>
<wire from="(920,970)" to="(930,970)"/>
- <wire from="(920,1290)" to="(930,1290)"/>
- <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="(1390,680)" to="(1390,720)"/>
+ <wire from="(830,1270)" to="(830,1410)"/>
<wire from="(550,290)" to="(550,300)"/>
<wire from="(200,660)" to="(250,660)"/>
- <wire from="(460,1800)" to="(460,1810)"/>
- <wire from="(1000,1900)" to="(1190,1900)"/>
+ <wire from="(440,1460)" to="(440,1470)"/>
+ <wire from="(870,1180)" to="(870,1400)"/>
<wire from="(630,1100)" to="(670,1100)"/>
- <wire from="(1070,680)" to="(1070,750)"/>
<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="(940,1000)" to="(940,1020)"/>
- <wire from="(150,1810)" to="(150,1840)"/>
<wire from="(610,1050)" to="(610,1200)"/>
- <wire from="(800,780)" to="(950,780)"/>
+ <wire from="(910,1090)" to="(910,1390)"/>
<wire from="(940,1640)" to="(940,1680)"/>
<wire from="(520,60)" to="(530,60)"/>
<wire from="(530,1230)" to="(530,1290)"/>
+ <wire from="(310,1850)" to="(1030,1850)"/>
+ <wire from="(670,1690)" to="(670,1740)"/>
<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="(640,820)" to="(650,820)"/>
<wire from="(560,420)" to="(570,420)"/>
- <wire from="(260,1790)" to="(330,1790)"/>
<wire from="(590,1420)" to="(590,1430)"/>
<wire from="(190,130)" to="(250,130)"/>
<wire from="(190,1660)" to="(190,1670)"/>
@@ -2686,318 +2597,299 @@
<wire from="(510,380)" to="(510,390)"/>
<wire from="(150,1700)" to="(200,1700)"/>
<wire from="(530,510)" to="(530,1110)"/>
- <wire from="(890,760)" to="(890,790)"/>
<wire from="(870,830)" to="(910,830)"/>
- <wire from="(1100,1360)" to="(1160,1360)"/>
+ <wire from="(870,1790)" to="(910,1790)"/>
<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="(230,1700)" to="(230,1730)"/>
<wire from="(240,520)" to="(280,520)"/>
- <wire from="(1110,870)" to="(1290,870)"/>
<wire from="(230,1250)" to="(230,1340)"/>
<wire from="(470,110)" to="(510,110)"/>
<wire from="(510,470)" to="(550,470)"/>
- <wire from="(870,1810)" to="(890,1810)"/>
- <wire from="(630,1460)" to="(630,1500)"/>
- <wire from="(1210,560)" to="(1220,560)"/>
<wire from="(180,860)" to="(270,860)"/>
- <wire from="(890,120)" to="(890,160)"/>
- <wire from="(1300,650)" to="(1310,650)"/>
- <wire from="(930,480)" to="(930,520)"/>
- <wire from="(1110,1100)" to="(1110,1410)"/>
+ <wire from="(1120,780)" to="(1120,1410)"/>
<wire from="(200,70)" to="(200,120)"/>
<wire from="(480,150)" to="(490,150)"/>
+ <wire from="(670,1190)" to="(1190,1190)"/>
<wire from="(1110,1720)" to="(1140,1720)"/>
- <wire from="(70,60)" to="(80,60)"/>
- <wire from="(690,1840)" to="(690,1890)"/>
- <wire from="(840,1150)" to="(850,1150)"/>
- <wire from="(920,790)" to="(920,840)"/>
+ <wire from="(1120,1410)" to="(1150,1410)"/>
+ <wire from="(780,1730)" to="(790,1730)"/>
<wire from="(510,1280)" to="(970,1280)"/>
- <wire from="(840,70)" to="(840,120)"/>
+ <wire from="(1120,780)" to="(1140,780)"/>
<wire from="(520,510)" to="(530,510)"/>
- <wire from="(880,430)" to="(880,480)"/>
<wire from="(600,1230)" to="(610,1230)"/>
- <comp lib="1" loc="(1210,790)" name="OR Gate">
+ <comp lib="0" loc="(900,820)" name="Constant">
<a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <a name="width" val="2"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="0" loc="(280,1300)" name="Constant"/>
- <comp lib="1" loc="(600,1320)" name="OR Gate">
+ <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="(860,1480)" name="Constant">
+ <a name="facing" val="south"/>
+ <a name="width" 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="(1140,780)" name="OR Gate">
+ <a name="facing" val="west"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(280,240)" name="Constant"/>
- <comp lib="4" loc="(1110,680)" name="Register">
- <a name="width" val="1"/>
+ <comp lib="2" loc="(330,1710)" name="Multiplexer">
+ <a name="selloc" val="tr"/>
+ <a name="width" val="8"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(640,60)" name="Constant">
+ <comp lib="1" loc="(640,820)" name="OR Gate">
+ <a name="facing" val="south"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="3"/>
+ </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="0" loc="(1160,910)" name="Constant">
- <a name="width" val="4"/>
+ <comp lib="0" loc="(900,1000)" name="Constant">
+ <a name="facing" val="south"/>
+ <a name="width" val="2"/>
<a name="value" val="0x0"/>
</comp>
- <comp lib="1" loc="(330,740)" name="AND Gate">
- <a name="inputs" val="8"/>
- <a name="label" val="JMP"/>
+ <comp lib="1" loc="(1370,660)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="3"/>
<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="0" loc="(850,60)" name="Constant">
+ <comp lib="2" loc="(930,690)" name="Multiplexer">
<a name="facing" val="south"/>
<a name="width" val="2"/>
- <a name="value" val="0x0"/>
- </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"/>
+ <a name="disabled" val="0"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(280,570)" name="Constant"/>
<comp lib="0" loc="(50,250)" name="Pin">
<a name="tristate" val="false"/>
<a name="label" val="RST"/>
</comp>
- <comp lib="0" loc="(860,730)" name="Constant">
+ <comp lib="1" loc="(570,2000)" name="AND 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,270)" name="Constant"/>
- <comp lib="0" loc="(330,1800)" name="Pin">
+ <comp lib="0" loc="(570,2000)" name="Pin">
<a name="facing" val="north"/>
<a name="output" val="true"/>
- <a name="width" val="8"/>
- <a name="label" val="MEM POINTER"/>
+ <a name="label" val="Memory Select"/>
<a name="labelloc" val="south"/>
</comp>
- <comp lib="1" loc="(560,150)" name="OR Gate">
+ <comp lib="0" loc="(920,520)" name="Constant">
<a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <a name="width" val="2"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="1" loc="(330,1010)" name="AND Gate">
+ <comp lib="1" loc="(1050,1730)" name="AND Gate">
+ <a name="facing" val="west"/>
+ <a name="label" val="go"/>
+ <a name="negate1" val="true"/>
+ <a name="negate2" val="true"/>
+ </comp>
+ <comp lib="1" loc="(330,1190)" name="AND Gate">
<a name="inputs" val="8"/>
- <a name="label" val="PEEK"/>
+ <a name="label" val="SB"/>
<a name="negate2" val="true"/>
- <a name="negate3" val="true"/>
<a name="negate6" val="true"/>
</comp>
- <comp lib="3" loc="(1260,940)" name="Adder">
+ <comp lib="0" loc="(1210,950)" name="Constant">
<a name="width" val="5"/>
- </comp>
- <comp lib="0" loc="(280,550)" name="Constant"/>
- <comp lib="1" loc="(1300,670)" name="NOT Gate">
- <a name="size" val="20"/>
- </comp>
- <comp lib="2" loc="(290,1650)" name="Multiplexer">
- <a name="width" val="2"/>
- <a name="enable" val="false"/>
- </comp>
- <comp lib="0" loc="(260,1600)" name="Constant">
- <a name="width" val="2"/>
<a name="value" val="0x0"/>
</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="1" loc="(1310,540)" name="OR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="0" loc="(1240,680)" name="Constant">
- <a name="width" val="5"/>
+ <comp lib="0" loc="(280,330)" name="Constant"/>
+ <comp lib="0" loc="(940,820)" name="Constant">
+ <a name="facing" val="south"/>
+ <a name="width" val="2"/>
<a name="value" val="0x0"/>
</comp>
- <comp lib="0" loc="(280,280)" name="Constant"/>
- <comp lib="1" loc="(70,70)" name="NOT Gate">
+ <comp lib="0" loc="(280,1210)" name="Constant"/>
+ <comp lib="0" loc="(840,1720)" 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,580)" name="Constant"/>
- <comp lib="1" loc="(1190,650)" name="OR Gate">
+ <comp lib="0" loc="(260,1730)" name="Pin">
<a name="facing" val="north"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="0" loc="(130,60)" name="Constant">
<a name="width" val="8"/>
- <a name="value" val="0x0"/>
- </comp>
- <comp lib="0" loc="(280,1110)" name="Constant"/>
- <comp lib="0" loc="(280,1380)" name="Constant"/>
- <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"/>
+ <a name="tristate" val="false"/>
+ <a name="label" val="PC ADDRESS"/>
+ <a name="labelloc" val="south"/>
</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 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="1" loc="(640,600)" name="OR Gate">
+ <comp lib="1" loc="(600,1460)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(1240,760)" name="AND Gate">
- <a name="facing" val="west"/>
+ <comp lib="1" loc="(680,1230)" 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="(840,1730)" name="OR Gate">
+ <comp lib="2" loc="(890,1050)" name="Multiplexer">
<a name="facing" val="south"/>
<a name="width" val="2"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(280,420)" name="Constant"/>
- <comp lib="1" loc="(520,420)" name="OR Gate">
- <a name="facing" val="south"/>
+ <comp lib="3" loc="(1280,550)" name="Comparator">
+ <a name="width" val="5"/>
+ </comp>
+ <comp lib="2" loc="(290,1610)" name="Multiplexer">
+ <a name="width" val="2"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="1" loc="(270,1870)" name="OR Gate">
+ <a name="facing" val="west"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="4" loc="(1110,870)" name="Register">
+ <comp lib="3" loc="(430,1800)" name="Adder"/>
+ <comp lib="4" loc="(1100,840)" name="Register">
<a name="width" val="1"/>
</comp>
- <comp lib="1" loc="(360,330)" name="OR Gate">
+ <comp lib="0" loc="(280,140)" name="Constant"/>
+ <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="0" loc="(80,1760)" name="Pin">
+ <comp lib="0" loc="(130,60)" name="Constant">
<a name="width" val="8"/>
- <a name="tristate" val="false"/>
- <a name="label" val="ALU OUTPUT"/>
- <a name="labelloc" val="south"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="1" loc="(520,1230)" name="OR Gate">
- <a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="0" loc="(280,480)" name="Constant"/>
+ <comp lib="0" loc="(280,670)" name="Constant"/>
+ <comp lib="2" loc="(230,1790)" name="Multiplexer">
+ <a name="width" val="8"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="1" loc="(830,670)" name="AND Gate">
+ <comp lib="1" loc="(360,1090)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(520,330)" name="OR Gate">
+ <comp lib="0" loc="(280,1300)" name="Constant"/>
+ <comp lib="0" loc="(280,150)" name="Constant"/>
+ <comp lib="0" loc="(160,50)" name="Splitter">
<a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="3" loc="(1260,550)" name="Comparator">
- <a name="width" val="5"/>
+ <a name="fanout" val="8"/>
+ <a name="incoming" val="8"/>
</comp>
- <comp lib="0" loc="(560,60)" name="Constant">
+ <comp lib="0" loc="(280,280)" name="Constant"/>
+ <comp lib="1" loc="(400,420)" name="OR Gate">
<a name="facing" val="south"/>
- <a name="value" val="0x0"/>
- </comp>
- <comp lib="6" loc="(233,1954)" name="Text">
- <a name="text" val="This input defines the range of MMIO -->"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="4" loc="(110,50)" name="Register">
+ <comp lib="4" loc="(1220,1810)" name="Register">
+ <a name="width" val="4"/>
<a name="trigger" val="falling"/>
</comp>
- <comp lib="0" loc="(280,210)" name="Constant"/>
- <comp lib="0" loc="(280,320)" name="Constant"/>
- <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="0" loc="(280,510)" name="Constant"/>
- <comp lib="4" loc="(870,1810)" name="Register">
- <a name="width" val="1"/>
- <a name="trigger" val="falling"/>
+ <comp lib="0" loc="(280,500)" name="Constant"/>
+ <comp lib="0" loc="(180,1660)" name="Splitter">
+ <a name="facing" val="north"/>
+ <a name="appear" val="center"/>
</comp>
- <comp lib="2" loc="(890,690)" name="Multiplexer">
+ <comp lib="2" loc="(930,960)" 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="2" loc="(160,50)" name="Multiplexer">
- <a name="width" val="8"/>
- <a name="enable" val="false"/>
+ <comp lib="1" loc="(330,1370)" name="AND Gate">
+ <a name="inputs" val="8"/>
+ <a name="label" val="CMP"/>
</comp>
- <comp lib="1" loc="(440,1990)" name="AND 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="1" loc="(1050,1730)" name="AND Gate">
- <a name="facing" val="west"/>
- <a name="label" val="go"/>
- <a name="negate1" val="true"/>
- <a name="negate2" val="true"/>
- </comp>
- <comp lib="2" loc="(930,760)" name="Multiplexer">
+ <comp lib="0" loc="(770,2000)" name="Splitter"/>
+ <comp lib="1" loc="(640,1140)" name="OR Gate">
<a name="facing" val="south"/>
- <a name="width" val="2"/>
- <a name="disabled" val="0"/>
- <a name="enable" val="false"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(940,550)" name="Constant">
+ <comp lib="1" loc="(600,1050)" name="OR Gate">
<a name="facing" val="south"/>
- <a name="width" val="2"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(900,1000)" name="Constant">
- <a name="facing" val="south"/>
- <a name="width" val="2"/>
- <a name="value" val="0x0"/>
+ <comp lib="3" loc="(1280,620)" name="Subtractor">
+ <a name="width" val="5"/>
</comp>
- <comp lib="4" loc="(710,1820)" name="Register">
- <a name="width" val="1"/>
- <a name="trigger" val="falling"/>
+ <comp lib="0" loc="(1190,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="1" loc="(360,1270)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="1" loc="(330,470)" name="AND Gate">
+ <a name="inputs" val="8"/>
+ <a name="label" val="CIN"/>
+ <a name="negate0" val="true"/>
+ <a name="negate2" val="true"/>
+ <a name="negate3" val="true"/>
</comp>
- <comp lib="0" loc="(860,910)" name="Constant">
+ <comp lib="1" loc="(800,910)" name="OR Gate">
<a name="facing" val="south"/>
- <a name="width" val="2"/>
- <a name="value" val="0x0"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="3" loc="(420,1940)" name="Comparator">
- <a name="mode" val="unsigned"/>
+ <comp lib="0" loc="(280,1120)" name="Constant"/>
+ <comp lib="0" loc="(310,1800)" name="Pin">
+ <a name="facing" val="north"/>
+ <a name="output" val="true"/>
+ <a name="width" val="8"/>
+ <a name="label" val="MEM POINTER"/>
+ <a name="labelloc" val="south"/>
</comp>
- <comp lib="1" loc="(520,510)" name="OR Gate">
- <a name="facing" val="south"/>
+ <comp lib="1" loc="(280,1470)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
+ <a name="negate0" val="true"/>
+ <a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(280,1200)" name="Constant"/>
- <comp lib="0" loc="(400,60)" name="Constant">
- <a name="facing" val="south"/>
- <a name="value" val="0x0"/>
+ <comp lib="0" loc="(180,1690)" name="Splitter">
+ <a name="facing" val="north"/>
+ <a name="incoming" val="4"/>
+ <a name="appear" val="right"/>
+ <a name="bit1" val="0"/>
+ <a name="bit2" val="1"/>
+ <a name="bit3" val="1"/>
</comp>
- <comp lib="0" loc="(240,1700)" name="Constant">
- <a name="facing" val="south"/>
- <a name="width" val="4"/>
- <a name="value" val="0x0"/>
+ <comp lib="0" loc="(660,2000)" 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="1" loc="(760,1320)" name="OR Gate">
+ <comp lib="0" loc="(940,1000)" name="Constant">
<a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <a name="width" val="2"/>
</comp>
- <comp lib="0" loc="(280,1350)" name="Constant"/>
- <comp lib="0" loc="(240,1750)" name="Splitter">
+ <comp lib="0" loc="(280,240)" name="Constant"/>
+ <comp lib="0" loc="(210,1740)" name="Splitter">
<a name="facing" val="north"/>
<a name="incoming" val="8"/>
<a name="bit1" val="0"/>
@@ -3008,25 +2900,31 @@
<a name="bit6" val="1"/>
<a name="bit7" val="1"/>
</comp>
- <comp lib="2" loc="(850,960)" name="Multiplexer">
- <a name="facing" val="south"/>
- <a name="width" val="2"/>
- <a name="enable" val="false"/>
+ <comp lib="1" loc="(830,670)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(310,1860)" name="OR Gate">
+ <comp lib="0" loc="(1160,1760)" name="Splitter">
<a name="facing" val="west"/>
+ <a name="fanout" val="4"/>
+ <a name="incoming" val="4"/>
+ </comp>
+ <comp lib="1" loc="(1110,1850)" name="OR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="3"/>
+ </comp>
+ <comp lib="1" loc="(1090,1360)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(900,910)" name="Constant">
- <a name="facing" val="south"/>
- <a name="width" val="2"/>
- <a name="value" val="0x0"/>
+ <comp 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="1" loc="(310,1470)" name="AND Gate">
+ <comp lib="1" loc="(780,1730)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate0" val="true"/>
<a name="negate1" val="true"/>
</comp>
<comp lib="1" loc="(480,1410)" name="OR Gate">
@@ -3034,442 +2932,332 @@
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(600,1810)" 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="labelloc" val="south"/>
- </comp>
- <comp lib="0" loc="(900,660)" name="Constant">
+ <comp lib="0" loc="(280,300)" name="Constant"/>
+ <comp lib="0" loc="(940,1480)" name="Constant">
<a name="facing" val="south"/>
<a name="width" val="2"/>
<a name="value" val="0x0"/>
</comp>
- <comp lib="0" loc="(1210,560)" name="Constant">
- <a name="width" val="5"/>
+ <comp lib="0" loc="(520,60)" name="Constant">
+ <a name="facing" val="south"/>
<a name="value" val="0x0"/>
</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="(1160,1640)" name="Splitter">
- <a name="facing" val="west"/>
- <a name="fanout" val="4"/>
- <a name="incoming" val="4"/>
- </comp>
- <comp lib="2" loc="(850,760)" name="Multiplexer">
+ <comp lib="0" loc="(940,910)" name="Constant">
<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="(660,2000)" name="Pin">
- <a name="facing" val="north"/>
- <a name="tristate" val="false"/>
- <a name="label" val="JMP FLAG"/>
- <a name="labelloc" val="south"/>
</comp>
- <comp lib="0" loc="(280,140)" name="Constant"/>
- <comp lib="1" loc="(1340,660)" name="OR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="0" loc="(530,2000)" name="Pin">
- <a name="facing" val="north"/>
- <a name="output" val="true"/>
- <a name="label" val="Address MUX"/>
- <a name="labelloc" val="south"/>
+ <comp lib="1" loc="(330,560)" name="AND Gate">
+ <a name="inputs" val="8"/>
+ <a name="label" val="LLI"/>
+ <a name="negate6" val="true"/>
+ <a name="negate7" val="true"/>
</comp>
- <comp lib="1" loc="(290,1730)" name="OR Gate">
+ <comp lib="0" loc="(280,510)" name="Constant"/>
+ <comp lib="2" loc="(160,50)" name="Multiplexer">
<a name="width" val="8"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="1" loc="(640,600)" name="OR Gate">
+ <a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(680,1140)" 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="(280,670)" name="Constant"/>
- <comp lib="1" loc="(1210,680)" name="AND Gate">
- <a name="facing" val="north"/>
+ <comp lib="0" loc="(280,1380)" name="Constant"/>
+ <comp lib="0" loc="(280,1350)" name="Constant"/>
+ <comp lib="1" loc="(920,1720)" 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="1" loc="(480,150)" name="OR Gate">
+ <comp lib="1" loc="(520,1230)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(1170,1840)" name="AND Gate">
+ <comp lib="1" loc="(520,1410)" name="OR Gate">
+ <a name="facing" val="south"/>
<a name="size" val="30"/>
- <a name="inputs" val="4"/>
- <a name="negate1" val="true"/>
- <a name="negate2" val="true"/>
- <a name="negate3" val="true"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(760,1700)" name="Pin">
- <a name="facing" val="north"/>
- <a name="output" val="true"/>
- <a name="label" val="POP"/>
- <a name="labelloc" val="south"/>
+ <comp lib="0" loc="(840,520)" name="Constant">
+ <a name="facing" val="south"/>
+ <a name="width" val="2"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="1" loc="(1330,600)" name="AND Gate">
+ <comp lib="2" loc="(850,1050)" name="Multiplexer">
<a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
+ <a name="width" val="2"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="1" loc="(360,1090)" name="AND 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="1" loc="(280,370)" name="OR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="2" loc="(930,870)" name="Multiplexer">
+ <a name="facing" val="south"/>
+ <a name="width" val="2"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="1" loc="(800,1460)" name="OR Gate">
+ <comp lib="1" loc="(810,810)" 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="(1070,820)" name="AND Gate">
+ <comp lib="1" loc="(1240,750)" name="OR 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="(160,50)" name="Splitter">
- <a name="facing" val="south"/>
- <a name="fanout" val="8"/>
- <a name="incoming" val="8"/>
+ <comp lib="1" loc="(80,20)" name="NOT Gate">
+ <a name="facing" val="west"/>
</comp>
- <comp lib="0" loc="(280,130)" 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 lib="1" loc="(330,380)" name="AND Gate">
+ <a name="inputs" val="8"/>
+ <a name="label" val="DYN"/>
+ <a name="negate0" val="true"/>
</comp>
- <comp lib="0" loc="(280,90)" name="Constant"/>
- <comp lib="2" loc="(230,1790)" name="Multiplexer">
- <a name="width" val="8"/>
- <a name="enable" val="false"/>
+ <comp lib="0" loc="(1190,1190)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="label" val="Write Enable"/>
+ <a name="labelloc" val="east"/>
</comp>
- <comp lib="1" loc="(1400,800)" name="OR Gate">
+ <comp lib="1" loc="(760,1230)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(160,1790)" name="Constant">
- <a name="width" val="8"/>
+ <comp lib="0" loc="(440,60)" name="Constant">
+ <a name="facing" val="south"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="1" loc="(480,510)" name="OR Gate">
+ <comp lib="0" loc="(280,1390)" name="Constant"/>
+ <comp lib="0" loc="(190,1720)" name="Constant">
<a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <a name="width" val="4"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="1" loc="(600,960)" name="OR Gate">
+ <comp lib="1" loc="(520,420)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(280,660)" name="Constant"/>
- <comp lib="2" loc="(850,870)" name="Multiplexer">
- <a name="facing" val="south"/>
- <a name="width" val="2"/>
- <a name="enable" val="false"/>
- </comp>
- <comp lib="0" loc="(280,220)" name="Constant"/>
- <comp lib="1" loc="(1050,1670)" name="AND Gate">
- <a name="facing" val="west"/>
- <a name="label" val="gtr"/>
- <a name="negate0" val="true"/>
- <a name="negate2" val="true"/>
- </comp>
- <comp lib="0" loc="(280,640)" name="Constant"/>
- <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="1" loc="(600,1460)" 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="(820,1980)" name="AND Gate">
+ <comp lib="0" loc="(280,570)" name="Constant"/>
+ <comp lib="0" loc="(280,270)" name="Constant"/>
+ <comp lib="0" loc="(280,580)" name="Constant"/>
+ <comp lib="1" loc="(360,330)" name="OR 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="(1190,1410)" name="Pin">
- <a name="facing" val="west"/>
- <a name="output" val="true"/>
- <a name="tristate" val="false"/>
- <a name="label" val="GPR Forward Input"/>
- <a name="labelloc" val="east"/>
</comp>
- <comp lib="2" loc="(890,1050)" name="Multiplexer">
- <a name="facing" val="south"/>
+ <comp lib="2" loc="(290,1570)" name="Multiplexer">
<a name="width" val="2"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(1220,930)" name="Constant">
- <a name="width" val="5"/>
- <a name="value" val="0x0"/>
- </comp>
- <comp lib="0" loc="(280,230)" name="Constant"/>
- <comp lib="0" loc="(440,1740)" name="Splitter">
- <a name="facing" val="north"/>
- <a name="fanout" val="3"/>
- <a name="incoming" val="3"/>
- <a name="appear" val="center"/>
- </comp>
- <comp lib="1" loc="(330,470)" name="AND Gate">
- <a name="inputs" val="8"/>
- <a name="label" val="CIN"/>
- <a name="negate0" val="true"/>
- <a name="negate2" val="true"/>
- <a name="negate3" val="true"/>
+ <comp lib="4" loc="(870,1790)" name="Register">
+ <a name="width" val="1"/>
+ <a name="trigger" val="falling"/>
</comp>
- <comp lib="2" loc="(850,690)" name="Multiplexer">
+ <comp lib="0" loc="(900,910)" name="Constant">
<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="(760,2000)" name="Pin">
- <a name="facing" val="north"/>
- <a name="output" val="true"/>
- <a name="width" val="2"/>
- <a name="label" val="BRANCH"/>
- <a name="labelloc" val="south"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="0" loc="(940,660)" name="Constant">
+ <comp lib="0" loc="(860,1000)" name="Constant">
<a name="facing" val="south"/>
<a name="width" val="2"/>
- </comp>
- <comp lib="0" loc="(280,540)" name="Constant"/>
- <comp lib="1" loc="(640,730)" name="OR Gate">
- <a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="3"/>
- </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="1" loc="(520,1140)" name="OR Gate">
- <a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="0" loc="(220,1580)" name="Splitter">
- <a name="facing" val="north"/>
- <a name="appear" val="center"/>
- </comp>
- <comp lib="0" loc="(600,60)" name="Constant">
- <a name="facing" val="south"/>
<a name="value" val="0x0"/>
</comp>
- <comp lib="0" loc="(200,1700)" name="Splitter">
- <a name="facing" val="north"/>
- <a name="incoming" val="4"/>
- <a name="appear" val="right"/>
- <a name="bit1" val="0"/>
- <a name="bit2" val="1"/>
- <a name="bit3" val="1"/>
+ <comp lib="0" loc="(260,1560)" name="Constant">
+ <a name="width" val="2"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="0" loc="(180,1660)" name="Splitter">
- <a name="facing" val="north"/>
- <a name="appear" val="center"/>
+ <comp lib="3" loc="(1190,920)" name="Comparator">
+ <a name="width" val="4"/>
</comp>
- <comp lib="0" loc="(280,1390)" name="Constant"/>
- <comp lib="0" loc="(620,1700)" name="Pin">
+ <comp lib="0" loc="(800,1490)" name="Pin">
<a name="facing" val="north"/>
<a name="output" val="true"/>
- <a name="width" val="2"/>
- <a name="label" val="GPR MUX"/>
+ <a name="label" val="PUSH"/>
<a name="labelloc" val="south"/>
</comp>
- <comp lib="2" loc="(290,1570)" name="Multiplexer">
- <a name="width" val="2"/>
- <a name="enable" val="false"/>
+ <comp lib="1" loc="(1180,1410)" name="OR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="3"/>
</comp>
- <comp lib="0" loc="(900,550)" name="Constant">
+ <comp lib="0" loc="(400,60)" name="Constant">
<a name="facing" val="south"/>
- <a name="width" val="2"/>
<a name="value" val="0x0"/>
</comp>
- <comp lib="2" loc="(930,870)" name="Multiplexer">
+ <comp lib="0" loc="(280,490)" name="Constant"/>
+ <comp lib="0" loc="(860,550)" name="Constant">
<a name="facing" val="south"/>
<a name="width" val="2"/>
- <a name="enable" val="false"/>
- </comp>
- <comp lib="0" loc="(280,1360)" name="Constant"/>
- <comp lib="3" loc="(1280,620)" name="Subtractor">
- <a name="width" val="5"/>
- </comp>
- <comp lib="0" loc="(840,1730)" 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="(200,1620)" name="Splitter">
- <a name="facing" val="north"/>
- <a name="appear" val="center"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="0" loc="(380,1950)" name="Constant">
- <a name="width" val="8"/>
- <a name="value" val="0xfc"/>
+ <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="(440,330)" name="OR 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"/>
</comp>
- <comp lib="0" loc="(280,1120)" name="Constant"/>
- <comp lib="0" loc="(440,1740)" 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 lib="4" loc="(1400,690)" name="Register">
+ <a name="width" val="1"/>
</comp>
- <comp lib="2" loc="(890,960)" name="Multiplexer">
+ <comp lib="0" loc="(940,660)" name="Constant">
<a name="facing" val="south"/>
<a name="width" val="2"/>
- <a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(360,60)" name="Constant">
+ <comp lib="0" loc="(280,1200)" name="Constant"/>
+ <comp lib="4" loc="(110,50)" name="Register">
+ <a name="trigger" val="falling"/>
+ </comp>
+ <comp lib="1" loc="(920,1840)" name="OR Gate">
<a name="facing" val="south"/>
- <a name="value" val="0x0"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(280,1290)" name="Constant"/>
- <comp lib="1" loc="(900,1840)" name="OR Gate">
+ <comp lib="1" loc="(480,420)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(330,1370)" name="AND Gate">
- <a name="inputs" val="8"/>
- <a name="label" val="CMP"/>
+ <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="(940,820)" 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="1" loc="(1370,660)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="3"/>
- <a name="negate2" val="true"/>
+ <comp lib="6" loc="(233,1954)" name="Text">
+ <a name="text" val="This input defines the range of MMIO -->"/>
</comp>
- <comp lib="0" loc="(440,60)" name="Constant">
+ <comp lib="0" loc="(880,520)" name="Constant">
<a name="facing" val="south"/>
+ <a name="width" val="2"/>
<a name="value" val="0x0"/>
</comp>
<comp lib="0" loc="(860,820)" name="Constant">
<a name="facing" val="south"/>
<a name="width" val="2"/>
</comp>
- <comp lib="1" loc="(670,1940)" name="AND Gate">
- <a name="facing" val="north"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="0" loc="(920,1730)" name="Pin">
+ <comp lib="0" loc="(440,2000)" 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="External Address Select"/>
<a name="labelloc" val="south"/>
</comp>
- <comp lib="1" loc="(1170,680)" name="AND Gate">
- <a name="facing" val="north"/>
+ <comp lib="1" loc="(280,100)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(1180,1410)" name="OR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="3"/>
- </comp>
- <comp lib="0" loc="(860,660)" name="Constant">
+ <comp lib="2" loc="(890,1530)" name="Multiplexer">
<a name="facing" val="south"/>
<a name="width" val="2"/>
- <a name="value" val="0x0"/>
+ <a name="disabled" val="0"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="1" loc="(600,600)" 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="(830,2010)" name="Pin">
+ <comp lib="1" loc="(1050,1670)" name="AND Gate">
<a name="facing" val="west"/>
- <a name="output" val="true"/>
- <a name="label" val="External Address Select"/>
- <a name="labelloc" val="east"/>
+ <a name="label" val="pcr"/>
+ <a name="negate0" val="true"/>
+ <a name="negate2" val="true"/>
</comp>
- <comp lib="2" loc="(930,1050)" name="Multiplexer">
+ <comp lib="2" loc="(910,1680)" name="Multiplexer">
<a name="facing" val="south"/>
<a name="width" val="2"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(280,480)" name="Constant"/>
- <comp lib="1" loc="(520,150)" name="OR Gate">
+ <comp lib="0" loc="(1240,630)" name="Constant">
+ <a name="width" val="5"/>
+ </comp>
+ <comp lib="1" loc="(600,1320)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(890,60)" name="Constant">
+ <comp lib="0" loc="(280,1110)" name="Constant"/>
+ <comp lib="3" loc="(1250,960)" name="Adder">
+ <a name="width" val="5"/>
+ </comp>
+ <comp lib="0" loc="(1190,970)" name="Bit Extender">
+ <a name="in_width" val="4"/>
+ <a name="out_width" val="5"/>
+ </comp>
+ <comp lib="0" loc="(360,60)" name="Constant">
<a name="facing" val="south"/>
- <a name="width" val="2"/>
<a name="value" val="0x0"/>
</comp>
- <comp lib="0" loc="(260,1560)" name="Constant">
+ <comp lib="0" loc="(280,400)" name="Constant"/>
+ <comp lib="0" loc="(880,1720)" name="Pin">
+ <a name="facing" val="north"/>
+ <a name="output" val="true"/>
<a name="width" val="2"/>
- <a name="value" val="0x0"/>
+ <a name="label" val="B (R)"/>
+ <a name="labelloc" val="south"/>
</comp>
- <comp lib="0" loc="(260,1640)" name="Constant">
+ <comp lib="0" loc="(280,660)" name="Constant"/>
+ <comp lib="1" loc="(1050,1790)" name="AND Gate">
+ <a name="facing" val="west"/>
+ <a name="label" val="ptrinc"/>
+ </comp>
+ <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="(900,1480)" name="Constant">
+ <a name="facing" val="south"/>
<a name="width" val="2"/>
<a name="value" val="0x0"/>
</comp>
- <comp lib="4" loc="(260,1790)" name="Register"/>
- <comp lib="2" loc="(550,1790)" name="Multiplexer">
- <a name="selloc" val="tr"/>
- <a name="width" val="8"/>
+ <comp lib="2" loc="(1170,610)" name="Multiplexer">
+ <a name="width" val="5"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(460,1810)" name="Pin">
+ <comp lib="0" loc="(620,1490)" name="Pin">
<a name="facing" val="north"/>
- <a name="width" val="8"/>
- <a name="tristate" val="false"/>
- <a name="label" val="PC ADDRESS"/>
+ <a name="output" val="true"/>
+ <a name="width" val="2"/>
+ <a name="label" val="GPR MUX"/>
<a name="labelloc" val="south"/>
</comp>
- <comp lib="0" loc="(480,60)" name="Constant">
- <a name="facing" val="south"/>
- <a name="value" val="0x0"/>
- </comp>
- <comp lib="0" loc="(620,1520)" name="Splitter">
+ <comp lib="0" loc="(220,1580)" name="Splitter">
<a name="facing" val="north"/>
- <a name="appear" val="right"/>
- </comp>
- <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="appear" val="center"/>
</comp>
- <comp lib="2" loc="(890,600)" name="Multiplexer">
- <a name="facing" val="south"/>
- <a name="width" val="2"/>
- <a name="enable" val="false"/>
+ <comp lib="0" loc="(280,220)" name="Constant"/>
+ <comp lib="0" loc="(280,640)" name="Constant"/>
+ <comp lib="0" loc="(280,360)" name="Constant"/>
+ <comp lib="0" loc="(380,1950)" name="Constant">
+ <a name="width" val="8"/>
+ <a name="value" val="0xfc"/>
</comp>
<comp lib="1" loc="(330,1100)" name="AND Gate">
<a name="inputs" val="8"/>
@@ -3477,379 +3265,446 @@
<a name="negate3" val="true"/>
<a name="negate6" val="true"/>
</comp>
- <comp lib="4" loc="(1200,1760)" name="Register">
- <a name="width" val="4"/>
- <a name="trigger" val="falling"/>
- </comp>
- <comp lib="1" loc="(810,880)" name="AND Gate">
- <a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- <a name="negate0" val="true"/>
+ <comp lib="0" loc="(280,630)" name="Constant"/>
+ <comp lib="0" loc="(920,1720)" 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="2" loc="(930,600)" name="Multiplexer">
+ <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="(1200,950)" name="Bit Extender">
- <a name="in_width" val="4"/>
- <a name="out_width" val="5"/>
- </comp>
- <comp lib="0" loc="(1240,630)" name="Constant">
- <a name="width" val="5"/>
+ <comp lib="0" loc="(760,1490)" 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="(900,730)" 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"/>
</comp>
- <comp lib="1" loc="(640,1140)" name="OR Gate">
+ <comp lib="0" loc="(200,1700)" name="Splitter">
+ <a name="facing" val="north"/>
+ <a name="incoming" val="4"/>
+ <a name="appear" val="right"/>
+ <a name="bit1" val="0"/>
+ <a name="bit2" val="1"/>
+ <a name="bit3" val="1"/>
+ </comp>
+ <comp lib="1" loc="(1330,620)" name="AND Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
+ <a name="negate0" val="true"/>
+ <a name="negate1" val="true"/>
</comp>
- <comp lib="1" loc="(800,1140)" name="OR Gate">
+ <comp lib="3" loc="(420,1940)" name="Comparator">
+ <a name="mode" val="unsigned"/>
+ </comp>
+ <comp lib="0" loc="(80,50)" name="Pin">
+ <a name="width" val="8"/>
+ <a name="tristate" val="false"/>
+ <a name="label" val="DATA"/>
+ <a name="labelloc" val="north"/>
+ </comp>
+ <comp lib="4" loc="(260,1790)" name="Register"/>
+ <comp lib="2" loc="(930,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="0" loc="(280,300)" name="Constant"/>
- <comp lib="1" loc="(800,910)" name="OR Gate">
+ <comp lib="0" loc="(280,420)" name="Constant"/>
+ <comp lib="0" loc="(480,60)" name="Constant">
<a name="facing" val="south"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="0" loc="(280,330)" name="Constant"/>
- <comp lib="1" loc="(330,920)" name="AND Gate">
+ <comp lib="2" loc="(850,870)" name="Multiplexer">
+ <a name="facing" val="south"/>
+ <a name="width" val="2"/>
+ <a name="enable" val="false"/>
+ </comp>
+ <comp lib="1" loc="(330,1280)" name="AND Gate">
<a name="inputs" val="8"/>
- <a name="label" val="POP"/>
- <a name="negate2" val="true"/>
- <a name="negate3" val="true"/>
- <a name="negate4" val="true"/>
+ <a name="label" val="SP"/>
<a name="negate6" val="true"/>
</comp>
+ <comp lib="0" loc="(1240,680)" name="Constant">
+ <a name="width" val="5"/>
+ <a name="value" val="0x0"/>
+ </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>
- <comp lib="1" loc="(560,420)" name="OR Gate">
- <a name="facing" val="south"/>
+ <comp lib="1" loc="(680,1690)" name="AND Gate">
+ <a name="facing" val="west"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(600,1050)" name="OR Gate">
- <a name="facing" val="south"/>
+ <comp lib="1" loc="(1090,1400)" name="OR Gate">
<a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <a name="inputs" val="3"/>
</comp>
- <comp lib="1" loc="(840,1810)" name="OR Gate">
+ <comp lib="1" loc="(360,1180)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(1100,1100)" name="OR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="3"/>
+ <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="1" loc="(520,1410)" name="OR Gate">
+ <comp lib="0" loc="(680,60)" name="Constant">
<a name="facing" val="south"/>
+ <a name="value" val="0x0"/>
+ </comp>
+ <comp lib="0" loc="(1190,1410)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="tristate" val="false"/>
+ <a name="label" val="GPR Forward Input"/>
+ <a name="labelloc" val="east"/>
+ </comp>
+ <comp lib="1" loc="(1170,1840)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="4"/>
+ <a name="negate1" val="true"/>
+ <a name="negate2" val="true"/>
+ <a name="negate3" val="true"/>
+ </comp>
+ <comp lib="1" loc="(1170,650)" name="OR 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="(50,150)" name="Pin">
- <a name="tristate" val="false"/>
- <a name="label" val="CLK"/>
+ <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="3" loc="(1280,670)" name="Comparator">
- <a name="width" val="5"/>
+ <comp lib="0" loc="(280,550)" name="Constant"/>
+ <comp lib="1" loc="(1240,790)" name="AND Gate">
+ <a name="facing" val="west"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ <a name="negate0" val="true"/>
+ <a name="negate1" val="true"/>
</comp>
+ <comp lib="0" loc="(280,310)" name="Constant"/>
<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="(760,1980)" name="Splitter">
- <a name="facing" val="north"/>
- <a name="appear" val="right"/>
- </comp>
- <comp lib="1" loc="(330,1190)" name="AND Gate">
+ <comp lib="1" loc="(330,1010)" name="AND Gate">
<a name="inputs" val="8"/>
- <a name="label" val="SB"/>
+ <a name="label" val="PEEK"/>
<a name="negate2" val="true"/>
+ <a name="negate3" val="true"/>
<a name="negate6" val="true"/>
</comp>
- <comp lib="0" loc="(940,910)" name="Constant">
- <a name="facing" val="south"/>
- <a name="width" val="2"/>
+ <comp lib="0" loc="(80,1780)" 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="(640,1460)" name="OR Gate">
+ <comp lib="1" loc="(800,1140)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <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="4" loc="(1210,610)" name="Register">
- <a name="width" val="5"/>
- </comp>
- <comp lib="1" loc="(560,510)" name="OR Gate">
+ <comp lib="0" loc="(280,1360)" name="Constant"/>
+ <comp lib="1" loc="(440,2000)" 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,390)" name="Constant"/>
- <comp lib="0" loc="(440,2000)" name="Pin">
- <a name="facing" val="north"/>
- <a name="output" val="true"/>
- <a name="label" val="Memory Select"/>
- <a name="labelloc" val="south"/>
+ <comp lib="4" loc="(710,1740)" name="Register">
+ <a name="width" val="1"/>
+ <a name="trigger" val="falling"/>
</comp>
- <comp lib="1" loc="(330,110)" name="AND Gate">
- <a name="inputs" val="8"/>
- <a name="label" val="OR"/>
+ <comp lib="1" loc="(1330,660)" name="OR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
<a name="negate0" val="true"/>
- <a name="negate1" val="true"/>
</comp>
- <comp lib="1" loc="(1050,1790)" name="AND Gate">
- <a name="facing" val="west"/>
- <a name="label" val="ptrinc"/>
- </comp>
- <comp lib="0" loc="(280,630)" name="Constant"/>
- <comp lib="0" loc="(280,490)" name="Constant"/>
- <comp lib="0" loc="(220,1730)" name="Constant">
+ <comp lib="1" loc="(480,510)" name="OR Gate">
<a name="facing" val="south"/>
- <a name="width" val="4"/>
- <a name="value" val="0x0"/>
- </comp>
- <comp lib="2" loc="(1170,610)" name="Multiplexer">
- <a name="width" val="5"/>
- <a name="enable" val="false"/>
- </comp>
- <comp lib="1" loc="(1100,1360)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(940,730)" name="Constant">
+ <comp lib="0" loc="(860,660)" 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">
+ <comp lib="1" loc="(360,1270)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <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="2" loc="(910,1680)" name="Multiplexer">
+ <comp lib="0" loc="(1160,1700)" name="Splitter">
+ <a name="facing" val="west"/>
+ <a name="fanout" val="4"/>
+ <a name="incoming" val="4"/>
+ </comp>
+ <comp lib="0" loc="(280,390)" name="Constant"/>
+ <comp lib="1" loc="(520,1320)" name="OR Gate">
<a name="facing" val="south"/>
- <a name="width" val="2"/>
- <a name="enable" val="false"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="0" loc="(280,410)" name="Constant"/>
+ <comp lib="0" loc="(350,1730)" 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="labelloc" val="south"/>
</comp>
- <comp lib="2" loc="(890,760)" name="Multiplexer">
+ <comp lib="2" loc="(930,1530)" 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="(760,1230)" name="OR Gate">
+ <comp lib="0" loc="(560,60)" name="Constant">
+ <a name="facing" val="south"/>
+ <a name="value" val="0x0"/>
+ </comp>
+ <comp lib="1" loc="(600,1230)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(280,1210)" name="Constant"/>
- <comp lib="0" loc="(1160,1760)" name="Splitter">
+ <comp lib="1" loc="(1140,820)" name="AND Gate">
<a name="facing" val="west"/>
- <a name="fanout" val="4"/>
- <a name="incoming" val="4"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="0" loc="(250,1720)" name="Splitter">
+ <comp lib="0" loc="(50,150)" name="Pin">
+ <a name="tristate" val="false"/>
+ <a name="label" val="CLK"/>
+ </comp>
+ <comp lib="0" loc="(440,1490)" name="Pin">
<a name="facing" val="north"/>
- <a name="incoming" val="8"/>
- <a name="bit1" val="0"/>
- <a name="bit2" val="0"/>
- <a name="bit3" val="0"/>
- <a name="bit4" val="1"/>
- <a name="bit5" val="1"/>
- <a name="bit6" val="1"/>
- <a name="bit7" val="1"/>
+ <a name="output" val="true"/>
+ <a name="width" val="3"/>
+ <a name="label" val="ALU OP"/>
+ <a name="labelloc" val="south"/>
</comp>
- <comp lib="1" loc="(880,1730)" name="OR Gate">
+ <comp lib="1" loc="(880,1720)" 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,150)" name="Constant"/>
- <comp lib="0" loc="(280,310)" name="Constant"/>
- <comp lib="1" loc="(330,200)" name="AND Gate">
+ <comp lib="0" loc="(200,1620)" name="Splitter">
+ <a name="facing" val="north"/>
+ <a name="appear" val="center"/>
+ </comp>
+ <comp lib="1" loc="(560,330)" name="OR Gate">
+ <a name="facing" val="south"/>
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <comp lib="1" loc="(330,110)" name="AND Gate">
<a name="inputs" val="8"/>
- <a name="label" val="SOP"/>
+ <a name="label" val="OR"/>
<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="(560,330)" name="OR Gate">
+ <comp lib="0" loc="(280,320)" name="Constant"/>
+ <comp lib="1" loc="(760,1320)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</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 lib="0" loc="(1220,1810)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
+ <a name="width" val="4"/>
+ <a name="label" val="Dynamic OP"/>
+ <a name="labelloc" val="east"/>
</comp>
- <comp lib="0" loc="(1160,1700)" name="Splitter">
+ <comp lib="0" loc="(280,230)" name="Constant"/>
+ <comp lib="0" loc="(1160,1640)" name="Splitter">
<a name="facing" val="west"/>
<a name="fanout" val="4"/>
<a name="incoming" val="4"/>
</comp>
- <comp lib="0" loc="(280,400)" name="Constant"/>
- <comp lib="0" loc="(80,50)" name="Pin">
- <a name="width" val="8"/>
- <a name="tristate" val="false"/>
- <a name="label" val="DATA"/>
- <a name="labelloc" val="north"/>
- </comp>
- <comp lib="0" loc="(940,1000)" name="Constant">
+ <comp lib="1" loc="(800,1460)" 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="(260,1600)" name="Constant">
<a name="width" val="2"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="2" loc="(850,1050)" name="Multiplexer">
+ <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="2" loc="(850,960)" 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="1" loc="(360,1180)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="0" loc="(800,1700)" name="Pin">
- <a name="facing" val="north"/>
- <a name="output" val="true"/>
+ <comp lib="1" loc="(330,830)" name="AND Gate">
+ <a name="inputs" val="8"/>
<a name="label" val="PUSH"/>
- <a name="labelloc" val="south"/>
- </comp>
- <comp lib="0" loc="(280,410)" name="Constant"/>
- <comp lib="0" loc="(1210,1760)" name="Pin">
- <a name="facing" val="west"/>
- <a name="output" val="true"/>
- <a name="width" val="4"/>
- <a name="label" val="Dynamic OP"/>
- <a name="labelloc" val="east"/>
+ <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="(520,60)" name="Constant">
- <a name="facing" val="south"/>
- <a name="value" val="0x0"/>
+ <comp lib="0" loc="(620,1480)" name="Splitter">
+ <a name="facing" val="north"/>
+ <a name="appear" val="right"/>
</comp>
- <comp lib="0" loc="(280,360)" name="Constant"/>
- <comp lib="2" loc="(930,960)" name="Multiplexer">
+ <comp lib="0" loc="(280,540)" name="Constant"/>
+ <comp lib="0" loc="(280,1290)" name="Constant"/>
+ <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="1" loc="(600,1230)" name="OR Gate">
+ <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="1" loc="(330,560)" name="AND Gate">
+ <comp lib="1" loc="(330,920)" name="AND Gate">
<a name="inputs" val="8"/>
- <a name="label" val="LLI"/>
+ <a name="label" val="POP"/>
+ <a name="negate2" val="true"/>
+ <a name="negate3" val="true"/>
+ <a name="negate4" val="true"/>
<a name="negate6" val="true"/>
- <a name="negate7" val="true"/>
</comp>
- <comp lib="0" loc="(280,120)" name="Constant"/>
- <comp lib="1" loc="(920,1730)" name="OR Gate">
+ <comp lib="0" loc="(280,90)" name="Constant"/>
+ <comp lib="0" loc="(390,1810)" name="Constant">
+ <a name="width" val="8"/>
+ </comp>
+ <comp lib="0" loc="(1240,560)" name="Constant">
+ <a name="width" val="5"/>
+ <a name="value" val="0x0"/>
+ </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="(720,1930)" 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="(480,150)" 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="(930,60)" name="Constant">
- <a name="facing" val="south"/>
- <a name="width" val="2"/>
- <a name="value" val="0x0"/>
- </comp>
- <comp lib="1" loc="(680,1230)" name="OR Gate">
- <a name="facing" val="south"/>
+ <comp lib="1" loc="(780,1790)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="4" loc="(1400,660)" name="Register">
- <a name="width" val="1"/>
+ <comp lib="2" loc="(290,1650)" name="Multiplexer">
+ <a name="width" val="2"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(290,1610)" name="Multiplexer">
+ <comp lib="2" loc="(890,600)" name="Multiplexer">
+ <a name="facing" val="south"/>
<a name="width" val="2"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(1160,1360)" name="Pin">
- <a name="facing" val="west"/>
+ <comp lib="0" loc="(770,2000)" name="Pin">
+ <a name="facing" val="north"/>
<a name="output" val="true"/>
- <a name="label" val="ALU State"/>
- <a name="labelloc" val="east"/>
- </comp>
- <comp lib="3" loc="(1200,900)" name="Comparator">
- <a name="width" val="4"/>
+ <a name="width" val="2"/>
+ <a name="label" val="BRANCH"/>
+ <a name="labelloc" val="south"/>
</comp>
- <comp lib="1" loc="(400,420)" name="OR Gate">
+ <comp lib="0" loc="(280,130)" 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="2" loc="(320,1740)" name="Multiplexer">
- <a name="selloc" val="tr"/>
- <a name="width" val="8"/>
- <a name="enable" val="false"/>
+ <comp lib="0" loc="(440,1490)" 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="3" loc="(200,1800)" name="Adder"/>
- <comp lib="0" loc="(860,550)" name="Constant">
+ <comp lib="1" loc="(840,1720)" name="OR Gate">
<a name="facing" val="south"/>
<a name="width" val="2"/>
- <a name="value" val="0x0"/>
- </comp>
- <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="1" loc="(770,1810)" name="AND Gate">
+ <comp lib="1" loc="(280,370)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
</comp>
- <comp lib="0" loc="(880,1730)" name="Pin">
- <a name="facing" val="north"/>
- <a name="output" val="true"/>
+ <comp lib="2" loc="(890,960)" name="Multiplexer">
+ <a name="facing" val="south"/>
<a name="width" val="2"/>
- <a name="label" val="B (R)"/>
- <a name="labelloc" val="south"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(280,500)" name="Constant"/>
- <comp lib="1" loc="(1110,1850)" name="OR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="3"/>
+ <comp lib="0" loc="(640,60)" name="Constant">
+ <a name="facing" val="south"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="0" loc="(180,1690)" name="Splitter">
- <a name="facing" val="north"/>
- <a name="incoming" val="4"/>
- <a name="appear" val="right"/>
- <a name="bit1" val="0"/>
- <a name="bit2" val="1"/>
- <a name="bit3" val="1"/>
+ <comp lib="0" loc="(260,1640)" name="Constant">
+ <a name="width" val="2"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="1" loc="(440,420)" name="OR Gate">
+ <comp lib="0" loc="(1150,930)" name="Constant">
+ <a name="width" val="4"/>
+ <a name="value" val="0x0"/>
+ </comp>
+ <comp lib="1" loc="(640,1460)" name="OR Gate">
<a name="facing" val="south"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
+ <comp lib="0" loc="(280,120)" name="Constant"/>
+ <comp lib="4" loc="(1210,610)" name="Register">
+ <a name="width" val="5"/>
+ </comp>
+ <comp lib="2" loc="(850,1530)" 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="3" loc="(1280,670)" name="Comparator">
+ <a name="width" val="5"/>
+ </comp>
</circuit>
<circuit name="STK">
<a name="circuit" val="STK"/>
@@ -3864,7 +3719,7 @@
<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"/>
+ <circ-port height="8" pin="90,390" width="8" x="46" y="76"/>
<circ-anchor facing="east" height="6" width="6" x="67" y="57"/>
</appear>
<wire from="(1280,310)" to="(1390,310)"/>
@@ -3904,6 +3759,7 @@
<wire from="(2750,340)" to="(2860,340)"/>
<wire from="(3620,260)" to="(3620,270)"/>
<wire from="(3040,310)" to="(3150,310)"/>
+ <wire from="(160,320)" to="(160,390)"/>
<wire from="(3220,270)" to="(3230,270)"/>
<wire from="(1370,220)" to="(1370,250)"/>
<wire from="(1980,340)" to="(2090,340)"/>
@@ -3973,7 +3829,6 @@
<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)"/>
@@ -4104,6 +3959,7 @@
<wire from="(3630,340)" to="(3670,340)"/>
<wire from="(1690,230)" to="(1690,270)"/>
<wire from="(2110,320)" to="(2220,320)"/>
+ <wire from="(160,320)" to="(240,320)"/>
<wire from="(1700,230)" to="(1910,230)"/>
<wire from="(2550,290)" to="(2550,320)"/>
<wire from="(2380,280)" to="(2380,310)"/>
@@ -4140,6 +3996,7 @@
<wire from="(820,250)" to="(830,250)"/>
<wire from="(2640,340)" to="(2750,340)"/>
<wire from="(2760,300)" to="(2870,300)"/>
+ <wire from="(90,390)" to="(160,390)"/>
<wire from="(3100,320)" to="(3210,320)"/>
<wire from="(2930,310)" to="(3040,310)"/>
<wire from="(3510,260)" to="(3510,270)"/>
@@ -4421,77 +4278,81 @@
<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="(1300,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="(2560,270)" name="Register"/>
- <comp lib="2" loc="(3280,260)" name="Multiplexer">
+ <comp lib="2" loc="(1740,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(3610,260)" name="Multiplexer">
+ <comp lib="4" loc="(1460,270)" name="Register"/>
+ <comp lib="4" loc="(1240,270)" name="Register"/>
+ <comp lib="2" loc="(3170,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(1190,260)" name="Multiplexer">
+ <comp lib="4" loc="(2230,270)" name="Register"/>
+ <comp lib="4" loc="(2560,270)" name="Register"/>
+ <comp lib="2" loc="(2400,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(310,260)" name="Multiplexer">
+ <comp lib="2" loc="(2730,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(3000,270)" name="Register"/>
- <comp lib="4" loc="(250,270)" name="Register"/>
- <comp lib="4" loc="(2780,270)" name="Register"/>
- <comp lib="0" loc="(180,320)" name="Pin">
- <a name="tristate" val="false"/>
- </comp>
- <comp lib="4" loc="(1350,270)" name="Register"/>
- <comp lib="4" loc="(1130,270)" name="Register"/>
- <comp lib="4" loc="(2890,270)" name="Register"/>
- <comp lib="0" loc="(150,270)" name="Pin">
+ <comp lib="4" loc="(1020,270)" name="Register"/>
+ <comp lib="2" loc="(1410,260)" name="Multiplexer">
<a name="width" val="8"/>
- <a name="tristate" val="false"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(470,270)" name="Register"/>
- <comp lib="4" loc="(1790,270)" name="Register"/>
<comp lib="0" loc="(150,220)" name="Pin">
<a name="output" val="true"/>
<a name="width" val="8"/>
<a name="tristate" val="false"/>
- <a name="labelloc" val="east"/>
+ <a name="label" val="OUTPUT"/>
</comp>
- <comp lib="2" loc="(2730,260)" name="Multiplexer">
+ <comp lib="2" loc="(750,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(1520,260)" name="Multiplexer">
+ <comp lib="4" loc="(2010,270)" name="Register"/>
+ <comp lib="4" loc="(3110,270)" name="Register"/>
+ <comp lib="2" loc="(2510,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(3060,260)" name="Multiplexer">
+ <comp lib="4" loc="(3000,270)" name="Register"/>
+ <comp lib="4" loc="(360,270)" name="Register"/>
+ <comp lib="4" loc="(2780,270)" name="Register"/>
+ <comp lib="0" loc="(90,360)" name="Pin">
+ <a name="tristate" val="false"/>
+ <a name="label" val="PUSH"/>
+ </comp>
+ <comp lib="2" loc="(3390,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(3660,270)" name="Register"/>
- <comp lib="2" loc="(750,260)" name="Multiplexer">
+ <comp lib="0" loc="(90,390)" name="Pin">
+ <a name="tristate" val="false"/>
+ <a name="label" val="RST"/>
+ </comp>
+ <comp lib="2" loc="(1300,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(1630,260)" name="Multiplexer">
+ <comp lib="0" loc="(150,270)" name="Pin">
<a name="width" val="8"/>
- <a name="enable" val="false"/>
+ <a name="tristate" val="false"/>
+ <a name="label" val="INPUT"/>
</comp>
- <comp lib="4" loc="(2120,270)" name="Register"/>
- <comp lib="4" loc="(910,270)" name="Register"/>
- <comp lib="1" loc="(130,340)" name="OR Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <comp lib="2" loc="(1190,260)" name="Multiplexer">
+ <a name="width" val="8"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(2230,270)" name="Register"/>
- <comp lib="2" loc="(2180,260)" name="Multiplexer">
+ <comp lib="4" loc="(250,270)" name="Register"/>
+ <comp lib="2" loc="(2620,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
@@ -4499,119 +4360,120 @@
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(580,270)" name="Register"/>
- <comp lib="2" loc="(1410,260)" name="Multiplexer">
+ <comp lib="4" loc="(2120,270)" name="Register"/>
+ <comp lib="2" loc="(530,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(360,270)" name="Register"/>
+ <comp lib="4" loc="(800,270)" name="Register"/>
<comp lib="4" loc="(1900,270)" name="Register"/>
- <comp lib="2" loc="(1850,260)" name="Multiplexer">
- <a name="width" val="8"/>
- <a name="enable" val="false"/>
+ <comp lib="0" loc="(90,300)" name="Pin">
+ <a name="tristate" val="false"/>
+ <a name="label" val="CLK"/>
</comp>
- <comp lib="2" loc="(2510,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="(2070,260)" name="Multiplexer">
+ <comp lib="4" loc="(690,270)" name="Register"/>
+ <comp lib="2" loc="(3280,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(1960,260)" name="Multiplexer">
+ <comp lib="4" loc="(1790,270)" name="Register"/>
+ <comp lib="4" loc="(580,270)" name="Register"/>
+ <comp lib="4" loc="(3220,270)" name="Register"/>
+ <comp lib="4" loc="(1350,270)" name="Register"/>
+ <comp lib="4" loc="(3660,270)" name="Register"/>
+ <comp lib="0" loc="(90,330)" name="Pin">
+ <a name="tristate" val="false"/>
+ <a name="label" val="POP"/>
+ </comp>
+ <comp lib="2" loc="(970,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(1460,270)" name="Register"/>
- <comp lib="2" loc="(530,260)" name="Multiplexer">
+ <comp lib="2" loc="(2840,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="(2400,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="(2620,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="(2010,270)" name="Register"/>
+ <comp lib="4" loc="(470,270)" name="Register"/>
+ <comp lib="4" loc="(2450,270)" name="Register"/>
<comp lib="2" loc="(3500,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
<comp lib="4" loc="(1570,270)" name="Register"/>
- <comp lib="2" loc="(1080,260)" name="Multiplexer">
+ <comp lib="4" loc="(3550,270)" name="Register"/>
+ <comp lib="4" loc="(1130,270)" name="Register"/>
+ <comp lib="2" loc="(1630,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(1680,270)" name="Register"/>
- <comp lib="4" loc="(3220,270)" name="Register"/>
- <comp lib="2" loc="(3390,260)" name="Multiplexer">
+ <comp lib="4" loc="(2890,270)" name="Register"/>
+ <comp lib="2" loc="(860,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(3670,220)" name="Constant">
- <a name="facing" val="west"/>
+ <comp lib="2" loc="(3610,260)" name="Multiplexer">
<a name="width" val="8"/>
- <a name="value" val="0x0"/>
+ <a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(970,260)" name="Multiplexer">
+ <comp lib="2" loc="(2950,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(2340,270)" name="Register"/>
- <comp lib="2" loc="(1740,260)" name="Multiplexer">
+ <comp lib="4" loc="(1680,270)" name="Register"/>
+ <comp lib="2" loc="(420,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(860,260)" name="Multiplexer">
+ <comp lib="2" loc="(3060,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="2" loc="(640,260)" name="Multiplexer">
+ <comp lib="4" loc="(3330,270)" name="Register"/>
+ <comp lib="2" loc="(1080,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(90,330)" name="Pin">
- <a name="tristate" val="false"/>
- </comp>
- <comp lib="4" loc="(3110,270)" name="Register"/>
- <comp lib="4" loc="(2450,270)" name="Register"/>
- <comp lib="2" loc="(2840,260)" name="Multiplexer">
+ <comp lib="2" loc="(200,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(3550,270)" name="Register"/>
- <comp lib="0" loc="(90,300)" name="Pin">
- <a name="tristate" val="false"/>
+ <comp lib="1" loc="(130,340)" name="OR Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="2" loc="(200,260)" name="Multiplexer">
+ <comp lib="4" loc="(2670,270)" name="Register"/>
+ <comp lib="0" loc="(3670,220)" name="Constant">
+ <a name="facing" val="west"/>
<a name="width" val="8"/>
- <a name="enable" val="false"/>
+ <a name="value" val="0x0"/>
</comp>
- <comp lib="4" loc="(1240,270)" name="Register"/>
- <comp lib="2" loc="(420,260)" name="Multiplexer">
+ <comp lib="2" loc="(310,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(3440,270)" name="Register"/>
- <comp lib="2" loc="(3170,260)" name="Multiplexer">
+ <comp lib="4" loc="(2340,270)" name="Register"/>
+ <comp lib="4" loc="(910,270)" name="Register"/>
+ <comp lib="2" loc="(1520,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="4" loc="(3330,270)" name="Register"/>
- <comp lib="4" loc="(1020,270)" name="Register"/>
- <comp lib="4" loc="(690,270)" name="Register"/>
- <comp lib="4" loc="(2670,270)" name="Register"/>
- <comp lib="2" loc="(2950,260)" name="Multiplexer">
+ <comp lib="4" loc="(3440,270)" name="Register"/>
+ <comp lib="2" loc="(1960,260)" name="Multiplexer">
<a name="width" val="8"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(90,360)" name="Pin">
- <a name="tristate" val="false"/>
- </comp>
</circuit>
<circuit name="PC">
<a name="circuit" val="PC"/>
@@ -4660,67 +4522,66 @@
<wire from="(140,500)" to="(280,500)"/>
<wire from="(370,270)" to="(370,320)"/>
<wire from="(140,470)" to="(270,470)"/>
- <wire from="(200,310)" to="(200,370)"/>
- <comp lib="3" loc="(420,330)" name="Adder"/>
- <comp lib="0" loc="(140,500)" name="Pin">
- <a name="tristate" val="false"/>
- </comp>
+ <wire from="(200,310)" to="(200,370)"/>
<comp lib="0" loc="(360,390)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="width" val="8"/>
+ <a name="label" val="ADDRESS"/>
<a name="labelloc" val="east"/>
</comp>
- <comp lib="0" loc="(150,380)" name="Constant">
- <a name="width" val="8"/>
+ <comp lib="4" loc="(290,310)" name="Register">
+ <a name="trigger" val="falling"/>
</comp>
- <comp lib="2" loc="(250,310)" name="Multiplexer">
- <a name="select" val="2"/>
+ <comp lib="0" loc="(320,430)" name="Splitter">
+ <a name="facing" val="north"/>
+ <a name="appear" val="right"/>
+ </comp>
+ <comp lib="2" loc="(350,390)" name="Multiplexer">
<a name="width" val="8"/>
+ <a name="disabled" val="0"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(140,450)" name="Pin">
+ <comp lib="0" loc="(320,330)" name="Constant">
+ <a name="width" val="8"/>
+ </comp>
+ <comp lib="0" loc="(140,430)" name="Pin">
+ <a name="width" val="2"/>
+ <a name="tristate" val="false"/>
+ <a name="label" val="Jump Enable"/>
+ </comp>
+ <comp lib="0" loc="(140,500)" name="Pin">
<a name="tristate" val="false"/>
</comp>
- <comp lib="0" loc="(380,340)" name="Constant">
+ <comp lib="3" loc="(420,330)" name="Adder"/>
+ <comp lib="0" loc="(430,330)" name="Pin">
+ <a name="facing" val="west"/>
+ <a name="output" val="true"/>
<a name="width" val="8"/>
+ <a name="label" val="ADDRESS+1"/>
+ <a name="labelloc" val="east"/>
</comp>
- <comp lib="2" loc="(350,390)" name="Multiplexer">
+ <comp lib="2" loc="(250,310)" name="Multiplexer">
+ <a name="select" val="2"/>
<a name="width" val="8"/>
- <a name="disabled" val="0"/>
<a name="enable" val="false"/>
</comp>
- <comp lib="0" loc="(320,430)" name="Splitter">
- <a name="facing" val="north"/>
- <a name="appear" val="right"/>
- </comp>
<comp lib="0" loc="(140,470)" name="Pin">
<a name="tristate" val="false"/>
</comp>
- <comp lib="0" loc="(190,300)" name="Pin">
+ <comp lib="0" loc="(150,380)" name="Constant">
<a name="width" val="8"/>
- <a name="tristate" val="false"/>
- <a name="label" val="DATA"/>
- </comp>
- <comp lib="4" loc="(290,310)" name="Register">
- <a name="trigger" val="falling"/>
</comp>
- <comp lib="0" loc="(140,430)" name="Pin">
- <a name="width" val="2"/>
+ <comp lib="0" loc="(140,450)" name="Pin">
<a name="tristate" val="false"/>
- <a name="label" val="Jump Enable"/>
</comp>
- <comp lib="0" loc="(320,330)" name="Constant">
+ <comp lib="0" loc="(190,300)" name="Pin">
<a name="width" val="8"/>
+ <a name="tristate" val="false"/>
+ <a name="label" val="DATA"/>
</comp>
- <comp lib="1" loc="(260,450)" name="NOT Gate">
- <a name="size" val="20"/>
- </comp>
- <comp lib="0" loc="(430,330)" name="Pin">
- <a name="facing" val="west"/>
- <a name="output" val="true"/>
+ <comp lib="0" loc="(380,340)" name="Constant">
<a name="width" val="8"/>
- <a name="labelloc" val="east"/>
</comp>
<comp lib="3" loc="(360,320)" name="Adder"/>
<comp lib="0" loc="(130,360)" name="Pin">
@@ -4729,220 +4590,294 @@
<a name="label" val="ALU"/>
</comp>
<comp lib="3" loc="(190,370)" name="Adder"/>
+ <comp lib="1" loc="(260,450)" name="NOT Gate">
+ <a name="size" val="20"/>
+ </comp>
</circuit>
<circuit name="ExampleConfigurationROM">
<a name="circuit" val="ExampleConfigurationROM"/>
<a name="clabel" val=""/>
<a name="clabelup" val="east"/>
<a name="clabelfont" val="SansSerif plain 12"/>
+ <wire from="(660,700)" to="(660,710)"/>
+ <wire from="(460,330)" to="(710,330)"/>
<wire from="(600,360)" to="(600,370)"/>
+ <wire from="(480,560)" to="(480,820)"/>
+ <wire from="(220,210)" to="(470,210)"/>
+ <wire from="(480,170)" to="(850,170)"/>
<wire from="(470,210)" to="(470,350)"/>
- <wire from="(480,420)" to="(790,420)"/>
+ <wire from="(480,420)" to="(480,560)"/>
+ <wire from="(460,470)" to="(640,470)"/>
+ <wire from="(470,50)" to="(640,50)"/>
+ <wire from="(850,810)" to="(850,840)"/>
+ <wire from="(470,30)" to="(470,50)"/>
+ <wire from="(440,550)" to="(550,550)"/>
+ <wire from="(710,750)" to="(710,780)"/>
+ <wire from="(720,360)" to="(720,390)"/>
<wire from="(320,880)" to="(420,880)"/>
- <wire from="(680,360)" to="(680,400)"/>
+ <wire from="(530,90)" to="(530,110)"/>
+ <wire from="(430,150)" to="(430,430)"/>
<wire from="(650,730)" to="(650,770)"/>
+ <wire from="(830,20)" to="(830,130)"/>
<wire from="(710,710)" to="(710,750)"/>
- <wire from="(540,10)" to="(560,10)"/>
+ <wire from="(580,90)" to="(600,90)"/>
<wire from="(470,490)" to="(500,490)"/>
- <wire from="(610,80)" to="(610,190)"/>
+ <wire from="(460,920)" to="(490,920)"/>
+ <wire from="(450,130)" to="(450,940)"/>
+ <wire from="(830,130)" to="(830,290)"/>
<wire from="(350,510)" to="(500,510)"/>
+ <wire from="(470,30)" to="(480,30)"/>
+ <wire from="(470,70)" to="(480,70)"/>
<wire from="(410,10)" to="(410,60)"/>
- <wire from="(590,20)" to="(850,20)"/>
+ <wire from="(650,770)" to="(650,830)"/>
+ <wire from="(660,60)" to="(660,120)"/>
+ <wire from="(380,290)" to="(830,290)"/>
<wire from="(410,400)" to="(670,400)"/>
- <wire from="(680,400)" to="(690,400)"/>
+ <wire from="(540,100)" to="(540,150)"/>
+ <wire from="(860,780)" to="(870,780)"/>
+ <wire from="(320,940)" to="(450,940)"/>
<wire from="(480,170)" to="(480,420)"/>
- <wire from="(640,360)" to="(650,360)"/>
+ <wire from="(540,100)" to="(550,100)"/>
+ <wire from="(590,510)" to="(600,510)"/>
+ <wire from="(600,360)" to="(610,360)"/>
+ <wire from="(220,170)" to="(480,170)"/>
<wire from="(700,510)" to="(700,520)"/>
<wire from="(430,830)" to="(430,900)"/>
<wire from="(750,720)" to="(750,730)"/>
+ <wire from="(740,510)" to="(740,520)"/>
+ <wire from="(410,540)" to="(410,800)"/>
<wire from="(460,470)" to="(460,730)"/>
+ <wire from="(420,790)" to="(610,790)"/>
+ <wire from="(420,230)" to="(610,230)"/>
+ <wire from="(640,370)" to="(690,370)"/>
+ <wire from="(410,400)" to="(410,540)"/>
+ <wire from="(430,570)" to="(610,570)"/>
<wire from="(460,330)" to="(460,470)"/>
<wire from="(410,800)" to="(720,800)"/>
+ <wire from="(580,20)" to="(830,20)"/>
<wire from="(700,760)" to="(740,760)"/>
+ <wire from="(700,720)" to="(740,720)"/>
+ <wire from="(850,140)" to="(850,170)"/>
+ <wire from="(220,190)" to="(460,190)"/>
+ <wire from="(430,150)" to="(540,150)"/>
+ <wire from="(600,410)" to="(700,410)"/>
<wire from="(550,520)" to="(550,550)"/>
+ <wire from="(670,520)" to="(670,540)"/>
<wire from="(370,450)" to="(370,550)"/>
+ <wire from="(600,410)" to="(600,450)"/>
+ <wire from="(600,770)" to="(600,810)"/>
+ <wire from="(600,370)" to="(600,410)"/>
<wire from="(660,710)" to="(660,750)"/>
+ <wire from="(380,450)" to="(600,450)"/>
+ <wire from="(670,360)" to="(670,400)"/>
<wire from="(320,860)" to="(410,860)"/>
+ <wire from="(750,760)" to="(750,800)"/>
+ <wire from="(540,500)" to="(560,500)"/>
+ <wire from="(530,90)" to="(550,90)"/>
<wire from="(650,730)" to="(670,730)"/>
+ <wire from="(650,770)" to="(670,770)"/>
<wire from="(710,710)" to="(730,710)"/>
- <wire from="(710,380)" to="(740,380)"/>
- <wire from="(460,190)" to="(610,190)"/>
- <wire from="(600,410)" to="(800,410)"/>
+ <wire from="(710,750)" to="(730,750)"/>
+ <wire from="(410,250)" to="(620,250)"/>
+ <wire from="(700,410)" to="(730,410)"/>
+ <wire from="(850,60)" to="(850,120)"/>
<wire from="(360,450)" to="(370,450)"/>
<wire from="(360,290)" to="(370,290)"/>
- <wire from="(430,180)" to="(560,180)"/>
<wire from="(460,730)" to="(460,920)"/>
+ <wire from="(610,380)" to="(610,430)"/>
+ <wire from="(220,230)" to="(420,230)"/>
<wire from="(660,750)" to="(670,750)"/>
- <wire from="(480,170)" to="(870,170)"/>
+ <wire from="(410,10)" to="(480,10)"/>
+ <wire from="(670,360)" to="(680,360)"/>
+ <wire from="(710,360)" to="(720,360)"/>
+ <wire from="(550,520)" to="(560,520)"/>
+ <wire from="(590,80)" to="(600,80)"/>
<wire from="(600,770)" to="(610,770)"/>
<wire from="(370,590)" to="(370,840)"/>
+ <wire from="(630,80)" to="(640,80)"/>
<wire from="(660,520)" to="(660,530)"/>
<wire from="(430,570)" to="(430,830)"/>
+ <wire from="(800,60)" to="(850,60)"/>
<wire from="(480,820)" to="(860,820)"/>
+ <wire from="(470,490)" to="(470,750)"/>
+ <wire from="(600,500)" to="(600,510)"/>
<wire from="(680,700)" to="(730,700)"/>
- <wire from="(470,50)" to="(660,50)"/>
<wire from="(370,130)" to="(370,260)"/>
<wire from="(370,290)" to="(370,420)"/>
+ <wire from="(430,90)" to="(480,90)"/>
<wire from="(430,430)" to="(430,570)"/>
+ <wire from="(470,70)" to="(470,210)"/>
+ <wire from="(470,350)" to="(470,490)"/>
+ <wire from="(470,750)" to="(470,890)"/>
+ <wire from="(460,730)" to="(640,730)"/>
+ <wire from="(720,730)" to="(720,800)"/>
+ <wire from="(320,920)" to="(440,920)"/>
<wire from="(600,810)" to="(850,810)"/>
+ <wire from="(360,580)" to="(360,590)"/>
<wire from="(410,250)" to="(410,400)"/>
- <wire from="(640,100)" to="(640,130)"/>
+ <wire from="(420,390)" to="(720,390)"/>
+ <wire from="(470,50)" to="(470,70)"/>
+ <wire from="(440,410)" to="(550,410)"/>
+ <wire from="(440,810)" to="(550,810)"/>
<wire from="(420,790)" to="(420,880)"/>
- <wire from="(850,20)" to="(850,130)"/>
+ <wire from="(640,60)" to="(640,80)"/>
+ <wire from="(710,330)" to="(710,350)"/>
+ <wire from="(620,100)" to="(620,250)"/>
+ <wire from="(440,110)" to="(530,110)"/>
+ <wire from="(680,500)" to="(680,540)"/>
+ <wire from="(380,580)" to="(600,580)"/>
<wire from="(430,830)" to="(650,830)"/>
<wire from="(470,350)" to="(500,350)"/>
<wire from="(470,750)" to="(500,750)"/>
- <wire from="(470,30)" to="(500,30)"/>
- <wire from="(600,90)" to="(620,90)"/>
+ <wire from="(520,80)" to="(550,80)"/>
+ <wire from="(590,80)" to="(590,190)"/>
<wire from="(440,810)" to="(440,920)"/>
- <wire from="(850,130)" to="(850,290)"/>
+ <wire from="(720,800)" to="(750,800)"/>
<wire from="(220,150)" to="(430,150)"/>
<wire from="(350,770)" to="(500,770)"/>
<wire from="(350,370)" to="(500,370)"/>
<wire from="(480,820)" to="(480,860)"/>
<wire from="(480,860)" to="(490,860)"/>
- <wire from="(680,60)" to="(680,120)"/>
+ <wire from="(530,30)" to="(530,90)"/>
+ <wire from="(370,130)" to="(450,130)"/>
+ <wire from="(410,540)" to="(670,540)"/>
+ <wire from="(830,130)" to="(840,130)"/>
+ <wire from="(680,540)" to="(690,540)"/>
+ <wire from="(530,30)" to="(540,30)"/>
<wire from="(600,500)" to="(610,500)"/>
- <wire from="(700,370)" to="(700,380)"/>
+ <wire from="(590,370)" to="(600,370)"/>
+ <wire from="(640,500)" to="(650,500)"/>
+ <wire from="(590,770)" to="(600,770)"/>
<wire from="(220,250)" to="(410,250)"/>
<wire from="(440,550)" to="(440,810)"/>
<wire from="(420,530)" to="(420,790)"/>
- <wire from="(810,560)" to="(810,570)"/>
+ <wire from="(690,320)" to="(740,320)"/>
<wire from="(440,410)" to="(440,550)"/>
<wire from="(420,390)" to="(420,530)"/>
+ <wire from="(430,430)" to="(610,430)"/>
<wire from="(460,190)" to="(460,330)"/>
- <wire from="(870,140)" to="(870,170)"/>
+ <wire from="(610,100)" to="(610,230)"/>
<wire from="(550,780)" to="(550,810)"/>
<wire from="(550,380)" to="(550,410)"/>
<wire from="(420,530)" to="(660,530)"/>
<wire from="(640,470)" to="(640,500)"/>
- <wire from="(440,110)" to="(440,140)"/>
- <wire from="(560,100)" to="(560,180)"/>
- <wire from="(410,130)" to="(640,130)"/>
+ <wire from="(320,900)" to="(430,900)"/>
+ <wire from="(600,550)" to="(600,580)"/>
+ <wire from="(430,60)" to="(430,90)"/>
+ <wire from="(740,320)" to="(740,400)"/>
<wire from="(640,710)" to="(640,730)"/>
- <wire from="(410,10)" to="(500,10)"/>
- <wire from="(790,570)" to="(810,570)"/>
+ <wire from="(690,320)" to="(690,340)"/>
<wire from="(600,510)" to="(600,550)"/>
- <wire from="(470,80)" to="(500,80)"/>
+ <wire from="(700,370)" to="(700,410)"/>
+ <wire from="(540,360)" to="(560,360)"/>
+ <wire from="(540,760)" to="(560,760)"/>
+ <wire from="(520,10)" to="(550,10)"/>
<wire from="(370,840)" to="(850,840)"/>
<wire from="(420,230)" to="(420,390)"/>
<wire from="(220,110)" to="(440,110)"/>
- <wire from="(420,120)" to="(420,230)"/>
<wire from="(720,730)" to="(750,730)"/>
<wire from="(220,130)" to="(370,130)"/>
- <wire from="(470,890)" to="(490,890)"/>
- <wire from="(450,260)" to="(450,940)"/>
- <wire from="(870,60)" to="(870,120)"/>
- <wire from="(410,800)" to="(410,860)"/>
- <wire from="(610,520)" to="(610,570)"/>
- <wire from="(640,510)" to="(650,510)"/>
- <wire from="(610,80)" to="(620,80)"/>
- <wire from="(660,380)" to="(660,390)"/>
- <wire from="(660,700)" to="(660,710)"/>
- <wire from="(820,60)" to="(870,60)"/>
- <wire from="(480,560)" to="(480,820)"/>
- <wire from="(220,210)" to="(470,210)"/>
- <wire from="(480,420)" to="(480,560)"/>
- <wire from="(460,470)" to="(640,470)"/>
- <wire from="(850,810)" to="(850,840)"/>
- <wire from="(470,30)" to="(470,50)"/>
- <wire from="(440,550)" to="(550,550)"/>
- <wire from="(710,750)" to="(710,780)"/>
- <wire from="(430,150)" to="(430,180)"/>
- <wire from="(660,60)" to="(660,80)"/>
- <wire from="(460,920)" to="(490,920)"/>
- <wire from="(650,770)" to="(650,830)"/>
- <wire from="(550,30)" to="(550,80)"/>
- <wire from="(850,130)" to="(860,130)"/>
- <wire from="(860,780)" to="(870,780)"/>
- <wire from="(320,940)" to="(450,940)"/>
- <wire from="(430,100)" to="(500,100)"/>
- <wire from="(590,510)" to="(600,510)"/>
- <wire from="(600,360)" to="(610,360)"/>
- <wire from="(220,170)" to="(480,170)"/>
- <wire from="(740,510)" to="(740,520)"/>
- <wire from="(410,540)" to="(410,800)"/>
- <wire from="(420,790)" to="(610,790)"/>
- <wire from="(790,560)" to="(790,570)"/>
- <wire from="(810,420)" to="(810,430)"/>
- <wire from="(410,400)" to="(410,540)"/>
- <wire from="(430,570)" to="(610,570)"/>
- <wire from="(780,550)" to="(780,580)"/>
- <wire from="(700,720)" to="(740,720)"/>
- <wire from="(220,190)" to="(460,190)"/>
- <wire from="(420,390)" to="(660,390)"/>
- <wire from="(640,330)" to="(640,360)"/>
- <wire from="(670,520)" to="(670,540)"/>
- <wire from="(790,430)" to="(810,430)"/>
- <wire from="(600,770)" to="(600,810)"/>
- <wire from="(600,370)" to="(600,410)"/>
- <wire from="(750,760)" to="(750,800)"/>
- <wire from="(540,500)" to="(560,500)"/>
- <wire from="(800,410)" to="(800,450)"/>
- <wire from="(650,770)" to="(670,770)"/>
- <wire from="(710,750)" to="(730,750)"/>
- <wire from="(540,90)" to="(570,90)"/>
- <wire from="(550,80)" to="(550,140)"/>
- <wire from="(380,580)" to="(780,580)"/>
- <wire from="(610,380)" to="(610,430)"/>
- <wire from="(220,230)" to="(420,230)"/>
- <wire from="(550,520)" to="(560,520)"/>
- <wire from="(410,130)" to="(410,250)"/>
- <wire from="(640,370)" to="(650,370)"/>
- <wire from="(470,490)" to="(470,750)"/>
- <wire from="(600,500)" to="(600,510)"/>
- <wire from="(600,550)" to="(780,550)"/>
- <wire from="(440,140)" to="(440,410)"/>
- <wire from="(470,350)" to="(470,490)"/>
- <wire from="(460,330)" to="(640,330)"/>
- <wire from="(470,750)" to="(470,890)"/>
- <wire from="(460,730)" to="(640,730)"/>
- <wire from="(480,560)" to="(790,560)"/>
- <wire from="(720,730)" to="(720,800)"/>
- <wire from="(320,920)" to="(440,920)"/>
- <wire from="(360,580)" to="(360,590)"/>
- <wire from="(440,410)" to="(550,410)"/>
- <wire from="(440,810)" to="(550,810)"/>
- <wire from="(470,50)" to="(470,80)"/>
- <wire from="(380,450)" to="(800,450)"/>
- <wire from="(780,550)" to="(800,550)"/>
- <wire from="(680,500)" to="(680,540)"/>
- <wire from="(550,80)" to="(570,80)"/>
- <wire from="(720,800)" to="(750,800)"/>
- <wire from="(380,290)" to="(850,290)"/>
- <wire from="(410,540)" to="(670,540)"/>
- <wire from="(680,540)" to="(690,540)"/>
- <wire from="(430,180)" to="(430,430)"/>
- <wire from="(560,100)" to="(570,100)"/>
- <wire from="(590,370)" to="(600,370)"/>
- <wire from="(640,500)" to="(650,500)"/>
- <wire from="(590,770)" to="(600,770)"/>
- <wire from="(740,370)" to="(740,380)"/>
- <wire from="(470,80)" to="(470,210)"/>
- <wire from="(790,420)" to="(790,430)"/>
- <wire from="(430,430)" to="(610,430)"/>
- <wire from="(440,140)" to="(550,140)"/>
- <wire from="(320,900)" to="(430,900)"/>
- <wire from="(630,100)" to="(630,120)"/>
- <wire from="(670,380)" to="(670,400)"/>
- <wire from="(540,360)" to="(560,360)"/>
- <wire from="(540,760)" to="(560,760)"/>
- <wire from="(420,120)" to="(630,120)"/>
<wire from="(710,520)" to="(740,520)"/>
- <wire from="(430,60)" to="(430,100)"/>
+ <wire from="(440,110)" to="(440,410)"/>
+ <wire from="(470,890)" to="(490,890)"/>
<wire from="(640,780)" to="(710,780)"/>
+ <wire from="(480,560)" to="(810,560)"/>
+ <wire from="(600,550)" to="(800,550)"/>
<wire from="(360,590)" to="(370,590)"/>
- <wire from="(370,260)" to="(450,260)"/>
+ <wire from="(460,190)" to="(590,190)"/>
+ <wire from="(410,800)" to="(410,860)"/>
+ <wire from="(610,520)" to="(610,570)"/>
+ <wire from="(480,420)" to="(740,420)"/>
<wire from="(550,380)" to="(560,380)"/>
<wire from="(550,780)" to="(560,780)"/>
- <wire from="(650,80)" to="(660,80)"/>
- <comp lib="1" loc="(370,550)" name="OR Gate">
+ <wire from="(640,510)" to="(650,510)"/>
+ <comp loc="(220,130)" name="MCU"/>
+ <comp lib="1" loc="(740,420)" name="Controlled Buffer">
+ <a name="facing" val="south"/>
+ <a name="width" val="8"/>
+ </comp>
+ <comp lib="6" loc="(330,373)" name="Text">
+ <a name="text" val="Memory Mapped I/O Port Address"/>
+ <a name="halign" val="right"/>
+ </comp>
+ <comp lib="0" loc="(430,60)" name="Constant">
+ <a name="width" val="8"/>
+ <a name="value" val="0xff"/>
+ </comp>
+ <comp lib="1" loc="(700,760)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </comp>
+ <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,370)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ </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,900)" name="Pin">
+ <a name="output" val="true"/>
+ <a name="label" val="WRITE ACTIVE"/>
+ </comp>
+ <comp lib="6" loc="(656,608)" name="Text">
+ <a name="text" val="Output:"/>
+ <a name="font" val="SansSerif bold 16"/>
+ <a name="halign" val="left"/>
+ </comp>
+ <comp lib="0" loc="(350,370)" name="Constant">
+ <a name="width" val="8"/>
+ <a name="value" val="0xfe"/>
+ </comp>
+ <comp lib="3" loc="(520,80)" name="Comparator">
+ <a name="mode" val="unsigned"/>
+ </comp>
+ <comp lib="1" loc="(850,140)" name="Controlled Buffer">
+ <a name="facing" val="south"/>
+ <a name="width" val="8"/>
+ </comp>
+ <comp lib="0" loc="(320,940)" name="Pin">
+ <a name="output" val="true"/>
+ <a name="label" val="IO ENABLE"/>
+ </comp>
+ <comp lib="0" loc="(320,920)" name="Pin">
+ <a name="output" val="true"/>
+ <a name="label" val="IO ACTIVE"/>
+ </comp>
+ <comp lib="1" loc="(860,820)" name="Controlled Buffer">
+ <a name="facing" val="south"/>
+ <a name="width" val="8"/>
+ </comp>
+ <comp lib="6" loc="(329,514)" name="Text">
+ <a name="text" val="Memory Mapped I/O Port Address"/>
+ <a name="halign" val="right"/>
+ </comp>
+ <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="0" loc="(860,800)" name="Splitter">
<a name="facing" val="north"/>
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <a name="fanout" val="8"/>
+ <a name="incoming" val="8"/>
+ <a name="appear" val="right"/>
</comp>
- <comp lib="5" loc="(740,370)" name="Hex Digit Display"/>
- <comp lib="0" loc="(680,60)" name="Splitter">
+ <comp lib="0" loc="(660,60)" name="Splitter">
<a name="facing" val="west"/>
<a name="incoming" val="16"/>
<a name="appear" val="center"/>
@@ -4962,31 +4897,7 @@
<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>
- <comp lib="0" loc="(430,60)" name="Constant">
- <a name="width" val="8"/>
- <a name="value" val="0xff"/>
- </comp>
- <comp lib="6" loc="(656,608)" name="Text">
- <a name="text" val="Output:"/>
- <a name="font" val="SansSerif bold 16"/>
- <a name="halign" val="left"/>
- </comp>
- <comp lib="1" loc="(810,420)" name="Controlled Buffer">
- <a name="facing" val="south"/>
- <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="(382,57)" name="Text">
- <a name="halign" val="right"/>
- </comp>
- <comp lib="4" loc="(820,60)" name="ROM">
+ <comp lib="4" loc="(800,60)" name="ROM">
<a name="addrWidth" val="16"/>
<a name="contents">addr/data: 16 8
67 0 a 21 65 6d 6f 63
@@ -5022,26 +4933,19 @@ fc 9f a3 d7 83 f1 9b 83
ea 48 90
</a>
</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 lib="1" loc="(700,720)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
+ <a name="negate0" val="true"/>
</comp>
- <comp lib="0" loc="(690,540)" name="Splitter">
- <a name="facing" val="north"/>
+ <comp loc="(700,340)" name="STK"/>
+ <comp lib="0" loc="(640,710)" name="Splitter">
+ <a name="fanout" val="8"/>
<a name="incoming" val="8"/>
- <a name="appear" val="right"/>
- <a name="bit1" val="0"/>
- <a name="bit2" val="0"/>
- <a name="bit3" val="0"/>
- <a name="bit4" val="1"/>
- <a name="bit5" val="1"/>
- <a name="bit6" val="1"/>
- <a name="bit7" val="1"/>
</comp>
- <comp lib="6" loc="(329,514)" name="Text">
- <a name="text" val="Memory Mapped I/O Port Address"/>
- <a name="halign" val="right"/>
+ <comp lib="0" loc="(350,510)" name="Constant">
+ <a name="width" val="8"/>
+ <a name="value" val="0xfd"/>
</comp>
<comp lib="0" loc="(490,920)" name="Probe">
<a name="facing" val="west"/>
@@ -5050,55 +4954,34 @@ ea 48 90
<a name="labelloc" val="east"/>
<a name="labelfont" val="SansSerif bold 12"/>
</comp>
- <comp lib="1" loc="(590,20)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- <a name="negate1" val="true"/>
- </comp>
- <comp lib="1" loc="(640,370)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="1" loc="(640,780)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="5" loc="(700,370)" name="Hex Digit Display"/>
- <comp lib="1" loc="(870,140)" name="Controlled Buffer">
- <a name="facing" val="south"/>
- <a name="width" val="8"/>
- </comp>
- <comp lib="1" loc="(590,370)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="3" loc="(540,20)" name="Comparator">
+ <comp lib="3" loc="(540,360)" name="Comparator">
<a name="mode" val="unsigned"/>
</comp>
- <comp lib="6" loc="(330,373)" name="Text">
+ <comp lib="5" loc="(740,510)" name="Hex Digit Display"/>
+ <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="4" loc="(680,360)" name="Register"/>
- <comp lib="3" loc="(540,360)" name="Comparator">
- <a name="mode" val="unsigned"/>
+ <comp lib="4" loc="(680,500)" name="Register"/>
+ <comp lib="0" loc="(320,860)" name="Pin">
+ <a name="tristate" val="false"/>
+ <a name="label" val="RESET"/>
</comp>
- <comp loc="(220,130)" name="MCU"/>
- <comp lib="0" loc="(320,900)" name="Pin">
- <a name="output" val="true"/>
- <a name="label" val="WRITE ACTIVE"/>
+ <comp lib="6" loc="(382,57)" name="Text">
+ <a name="halign" val="right"/>
</comp>
- <comp lib="5" loc="(730,710)" name="TTY">
- <a name="cols" val="80"/>
+ <comp lib="0" loc="(410,60)" name="Constant">
+ <a name="width" val="8"/>
+ <a name="value" val="0xfc"/>
</comp>
- <comp lib="3" loc="(540,90)" name="Comparator">
+ <comp lib="3" loc="(540,760)" name="Comparator">
<a name="mode" val="unsigned"/>
</comp>
- <comp lib="0" loc="(320,940)" name="Pin">
- <a name="output" val="true"/>
- <a name="label" val="IO ENABLE"/>
+ <comp lib="1" loc="(640,370)" name="AND Gate">
+ <a name="size" val="30"/>
+ <a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(590,510)" name="AND Gate">
+ <comp lib="1" loc="(640,510)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
@@ -5107,135 +4990,61 @@ ea 48 90
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="1" loc="(700,760)" name="AND Gate">
+ <comp lib="1" loc="(580,90)" name="AND Gate">
<a name="size" val="30"/>
- <a name="inputs" val="2"/>
+ <a name="inputs" val="3"/>
</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 lib="5" loc="(730,710)" name="TTY">
+ <a name="cols" val="80"/>
</comp>
- <comp lib="0" loc="(410,60)" name="Constant">
+ <comp lib="1" loc="(640,780)" 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="0" loc="(810,540)" name="Pin">
+ <comp lib="1" loc="(860,780)" name="NOT Gate">
<a name="facing" val="south"/>
- <a name="width" val="8"/>
- <a name="tristate" val="false"/>
- </comp>
- <comp lib="0" loc="(680,700)" name="Splitter">
- <a name="facing" val="west"/>
- <a name="fanout" val="7"/>
- <a name="incoming" val="7"/>
- <a name="appear" val="right"/>
- </comp>
- <comp lib="3" loc="(540,500)" name="Comparator">
- <a name="mode" val="unsigned"/>
+ <a name="size" val="20"/>
</comp>
- <comp lib="6" loc="(883,753)" name="Text">
- <a name="text" val=" ← Keyboard"/>
- <a name="font" val="SansSerif bold 16"/>
+ <comp lib="6" loc="(658,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="(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="(810,400)" name="Pin">
- <a name="facing" val="south"/>
- <a name="width" val="8"/>
- <a name="tristate" val="false"/>
- </comp>
- <comp lib="0" loc="(640,710)" name="Splitter">
- <a name="fanout" val="8"/>
- <a name="incoming" val="8"/>
- </comp>
- <comp lib="5" loc="(740,510)" name="Hex Digit Display"/>
- <comp lib="0" loc="(350,770)" name="Constant">
- <a name="width" val="8"/>
- <a name="value" val="0xfc"/>
- </comp>
- <comp lib="1" loc="(590,770)" name="AND Gate">
- <a name="size" val="30"/>
- <a name="inputs" val="2"/>
- </comp>
- <comp lib="0" loc="(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 lib="3" loc="(520,20)" name="Comparator">
+ <a name="mode" val="unsigned"/>
</comp>
- <comp lib="0" loc="(320,860)" name="Pin">
- <a name="tristate" val="false"/>
- <a name="label" val="RESET"/>
+ <comp lib="0" loc="(320,880)" name="Clock">
+ <a name="label" val="CLOCK"/>
</comp>
- <comp lib="0" loc="(680,120)" name="Probe">
+ <comp lib="0" loc="(660,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,370)" name="Constant">
- <a name="width" val="8"/>
- <a name="value" val="0xfe"/>
- </comp>
- <comp lib="4" loc="(650,80)" name="Register"/>
- <comp lib="0" loc="(320,920)" name="Pin">
- <a name="output" val="true"/>
- <a name="label" val="IO ACTIVE"/>
- </comp>
<comp lib="5" loc="(730,750)" name="Keyboard">
<a name="buflen" val="80"/>
<a name="trigger" val="falling"/>
</comp>
- <comp lib="0" loc="(350,510)" name="Constant">
- <a name="width" val="8"/>
- <a name="value" val="0xfd"/>
- </comp>
- <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="(860,820)" name="Controlled Buffer">
- <a name="facing" val="south"/>
- <a name="width" 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="(700,720)" name="AND Gate">
+ <comp lib="1" loc="(580,20)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
- <a name="negate0" val="true"/>
+ <a name="negate1" val="true"/>
</comp>
- <comp lib="4" loc="(680,500)" name="Register"/>
- <comp lib="1" loc="(640,510)" name="AND Gate">
+ <comp lib="1" loc="(590,770)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
- <comp lib="6" loc="(388,63)" name="Text">
- <a name="text" val="Sets the memory-mapped address range"/>
- <a name="halign" val="right"/>
+ <comp 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="4" loc="(630,80)" name="Register"/>
<comp lib="5" loc="(700,510)" name="Hex Digit Display"/>
- <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="0" loc="(490,890)" name="Probe">
<a name="facing" val="west"/>
<a name="radix" val="16"/>
@@ -5243,15 +5052,42 @@ ea 48 90
<a name="labelloc" val="east"/>
<a name="labelfont" val="SansSerif bold 12"/>
</comp>
+ <comp lib="3" loc="(540,500)" name="Comparator">
+ <a name="mode" val="unsigned"/>
+ </comp>
+ <comp lib="6" loc="(883,753)" name="Text">
+ <a name="text" val=" ← Keyboard"/>
+ <a name="font" val="SansSerif bold 16"/>
+ <a name="halign" val="left"/>
+ </comp>
+ <comp lib="0" loc="(680,700)" name="Splitter">
+ <a name="facing" val="west"/>
+ <a name="fanout" val="7"/>
+ <a name="incoming" val="7"/>
+ <a name="appear" val="right"/>
+ </comp>
+ <comp lib="0" loc="(870,760)" name="Splitter">
+ <a name="facing" val="south"/>
+ <a name="fanout" val="7"/>
+ <a name="incoming" val="7"/>
+ </comp>
<comp lib="1" loc="(810,560)" name="Controlled Buffer">
<a name="facing" val="south"/>
<a name="width" val="8"/>
</comp>
- <comp lib="3" loc="(540,760)" name="Comparator">
- <a name="mode" val="unsigned"/>
+ <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="(320,880)" name="Clock">
- <a name="label" val="CLOCK"/>
+ <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>
</circuit>
</project>
diff --git a/ExamplePrograms/README.md b/ExamplePrograms/README.md
@@ -107,7 +107,7 @@ there is underflow. `op` will perform A >> B.
sop_rsh
-Program Counter Return Address - stores program counter return address to `GRA`
+Program Counter Return Address - pushes program counter return address to stack
pcr
diff --git a/ExamplePrograms/terminal_test.tac b/ExamplePrograms/terminal_test.tac
@@ -145,7 +145,7 @@ cmpr_f: lli 0x0 # return pointer memory address
sp GRA
######## Get the buffer length + start address
lb GRC
- ptrinc
+ ptrinc
lb GRB
sp GRB
######## If the length of our string does not match our buffer,
diff --git a/ExamplePrograms/test_segments.tac b/ExamplePrograms/test_segments.tac
@@ -1,6 +1,15 @@
# test_segment - This file demonstrates how to call and return between segments
# of memory that expands the program memory size limit to 0xFFFF
#
+# The program counter of the TISC is only able to address the 8-bit space: this
+# allows for an architecture that uses an absolute one byte unit as the atomic
+# size for processing instruction metadata. This program explores expanding the
+# executable instruction space to a 16-bit space.
+#
+# The method in which we are able to expand the executable instruction space is
+# through the use of external instruction memory with a writable register mapped
+# to a 8-bit RAM space.
+
#-------------------------------------------------0x00 SEGMENT START------------
#-------------------------------------------------0x00 SEGMENT INDEX START------
# Segment index, responsible for "routing" calls to other segments
@@ -16,16 +25,17 @@ index@00: nand NIL NIL GRC
#
# Since this is in segment 0x00, we must test if we are just starting
sop_and
- cmp GRA GRA # test if the jump pointer is
+ cmp GRA GRA # test if the jump pointer is null
jmp begin@00 # jump to the actual beginning of the program
goto # jump to the pointer if it isn't 0
#-------------------------------------------------0x00 SEGMENT INDEX END--------
-#
+#
begin@00: lli 0x1 # segment address
mov GRA GRB
getlabel test@01 # get the address of our target function in 0x01
pcr
jmp index@00
+ pop
loop@00: jmp loop@00
#-------------------------------------------------0x00 SEGMENT END--------------
#-------------------------------------------------0x01 SEGMENT START------------
diff --git a/INSTRUCTION_SET b/INSTRUCTION_SET
@@ -14,7 +14,7 @@ Tiny Instruction Set Computer
RAW - memonic - description
-----------------------------------------------------------------------<--------
00000000 - SOP_ADD ----- SetOp ADD, flag if overflow
-00010000 - SOP_SUB ----- SetOp SUB, A-B and flag if sign is positive
+00010000 - SOP_SUB ----- SetOp SUB, A-B and flag if sign is positive
00100000 - SOP_AND ----- SetOp AND, A&B and flag if the output is nonzero
00110000 - SOP_XOR ----- SetOp XOR, A^B and flag if the output is nonzero
01000000 - SOP_XNOR ----- SetOp XNOR, ~(A^B) and flag if the output is nonzero
@@ -29,7 +29,7 @@ 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
-01000011 - LI ----- Load byte 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
@@ -40,7 +40,7 @@ C B 0010 - CIN ----- C = ++B
10001011 - SBS ----- Pop stack and store to mem pointer
10B 1011 - SB ----- Store contents of ARGB GPR to mem pointer
10001111 - SPS ----- Pop stack and set mem pointer
-10B 1111 - SP ----- Set pointer ARGB GPR
+10B 1111 - SP ----- Set pointer ARGB GPR
11B A 11 - CMP ----- Computes flag on set operation
-----------------------------------------------------------------------<--------
@@ -50,4 +50,5 @@ A = Arguement A / ARGA
GRA = General Purpose Register A = 0b01
GRB = General Purpose Register B = 0b10
-GRC = General Purpose Register C = 0b11
-\ No newline at end of file
+GRC = General Purpose Register C = 0b11
+
diff --git a/README.md b/README.md
@@ -5,13 +5,21 @@ an assembler to program the simulated implementation in [Logisim](http://www.cbu
![TISC v2.3](Screenshots/tiscv2_3.png)
+My goal with this project is to aim for an instruction set architecture that is
+focused on minimal scale. I've [written about the first ressurection of this
+project on my blog](https://banna.tech/post/dusty_digital_and_forgotten_ideas/)
+before and I am sporatically finding ways to explore the original idea of
+"minimal scale" through modifications and continuation of work contained within
+this repository.
+
+
## Want to play with it too?
The default program loaded in the ExampleConfigurationROM circuit is the
`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 tests for
-command strings with routines to execute if the buffer contains a command string.
+to the TTY component. The 32 characters are buffered and compared to existing
+command strings with routines to execute per each command string.
![TISC Example configuration](Screenshots/tiscv2_3_example.png)
@@ -32,26 +40,28 @@ program that is ready to load into the Logisim circuit.
A successful output will appear like this:
- $ tisc ExamplePrograms/fibb_test.tac out
- Assembling tac file: 'ExamplePrograms/fibb_test.tac' TISC v2.1
- ln# [addr]:label <op> <args>
- 002 [0x00]: li 254
- 003 [0x02]: sp GRA
- 005 [0x03]: cin NIL GRC
- 007 [0x04]:loop sb GRB
- 009 [0x05]: sop_xor
- 010 [0x06]: op GRB GRC GRC
- 011 [0x07]: op GRB GRC GRB
- 012 [0x08]: op GRB GRC GRC
- 014 [0x09]: sop_add
- 015 [0x0a]: op GRB GRC GRB
- 017 [0x0b]: cmp GRB GRC
- 018 [0x0c]: jmp loop
- 020 [0x0e]: sb GRB
- 021 [0x0f]:end jmp end
+ $ ./tisc ExamplePrograms/fibb_test.tac out
+ Assembling tac file: 'ExamplePrograms/fibb_test.tac' TISC v2.3
+ label line addr:out>op args
+ 0003 0000:43| li 254
+ 0001:fe| +
+ 0004 0002:9f| sp GRA
+ 0006 0003:c2| cin NIL GRC
+ loop 0008 0004:ab| sb GRB
+ 0010 0005:30| sop_xor
+ 0011 0006:fa| op GRB GRC GRC
+ 0012 0007:ba| op GRB GRC GRB
+ 0013 0008:fa| op GRB GRC GRC
+ 0015 0009:00| sop_add
+ 0016 000a:ba| op GRB GRC GBR
+ 0018 000b:fb| cmp GRB GRC
+ 0019 000c:83| jmp loop
+ 000d:04| +
+ 0021 000e:ab| sb GRB
+ end 0022 000f:83| jmp end
+ end 0010:0f| +
Finished assembling tac file: 'ExamplePrograms/fibb_test.tac', program size: 17 bytes
-
## Loading a program
The provided example application in the circuit ExampleConfigurationROM is a
diff --git a/Screenshots/tiscv2_3.png b/Screenshots/tiscv2_3.png
Binary files differ.
diff --git a/Screenshots/tiscv2_3_example.png b/Screenshots/tiscv2_3_example.png
Binary files differ.
diff --git a/tisc.c b/tisc.c
@@ -3,6 +3,7 @@
#include <stdint.h>
#include <string.h>
+#define VERSION_STRING "v2.3"
#define TOT_INSTRUCTIONS 33
#define MAX_SYMBOLS 1000
#define MAX_SYMBOL_LEN 100
@@ -19,6 +20,8 @@
#define GR_C 0x3
#define GR_C_STRING "GRC"
+#define TOKENIZER " \t\n"
+
int validSymbols = 0;
int addresses[MAX_SYMBOLS];
char symbols[MAX_SYMBOLS][MAX_SYMBOL_LEN];
@@ -180,19 +183,22 @@ int process_label_final(char *label, int address)
uint8_t getRegisterEnumeration(char* string)
{
- if ((string != NULL) && (strncmp(string, GR_A_STRING, strlen(GR_A_STRING)) == 0))
+ if (string == NULL) {
+ return 0xFF;
+ }
+ if (strncmp(string, GR_A_STRING, strlen(GR_A_STRING)) == 0)
{
return GR_A;
- } else
- if ((string != NULL) && (strncmp(string, GR_B_STRING, strlen(GR_B_STRING)) == 0))
+ }
+ if (strncmp(string, GR_B_STRING, strlen(GR_B_STRING)) == 0)
{
return GR_B;
- } else
- if ((string != NULL) && (strncmp(string, GR_C_STRING, strlen(GR_C_STRING)) == 0))
+ }
+ if (strncmp(string, GR_C_STRING, strlen(GR_C_STRING)) == 0)
{
return GR_C;
- } else
- if ((string != NULL) && (strncmp(string, NR_STRING, strlen(NR_STRING)) == 0))
+ }
+ if (strncmp(string, NR_STRING, strlen(NR_STRING)) == 0)
{
return NR;
}
@@ -369,25 +375,39 @@ int assemble_lni(
int byte_len = 0;
int bytes[MAX_LNI_SIZE];
- char* byte_str = strtok(arg[0], ",");
-
- while (byte_str != NULL)
+ if (arg[0][0] == '"')
{
- int value = stringToInteger(byte_str);
-
- if (value > 255 || value < 0)
+ for (int i = 1; arg[0][i] != '\0'; i++)
{
- byte_len = 0;
- printf("FATAL: value provided is invalid %i\n", value);
- break;
+
}
-
- byte_str = strtok(NULL, ",");
- if (byte_len < MAX_LNI_SIZE)
+ }
+ else
+ {
+ char* arg_copy = (char*)malloc(sizeof(char) * strlen(arg[0]));
+ strcpy(arg_copy, arg[0]);
+ char* byte_str = strtok(arg_copy, ",");
+
+ while (byte_str != NULL)
{
- bytes[byte_len] = value;
+ 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, ",");
+ if (byte_len < MAX_LNI_SIZE)
+ {
+ bytes[byte_len] = value;
+ }
+ byte_len++;
}
- byte_len++;
+
+ free(arg_copy);
}
if (byte_len <= 1)
@@ -531,8 +551,9 @@ InstructionDefinition_t* getInstructionFromOpcode(const char *opcode)
int i;
for (i = 0; i < TOT_INSTRUCTIONS; i++)
{
- if (strlen(definitions[i].instructionLabel) == strlen(opcode) &&
- strncmp(definitions[i].instructionLabel, opcode, strlen(definitions[i].instructionLabel)) == 0)
+ char *label = definitions[i].instructionLabel;
+ if (strlen(label) == strlen(opcode) &&
+ strncmp(label, opcode, strlen(label)) == 0)
{
return_value = &definitions[i];
break;
@@ -553,7 +574,7 @@ int parse(int* line_number, FILE *file, char *line, char **label, char **opcode,
if (str != NULL)
{
- first = strtok(line, " \t\n");
+ first = strtok(line, TOKENIZER);
if (first == NULL || first[0] == '#')
{
@@ -563,7 +584,7 @@ int parse(int* line_number, FILE *file, char *line, char **label, char **opcode,
else if (first[strlen(first) - 1] == ':')
{
*label = first;
- *opcode = strtok(NULL, " \t\n");
+ *opcode = strtok(NULL, TOKENIZER);
if (*opcode != NULL)
{
first[strlen(first) - 1] = '\0';
@@ -581,9 +602,9 @@ int parse(int* line_number, FILE *file, char *line, char **label, char **opcode,
if (success)
{
- arg[0] = strtok(NULL, " \t\n");
- arg[1] = strtok(NULL, " \t\n");
- arg[2] = strtok(NULL, " \t\n");
+ arg[0] = strtok(NULL, TOKENIZER);
+ arg[1] = strtok(NULL, TOKENIZER);
+ arg[2] = strtok(NULL, TOKENIZER);
}
*line_number = *line_number + 1;
@@ -703,7 +724,7 @@ void print_instruction_header(int label_width)
label_str[label_width] = '\0';
strncpy(label_str, "label", 5);
- printf("ln# [addr]:%s <op> <args>\n", label_str);
+ printf("%s line addr:out>op \targs\n", label_str);
free(label_str);
}
@@ -711,7 +732,7 @@ void print_instruction_header(int label_width)
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)
+void print_instruction(int line, int begin_address, int end_address, uint8_t *buffer, char *label, char *opcode, char *arg[3], int label_width)
{
int len = 0;
for (int i = 0; arg[i] != NULL && i < 3; i++)
@@ -735,7 +756,7 @@ void print_instruction(int line, int* address, char *label, char *opcode, char *
break;
}
sprintf(arg_str, "%s%s\t", arg_str, arg[i]);
- }
+ }
}
char* label_str = (char*)malloc(sizeof(char) * (label_width + 1));
@@ -750,7 +771,14 @@ void print_instruction(int line, int* address, char *label, char *opcode, char *
strncpy(label_str, label, strlen(label));
}
- printf("%03i [0x%04x]:%s %s\t%s\n", line, *address, label_str, opcode, arg_str);
+ int this_size = (int)(end_address - begin_address);
+ uint8_t *this_buffer = buffer + begin_address;
+
+ printf("%s %04i %04x:%02x| %s\t%s\n", label_str, line + 1, begin_address, this_buffer[0], opcode, arg_str);
+ for (int i = 1; i < this_size; i++)
+ {
+ printf("%s %04x:%02x| +\n", label_str, begin_address + i, this_buffer[i]);
+ }
free(label_str);
if (strlen(arg_str) != 0)
{
@@ -803,7 +831,7 @@ int main(int argc, char *argv[])
printf("Error opening file '%s'\n", output);
goto DITCH;
}
- printf("Assembling tac file: '%s' TISC v2.1\n", input);
+ printf("Assembling tac file: '%s' TISC %s\n", input, VERSION_STRING);
while (parse(&line_number, inputf, line, &label, &opcodes, args))
{
@@ -854,14 +882,16 @@ int main(int argc, char *argv[])
while (parse(&line_number, inputf, line, &label, &opcodes, args))
{
- print_instruction(line_number - 1, &address, label, opcodes, args, label_width);
-
+ int begin_address = address;
+ int begin_line = line_number;
if (process(line_number, &address, w_buffer, label, opcodes, args) == 0)
{
printf("Process: Error on line #%i\n", line_number);
free(w_buffer);
goto CLOSEFILES;
}
+
+ print_instruction(begin_line - 1, begin_address, address, w_buffer, label, opcodes, args, label_width);
}
// Output Logisim raw v2.0 format