tisc

tiny instruction set computer
Log | Files | Refs | README

commit 893d985dea9375bb362e3269df29e2d636b7beb1
parent 966f517136a2adcb0c1bc8ba7e10a25670a104fb
Author: Paul Longtine <paul@nanner.co>
Date:   Tue, 21 Jun 2022 16:33:53 -0400

TISCv2.2 Revised `pcr` instruction, included new `peek` instruction

v2.1 had introduced the `gtr` instruction, which was too similar to the
`pcr` instruction. v2.2 Revised `pcr` instruction to push to the stack,
which reduces the required number of bytes for calling routines.

Updated the `terminal_test.tac` program to print a welcome string upon
startup, print a terminal character when ready to accept input. Added a
new command `clear` to clear the TTY.

Diffstat:
MCPU/CPU.circ | 3683+++++++++++++++++++++++++++++++++++++++----------------------------------------
MExamplePrograms/README.md | 15+++++++++------
MExamplePrograms/fibb_test.tac | 6+-----
MExamplePrograms/routine_test.tac | 6++----
MExamplePrograms/terminal_test.tac | 82++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------
MExamplePrograms/weird_loop_test.tac | 3++-
MINSTRUCTION_SET | 6+++---
MREADME.md | 38++++++++++++++++++--------------------
DScreenshots/tiscv2_1.png | 0
DScreenshots/tiscv2_1_example.png | 0
AScreenshots/tiscv2_2.png | 0
AScreenshots/tiscv2_2_example.png | 0
Mtisc.c | 25+++++++++++++------------
13 files changed, 1936 insertions(+), 1928 deletions(-)

diff --git a/CPU/CPU.circ b/CPU/CPU.circ @@ -76,7 +76,7 @@ <path d="M53,12 Q57,22 61,12" fill="none" stroke="#808080" stroke-width="2"/> <rect fill="none" height="161" stroke="#000000" stroke-width="2" width="120" x="40" y="11"/> <rect fill="#707070" height="160" stroke="#000000" width="119" x="40" y="10"/> - <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="86" y="159">tisc v2.1</text> + <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="86" y="159">tisc v2.2</text> <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="152" y="43">IO ENABLE</text> <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="152" y="85">INPUT</text> <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="153" y="124">ADDRESS</text> @@ -199,10 +199,16 @@ <wire from="(210,110)" to="(210,230)"/> <wire from="(260,250)" to="(460,250)"/> <wire from="(330,190)" to="(400,190)"/> - <comp lib="0" loc="(510,340)" name="Pin"> + <comp lib="2" loc="(170,280)" name="Multiplexer"> + <a name="facing" val="south"/> + <a name="selloc" val="tr"/> + <a name="width" val="8"/> + <a name="enable" val="false"/> + </comp> + <comp lib="0" loc="(510,300)" name="Pin"> <a name="facing" val="west"/> <a name="output" val="true"/> - <a name="label" val="WRITE ACTIVE"/> + <a name="label" val="IO ACTIVE"/> <a name="labelloc" val="east"/> </comp> <comp lib="2" loc="(400,210)" name="Multiplexer"> @@ -211,8 +217,10 @@ <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(290,340)" name="Constant"> + <comp lib="1" loc="(310,340)" name="AND Gate"> <a name="facing" val="north"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> <comp lib="0" loc="(450,360)" name="Pin"> <a name="facing" val="west"/> @@ -222,16 +230,8 @@ <a name="label" val="IN"/> <a name="labelloc" val="east"/> </comp> - <comp lib="2" loc="(170,280)" name="Multiplexer"> - <a name="facing" val="south"/> - <a name="selloc" val="tr"/> - <a name="width" val="8"/> - <a name="enable" val="false"/> - </comp> - <comp lib="6" loc="(303,244)" name="Text"> - <a name="text" val="TISCv2.1"/> - <a name="font" val="Dialog plain 14"/> - </comp> + <comp lib="6" loc="(290,239)" name="Text"/> + <comp loc="(260,130)" name="ALU"/> <comp lib="0" loc="(510,320)" name="Pin"> <a name="facing" val="west"/> <a name="tristate" val="false"/> @@ -239,26 +239,6 @@ <a name="label" val="IO ENABLE"/> <a name="labelloc" val="east"/> </comp> - <comp lib="4" loc="(380,300)" name="RAM"> - <a name="bus" val="separate"/> - </comp> - <comp loc="(200,90)" name="STK"/> - <comp lib="1" loc="(310,340)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="0" loc="(510,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="2" loc="(290,80)" name="Multiplexer"> - <a name="select" val="2"/> - <a name="width" val="8"/> - <a name="enable" val="false"/> - </comp> <comp loc="(280,150)" name="GPR"/> <comp lib="1" loc="(430,230)" name="AND Gate"> <a name="facing" val="west"/> @@ -266,15 +246,18 @@ <a name="inputs" val="2"/> <a name="negate0" val="true"/> </comp> - <comp loc="(260,130)" name="ALU"/> - <comp lib="6" loc="(290,239)" name="Text"/> - <comp lib="0" loc="(510,440)" name="Pin"> + <comp loc="(230,170)" name="ISD"/> + <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="RST"/> + <a name="label" val="CLK"/> <a name="labelloc" val="east"/> </comp> + <comp loc="(200,90)" name="STK"/> + <comp lib="4" loc="(380,300)" name="RAM"> + <a name="bus" val="separate"/> + </comp> <comp loc="(160,210)" name="PC"/> <comp lib="0" loc="(450,400)" name="Pin"> <a name="facing" val="west"/> @@ -294,12 +277,29 @@ <a name="label" val="OUT"/> <a name="labelloc" val="east"/> </comp> - <comp loc="(230,170)" name="ISD"/> - <comp lib="0" loc="(510,420)" name="Pin"> + <comp lib="0" loc="(510,340)" name="Pin"> + <a name="facing" val="west"/> + <a name="output" val="true"/> + <a name="label" val="WRITE ACTIVE"/> + <a name="labelloc" val="east"/> + </comp> + <comp lib="2" loc="(290,80)" name="Multiplexer"> + <a name="select" val="2"/> + <a name="width" val="8"/> + <a name="enable" val="false"/> + </comp> + <comp lib="6" loc="(303,244)" name="Text"> + <a name="text" val="TISCv2.2"/> + <a name="font" val="Dialog plain 14"/> + </comp> + <comp lib="0" loc="(290,340)" name="Constant"> + <a name="facing" val="north"/> + </comp> + <comp lib="0" loc="(510,440)" name="Pin"> <a name="facing" val="west"/> <a name="tristate" val="false"/> <a name="pull" val="down"/> - <a name="label" val="CLK"/> + <a name="label" val="RST"/> <a name="labelloc" val="east"/> </comp> </circuit> @@ -671,753 +671,719 @@ <wire from="(770,200)" to="(780,200)"/> <wire from="(530,280)" to="(540,280)"/> <wire from="(870,100)" to="(870,150)"/> - <comp lib="0" loc="(130,750)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a7"/> - </comp> - <comp lib="1" loc="(250,550)" name="NOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="0" loc="(680,120)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a7"/> - </comp> - <comp lib="0" loc="(680,90)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a4"/> - </comp> - <comp lib="1" loc="(280,290)" name="OR Gate"> + <comp lib="1" loc="(280,650)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(130,180)" name="Tunnel"> + <comp lib="0" loc="(680,70)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b1"/> - </comp> - <comp lib="1" loc="(190,220)" name="XOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="label" val="a2"/> </comp> - <comp lib="4" loc="(670,550)" name="ROM"> - <a name="addrWidth" val="4"/> - <a name="dataWidth" val="7"/> - <a name="contents">addr/data: 4 7 -3 7 9 a 6 4 30 50 -</a> + <comp lib="0" loc="(390,730)" name="Tunnel"> + <a name="label" val="o7"/> </comp> - <comp lib="1" loc="(330,130)" name="AND Gate"> + <comp lib="1" loc="(300,720)" name="OR Gate"> + <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(240,760)" name="AND Gate"> + <comp lib="1" loc="(190,670)" name="XOR 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="(340,280)" name="XNOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(390,100)" name="Tunnel"> - <a name="label" val="o0"/> + <comp lib="6" loc="(602,74)" name="Text"> + <a name="text" val="Input B"/> </comp> - <comp lib="1" loc="(310,780)" name="OR Gate"> - <a name="facing" val="west"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp 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="(310,510)" name="OR Gate"> - <a name="facing" val="west"/> + <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="3" loc="(930,110)" name="Shifter"/> - <comp lib="0" loc="(550,120)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b7"/> - </comp> - <comp lib="1" loc="(300,150)" name="AND 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="(330,850)" name="Constant"> + <a name="facing" val="south"/> + <a name="value" val="0x0"/> + </comp> <comp lib="0" loc="(670,260)" 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="0" loc="(130,570)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a5"/> - </comp> <comp lib="0" loc="(130,540)" name="Tunnel"> <a name="facing" val="east"/> <a name="label" val="b5"/> </comp> - <comp lib="0" loc="(810,200)" name="Splitter"> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> + <comp lib="0" loc="(130,630)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b6"/> </comp> - <comp lib="0" loc="(390,370)" name="Tunnel"> - <a name="label" val="o3"/> + <comp lib="6" loc="(481,532)" name="Text"> + <a name="text" val="DYN OP"/> </comp> - <comp lib="0" loc="(130,480)" name="Tunnel"> + <comp lib="0" loc="(130,660)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a4"/> + <a name="label" val="a6"/> </comp> - <comp lib="1" loc="(250,460)" name="NOR Gate"> + <comp lib="1" loc="(190,640)" 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> - <comp lib="1" loc="(250,280)" name="NOR Gate"> + <comp lib="1" loc="(250,640)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(550,80)" name="Tunnel"> + <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="0" loc="(130,180)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b3"/> + <a name="label" val="b1"/> </comp> - <comp lib="1" loc="(190,490)" name="XOR Gate"> + <comp lib="1" loc="(310,780)" name="OR Gate"> + <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(300,720)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="0" loc="(390,190)" name="Tunnel"> + <a name="label" val="o1"/> + </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="0" loc="(680,20)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="width" val="8"/> - <a name="label" val="A"/> - </comp> - <comp lib="0" loc="(180,70)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="!B"/> + <comp lib="3" loc="(1060,80)" name="Comparator"> + <a name="width" val="4"/> </comp> - <comp lib="1" loc="(270,500)" name="AND Gate"> + <comp lib="1" loc="(330,400)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="3" loc="(930,70)" name="BitAdder"/> - <comp lib="0" loc="(670,310)" name="Tunnel"> - <a name="label" val="o7"/> - </comp> - <comp lib="1" loc="(270,140)" name="AND Gate"> + <comp lib="1" loc="(250,730)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(390,280)" name="Tunnel"> - <a name="label" val="o2"/> - </comp> - <comp lib="1" loc="(250,190)" name="NOR Gate"> + <comp lib="1" loc="(310,420)" name="OR Gate"> + <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(500,550)" name="Pin"> - <a name="width" val="4"/> - <a name="tristate" val="false"/> + <comp lib="0" loc="(670,250)" name="Tunnel"> + <a name="label" val="o1"/> </comp> - <comp lib="3" loc="(930,160)" name="Shifter"> - <a name="shift" val="lr"/> + <comp lib="6" loc="(736,75)" name="Text"> + <a name="text" val="Input A"/> </comp> - <comp lib="1" loc="(300,450)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="6" loc="(355,906)" name="Text"> + <a name="text" val="FLAG"/> + </comp> + <comp lib="0" loc="(670,270)" name="Tunnel"> + <a name="label" val="o3"/> + </comp> + <comp lib="1" loc="(830,280)" name="OR Gate"> + <a name="size" val="70"/> + <a name="inputs" val="8"/> + </comp> + <comp lib="1" loc="(190,760)" name="XOR 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="(250,370)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(680,110)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a6"/> - </comp> - <comp lib="1" loc="(300,420)" name="AND Gate"> + <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,460)" name="XNOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="2" loc="(820,90)" name="Multiplexer"> - <a name="width" val="8"/> - <a name="enable" val="false"/> + <comp lib="0" loc="(750,380)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="!B"/> </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="6" loc="(472,443)" name="Text"> + <a name="text" val="ALU STATE"/> </comp> - <comp lib="0" loc="(220,70)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="OR"/> + <comp lib="0" loc="(850,150)" name="Splitter"> + <a name="facing" val="west"/> + <a name="fanout" val="3"/> + <a name="incoming" val="3"/> + <a name="appear" val="right"/> </comp> - <comp lib="1" loc="(280,200)" name="OR 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="0" loc="(340,70)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="FC"/> + <comp lib="0" loc="(130,210)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a1"/> </comp> - <comp lib="0" loc="(130,390)" name="Tunnel"> + <comp lib="0" loc="(130,90)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a3"/> + <a name="label" val="b0"/> </comp> - <comp lib="1" loc="(300,600)" name="AND Gate"> + <comp lib="1" loc="(340,370)" name="XNOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(770,200)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="width" val="8"/> - <a name="label" val="B"/> - </comp> - <comp lib="0" loc="(330,850)" name="Constant"> + <comp lib="1" loc="(300,810)" name="OR Gate"> <a name="facing" val="south"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="0" loc="(550,110)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b6"/> - </comp> - <comp lib="1" loc="(280,740)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(340,280)" name="XNOR Gate"> + <comp lib="1" loc="(270,230)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(260,70)" name="Tunnel"> + <comp lib="0" loc="(300,70)" name="Tunnel"> <a name="facing" val="south"/> - <a name="label" val="CC"/> + <a name="label" val="CI"/> </comp> - <comp lib="1" loc="(250,640)" name="NOR Gate"> + <comp lib="1" loc="(280,470)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(240,670)" name="AND Gate"> + <comp lib="0" loc="(500,550)" name="Pin"> + <a name="width" val="4"/> + <a name="tristate" val="false"/> + </comp> + <comp lib="1" loc="(340,640)" name="XNOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(190,760)" name="XOR Gate"> + <comp lib="1" loc="(330,220)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </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 lib="0" loc="(390,280)" name="Tunnel"> + <a name="label" val="o2"/> </comp> - <comp lib="1" loc="(270,770)" name="AND Gate"> + <comp lib="1" loc="(330,310)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(240,220)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="2" loc="(810,190)" name="Multiplexer"> + <a name="width" val="8"/> + <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(710,320)" name="Splitter"> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> + <comp lib="3" loc="(930,160)" name="Shifter"> + <a name="shift" val="lr"/> </comp> - <comp lib="1" loc="(190,580)" name="XOR Gate"> + <comp lib="1" loc="(300,780)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(310,240)" name="OR Gate"> - <a name="facing" val="west"/> + <comp lib="0" loc="(130,270)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b2"/> + </comp> + <comp lib="0" loc="(130,720)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b7"/> + </comp> + <comp lib="1" loc="(280,110)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(770,380)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="CC"/> - </comp> - <comp lib="1" loc="(300,630)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="3" loc="(930,110)" name="Shifter"/> + <comp lib="1" loc="(250,100)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="6" loc="(355,906)" name="Text"> - <a name="text" val="FLAG"/> + <comp lib="0" loc="(680,120)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a7"/> </comp> - <comp lib="1" loc="(190,670)" 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="0" loc="(390,550)" name="Tunnel"> - <a name="label" val="o5"/> + <comp lib="0" loc="(550,50)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b0"/> </comp> - <comp lib="0" loc="(700,40)" name="Pin"> - <a name="facing" val="west"/> - <a name="width" val="8"/> + <comp lib="0" loc="(320,890)" name="Pin"> + <a name="facing" val="north"/> + <a name="output" val="true"/> <a name="tristate" val="false"/> + <a name="labelloc" val="east"/> </comp> - <comp lib="1" loc="(190,460)" name="XOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(130,450)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b4"/> </comp> - <comp lib="1" loc="(330,310)" name="AND Gate"> + <comp lib="0" loc="(550,20)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="width" val="8"/> + <a name="label" val="B"/> + </comp> + <comp lib="1" loc="(270,680)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="3" loc="(1060,80)" name="Comparator"> - <a name="width" val="4"/> - </comp> - <comp lib="0" loc="(510,390)" name="Pin"> - <a name="width" val="3"/> - <a name="tristate" val="false"/> + <comp lib="0" loc="(670,240)" name="Tunnel"> + <a name="label" val="o0"/> </comp> - <comp lib="1" loc="(300,510)" name="AND Gate"> + <comp lib="1" loc="(190,400)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> - </comp> - <comp lib="0" loc="(130,300)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a2"/> </comp> - <comp lib="0" loc="(670,290)" name="Tunnel"> - <a name="label" val="o5"/> - </comp> - <comp lib="1" loc="(250,370)" name="NOR Gate"> + <comp lib="1" loc="(190,550)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="6" loc="(602,74)" name="Text"> - <a name="text" val="Input B"/> + <comp lib="0" loc="(390,100)" name="Tunnel"> + <a name="label" val="o0"/> </comp> - <comp lib="0" loc="(680,60)" name="Tunnel"> + <comp lib="0" loc="(550,60)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a1"/> + <a name="label" val="b1"/> </comp> - <comp lib="1" loc="(190,730)" name="XOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="2" loc="(540,280)" name="Multiplexer"> + <a name="facing" val="west"/> + <a name="width" val="8"/> + <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(190,310)" name="XOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(550,80)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b3"/> </comp> - <comp lib="1" loc="(300,180)" name="OR Gate"> + <comp lib="1" loc="(300,630)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> + <comp lib="0" loc="(130,570)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a5"/> + </comp> <comp lib="0" loc="(670,550)" name="Splitter"> <a name="fanout" val="7"/> <a name="incoming" val="7"/> </comp> - <comp lib="6" loc="(476,260)" name="Text"> - <a name="text" val="Output"/> - </comp> - <comp lib="0" loc="(790,80)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="0" loc="(130,630)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b6"/> + <comp lib="0" loc="(510,390)" name="Pin"> + <a name="width" val="3"/> + <a name="tristate" val="false"/> </comp> - <comp lib="1" loc="(340,730)" name="XNOR Gate"> + <comp lib="1" loc="(240,310)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(190,280)" name="XOR Gate"> + <comp lib="1" loc="(330,580)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(680,80)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a3"/> - </comp> - <comp lib="1" loc="(330,490)" name="AND Gate"> + <comp lib="1" loc="(270,410)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(490,460)" name="Pin"> - <a name="tristate" val="false"/> - </comp> - <comp lib="0" loc="(300,70)" name="Tunnel"> + <comp lib="1" loc="(300,360)" name="OR Gate"> <a name="facing" val="south"/> - <a name="label" val="CI"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(740,380)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="!A"/> + <comp lib="0" loc="(390,370)" name="Tunnel"> + <a name="label" val="o3"/> </comp> - <comp lib="0" loc="(750,380)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="!B"/> + <comp lib="1" loc="(340,460)" name="XNOR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(780,100)" name="Tunnel"> + <comp lib="0" loc="(680,90)" name="Tunnel"> <a name="facing" val="east"/> - <a name="width" val="8"/> - <a name="label" val="A"/> + <a name="label" val="a4"/> </comp> - <comp lib="0" loc="(680,50)" name="Tunnel"> + <comp lib="1" loc="(300,420)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + <a name="negate1" val="true"/> + </comp> + <comp lib="0" loc="(130,120)" name="Tunnel"> <a name="facing" val="east"/> <a name="label" val="a0"/> </comp> - <comp lib="1" loc="(190,550)" name="XOR Gate"> + <comp lib="1" loc="(310,600)" name="OR Gate"> + <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(390,460)" name="Tunnel"> - <a name="label" val="o4"/> + <comp lib="1" loc="(330,670)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(320,890)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> - <a name="tristate" val="false"/> - <a name="labelloc" val="east"/> - </comp> - <comp lib="0" loc="(550,50)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b0"/> - </comp> - <comp lib="2" loc="(320,890)" name="Multiplexer"> + <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,320)" name="AND Gate"> + <comp lib="1" loc="(340,550)" name="XNOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(280,110)" name="OR Gate"> + <comp lib="1" loc="(250,280)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(340,550)" name="XNOR Gate"> + <comp lib="0" loc="(680,60)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a1"/> + </comp> + <comp lib="1" loc="(190,490)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(280,380)" name="OR Gate"> + <comp lib="0" loc="(650,320)" name="Splitter"> + <a name="fanout" val="8"/> + <a name="incoming" val="8"/> + </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="(300,240)" name="AND 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="1" loc="(280,650)" name="OR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(780,380)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="CI"/> </comp> - <comp lib="1" loc="(190,400)" name="XOR Gate"> + <comp lib="1" loc="(340,190)" name="XNOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(310,690)" name="OR Gate"> - <a name="facing" val="west"/> + <comp lib="1" loc="(240,130)" 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> - <comp lib="0" loc="(670,240)" name="Tunnel"> - <a name="label" val="o0"/> - </comp> - <comp lib="1" loc="(280,560)" name="OR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(780,180)" name="Constant"> + <a name="width" val="8"/> + <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(310,150)" name="OR Gate"> - <a name="facing" val="west"/> + <comp lib="1" loc="(340,100)" name="XNOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(570,40)" name="Splitter"> + <comp lib="0" loc="(710,520)" name="Splitter"> <a name="facing" val="west"/> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> + <a name="appear" val="center"/> </comp> - <comp lib="1" loc="(340,370)" name="XNOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(530,280)" name="Pin"> + <a name="output" val="true"/> + <a name="width" val="8"/> + <a name="labelloc" val="east"/> </comp> - <comp lib="1" loc="(190,130)" name="XOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(130,750)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a7"/> </comp> - <comp lib="0" loc="(850,150)" name="Splitter"> - <a name="facing" val="west"/> - <a name="fanout" val="3"/> - <a name="incoming" val="3"/> - <a name="appear" val="right"/> + <comp lib="0" loc="(680,20)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="width" val="8"/> + <a name="label" val="A"/> </comp> - <comp lib="0" loc="(670,250)" name="Tunnel"> - <a name="label" val="o1"/> + <comp lib="2" loc="(820,90)" name="Multiplexer"> + <a name="width" val="8"/> + <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(550,70)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b2"/> + <comp lib="0" loc="(790,380)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="FC"/> </comp> - <comp lib="0" loc="(390,640)" name="Tunnel"> - <a name="label" val="o6"/> + <comp lib="0" loc="(670,290)" name="Tunnel"> + <a name="label" val="o5"/> </comp> - <comp lib="1" loc="(340,640)" name="XNOR Gate"> + <comp lib="1" loc="(240,490)" name="AND 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> - <comp lib="2" loc="(1010,210)" name="Multiplexer"> + <comp lib="1" loc="(300,450)" name="OR Gate"> <a name="facing" val="south"/> - <a name="width" val="8"/> - <a name="enable" val="false"/> - </comp> - <comp lib="1" loc="(310,420)" name="OR Gate"> - <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(830,280)" name="OR Gate"> - <a name="size" val="70"/> - <a name="inputs" val="8"/> + <comp lib="0" loc="(770,380)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="CC"/> </comp> - <comp lib="0" loc="(780,180)" name="Constant"> + <comp lib="0" loc="(670,280)" name="Tunnel"> + <a name="label" val="o4"/> + </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="0" loc="(680,100)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a5"/> + </comp> + <comp lib="0" loc="(780,100)" name="Tunnel"> + <a name="facing" val="east"/> <a name="width" val="8"/> - <a name="value" val="0x0"/> + <a name="label" val="A"/> + </comp> + <comp lib="0" loc="(490,460)" name="Pin"> + <a name="tristate" val="false"/> </comp> <comp lib="1" loc="(190,100)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(700,40)" name="Splitter"> + <comp lib="0" loc="(570,40)" name="Pin"> <a name="facing" val="west"/> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> + <a name="width" val="8"/> + <a name="tristate" val="false"/> </comp> - <comp lib="0" loc="(710,470)" name="Splitter"> - <a name="facing" val="west"/> - <a name="fanout" val="3"/> - <a name="incoming" val="3"/> + <comp lib="0" loc="(680,50)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a0"/> </comp> - <comp lib="0" loc="(670,270)" name="Tunnel"> - <a name="label" val="o3"/> + <comp lib="0" loc="(680,110)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a6"/> </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 lib="0" loc="(390,550)" name="Tunnel"> + <a name="label" val="o5"/> </comp> - <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 lib="6" loc="(498,373)" name="Text"> + <a name="text" val="STATIC OPCODE"/> </comp> - <comp lib="3" loc="(1000,90)" name="BitAdder"/> - <comp lib="0" loc="(130,450)" name="Tunnel"> + <comp lib="0" loc="(550,100)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b4"/> + <a name="label" val="b5"/> </comp> - <comp lib="1" loc="(240,130)" name="AND Gate"> + <comp lib="0" loc="(130,300)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a2"/> + </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="1" loc="(190,370)" name="XOR Gate"> + <comp lib="0" loc="(390,460)" name="Tunnel"> + <a name="label" val="o4"/> + </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> - <comp lib="1" loc="(300,780)" name="AND Gate"> + <comp lib="1" loc="(750,490)" name="OR Gate"> + <a name="facing" val="north"/> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(130,210)" name="Tunnel"> + <comp lib="0" loc="(130,480)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a1"/> - </comp> - <comp lib="2" loc="(810,190)" name="Multiplexer"> - <a name="width" val="8"/> - <a name="enable" val="false"/> - </comp> - <comp lib="6" loc="(736,75)" name="Text"> - <a name="text" val="Input A"/> - </comp> - <comp lib="0" loc="(760,380)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="OR"/> + <a name="label" val="a4"/> </comp> - <comp lib="1" loc="(330,400)" name="AND Gate"> + <comp lib="1" loc="(310,330)" name="OR Gate"> + <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(330,670)" name="AND Gate"> + <comp lib="1" loc="(300,510)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(670,280)" name="Tunnel"> - <a name="label" val="o4"/> - </comp> - <comp lib="0" loc="(130,120)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a0"/> + <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,90)" name="Tunnel"> + <comp lib="0" loc="(770,200)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b4"/> - </comp> - <comp lib="1" loc="(280,470)" name="OR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="width" val="8"/> + <a name="label" val="B"/> </comp> - <comp lib="1" loc="(300,810)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="1" loc="(280,740)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(310,330)" name="OR Gate"> - <a name="facing" val="west"/> + <comp lib="1" loc="(190,190)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="6" loc="(617,355)" name="Text"> - <a name="text" val="Opcodes"/> + <comp lib="0" loc="(810,200)" name="Splitter"> + <a name="fanout" val="8"/> + <a name="incoming" val="8"/> </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,70)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b2"/> </comp> - <comp lib="1" loc="(340,100)" name="XNOR Gate"> + <comp lib="3" loc="(930,70)" name="BitAdder"/> + <comp lib="1" loc="(280,560)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(240,310)" name="AND Gate"> + <comp lib="1" loc="(190,460)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(250,730)" name="NOR Gate"> + <comp lib="1" loc="(270,590)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(570,40)" name="Pin"> - <a name="facing" val="west"/> - <a name="width" val="8"/> - <a name="tristate" val="false"/> + <comp lib="2" loc="(570,400)" name="Multiplexer"> + <a name="width" val="3"/> + <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(240,490)" name="AND Gate"> + <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="(550,90)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b4"/> + </comp> + <comp lib="0" loc="(140,70)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="!A"/> + </comp> + <comp lib="1" loc="(190,310)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(340,190)" name="XNOR Gate"> + <comp lib="1" loc="(330,490)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(790,380)" name="Tunnel"> + <comp lib="1" loc="(300,180)" name="OR Gate"> <a name="facing" val="south"/> - <a name="label" val="FC"/> - </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="1" loc="(250,100)" name="NOR 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="(670,300)" name="Tunnel"> + <a name="label" val="o6"/> + </comp> + <comp lib="1" loc="(240,580)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(330,580)" name="AND Gate"> + <comp lib="0" loc="(740,380)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="!A"/> + </comp> + <comp lib="1" loc="(190,220)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> - </comp> - <comp lib="0" loc="(130,360)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b3"/> </comp> - <comp lib="1" loc="(300,330)" name="AND Gate"> + <comp lib="1" loc="(190,280)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(640,440)" name="Constant"/> - <comp lib="0" loc="(130,270)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b2"/> + <comp lib="1" loc="(190,370)" name="XOR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(560,300)" name="AND Gate"> - <a name="facing" val="north"/> + <comp lib="1" loc="(250,460)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(550,20)" name="Tunnel"> + <comp lib="0" loc="(340,70)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="FC"/> + </comp> + <comp lib="0" loc="(640,440)" name="Constant"/> + <comp lib="0" loc="(130,390)" name="Tunnel"> <a name="facing" val="east"/> - <a name="width" val="8"/> - <a name="label" val="B"/> + <a name="label" val="a3"/> </comp> - <comp lib="1" loc="(300,270)" name="OR Gate"> + <comp lib="6" loc="(476,260)" name="Text"> + <a name="text" val="Output"/> + </comp> + <comp lib="0" loc="(180,70)" name="Tunnel"> <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="label" val="!B"/> </comp> - <comp lib="0" loc="(550,60)" name="Tunnel"> + <comp lib="0" loc="(550,110)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b1"/> + <a name="label" val="b6"/> </comp> - <comp lib="0" loc="(680,70)" name="Tunnel"> + <comp lib="3" loc="(1000,90)" name="BitAdder"/> + <comp lib="0" loc="(710,320)" name="Splitter"> + <a name="fanout" val="8"/> + <a name="incoming" val="8"/> + </comp> + <comp lib="0" loc="(550,120)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a2"/> + <a name="label" val="b7"/> </comp> - <comp lib="6" loc="(880,461)" name="Text"> - <a name="text" val="OPCODES: 000: OR, 001: AND, 010: XOR, 011: ADD, 100: CIN, 101: NAND, 110: XNOR, 111: SUB"/> + <comp lib="0" loc="(260,70)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="CC"/> </comp> - <comp lib="1" loc="(190,190)" name="XOR Gate"> + <comp lib="1" loc="(190,580)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(300,360)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="1" loc="(240,760)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(140,70)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="!A"/> + <comp lib="1" loc="(240,220)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(550,100)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b5"/> + <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,720)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b7"/> + <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="(710,520)" name="Splitter"> + <comp lib="1" loc="(280,200)" name="OR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="0" loc="(700,40)" name="Pin"> <a name="facing" val="west"/> - <a name="appear" val="center"/> + <a name="width" val="8"/> + <a name="tristate" val="false"/> </comp> - <comp lib="1" loc="(270,590)" name="AND 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"/> @@ -1426,66 +1392,91 @@ <a name="facing" val="south"/> <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(750,490)" name="OR Gate"> + <comp lib="1" loc="(250,190)" name="NOR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="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="0" loc="(680,100)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a5"/> + <comp lib="0" loc="(670,310)" name="Tunnel"> + <a name="label" val="o7"/> </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="1" loc="(280,380)" name="OR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(650,320)" name="Splitter"> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> + <comp lib="1" loc="(310,690)" name="OR Gate"> + <a name="facing" val="west"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(270,410)" name="AND Gate"> + <comp lib="0" loc="(760,380)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="OR"/> + </comp> + <comp lib="6" loc="(617,355)" name="Text"> + <a name="text" val="Opcodes"/> + </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="6" loc="(498,373)" name="Text"> - <a name="text" val="STATIC OPCODE"/> + <comp lib="1" loc="(340,730)" name="XNOR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(780,380)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="CI"/> + <comp lib="0" loc="(790,80)" name="Constant"> + <a name="width" val="8"/> + <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(330,220)" name="AND Gate"> + <comp lib="0" loc="(390,640)" name="Tunnel"> + <a name="label" val="o6"/> + </comp> + <comp lib="1" loc="(300,270)" name="OR Gate"> + <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(130,660)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a6"/> + <comp lib="0" loc="(710,470)" name="Splitter"> + <a name="facing" val="west"/> + <a name="fanout" val="3"/> + <a name="incoming" val="3"/> </comp> - <comp lib="2" loc="(570,400)" name="Multiplexer"> - <a name="width" val="3"/> - <a name="enable" val="false"/> + <comp lib="1" loc="(250,550)" name="NOR 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 lib="1" loc="(240,670)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(190,640)" name="XOR Gate"> + <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,90)" name="Tunnel"> + <comp lib="1" loc="(270,770)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + <a name="negate1" val="true"/> + </comp> + <comp lib="0" loc="(570,40)" name="Splitter"> + <a name="facing" val="west"/> + <a name="fanout" val="8"/> + <a name="incoming" val="8"/> + </comp> + <comp lib="0" loc="(130,360)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b0"/> + <a name="label" val="b3"/> </comp> - <comp lib="0" loc="(670,300)" name="Tunnel"> - <a name="label" val="o6"/> + <comp lib="1" loc="(190,130)" name="XOR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(270,680)" 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"/> @@ -1495,6 +1486,15 @@ <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> + <comp lib="0" loc="(680,80)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a3"/> + </comp> + <comp lib="1" loc="(310,240)" name="OR Gate"> + <a name="facing" val="west"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> </circuit> <circuit name="GPR"> <a name="circuit" val="GPR"/> @@ -1592,43 +1592,17 @@ <wire from="(180,250)" to="(190,250)"/> <wire from="(150,180)" to="(160,180)"/> <wire from="(220,250)" to="(230,250)"/> - <comp lib="4" loc="(190,170)" name="Register"/> - <comp lib="0" loc="(130,200)" name="Pin"> - <a name="tristate" val="false"/> - </comp> - <comp lib="0" loc="(250,340)" name="Pin"> - <a name="facing" val="west"/> + <comp lib="0" loc="(140,340)" name="Pin"> <a name="width" val="2"/> <a name="tristate" val="false"/> - <a name="label" val="Read B"/> - <a name="labelloc" val="east"/> + <a name="label" val="Read A"/> </comp> - <comp lib="1" loc="(290,230)" name="Controlled Buffer"> - <a name="facing" val="west"/> - <a name="width" val="8"/> - <a name="control" val="left"/> - </comp> - <comp lib="1" loc="(250,230)" name="Controlled Buffer"> + <comp lib="1" loc="(210,230)" name="Controlled Buffer"> <a name="facing" val="south"/> <a name="width" val="8"/> </comp> - <comp lib="0" loc="(130,80)" name="Pin"> - <a name="width" val="2"/> + <comp lib="0" loc="(130,200)" name="Pin"> <a name="tristate" val="false"/> - <a name="label" val="Write"/> - </comp> - <comp lib="1" loc="(190,260)" name="Controlled Buffer"> - <a name="facing" val="south"/> - <a name="width" val="8"/> - </comp> - <comp lib="0" loc="(140,260)" name="Pin"> - <a name="output" val="true"/> - <a name="width" val="8"/> - <a name="label" val="Read B"/> - </comp> - <comp lib="1" loc="(230,260)" 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"/> @@ -1641,49 +1615,78 @@ <a name="width" val="8"/> <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(250,120)" name="Pin"> + <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="(290,230)" name="Controlled Buffer"> + <a name="facing" val="west"/> + <a name="width" val="8"/> + <a name="control" val="left"/> + </comp> + <comp lib="1" loc="(170,230)" name="Controlled Buffer"> <a name="facing" val="south"/> - <a name="tristate" val="false"/> + <a name="width" val="8"/> </comp> - <comp lib="0" loc="(140,130)" name="Pin"> + <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="2" loc="(330,230)" name="Multiplexer"> + <a name="facing" val="west"/> <a name="width" val="8"/> - <a name="tristate" val="false"/> - <a name="label" val="Input"/> + <a name="enable" val="false"/> </comp> <comp lib="1" loc="(290,260)" name="Controlled Buffer"> <a name="facing" val="west"/> <a name="width" val="8"/> <a name="control" val="left"/> </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="4" loc="(270,170)" name="Register"/> + <comp lib="0" loc="(130,80)" name="Pin"> + <a name="width" val="2"/> + <a name="tristate" val="false"/> + <a name="label" val="Write"/> + </comp> <comp lib="0" loc="(350,280)" name="Pin"> <a name="facing" val="north"/> <a name="tristate" val="false"/> <a name="label" val="Forward Input A"/> <a name="labelloc" val="east"/> </comp> - <comp lib="2" loc="(150,340)" name="Decoder"> - <a name="facing" val="north"/> - <a name="select" val="2"/> - <a name="enable" val="false"/> + <comp lib="1" loc="(230,260)" name="Controlled Buffer"> + <a name="facing" val="south"/> + <a name="width" val="8"/> + </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="4" loc="(190,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="(370,220)" name="Constant"> <a name="facing" val="west"/> <a name="width" val="8"/> <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(170,230)" name="Controlled Buffer"> + <comp lib="1" loc="(190,260)" name="Controlled Buffer"> <a name="facing" val="south"/> <a name="width" val="8"/> </comp> - <comp lib="2" loc="(160,80)" name="Decoder"> + <comp lib="1" loc="(270,260)" name="Controlled Buffer"> <a name="facing" val="south"/> - <a name="select" val="2"/> - <a name="enable" 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 A"/> + <a name="width" val="8"/> </comp> <comp lib="4" loc="(230,170)" name="Register"/> <comp lib="0" loc="(140,230)" name="Pin"> @@ -1691,20 +1694,17 @@ <a name="width" val="8"/> <a name="label" val="Read A"/> </comp> - <comp lib="1" loc="(270,260)" name="Controlled Buffer"> - <a name="facing" val="south"/> - <a name="width" val="8"/> + <comp lib="0" loc="(250,340)" name="Pin"> + <a name="facing" val="west"/> + <a name="width" val="2"/> + <a name="tristate" val="false"/> + <a name="label" val="Read B"/> + <a name="labelloc" val="east"/> </comp> - <comp lib="1" loc="(210,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="(330,230)" name="Multiplexer"> - <a name="facing" val="west"/> - <a name="width" val="8"/> - <a name="enable" val="false"/> - </comp> - <comp lib="4" loc="(270,170)" name="Register"/> </circuit> <circuit name="ISD"> <a name="circuit" val="ISD"/> @@ -1717,147 +1717,150 @@ <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,1620" width="10" x="65" y="45"/> - <circ-port height="10" pin="620,1580" width="10" x="85" y="45"/> - <circ-port height="10" pin="530,1880" width="10" x="45" y="95"/> - <circ-port height="10" pin="760,1580" width="10" x="45" y="65"/> - <circ-port height="10" pin="800,1580" width="10" x="45" y="55"/> - <circ-port height="10" pin="840,1610" width="10" x="115" y="45"/> - <circ-port height="10" pin="880,1610" width="10" x="105" y="45"/> - <circ-port height="10" pin="920,1610" width="10" x="135" y="45"/> + <circ-port height="10" pin="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,1880" width="10" x="45" y="75"/> - <circ-port height="8" pin="660,1880" width="8" x="56" y="46"/> - <circ-port height="8" pin="90,1640" width="8" x="46" y="106"/> - <circ-port height="10" pin="330,1680" width="10" x="55" y="105"/> - <circ-port height="8" pin="440,1690" width="8" x="46" y="86"/> - <circ-port height="10" pin="610,1690" width="10" x="145" y="65"/> - <circ-port height="10" pin="1210,1640" width="10" x="75" y="45"/> + <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="90,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,1880" width="10" x="145" y="85"/> - <circ-port height="10" pin="830,1890" width="10" x="145" y="55"/> - <circ-port height="10" pin="1330,800" width="10" x="125" 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="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="(190,580)" to="(250,580)"/> - <wire from="(450,1140)" to="(450,1600)"/> + <wire from="(530,1870)" to="(530,2000)"/> <wire from="(470,470)" to="(470,480)"/> <wire from="(170,960)" to="(280,960)"/> - <wire from="(210,1360)" to="(210,1440)"/> + <wire from="(520,1410)" to="(520,1630)"/> <wire from="(830,920)" to="(870,920)"/> <wire from="(830,830)" to="(830,850)"/> <wire from="(200,390)" to="(200,480)"/> <wire from="(170,1320)" to="(170,1410)"/> <wire from="(240,430)" to="(240,520)"/> <wire from="(220,90)" to="(220,180)"/> - <wire from="(150,1720)" to="(380,1720)"/> <wire from="(240,970)" to="(280,970)"/> + <wire from="(1000,910)" to="(1000,1760)"/> <wire from="(240,340)" to="(270,340)"/> - <wire from="(200,1580)" to="(230,1580)"/> <wire from="(850,210)" to="(850,250)"/> <wire from="(1200,680)" to="(1210,680)"/> - <wire from="(1200,1640)" to="(1210,1640)"/> <wire from="(180,1310)" to="(270,1310)"/> <wire from="(1270,750)" to="(1280,750)"/> - <wire from="(1000,910)" to="(1000,1780)"/> <wire from="(1270,820)" to="(1270,940)"/> - <wire from="(1030,1670)" to="(1030,1730)"/> - <wire from="(1020,1660)" to="(1020,1720)"/> <wire from="(1280,740)" to="(1310,740)"/> <wire from="(200,1020)" to="(280,1020)"/> - <wire from="(1110,1530)" to="(1140,1530)"/> + <wire from="(670,1820)" to="(670,1940)"/> <wire from="(450,60)" to="(450,300)"/> - <wire from="(530,1750)" to="(660,1750)"/> <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="(660,1870)" to="(800,1870)"/> <wire from="(880,880)" to="(880,930)"/> <wire from="(510,1100)" to="(630,1100)"/> <wire from="(510,1280)" to="(510,1290)"/> - <wire from="(610,1050)" to="(610,1380)"/> - <wire from="(1080,890)" to="(1080,910)"/> + <wire from="(270,1630)" to="(520,1630)"/> <wire from="(890,60)" to="(890,70)"/> <wire from="(210,730)" to="(270,730)"/> <wire from="(1220,710)" to="(1220,740)"/> <wire from="(230,440)" to="(280,440)"/> <wire from="(170,1410)" to="(280,1410)"/> <wire from="(1310,670)" to="(1310,740)"/> - <wire from="(680,1860)" to="(720,1860)"/> <wire from="(70,120)" to="(70,650)"/> + <wire from="(1120,1760)" to="(1120,1830)"/> <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="(240,880)" to="(240,970)"/> - <wire from="(1040,1610)" to="(1050,1610)"/> - <wire from="(1130,1700)" to="(1140,1700)"/> + <wire from="(210,1810)" to="(210,1910)"/> + <wire from="(1070,680)" to="(1080,680)"/> + <wire from="(620,1500)" to="(640,1500)"/> <wire from="(510,1190)" to="(670,1190)"/> - <wire from="(1090,680)" to="(1120,680)"/> + <wire from="(330,1740)" to="(330,1780)"/> + <wire from="(340,1870)" to="(350,1870)"/> + <wire from="(420,1950)" to="(430,1950)"/> <wire from="(570,60)" to="(570,120)"/> + <wire from="(380,1790)" to="(380,1840)"/> + <wire from="(610,1050)" to="(610,1430)"/> <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="(450,1140)" to="(450,1720)"/> <wire from="(930,870)" to="(930,880)"/> - <wire from="(1080,700)" to="(1080,720)"/> + <wire from="(1100,1770)" to="(1140,1770)"/> + <wire from="(210,1360)" to="(210,1560)"/> <wire from="(230,890)" to="(280,890)"/> <wire from="(470,1370)" to="(470,1380)"/> - <wire from="(970,1280)" to="(970,1730)"/> <wire from="(350,290)" to="(350,300)"/> - <wire from="(1000,1780)" to="(1190,1780)"/> + <wire from="(760,1980)" to="(760,2000)"/> <wire from="(200,1290)" to="(200,1380)"/> <wire from="(180,950)" to="(180,1040)"/> <wire from="(220,990)" to="(220,1080)"/> - <wire from="(1080,720)" to="(1390,720)"/> <wire from="(230,260)" to="(270,260)"/> - <wire from="(150,1690)" to="(150,1720)"/> <wire from="(190,940)" to="(280,940)"/> <wire from="(850,1110)" to="(850,1150)"/> - <wire from="(940,1520)" to="(940,1560)"/> <wire from="(1380,680)" to="(1380,730)"/> <wire from="(440,1140)" to="(450,1140)"/> + <wire from="(150,1810)" to="(160,1810)"/> <wire from="(920,340)" to="(930,340)"/> - <wire from="(100,250)" to="(100,1780)"/> <wire from="(880,300)" to="(890,300)"/> - <wire from="(260,1670)" to="(330,1670)"/> - <wire from="(800,1700)" to="(800,1750)"/> + <wire from="(800,1820)" to="(810,1820)"/> <wire from="(640,60)" to="(650,60)"/> - <wire from="(930,1380)" to="(930,1520)"/> <wire from="(890,960)" to="(890,970)"/> <wire from="(850,600)" to="(850,610)"/> - <wire from="(190,1540)" to="(190,1550)"/> <wire from="(230,1340)" to="(280,1340)"/> - <wire from="(150,1580)" to="(200,1580)"/> + <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="(230,1580)" to="(230,1610)"/> <wire from="(210,370)" to="(250,370)"/> <wire from="(1310,740)" to="(1310,750)"/> - <wire from="(870,1690)" to="(890,1690)"/> <wire from="(220,1350)" to="(250,1350)"/> <wire from="(170,420)" to="(250,420)"/> + <wire from="(250,1720)" to="(260,1720)"/> <wire from="(190,760)" to="(270,760)"/> - <wire from="(1110,1600)" to="(1140,1600)"/> + <wire from="(970,1280)" to="(970,1850)"/> <wire from="(920,790)" to="(930,790)"/> <wire from="(920,1110)" to="(930,1110)"/> - <wire from="(690,1720)" to="(690,1770)"/> <wire from="(840,70)" to="(850,70)"/> <wire from="(840,390)" to="(850,390)"/> <wire from="(880,430)" to="(890,430)"/> - <wire from="(180,1400)" to="(180,1520)"/> + <wire from="(670,1820)" to="(680,1820)"/> <wire from="(1220,760)" to="(1240,760)"/> <wire from="(670,1190)" to="(670,1200)"/> <wire from="(550,110)" to="(550,120)"/> - <wire from="(370,1600)" to="(430,1600)"/> <wire from="(850,1050)" to="(850,1060)"/> - <wire from="(530,1750)" to="(530,1880)"/> + <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="(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="(590,560)" to="(630,560)"/> + <wire from="(820,1980)" to="(820,2010)"/> + <wire from="(1000,720)" to="(1100,720)"/> <wire from="(170,240)" to="(170,330)"/> <wire from="(210,280)" to="(210,370)"/> <wire from="(230,620)" to="(230,710)"/> @@ -1866,25 +1869,23 @@ <wire from="(940,820)" to="(940,840)"/> <wire from="(530,150)" to="(530,300)"/> <wire from="(1260,940)" to="(1270,940)"/> - <wire from="(670,1700)" to="(670,1820)"/> + <wire from="(1110,1730)" to="(1140,1730)"/> + <wire from="(100,250)" to="(100,1900)"/> <wire from="(920,1240)" to="(930,1240)"/> <wire from="(330,920)" to="(590,920)"/> - <wire from="(190,1540)" to="(260,1540)"/> <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="(660,1750)" to="(800,1750)"/> + <wire from="(620,1520)" to="(620,1700)"/> <wire from="(600,600)" to="(610,600)"/> - <wire from="(270,1510)" to="(520,1510)"/> + <wire from="(680,1970)" to="(680,1980)"/> <wire from="(590,920)" to="(590,930)"/> - <wire from="(800,1380)" to="(800,1580)"/> <wire from="(220,1260)" to="(280,1260)"/> <wire from="(330,1190)" to="(510,1190)"/> - <wire from="(590,1010)" to="(630,1010)"/> - <wire from="(330,980)" to="(330,1000)"/> + <wire from="(930,1380)" to="(930,1640)"/> <wire from="(170,690)" to="(170,780)"/> <wire from="(50,150)" to="(90,150)"/> <wire from="(210,730)" to="(210,820)"/> @@ -1892,67 +1893,66 @@ <wire from="(190,1030)" to="(190,1120)"/> <wire from="(860,550)" to="(860,570)"/> <wire from="(910,920)" to="(910,940)"/> - <wire from="(910,1560)" to="(910,1580)"/> <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="(210,1690)" to="(210,1790)"/> + <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="(330,1620)" to="(330,1660)"/> - <wire from="(340,1750)" to="(350,1750)"/> - <wire from="(420,1830)" to="(430,1830)"/> - <wire from="(810,870)" to="(810,1380)"/> - <wire from="(380,1670)" to="(380,1720)"/> + <wire from="(690,1890)" to="(850,1890)"/> + <wire from="(700,1900)" to="(860,1900)"/> + <wire from="(800,1870)" to="(830,1870)"/> + <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="(210,1500)" to="(210,1560)"/> - <wire from="(830,1750)" to="(950,1750)"/> + <wire from="(430,1930)" to="(810,1930)"/> <wire from="(190,400)" to="(250,400)"/> <wire from="(1120,710)" to="(1160,710)"/> - <wire from="(1100,1650)" to="(1140,1650)"/> - <wire from="(1010,900)" to="(1070,900)"/> + <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="(880,700)" to="(880,730)"/> <wire from="(830,740)" to="(870,740)"/> <wire from="(1170,540)" to="(1170,610)"/> - <wire from="(760,1860)" to="(760,1880)"/> <wire from="(210,1180)" to="(210,1270)"/> <wire from="(240,250)" to="(240,340)"/> <wire from="(170,1140)" to="(170,1230)"/> <wire from="(870,1010)" to="(870,1030)"/> <wire from="(860,1000)" to="(860,1020)"/> - <wire from="(1070,890)" to="(1070,900)"/> + <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="(180,1130)" to="(270,1130)"/> <wire from="(890,390)" to="(890,430)"/> <wire from="(1170,540)" to="(1240,540)"/> + <wire from="(1020,1420)" to="(1150,1420)"/> + <wire from="(160,1690)" to="(180,1690)"/> <wire from="(440,60)" to="(450,60)"/> - <wire from="(1080,810)" to="(1240,810)"/> <wire from="(480,420)" to="(490,420)"/> - <wire from="(980,840)" to="(980,1670)"/> + <wire from="(200,1620)" to="(200,1670)"/> <wire from="(200,840)" to="(280,840)"/> - <wire from="(150,1690)" to="(160,1690)"/> + <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="(800,1380)" to="(810,1380)"/> - <wire from="(800,1700)" to="(810,1700)"/> <wire from="(920,1060)" to="(920,1110)"/> + <wire from="(810,870)" to="(810,1430)"/> <wire from="(840,340)" to="(840,390)"/> <wire from="(510,1100)" to="(510,1110)"/> <wire from="(1340,520)" to="(1340,600)"/> + <wire from="(1100,1780)" to="(1140,1780)"/> <wire from="(430,380)" to="(430,390)"/> - <wire from="(1070,700)" to="(1070,730)"/> + <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)"/> @@ -1961,17 +1961,16 @@ <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="(170,600)" to="(270,600)"/> <wire from="(1330,640)" to="(1330,650)"/> <wire from="(220,270)" to="(250,270)"/> <wire from="(850,480)" to="(850,520)"/> <wire from="(930,1200)" to="(930,1240)"/> - <wire from="(1080,830)" to="(1090,830)"/> - <wire from="(250,1600)" to="(260,1600)"/> + <wire from="(1120,1830)" to="(1130,1830)"/> <wire from="(180,320)" to="(250,320)"/> + <wire from="(930,1640)" to="(940,1640)"/> <wire from="(800,870)" to="(810,870)"/> - <wire from="(670,1700)" to="(680,1700)"/> - <wire from="(960,560)" to="(960,1570)"/> <wire from="(520,1230)" to="(530,1230)"/> <wire from="(880,1150)" to="(880,1200)"/> <wire from="(840,790)" to="(840,840)"/> @@ -1980,50 +1979,44 @@ <wire from="(210,1000)" to="(270,1000)"/> <wire from="(190,1300)" to="(250,1300)"/> <wire from="(770,920)" to="(830,920)"/> - <wire from="(1160,1430)" to="(1160,1520)"/> - <wire from="(1100,1590)" to="(1140,1590)"/> - <wire from="(1050,650)" to="(1150,650)"/> - <wire from="(340,1730)" to="(970,1730)"/> <wire from="(230,710)" to="(280,710)"/> - <wire from="(200,1640)" to="(250,1640)"/> - <wire from="(820,1860)" to="(820,1890)"/> - <wire from="(120,150)" to="(120,1770)"/> - <wire from="(1050,680)" to="(1050,750)"/> <wire from="(200,1110)" to="(200,1200)"/> <wire from="(180,770)" to="(180,860)"/> <wire from="(220,810)" to="(220,900)"/> <wire from="(230,80)" to="(270,80)"/> <wire from="(240,1150)" to="(240,1240)"/> + <wire from="(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="(1090,1360)" to="(1160,1360)"/> + <wire from="(1190,1780)" to="(1190,1900)"/> + <wire from="(900,1920)" to="(1120,1920)"/> <wire from="(820,640)" to="(820,800)"/> <wire from="(1130,890)" to="(1130,950)"/> - <wire from="(1110,1610)" to="(1140,1610)"/> + <wire from="(660,1240)" to="(660,1660)"/> <wire from="(570,330)" to="(570,390)"/> <wire from="(350,290)" to="(430,290)"/> <wire from="(370,60)" to="(370,300)"/> - <wire from="(650,1050)" to="(650,1110)"/> + <wire from="(180,1660)" to="(190,1660)"/> <wire from="(630,650)" to="(760,650)"/> <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="(620,1400)" to="(620,1580)"/> <wire from="(840,1240)" to="(840,1290)"/> <wire from="(910,560)" to="(960,560)"/> - <wire from="(680,1850)" to="(680,1860)"/> <wire from="(760,650)" to="(760,660)"/> + <wire from="(1120,800)" to="(1120,1400)"/> <wire from="(230,1160)" to="(280,1160)"/> + <wire from="(250,1740)" to="(250,1760)"/> <wire from="(220,1260)" to="(220,1350)"/> <wire from="(180,1220)" to="(180,1310)"/> <wire from="(1280,530)" to="(1280,540)"/> - <wire from="(780,1690)" to="(780,1840)"/> - <wire from="(290,1450)" to="(830,1450)"/> - <wire from="(720,1370)" to="(1060,1370)"/> - <wire from="(690,1770)" to="(850,1770)"/> - <wire from="(700,1780)" to="(860,1780)"/> - <wire from="(800,1750)" to="(830,1750)"/> + <wire from="(830,1870)" to="(830,1950)"/> + <wire from="(220,1580)" to="(220,1680)"/> + <wire from="(610,1460)" to="(610,1500)"/> + <wire from="(960,560)" to="(960,1690)"/> <wire from="(910,740)" to="(1040,740)"/> <wire from="(170,240)" to="(250,240)"/> <wire from="(530,420)" to="(530,480)"/> @@ -2031,159 +2024,158 @@ <wire from="(840,210)" to="(850,210)"/> <wire from="(490,60)" to="(490,120)"/> <wire from="(880,250)" to="(890,250)"/> - <wire from="(1030,1670)" to="(1050,1670)"/> <wire from="(630,650)" to="(630,660)"/> - <wire from="(430,1810)" to="(810,1810)"/> + <wire from="(870,1610)" to="(920,1610)"/> <wire from="(180,70)" to="(180,140)"/> <wire from="(1030,380)" to="(1030,1350)"/> <wire from="(1410,660)" to="(1410,740)"/> + <wire from="(1010,1890)" to="(1180,1890)"/> <wire from="(850,870)" to="(850,880)"/> <wire from="(1240,810)" to="(1240,900)"/> - <wire from="(860,1710)" to="(860,1780)"/> + <wire from="(140,1920)" to="(900,1920)"/> <wire from="(200,300)" to="(250,300)"/> + <wire from="(120,150)" to="(120,1890)"/> + <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="(210,640)" to="(250,640)"/> - <wire from="(950,1540)" to="(950,1750)"/> <wire from="(180,680)" to="(280,680)"/> - <wire from="(1050,870)" to="(1060,870)"/> - <wire from="(620,1380)" to="(650,1380)"/> <wire from="(90,110)" to="(90,150)"/> - <wire from="(160,1570)" to="(180,1570)"/> - <wire from="(200,1500)" to="(200,1550)"/> - <wire from="(1110,1550)" to="(1140,1550)"/> + <wire from="(850,1830)" to="(850,1890)"/> + <wire from="(320,1740)" to="(330,1740)"/> + <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="(680,1140)" to="(690,1140)"/> + <wire from="(1060,870)" to="(1080,870)"/> <wire from="(560,60)" to="(570,60)"/> - <wire from="(1020,1550)" to="(1020,1660)"/> <wire from="(630,1100)" to="(630,1110)"/> + <wire from="(630,1420)" to="(630,1430)"/> <wire from="(550,380)" to="(550,390)"/> - <wire from="(1070,730)" to="(1180,730)"/> - <wire from="(1090,750)" to="(1200,750)"/> <wire from="(1200,710)" to="(1200,730)"/> <wire from="(220,1080)" to="(280,1080)"/> <wire from="(1100,1660)" to="(1140,1660)"/> + <wire from="(240,1750)" to="(290,1750)"/> <wire from="(220,450)" to="(270,450)"/> - <wire from="(440,1870)" to="(440,1880)"/> <wire from="(930,760)" to="(930,790)"/> <wire from="(170,510)" to="(170,600)"/> <wire from="(210,550)" to="(210,640)"/> <wire from="(190,850)" to="(190,940)"/> <wire from="(230,890)" to="(230,980)"/> - <wire from="(450,1750)" to="(450,1840)"/> + <wire from="(890,1680)" to="(890,1700)"/> <wire from="(510,110)" to="(550,110)"/> <wire from="(930,120)" to="(930,160)"/> - <wire from="(1050,680)" to="(1060,680)"/> <wire from="(950,780)" to="(950,820)"/> - <wire from="(1120,1710)" to="(1130,1710)"/> + <wire from="(660,1240)" to="(680,1240)"/> + <wire from="(1020,1420)" to="(1020,1670)"/> <wire from="(520,150)" to="(530,150)"/> <wire from="(330,1370)" to="(470,1370)"/> <wire from="(530,1320)" to="(530,1380)"/> <wire from="(1120,800)" to="(1210,800)"/> - <wire from="(930,1520)" to="(940,1520)"/> + <wire from="(860,1900)" to="(1000,1900)"/> <wire from="(880,1150)" to="(890,1150)"/> <wire from="(840,790)" to="(850,790)"/> <wire from="(840,1110)" to="(850,1110)"/> <wire from="(920,430)" to="(920,480)"/> <wire from="(560,510)" to="(570,510)"/> <wire from="(880,70)" to="(880,120)"/> - <wire from="(850,1380)" to="(850,1580)"/> <wire from="(190,220)" to="(250,220)"/> + <wire from="(1100,1790)" to="(1140,1790)"/> <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="(440,1680)" to="(440,1690)"/> <wire from="(830,560)" to="(870,560)"/> <wire from="(870,920)" to="(910,920)"/> + <wire from="(200,1760)" to="(200,1780)"/> <wire from="(210,1000)" to="(210,1090)"/> <wire from="(860,820)" to="(860,840)"/> <wire from="(870,830)" to="(870,850)"/> <wire from="(190,1300)" to="(190,1390)"/> - <wire from="(170,960)" to="(170,1050)"/> <wire from="(240,70)" to="(240,160)"/> - <wire from="(270,1550)" to="(560,1550)"/> + <wire from="(170,960)" to="(170,1050)"/> <wire from="(240,610)" to="(280,610)"/> + <wire from="(770,1880)" to="(770,1960)"/> <wire from="(1200,730)" to="(1380,730)"/> - <wire from="(720,1370)" to="(720,1860)"/> <wire from="(90,150)" to="(120,150)"/> <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="(1190,1660)" to="(1190,1780)"/> - <wire from="(900,1800)" to="(1120,1800)"/> - <wire from="(180,1540)" to="(190,1540)"/> + <wire from="(1060,820)" to="(1070,820)"/> + <wire from="(100,1900)" to="(250,1900)"/> <wire from="(640,600)" to="(640,660)"/> <wire from="(1000,640)" to="(1200,640)"/> + <wire from="(450,1870)" to="(530,1870)"/> + <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="(1110,750)" to="(1110,830)"/> <wire from="(930,60)" to="(930,70)"/> <wire from="(1130,580)" to="(1130,600)"/> + <wire from="(1050,200)" to="(1050,1630)"/> <wire from="(190,670)" to="(250,670)"/> - <wire from="(1130,950)" to="(1130,1420)"/> - <wire from="(250,1620)" to="(250,1640)"/> + <wire from="(1040,1860)" to="(1080,1860)"/> <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="(330,1660)" to="(570,1660)"/> <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="(1210,800)" to="(1330,800)"/> <wire from="(240,1060)" to="(280,1060)"/> <wire from="(650,640)" to="(820,640)"/> - <wire from="(830,1750)" to="(830,1830)"/> <wire from="(430,290)" to="(470,290)"/> + <wire from="(250,1810)" to="(250,1900)"/> <wire from="(1000,640)" to="(1000,720)"/> - <wire from="(220,1460)" to="(220,1560)"/> <wire from="(220,90)" to="(250,90)"/> <wire from="(240,430)" to="(270,430)"/> - <wire from="(1050,820)" to="(1050,870)"/> <wire from="(850,300)" to="(850,340)"/> <wire from="(1280,530)" to="(1290,530)"/> - <wire from="(170,1410)" to="(170,1520)"/> + <wire from="(1110,680)" to="(1120,680)"/> <wire from="(800,670)" to="(830,670)"/> <wire from="(440,330)" to="(450,330)"/> + <wire from="(250,1740)" to="(260,1740)"/> <wire from="(180,140)" to="(250,140)"/> - <wire from="(660,1380)" to="(660,1750)"/> <wire from="(920,1330)" to="(920,1380)"/> - <wire from="(440,1680)" to="(510,1680)"/> + <wire from="(1180,1780)" to="(1180,1890)"/> + <wire from="(800,1460)" to="(800,1700)"/> + <wire from="(770,1880)" to="(1040,1880)"/> <wire from="(880,970)" to="(880,1020)"/> <wire from="(840,610)" to="(840,660)"/> <wire from="(510,1370)" to="(510,1380)"/> - <wire from="(870,1490)" to="(920,1490)"/> - <wire from="(1010,1770)" to="(1180,1770)"/> <wire from="(210,820)" to="(270,820)"/> <wire from="(190,1120)" to="(250,1120)"/> - <wire from="(140,1800)" to="(900,1800)"/> <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,930)" to="(200,1020)"/> <wire from="(180,590)" to="(180,680)"/> <wire from="(220,630)" to="(220,720)"/> + <wire from="(200,930)" to="(200,1020)"/> <wire from="(240,970)" to="(240,1060)"/> <wire from="(390,380)" to="(430,380)"/> - <wire from="(1120,800)" to="(1120,1710)"/> <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="(850,1710)" to="(850,1770)"/> - <wire from="(1030,1350)" to="(1060,1350)"/> <wire from="(360,60)" to="(370,60)"/> - <wire from="(320,1620)" to="(330,1620)"/> <wire from="(330,740)" to="(730,740)"/> - <wire from="(200,1500)" to="(210,1500)"/> <wire from="(1310,670)" to="(1340,670)"/> <wire from="(920,300)" to="(930,300)"/> <wire from="(200,930)" to="(270,930)"/> @@ -2191,64 +2183,56 @@ <wire from="(840,1060)" to="(840,1110)"/> <wire from="(930,960)" to="(930,970)"/> <wire from="(890,600)" to="(890,610)"/> - <wire from="(1100,1540)" to="(1140,1540)"/> - <wire from="(240,1630)" to="(290,1630)"/> + <wire from="(120,1890)" to="(240,1890)"/> <wire from="(230,980)" to="(280,980)"/> <wire from="(430,1100)" to="(430,1110)"/> <wire from="(290,640)" to="(290,650)"/> <wire from="(170,70)" to="(170,150)"/> - <wire from="(950,820)" to="(1050,820)"/> + <wire from="(660,1970)" to="(660,2000)"/> <wire from="(870,670)" to="(910,670)"/> <wire from="(220,1080)" to="(220,1170)"/> <wire from="(180,1040)" to="(180,1130)"/> - <wire from="(890,1560)" to="(890,1580)"/> + <wire from="(290,1650)" to="(900,1650)"/> + <wire from="(1130,950)" to="(1130,1540)"/> <wire from="(1220,610)" to="(1220,660)"/> <wire from="(1170,680)" to="(1180,680)"/> <wire from="(190,1030)" to="(280,1030)"/> <wire from="(850,1200)" to="(850,1240)"/> - <wire from="(200,1380)" to="(200,1480)"/> + <wire from="(170,1410)" to="(170,1640)"/> <wire from="(330,470)" to="(350,470)"/> - <wire from="(570,510)" to="(570,1380)"/> + <wire from="(1030,1700)" to="(1030,1760)"/> <wire from="(360,510)" to="(370,510)"/> <wire from="(610,960)" to="(610,1020)"/> <wire from="(920,430)" to="(930,430)"/> - <wire from="(860,1780)" to="(1000,1780)"/> <wire from="(880,70)" to="(890,70)"/> <wire from="(880,390)" to="(890,390)"/> - <wire from="(560,1680)" to="(560,1690)"/> + <wire from="(1010,900)" to="(1090,900)"/> <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="(1100,1670)" to="(1140,1670)"/> <wire from="(200,120)" to="(250,120)"/> - <wire from="(120,1770)" to="(300,1770)"/> - <wire from="(290,1730)" to="(290,1740)"/> - <wire from="(200,1640)" to="(200,1660)"/> <wire from="(190,220)" to="(190,310)"/> <wire from="(230,260)" to="(230,350)"/> - <wire from="(770,1760)" to="(770,1840)"/> - <wire from="(690,1230)" to="(690,1380)"/> <wire from="(570,150)" to="(570,300)"/> <wire from="(1330,650)" to="(1340,650)"/> - <wire from="(100,1780)" to="(250,1780)"/> + <wire from="(1160,1760)" to="(1170,1760)"/> + <wire from="(1160,1640)" to="(1160,1700)"/> <wire from="(170,510)" to="(250,510)"/> <wire from="(190,850)" to="(270,850)"/> - <wire from="(450,1750)" to="(530,1750)"/> <wire from="(920,880)" to="(930,880)"/> <wire from="(920,1200)" to="(930,1200)"/> - <wire from="(290,1490)" to="(870,1490)"/> <wire from="(330,560)" to="(590,560)"/> <wire from="(840,160)" to="(850,160)"/> <wire from="(840,480)" to="(850,480)"/> - <wire from="(770,1690)" to="(780,1690)"/> <wire from="(880,520)" to="(890,520)"/> <wire from="(490,330)" to="(490,390)"/> + <wire from="(1120,1400)" to="(1120,1700)"/> <wire from="(590,560)" to="(590,570)"/> - <wire from="(1040,1740)" to="(1080,1740)"/> - <wire from="(1010,730)" to="(1070,730)"/> + <wire from="(330,1780)" to="(520,1780)"/> + <wire from="(1100,1800)" to="(1140,1800)"/> <wire from="(200,570)" to="(250,570)"/> <wire from="(330,650)" to="(630,650)"/> - <wire from="(1170,1650)" to="(1170,1720)"/> <wire from="(170,330)" to="(170,420)"/> <wire from="(210,370)" to="(210,460)"/> <wire from="(230,710)" to="(230,800)"/> @@ -2258,28 +2242,29 @@ <wire from="(910,560)" to="(910,580)"/> <wire from="(940,910)" to="(940,930)"/> <wire from="(670,1190)" to="(1160,1190)"/> - <wire from="(250,1690)" to="(250,1780)"/> - <wire from="(250,1620)" to="(260,1620)"/> + <wire from="(200,1380)" to="(200,1600)"/> + <wire from="(960,1760)" to="(960,1870)"/> + <wire from="(150,1540)" to="(1130,1540)"/> + <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="(480,1410)" to="(480,1470)"/> <wire from="(880,1290)" to="(890,1290)"/> <wire from="(920,250)" to="(920,300)"/> - <wire from="(640,1050)" to="(650,1050)"/> - <wire from="(1180,1660)" to="(1180,1770)"/> <wire from="(560,330)" to="(570,330)"/> <wire from="(1220,660)" to="(1240,660)"/> - <wire from="(770,1760)" to="(1040,1760)"/> <wire from="(770,920)" to="(770,1380)"/> <wire from="(590,1010)" to="(590,1020)"/> <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="(1100,200)" to="(1100,1510)"/> <wire from="(920,700)" to="(920,730)"/> - <wire from="(430,1810)" to="(430,1830)"/> + <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)"/> @@ -2289,80 +2274,87 @@ <wire from="(900,1000)" to="(900,1020)"/> <wire from="(210,1360)" to="(250,1360)"/> <wire from="(230,1160)" to="(230,1250)"/> - <wire from="(610,1670)" to="(610,1690)"/> + <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="(180,770)" to="(270,770)"/> + <wire from="(1100,810)" to="(1240,810)"/> <wire from="(930,390)" to="(930,430)"/> <wire from="(1320,780)" to="(1320,840)"/> - <wire from="(1090,870)" to="(1290,870)"/> - <wire from="(1160,1580)" to="(1160,1640)"/> + <wire from="(1120,1860)" to="(1120,1920)"/> <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="(760,660)" to="(770,660)"/> <wire from="(520,420)" to="(530,420)"/> <wire from="(880,340)" to="(880,390)"/> + <wire from="(600,1460)" to="(610,1460)"/> + <wire from="(680,1230)" to="(680,1240)"/> <wire from="(190,490)" to="(250,490)"/> <wire from="(210,190)" to="(270,190)"/> - <wire from="(330,980)" to="(1020,980)"/> + <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="(170,870)" to="(280,870)"/> <wire from="(850,760)" to="(850,790)"/> <wire from="(830,830)" to="(870,830)"/> - <wire from="(660,1850)" to="(660,1880)"/> + <wire from="(870,1610)" to="(870,1700)"/> <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="(290,1530)" to="(900,1530)"/> <wire from="(240,880)" to="(280,880)"/> + <wire from="(600,1790)" to="(600,1810)"/> <wire from="(470,470)" to="(510,470)"/> <wire from="(850,120)" to="(850,160)"/> <wire from="(180,1220)" to="(270,1220)"/> <wire from="(890,480)" to="(890,520)"/> <wire from="(1280,670)" to="(1290,670)"/> <wire from="(510,1370)" to="(720,1370)"/> - <wire from="(730,740)" to="(730,1680)"/> <wire from="(550,380)" to="(1030,380)"/> - <wire from="(610,1660)" to="(1020,1660)"/> <wire from="(480,510)" to="(490,510)"/> + <wire from="(1020,1670)" to="(1050,1670)"/> + <wire from="(1100,1750)" to="(1130,1750)"/> + <wire from="(480,1410)" to="(480,1590)"/> <wire from="(100,70)" to="(100,250)"/> + <wire from="(740,1800)" to="(810,1800)"/> <wire from="(210,1270)" to="(280,1270)"/> - <wire from="(330,200)" to="(1100,200)"/> <wire from="(920,1150)" to="(920,1200)"/> <wire from="(840,430)" to="(840,480)"/> <wire from="(880,790)" to="(880,840)"/> + <wire from="(570,510)" to="(570,1670)"/> <wire from="(510,1190)" to="(510,1200)"/> <wire from="(790,830)" to="(790,840)"/> - <wire from="(810,1810)" to="(810,1820)"/> <wire from="(230,350)" to="(280,350)"/> - <wire from="(990,1010)" to="(990,1650)"/> - <wire from="(330,1010)" to="(330,1020)"/> + <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="(360,1010)" to="(590,1010)"/> + <wire from="(950,820)" to="(1060,820)"/> <wire from="(240,790)" to="(240,880)"/> <wire from="(170,690)" to="(270,690)"/> + <wire from="(1070,650)" to="(1150,650)"/> <wire from="(220,360)" to="(250,360)"/> - <wire from="(1160,1640)" to="(1170,1640)"/> <wire from="(930,1290)" to="(930,1330)"/> - <wire from="(1160,1520)" to="(1160,1580)"/> + <wire from="(710,1820)" to="(730,1820)"/> <wire from="(1130,950)" to="(1160,950)"/> - <wire from="(1020,980)" to="(1020,1550)"/> <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="(520,1320)" to="(530,1320)"/> <wire from="(880,1240)" to="(880,1290)"/> <wire from="(840,880)" to="(840,930)"/> - <wire from="(560,1680)" to="(570,1680)"/> <wire from="(850,60)" to="(850,70)"/> <wire from="(1180,710)" to="(1180,730)"/> <wire from="(210,1090)" to="(270,1090)"/> @@ -2371,23 +2363,24 @@ <wire from="(1100,1680)" to="(1140,1680)"/> <wire from="(230,800)" to="(280,800)"/> <wire from="(690,60)" to="(690,1110)"/> - <wire from="(300,1750)" to="(300,1770)"/> - <wire from="(760,650)" to="(1050,650)"/> <wire from="(220,70)" to="(220,90)"/> <wire from="(200,1200)" to="(200,1290)"/> <wire from="(180,860)" to="(180,950)"/> <wire from="(220,900)" to="(220,990)"/> <wire from="(230,170)" to="(270,170)"/> <wire from="(240,1240)" to="(240,1330)"/> + <wire from="(350,1910)" to="(1030,1910)"/> <wire from="(470,1370)" to="(510,1370)"/> <wire from="(330,290)" to="(350,290)"/> - <wire from="(150,1420)" to="(1130,1420)"/> + <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="(360,330)" to="(370,330)"/> <wire from="(1100,1690)" to="(1130,1690)"/> <wire from="(530,60)" to="(530,120)"/> <wire from="(570,420)" to="(570,480)"/> - <wire from="(240,1690)" to="(240,1740)"/> + <wire from="(230,1860)" to="(310,1860)"/> <wire from="(430,1100)" to="(510,1100)"/> <wire from="(920,250)" to="(930,250)"/> <wire from="(880,210)" to="(890,210)"/> @@ -2397,96 +2390,96 @@ <wire from="(890,870)" to="(890,880)"/> <wire from="(1240,900)" to="(1240,920)"/> <wire from="(230,1250)" to="(280,1250)"/> - <wire from="(330,1670)" to="(380,1670)"/> <wire from="(410,60)" to="(410,390)"/> <wire from="(350,470)" to="(470,470)"/> <wire from="(800,780)" to="(800,800)"/> <wire from="(180,1310)" to="(180,1400)"/> - <wire from="(220,1350)" to="(220,1440)"/> <wire from="(230,80)" to="(230,170)"/> <wire from="(210,280)" to="(250,280)"/> - <wire from="(1030,1730)" to="(1080,1730)"/> <wire from="(1010,730)" to="(1010,900)"/> - <wire from="(660,1380)" to="(690,1380)"/> - <wire from="(1010,900)" to="(1010,1770)"/> - <wire from="(1120,1740)" to="(1120,1800)"/> - <wire from="(520,1630)" to="(610,1630)"/> + <wire from="(1120,1860)" to="(1130,1860)"/> + <wire from="(300,1690)" to="(960,1690)"/> + <wire from="(1130,1750)" to="(1130,1810)"/> <wire from="(1120,520)" to="(1120,680)"/> <wire from="(1000,720)" to="(1000,910)"/> <wire from="(170,330)" to="(250,330)"/> <wire from="(1130,890)" to="(1160,890)"/> <wire from="(920,700)" to="(930,700)"/> - <wire from="(250,1780)" to="(700,1780)"/> <wire from="(840,300)" to="(850,300)"/> <wire from="(880,340)" to="(890,340)"/> <wire from="(600,60)" to="(610,60)"/> <wire from="(670,1100)" to="(670,1110)"/> - <wire from="(1090,750)" to="(1090,830)"/> + <wire from="(1100,890)" to="(1100,910)"/> <wire from="(850,960)" to="(850,970)"/> - <wire from="(370,510)" to="(370,1600)"/> - <wire from="(1100,1620)" to="(1140,1620)"/> - <wire from="(890,1380)" to="(890,1510)"/> <wire from="(200,390)" to="(250,390)"/> - <wire from="(410,420)" to="(410,1590)"/> - <wire from="(870,1490)" to="(870,1580)"/> + <wire from="(1020,1840)" to="(1080,1840)"/> <wire from="(170,150)" to="(170,240)"/> + <wire from="(660,1660)" to="(660,1870)"/> <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="(490,510)" to="(490,1380)"/> + <wire from="(1180,1410)" to="(1190,1410)"/> <wire from="(1280,550)" to="(1290,550)"/> - <wire from="(240,1740)" to="(260,1740)"/> - <wire from="(1020,1550)" to="(1050,1550)"/> - <wire from="(1100,1630)" to="(1130,1630)"/> - <wire from="(1040,740)" to="(1040,1610)"/> - <wire from="(740,1680)" to="(810,1680)"/> + <wire from="(1090,730)" to="(1180,730)"/> + <wire from="(1110,750)" to="(1200,750)"/> <wire from="(920,1150)" to="(930,1150)"/> <wire from="(840,430)" to="(850,430)"/> <wire from="(880,790)" to="(890,790)"/> <wire from="(880,1110)" to="(890,1110)"/> - <wire from="(680,1230)" to="(690,1230)"/> + <wire from="(820,2010)" to="(830,2010)"/> + <wire from="(880,1630)" to="(880,1680)"/> <wire from="(560,150)" to="(570,150)"/> <wire from="(920,70)" to="(920,120)"/> - <wire from="(140,70)" to="(140,1800)"/> <wire from="(550,470)" to="(550,480)"/> + <wire from="(1100,700)" to="(1100,720)"/> <wire from="(120,40)" to="(120,50)"/> <wire from="(510,110)" to="(510,120)"/> - <wire from="(1050,650)" to="(1050,680)"/> - <wire from="(830,1450)" to="(830,1580)"/> + <wire from="(430,1950)" to="(430,1960)"/> + <wire from="(90,1760)" to="(200,1760)"/> <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="(170,600)" to="(170,690)"/> <wire from="(210,640)" to="(210,730)"/> <wire from="(190,940)" to="(190,1030)"/> <wire from="(230,980)" to="(230,1070)"/> <wire from="(910,830)" to="(910,850)"/> <wire from="(900,820)" to="(900,840)"/> + <wire from="(910,1790)" to="(910,1810)"/> <wire from="(240,250)" to="(280,250)"/> - <wire from="(1130,1690)" to="(1130,1700)"/> <wire from="(1210,610)" to="(1220,610)"/> <wire from="(180,590)" to="(270,590)"/> + <wire from="(410,1710)" to="(440,1710)"/> <wire from="(930,210)" to="(930,250)"/> - <wire from="(710,1700)" to="(730,1700)"/> + <wire from="(630,1420)" to="(790,1420)"/> + <wire from="(1130,1690)" to="(1130,1750)"/> + <wire from="(350,1870)" to="(350,1910)"/> <wire from="(330,830)" to="(790,830)"/> - <wire from="(880,1560)" to="(890,1560)"/> - <wire from="(650,1140)" to="(650,1380)"/> + <wire from="(890,1380)" to="(890,1630)"/> + <wire from="(1030,1760)" to="(1120,1760)"/> <wire from="(880,1240)" to="(890,1240)"/> <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="(910,1010)" to="(990,1010)"/> <wire from="(600,960)" to="(610,960)"/> <wire from="(880,160)" to="(880,210)"/> - <wire from="(650,690)" to="(650,1020)"/> - <wire from="(760,1380)" to="(760,1580)"/> + <wire from="(370,510)" to="(370,1720)"/> <wire from="(190,310)" to="(250,310)"/> - <wire from="(1100,1560)" to="(1140,1560)"/> + <wire from="(410,420)" to="(410,1710)"/> <wire from="(200,1290)" to="(250,1290)"/> <wire from="(220,990)" to="(270,990)"/> + <wire from="(210,1620)" to="(260,1620)"/> + <wire from="(1040,740)" to="(1040,1730)"/> + <wire from="(160,1550)" to="(160,1690)"/> <wire from="(870,1010)" to="(910,1010)"/> <wire from="(830,560)" to="(830,580)"/> - <wire from="(190,1390)" to="(190,1480)"/> <wire from="(870,920)" to="(870,940)"/> <wire from="(170,1050)" to="(170,1140)"/> <wire from="(210,1090)" to="(210,1180)"/> @@ -2494,25 +2487,30 @@ <wire from="(860,910)" to="(860,930)"/> <wire from="(240,700)" to="(280,700)"/> <wire from="(1330,740)" to="(1330,750)"/> - <wire from="(350,1790)" to="(1030,1790)"/> <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="(850,1770)" to="(1010,1770)"/> + <wire from="(920,1610)" to="(920,1650)"/> + <wire from="(650,1140)" to="(650,1430)"/> + <wire from="(270,1590)" to="(480,1590)"/> <wire from="(760,680)" to="(760,780)"/> - <wire from="(210,1790)" to="(350,1790)"/> <wire from="(480,330)" to="(490,330)"/> - <wire from="(1100,1570)" to="(1130,1570)"/> + <wire from="(910,1790)" to="(980,1790)"/> + <wire from="(140,70)" to="(140,1920)"/> <wire from="(840,1330)" to="(850,1330)"/> <wire from="(920,970)" to="(920,1020)"/> <wire from="(840,250)" to="(840,300)"/> <wire from="(880,610)" to="(880,660)"/> - <wire from="(1000,910)" to="(1080,910)"/> + <wire from="(1040,1860)" to="(1040,1880)"/> <wire from="(210,460)" to="(270,460)"/> <wire from="(430,290)" to="(430,300)"/> + <wire from="(330,1790)" to="(330,1800)"/> <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)"/> @@ -2521,95 +2519,99 @@ <wire from="(240,1150)" to="(280,1150)"/> <wire from="(210,70)" to="(210,100)"/> <wire from="(430,380)" to="(470,380)"/> - <wire from="(930,1540)" to="(950,1540)"/> + <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="(1120,1740)" to="(1130,1740)"/> - <wire from="(300,1570)" to="(960,1570)"/> + <wire from="(1030,1850)" to="(1030,1910)"/> <wire from="(1130,1630)" to="(1130,1690)"/> + <wire from="(650,690)" to="(650,1110)"/> <wire from="(400,60)" to="(410,60)"/> <wire from="(440,420)" to="(450,420)"/> <wire from="(1130,580)" to="(1290,580)"/> + <wire from="(1120,1400)" to="(1150,1400)"/> + <wire from="(1030,1700)" to="(1120,1700)"/> <wire from="(200,120)" to="(200,300)"/> + <wire from="(700,1840)" to="(700,1900)"/> <wire from="(180,230)" to="(250,230)"/> <wire from="(760,1380)" to="(770,1380)"/> <wire from="(520,1140)" to="(530,1140)"/> <wire from="(880,1060)" to="(880,1110)"/> - <wire from="(1000,720)" to="(1080,720)"/> + <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="(80,70)" to="(80,80)"/> <wire from="(390,380)" to="(390,390)"/> + <wire from="(760,1380)" to="(760,1700)"/> <wire from="(230,620)" to="(280,620)"/> + <wire from="(440,1710)" to="(440,1720)"/> + <wire from="(190,1390)" to="(190,1600)"/> <wire from="(1320,540)" to="(1320,610)"/> - <wire from="(1020,1720)" to="(1080,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="(930,1560)" to="(930,1580)"/> - <wire from="(300,1570)" to="(300,1600)"/> + <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="(900,1720)" to="(900,1800)"/> <wire from="(650,640)" to="(650,660)"/> <wire from="(220,630)" to="(250,630)"/> <wire from="(890,1200)" to="(890,1240)"/> <wire from="(1130,600)" to="(1140,600)"/> - <wire from="(1100,1510)" to="(1130,1510)"/> <wire from="(450,420)" to="(450,1110)"/> + <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="(920,70)" to="(930,70)"/> - <wire from="(820,1890)" to="(830,1890)"/> - <wire from="(880,1510)" to="(880,1560)"/> + <wire from="(1110,1850)" to="(1130,1850)"/> + <wire from="(730,1800)" to="(740,1800)"/> <wire from="(840,1150)" to="(840,1200)"/> - <wire from="(300,1770)" to="(690,1770)"/> - <wire from="(600,1670)" to="(610,1670)"/> <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="(430,1830)" to="(430,1840)"/> <wire from="(50,250)" to="(100,250)"/> <wire from="(350,470)" to="(350,480)"/> - <wire from="(90,1640)" to="(200,1640)"/> <wire from="(220,1170)" to="(220,1260)"/> <wire from="(180,1130)" to="(180,1220)"/> - <wire from="(910,1670)" to="(910,1690)"/> + <wire from="(150,1840)" to="(380,1840)"/> + <wire from="(1090,890)" to="(1090,900)"/> <wire from="(210,100)" to="(250,100)"/> - <wire from="(560,1380)" to="(560,1550)"/> - <wire from="(410,1590)" to="(440,1590)"/> + <wire from="(200,1700)" to="(230,1700)"/> <wire from="(850,1290)" to="(850,1330)"/> - <wire from="(1130,1570)" to="(1130,1630)"/> - <wire from="(350,1750)" to="(350,1790)"/> + <wire from="(1200,1760)" to="(1210,1760)"/> + <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="(880,160)" to="(890,160)"/> <wire from="(880,480)" to="(890,480)"/> <wire from="(760,680)" to="(770,680)"/> - <wire from="(500,1700)" to="(510,1700)"/> <wire from="(630,560)" to="(630,570)"/> - <wire from="(1050,750)" to="(1090,750)"/> <wire from="(1200,900)" to="(1240,900)"/> - <wire from="(210,1500)" to="(260,1500)"/> - <wire from="(160,1430)" to="(160,1570)"/> + <wire from="(1090,700)" to="(1090,730)"/> <wire from="(760,780)" to="(800,780)"/> + <wire from="(680,1980)" to="(720,1980)"/> <wire from="(190,310)" to="(190,400)"/> <wire from="(230,350)" to="(230,440)"/> <wire from="(940,550)" to="(940,570)"/> <wire from="(210,550)" to="(250,550)"/> <wire from="(290,640)" to="(650,640)"/> - <wire from="(150,1420)" to="(150,1580)"/> - <wire from="(920,1490)" to="(920,1530)"/> - <wire from="(270,1470)" to="(480,1470)"/> - <wire from="(580,1650)" to="(990,1650)"/> + <wire from="(1040,1730)" to="(1050,1730)"/> + <wire from="(1130,1820)" to="(1140,1820)"/> + <wire from="(1100,830)" to="(1110,830)"/> <wire from="(630,560)" to="(830,560)"/> - <wire from="(910,1670)" to="(980,1670)"/> <wire from="(1290,770)" to="(1290,870)"/> <wire from="(920,970)" to="(930,970)"/> <wire from="(920,1290)" to="(930,1290)"/> @@ -2619,534 +2621,475 @@ <wire from="(1290,580)" to="(1290,620)"/> <wire from="(640,690)" to="(650,690)"/> <wire from="(1390,680)" to="(1390,720)"/> - <wire from="(630,1010)" to="(630,1020)"/> <wire from="(550,290)" to="(550,300)"/> - <wire from="(1040,1740)" to="(1040,1760)"/> <wire from="(200,660)" to="(250,660)"/> - <wire from="(330,1670)" to="(330,1680)"/> + <wire from="(460,1800)" to="(460,1810)"/> <wire from="(630,1100)" to="(670,1100)"/> - <wire from="(610,1630)" to="(610,1660)"/> + <wire from="(1000,1900)" to="(1190,1900)"/> + <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="(980,840)" to="(1320,840)"/> <wire from="(800,780)" to="(950,780)"/> - <wire from="(290,1740)" to="(310,1740)"/> - <wire from="(520,1410)" to="(520,1510)"/> - <wire from="(1030,1730)" to="(1030,1790)"/> - <wire from="(1130,1510)" to="(1130,1570)"/> + <wire from="(940,1640)" to="(940,1680)"/> <wire from="(520,60)" to="(530,60)"/> - <wire from="(630,1010)" to="(830,1010)"/> - <wire from="(290,1750)" to="(300,1750)"/> <wire from="(530,1230)" to="(530,1290)"/> <wire from="(1120,520)" to="(1340,520)"/> - <wire from="(700,1720)" to="(700,1780)"/> <wire from="(880,1060)" to="(890,1060)"/> <wire from="(880,1380)" to="(890,1380)"/> <wire from="(840,700)" to="(850,700)"/> <wire from="(640,1140)" to="(650,1140)"/> <wire from="(920,340)" to="(920,390)"/> <wire from="(560,420)" to="(570,420)"/> - <wire from="(560,1380)" to="(570,1380)"/> - <wire from="(550,1690)" to="(560,1690)"/> + <wire from="(260,1790)" to="(330,1790)"/> + <wire from="(800,1820)" to="(800,1870)"/> + <wire from="(760,650)" to="(1070,650)"/> + <wire from="(590,1420)" to="(590,1430)"/> <wire from="(190,130)" to="(250,130)"/> + <wire from="(190,1660)" to="(190,1670)"/> <wire from="(220,810)" to="(270,810)"/> <wire from="(200,1110)" to="(250,1110)"/> <wire from="(510,380)" to="(510,390)"/> - <wire from="(440,1590)" to="(440,1600)"/> + <wire from="(150,1700)" to="(200,1700)"/> <wire from="(530,510)" to="(530,1110)"/> - <wire from="(1040,1610)" to="(1040,1740)"/> <wire from="(890,760)" to="(890,790)"/> <wire from="(870,830)" to="(910,830)"/> + <wire from="(1100,1360)" to="(1160,1360)"/> <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="(160,1430)" to="(1160,1430)"/> - <wire from="(220,1460)" to="(260,1460)"/> - <wire from="(380,1720)" to="(380,1810)"/> + <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="(1330,740)" to="(1410,740)"/> <wire from="(180,860)" to="(270,860)"/> <wire from="(890,120)" to="(890,160)"/> <wire from="(930,480)" to="(930,520)"/> <wire from="(200,70)" to="(200,120)"/> <wire from="(480,150)" to="(490,150)"/> + <wire from="(1110,1720)" to="(1140,1720)"/> <wire from="(80,70)" to="(90,70)"/> - <wire from="(930,1560)" to="(940,1560)"/> - <wire from="(880,1510)" to="(890,1510)"/> - <wire from="(500,1650)" to="(500,1700)"/> + <wire from="(690,1840)" to="(690,1890)"/> <wire from="(840,1150)" to="(850,1150)"/> <wire from="(920,790)" to="(920,840)"/> <wire from="(510,1280)" to="(970,1280)"/> - <wire from="(1110,1730)" to="(1130,1730)"/> - <wire from="(730,1680)" to="(740,1680)"/> <wire from="(840,70)" to="(840,120)"/> <wire from="(520,510)" to="(530,510)"/> <wire from="(880,430)" to="(880,480)"/> - <comp lib="1" loc="(330,830)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="PUSH"/> - <a name="negate2" val="true"/> - <a name="negate3" val="true"/> - <a name="negate5" val="true"/> - <a name="negate6" val="true"/> - </comp> - <comp lib="0" loc="(90,1640)" name="Pin"> - <a name="width" val="8"/> + <comp lib="0" loc="(280,220)" name="Constant"/> + <comp lib="0" loc="(660,2000)" name="Pin"> + <a name="facing" val="north"/> <a name="tristate" val="false"/> - <a name="label" val="ALU OUTPUT"/> + <a name="label" val="JMP FLAG"/> <a name="labelloc" val="south"/> </comp> - <comp lib="1" loc="(810,840)" name="AND Gate"> + <comp lib="0" loc="(280,1210)" name="Constant"/> + <comp lib="1" loc="(520,150)" 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="2" loc="(930,1050)" name="Multiplexer"> + <comp lib="2" loc="(930,760)" 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="(800,1580)" name="Pin"> + <comp lib="0" loc="(920,1730)" name="Pin"> <a name="facing" val="north"/> <a name="output" val="true"/> - <a name="label" val="PUSH"/> + <a name="width" val="2"/> + <a name="label" val="C (W)"/> <a name="labelloc" val="south"/> </comp> - <comp lib="1" loc="(1050,820)" name="AND Gate"> - <a name="facing" val="west"/> + <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="2" loc="(290,1490)" name="Multiplexer"> - <a name="width" val="2"/> - <a name="enable" val="false"/> - </comp> - <comp lib="1" loc="(1330,640)" name="AND Gate"> + <comp lib="1" loc="(360,510)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> - </comp> - <comp lib="4" loc="(260,1670)" name="Register"/> - <comp lib="4" loc="(710,1700)" name="Register"> - <a name="width" val="1"/> - <a name="trigger" val="falling"/> - </comp> - <comp lib="1" loc="(330,1010)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="PCR"/> - <a name="negate2" val="true"/> - <a name="negate3" val="true"/> - <a name="negate6" val="true"/> </comp> - <comp lib="4" loc="(1210,610)" name="Register"> - <a name="width" val="5"/> + <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> - <comp lib="1" loc="(330,1280)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="SP"/> - <a name="negate6" val="true"/> + <comp lib="0" loc="(180,1660)" name="Splitter"> + <a name="facing" val="north"/> + <a name="appear" val="center"/> </comp> - <comp lib="0" loc="(280,640)" name="Constant"/> - <comp lib="0" loc="(280,550)" name="Constant"/> - <comp lib="0" loc="(260,1480)" name="Constant"> - <a name="width" val="2"/> - <a name="value" val="0x0"/> + <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="(330,110)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="OR"/> - <a name="negate0" val="true"/> - <a name="negate1" val="true"/> + <comp lib="0" loc="(1160,1360)" name="Pin"> + <a name="facing" val="west"/> + <a name="output" val="true"/> + <a name="label" val="ALU State"/> + <a name="labelloc" val="east"/> </comp> - <comp lib="1" loc="(900,1720)" name="OR Gate"> + <comp lib="1" loc="(820,1980)" 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="(130,60)" name="Constant"> + <a name="width" val="8"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="0" loc="(380,1950)" name="Constant"> + <a name="width" val="8"/> + <a name="value" val="0xf0"/> + </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> - <comp lib="0" loc="(1330,800)" name="Pin"> + <comp lib="0" loc="(1210,1760)" 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="width" val="4"/> + <a name="label" val="Dynamic OP"/> <a name="labelloc" val="east"/> </comp> - <comp lib="1" loc="(1170,680)" name="AND Gate"> - <a name="facing" val="north"/> + <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="(280,370)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(1110,1730)" name="OR Gate"> + <comp lib="0" loc="(200,1620)" name="Splitter"> + <a name="facing" val="north"/> + <a name="appear" val="center"/> + </comp> + <comp lib="1" loc="(810,840)" name="AND Gate"> + <a name="facing" val="south"/> <a name="size" val="30"/> - <a name="inputs" val="3"/> + <a name="inputs" val="2"/> + <a name="negate0" val="true"/> </comp> - <comp lib="2" loc="(850,1050)" name="Multiplexer"> + <comp lib="0" loc="(620,1520)" name="Splitter"> + <a name="facing" val="north"/> + <a name="appear" val="center"/> + </comp> + <comp lib="0" loc="(900,910)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="enable" val="false"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(280,670)" name="Constant"/> - <comp lib="0" loc="(520,60)" name="Constant"> + <comp lib="0" loc="(280,1290)" name="Constant"/> + <comp lib="0" loc="(280,210)" name="Constant"/> + <comp lib="0" loc="(440,60)" name="Constant"> <a name="facing" val="south"/> <a name="value" val="0x0"/> </comp> - <comp lib="2" loc="(930,870)" name="Multiplexer"> + <comp lib="2" loc="(930,1050)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(280,660)" name="Constant"/> - <comp lib="0" loc="(220,1460)" name="Splitter"> - <a name="facing" val="north"/> - <a name="appear" val="center"/> - </comp> - <comp lib="4" loc="(1090,870)" name="Register"> - <a name="width" val="1"/> - </comp> - <comp lib="0" loc="(280,630)" name="Constant"/> - <comp lib="1" loc="(330,920)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="POP"/> - <a name="negate2" val="true"/> - <a name="negate3" val="true"/> - <a name="negate4" val="true"/> - <a name="negate6" val="true"/> + <comp lib="0" loc="(640,60)" name="Constant"> + <a name="facing" val="south"/> + <a name="value" val="0x0"/> </comp> - <comp lib="2" loc="(230,1670)" name="Multiplexer"> - <a name="width" val="8"/> - <a name="enable" val="false"/> + <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="1" loc="(520,330)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="1" loc="(80,80)" name="AND Gate"> + <a name="facing" val="north"/> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate0" val="true"/> </comp> - <comp lib="0" loc="(1160,1580)" name="Splitter"> - <a name="facing" val="west"/> - <a name="fanout" val="4"/> - <a name="incoming" val="4"/> + <comp lib="0" loc="(280,510)" name="Constant"/> + <comp lib="0" loc="(900,820)" name="Constant"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(440,1690)" name="Pin"> - <a name="facing" val="north"/> - <a name="width" val="8"/> - <a name="tristate" val="false"/> - <a name="label" val="PC ADDRESS"/> - <a name="labelloc" val="south"/> + <comp lib="0" loc="(280,540)" name="Constant"/> + <comp lib="0" loc="(520,60)" name="Constant"> + <a name="facing" val="south"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(50,150)" name="Pin"> - <a name="tristate" val="false"/> - <a name="label" val="CLK"/> + <comp lib="2" loc="(890,1050)" name="Multiplexer"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(860,660)" name="Constant"> + <comp lib="0" loc="(940,910)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(670,1820)" name="AND Gate"> - <a name="facing" val="north"/> + <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="1" loc="(280,100)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(240,1630)" name="Splitter"> - <a name="facing" val="north"/> - <a name="incoming" val="8"/> - <a name="bit1" val="0"/> - <a name="bit2" val="0"/> - <a name="bit3" val="0"/> - <a name="bit4" val="1"/> - <a name="bit5" val="1"/> - <a name="bit6" val="1"/> - <a name="bit7" val="1"/> - </comp> - <comp lib="2" loc="(890,600)" name="Multiplexer"> + <comp lib="0" loc="(900,1000)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="enable" val="false"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(930,60)" name="Constant"> + <comp lib="2" loc="(850,760)" 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="0" loc="(280,240)" name="Constant"/> + <comp lib="0" loc="(280,550)" name="Constant"/> <comp lib="0" loc="(1240,630)" name="Constant"> <a name="width" val="5"/> </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 lib="3" loc="(1280,550)" name="Comparator"> + <a name="width" val="5"/> </comp> - <comp lib="1" loc="(440,330)" name="OR Gate"> + <comp lib="1" loc="(520,330)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(280,230)" name="Constant"/> - <comp lib="0" loc="(280,390)" name="Constant"/> - <comp lib="0" loc="(280,90)" name="Constant"/> - <comp lib="1" loc="(330,1190)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="SB"/> - <a name="negate2" val="true"/> - <a name="negate6" val="true"/> + <comp lib="2" loc="(890,760)" 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="(310,1740)" name="OR Gate"> - <a name="facing" val="west"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <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="2" loc="(890,870)" name="Multiplexer"> <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="width" val="2"/> + <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(260,1740)" name="AND Gate"> - <a name="facing" val="west"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(460,1810)" name="Pin"> + <a name="facing" val="north"/> + <a name="width" val="8"/> + <a name="tristate" val="false"/> + <a name="label" val="PC ADDRESS"/> + <a name="labelloc" val="south"/> + </comp> + <comp lib="6" loc="(233,1954)" name="Text"> + <a name="text" val="This input defines the range of MMIO --&gt;"/> + </comp> + <comp lib="0" loc="(50,150)" name="Pin"> + <a name="tristate" val="false"/> + <a name="label" val="CLK"/> </comp> - <comp lib="0" loc="(1160,1520)" name="Splitter"> + <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="(900,910)" name="Constant"> + <comp lib="1" loc="(800,870)" name="OR Gate"> <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="0" loc="(260,1560)" name="Constant"> <a name="width" val="2"/> <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(1320,780)" name="OR Gate"> + <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,410)" name="Constant"/> - <comp lib="1" loc="(640,1050)" name="OR Gate"> + <comp lib="1" loc="(360,330)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(480,420)" name="OR Gate"> + <comp lib="1" loc="(520,1320)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(1050,1550)" name="AND Gate"> - <a name="facing" val="west"/> - <a name="label" val="gtr"/> - <a name="negate0" val="true"/> - <a name="negate2" val="true"/> + <comp lib="2" loc="(1170,610)" name="Multiplexer"> + <a name="width" val="5"/> + <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(860,550)" name="Constant"> + <comp lib="1" loc="(880,1730)" 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="(200,1680)" name="Adder"/> - <comp lib="1" loc="(480,330)" name="OR Gate"> + <comp lib="1" loc="(560,510)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="2" loc="(890,960)" name="Multiplexer"> + <comp lib="2" loc="(930,960)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(600,1050)" name="OR Gate"> + <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="(1160,1360)" name="Pin"> - <a name="facing" val="west"/> - <a name="output" val="true"/> - <a name="label" val="ALU State"/> - <a name="labelloc" val="east"/> - </comp> - <comp lib="0" loc="(640,60)" name="Constant"> - <a name="facing" val="south"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="0" loc="(900,660)" name="Constant"> + <comp lib="1" loc="(600,1050)" name="OR Gate"> <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="1" loc="(290,1610)" name="OR Gate"> - <a name="width" val="8"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(490,1620)" name="Constant"> + <comp lib="0" loc="(940,820)" name="Constant"> <a name="facing" val="south"/> - <a name="width" val="8"/> + <a name="width" val="2"/> <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(280,1360)" name="Constant"/> - <comp lib="1" loc="(520,150)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="4" loc="(870,1810)" name="Register"> + <a name="width" val="1"/> + <a name="trigger" val="falling"/> + </comp> + <comp lib="0" loc="(280,130)" name="Constant"/> + <comp lib="1" loc="(770,1810)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(840,1610)" name="OR Gate"> + <comp lib="0" loc="(280,1110)" name="Constant"/> + <comp lib="0" loc="(280,280)" name="Constant"/> + <comp lib="0" loc="(280,360)" name="Constant"/> + <comp lib="1" loc="(1210,790)" name="OR Gate"> <a name="facing" val="south"/> - <a name="width" val="2"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(560,150)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="1" loc="(1170,680)" name="AND Gate"> + <a name="facing" val="north"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(600,60)" name="Constant"> - <a name="facing" val="south"/> - <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 lib="0" loc="(280,410)" name="Constant"/> + <comp lib="0" loc="(220,1580)" name="Splitter"> + <a name="facing" val="north"/> + <a name="appear" val="center"/> </comp> - <comp lib="0" loc="(380,1830)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0xf0"/> + <comp lib="0" loc="(940,1000)" name="Constant"> + <a name="facing" val="south"/> + <a name="width" val="2"/> </comp> - <comp lib="0" loc="(280,270)" name="Constant"/> - <comp lib="1" loc="(840,1690)" name="OR Gate"> + <comp lib="0" loc="(280,570)" name="Constant"/> + <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="(520,1410)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="1" loc="(1100,1360)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(1220,930)" name="Constant"> - <a name="width" val="5"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="0" loc="(620,1580)" name="Pin"> + <comp lib="0" loc="(620,1700)" name="Pin"> <a name="facing" val="north"/> <a name="output" val="true"/> <a name="width" val="2"/> <a name="label" val="GPR MUX"/> <a name="labelloc" val="south"/> </comp> - <comp lib="2" loc="(500,1650)" name="Multiplexer"> + <comp lib="2" loc="(850,960)" name="Multiplexer"> <a name="facing" val="south"/> - <a name="selloc" val="tr"/> - <a name="width" val="8"/> - <a name="enable" val="false"/> - </comp> - <comp lib="2" loc="(320,1620)" name="Multiplexer"> - <a name="selloc" val="tr"/> - <a name="width" val="8"/> + <a name="width" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(940,550)" name="Constant"> + <comp lib="1" loc="(440,1990)" 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="(330,1680)" name="Pin"> + <comp lib="1" loc="(670,1940)" name="AND Gate"> <a name="facing" val="north"/> - <a name="output" val="true"/> - <a name="width" val="8"/> - <a name="label" val="MEM POINTER"/> - <a name="labelloc" val="south"/> - </comp> - <comp lib="0" loc="(280,400)" name="Constant"/> - <comp lib="1" loc="(280,100)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(160,1670)" name="Constant"> - <a name="width" val="8"/> - </comp> - <comp lib="0" loc="(530,1880)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> - <a name="label" val="Address MUX"/> - <a name="labelloc" val="south"/> + <comp lib="1" loc="(330,650)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="LNI/LI"/> + <a name="negate7" val="true"/> </comp> - <comp lib="0" loc="(280,150)" name="Constant"/> - <comp lib="1" loc="(440,420)" name="OR Gate"> + <comp lib="1" loc="(480,510)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(830,1890)" name="Pin"> - <a name="facing" val="west"/> - <a name="output" val="true"/> - <a name="label" val="External Address Select"/> - <a name="labelloc" val="east"/> + <comp lib="0" loc="(280,310)" name="Constant"/> + <comp lib="3" loc="(1260,940)" name="Adder"> + <a name="width" val="5"/> </comp> - <comp lib="0" loc="(920,1610)" name="Pin"> + <comp lib="0" loc="(760,1700)" 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="POP"/> <a name="labelloc" val="south"/> </comp> - <comp lib="3" loc="(1260,940)" name="Adder"> - <a name="width" val="5"/> - </comp> - <comp lib="1" loc="(600,600)" name="OR Gate"> + <comp lib="1" loc="(520,510)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(1160,910)" name="Constant"> + <comp lib="4" loc="(1200,1760)" name="Register"> <a name="width" val="4"/> - <a name="value" val="0x0"/> + <a name="trigger" val="falling"/> </comp> - <comp lib="1" loc="(640,690)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="3"/> + <comp lib="2" loc="(290,1610)" name="Multiplexer"> + <a name="width" val="2"/> + <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(480,510)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="1" loc="(1050,1790)" name="AND Gate"> + <a name="facing" val="west"/> + <a name="label" val="ptrinc"/> </comp> - <comp lib="0" loc="(900,550)" name="Constant"> + <comp lib="0" loc="(940,660)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(1240,680)" name="Constant"> - <a name="width" val="5"/> + <comp lib="0" loc="(280,400)" name="Constant"/> + <comp lib="0" loc="(560,60)" name="Constant"> + <a name="facing" val="south"/> <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(330,1370)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="CMP"/> - </comp> - <comp lib="0" loc="(180,1540)" name="Splitter"> - <a name="facing" val="north"/> - <a name="appear" val="center"/> - </comp> - <comp lib="0" loc="(180,1570)" 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="2" loc="(230,1790)" name="Multiplexer"> + <a name="width" val="8"/> + <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(940,1000)" name="Constant"> + <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="1" loc="(330,200)" name="AND Gate"> <a name="inputs" val="8"/> @@ -3156,639 +3099,679 @@ <a name="negate2" val="true"/> <a name="negate3" val="true"/> </comp> - <comp lib="0" loc="(280,320)" name="Constant"/> - <comp lib="0" loc="(940,660)" name="Constant"> + <comp lib="2" loc="(290,1650)" name="Multiplexer"> + <a name="width" val="2"/> + <a name="enable" val="false"/> + </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> + <comp lib="0" loc="(860,550)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> + <a name="value" val="0x0"/> </comp> - <comp lib="3" loc="(1280,670)" name="Comparator"> - <a name="width" val="5"/> + <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="2" loc="(890,690)" name="Multiplexer"> + <comp lib="0" loc="(280,120)" name="Constant"/> + <comp lib="2" loc="(930,600)" 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="(1200,900)" name="Comparator"> - <a name="width" val="4"/> - </comp> - <comp lib="4" loc="(1200,1640)" name="Register"> - <a name="width" val="4"/> - <a name="trigger" val="falling"/> + <comp lib="1" loc="(1320,780)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(360,60)" name="Constant"> + <comp lib="0" loc="(280,500)" name="Constant"/> + <comp lib="0" loc="(900,730)" name="Constant"> <a name="facing" val="south"/> + <a name="width" val="2"/> <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(1310,670)" name="NOT Gate"> - <a name="size" val="20"/> + <comp lib="1" loc="(330,1010)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="PEEK"/> + <a name="negate2" val="true"/> + <a name="negate3" val="true"/> + <a name="negate6" val="true"/> </comp> - <comp lib="1" loc="(280,370)" name="OR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(1160,910)" name="Constant"> + <a name="width" val="4"/> + <a name="value" val="0x0"/> </comp> - <comp lib="2" loc="(600,1670)" name="Multiplexer"> - <a name="selloc" val="tr"/> - <a name="width" val="8"/> + <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="(1090,1360)" name="OR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="0" loc="(280,120)" name="Constant"/> - <comp lib="1" loc="(800,870)" name="OR Gate"> + <comp lib="0" loc="(860,1000)" 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="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="(50,250)" name="Pin"> - <a name="tristate" val="false"/> - <a name="label" val="RST"/> + <comp lib="1" loc="(1310,670)" name="NOT Gate"> + <a name="size" val="20"/> </comp> - <comp lib="0" loc="(280,300)" name="Constant"/> - <comp lib="1" loc="(80,80)" name="AND Gate"> - <a name="facing" val="north"/> + <comp lib="1" loc="(480,1410)" 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="1" loc="(800,670)" name="AND Gate"> + <comp lib="1" loc="(1240,760)" name="AND 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="(480,1410)" name="OR Gate"> + <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="4" loc="(110,50)" name="Register"> + <a name="trigger" val="falling"/> + </comp> + <comp lib="4" loc="(1110,870)" name="Register"> + <a name="width" val="1"/> + </comp> + <comp lib="0" loc="(280,390)" name="Constant"/> + <comp lib="0" loc="(280,1300)" name="Constant"/> + <comp lib="0" loc="(280,330)" name="Constant"/> + <comp lib="1" loc="(640,690)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="inputs" val="3"/> </comp> - <comp lib="0" loc="(280,1290)" name="Constant"/> - <comp lib="1" loc="(640,1140)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="1" loc="(800,670)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(280,420)" name="Constant"/> - <comp lib="2" loc="(930,760)" 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,1200)" name="Constant"/> - <comp lib="1" loc="(480,150)" name="OR Gate"> + <comp lib="1" loc="(400,420)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(280,510)" name="Constant"/> - <comp lib="0" loc="(280,1300)" name="Constant"/> - <comp lib="0" loc="(440,1620)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> - <a name="width" val="3"/> - <a name="label" val="ALU OP"/> - <a name="labelloc" val="south"/> - </comp> - <comp lib="0" loc="(940,910)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - </comp> - <comp lib="0" loc="(250,1600)" name="Splitter"> - <a name="facing" val="north"/> - <a name="incoming" val="8"/> - <a name="bit1" val="0"/> - <a name="bit2" val="0"/> - <a name="bit3" val="0"/> - <a name="bit4" val="1"/> - <a name="bit5" val="1"/> - <a name="bit6" val="1"/> - <a name="bit7" val="1"/> - </comp> - <comp lib="0" loc="(240,1580)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="4"/> - <a name="value" val="0x0"/> + <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="0" loc="(280,210)" name="Constant"/> + <comp lib="0" loc="(280,230)" name="Constant"/> <comp lib="0" loc="(1240,560)" name="Constant"> <a name="width" val="5"/> <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(760,1880)" name="Pin"> + <comp lib="2" loc="(160,50)" name="Multiplexer"> + <a name="width" val="8"/> + <a name="enable" val="false"/> + </comp> + <comp lib="0" loc="(800,1700)" name="Pin"> <a name="facing" val="north"/> <a name="output" val="true"/> - <a name="width" val="2"/> - <a name="label" val="BRANCH"/> + <a name="label" val="PUSH"/> <a name="labelloc" val="south"/> </comp> - <comp lib="0" loc="(280,1380)" name="Constant"/> - <comp lib="0" loc="(130,60)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0x0"/> + <comp lib="1" loc="(600,600)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(1320,540)" name="OR Gate"> + <comp lib="1" loc="(1070,820)" name="AND Gate"> + <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="2" loc="(850,870)" name="Multiplexer"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="enable" val="false"/> + <comp lib="0" loc="(330,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="0" loc="(900,1000)" name="Constant"> - <a name="facing" val="south"/> + <comp lib="0" loc="(280,490)" name="Constant"/> + <comp lib="0" loc="(280,90)" 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,760)" 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="4" loc="(870,1690)" name="Register"> - <a name="width" val="1"/> - <a name="trigger" val="falling"/> - </comp> - <comp lib="1" loc="(330,740)" name="AND Gate"> + <comp lib="1" loc="(330,470)" name="AND Gate"> <a name="inputs" val="8"/> - <a name="label" val="JMP"/> + <a name="label" val="CIN"/> + <a name="negate0" val="true"/> <a name="negate2" val="true"/> <a name="negate3" val="true"/> - <a name="negate4" val="true"/> - <a name="negate5" val="true"/> - <a name="negate6" val="true"/> </comp> - <comp lib="0" loc="(200,1500)" name="Splitter"> - <a name="facing" val="north"/> - <a name="appear" val="center"/> + <comp lib="1" loc="(560,150)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(940,730)" name="Constant"> + <comp lib="0" loc="(220,1730)" name="Constant"> <a name="facing" val="south"/> - <a name="width" val="2"/> + <a name="width" val="4"/> <a name="value" val="0x0"/> </comp> - <comp lib="4" loc="(1400,660)" name="Register"> - <a name="width" val="1"/> - </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="1" loc="(330,1100)" name="AND Gate"> <a name="inputs" val="8"/> <a name="label" val="LB"/> <a name="negate3" val="true"/> <a name="negate6" val="true"/> </comp> - <comp lib="1" loc="(520,420)" name="OR Gate"> + <comp lib="0" loc="(240,1700)" 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="(440,1140)" name="OR Gate"> + <comp lib="1" loc="(330,920)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="POP"/> + <a name="negate2" val="true"/> + <a name="negate3" val="true"/> + <a name="negate4" val="true"/> + <a name="negate6" val="true"/> + </comp> + <comp lib="1" loc="(640,600)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(680,60)" name="Constant"> - <a name="facing" val="south"/> - <a name="value" val="0x0"/> + <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="3" loc="(550,1690)" name="Adder"/> - <comp lib="1" loc="(1240,760)" name="AND Gate"> + <comp lib="1" loc="(310,1860)" 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="4" loc="(1090,680)" name="Register"> - <a name="width" val="1"/> </comp> - <comp lib="1" loc="(400,420)" name="OR Gate"> + <comp lib="1" loc="(330,1370)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="CMP"/> + </comp> + <comp lib="0" loc="(280,140)" name="Constant"/> + <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="2" loc="(850,960)" name="Multiplexer"> + <comp lib="0" loc="(160,50)" name="Splitter"> <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="enable" val="false"/> - </comp> - <comp lib="0" loc="(280,1350)" name="Constant"/> - <comp lib="3" loc="(1280,620)" name="Subtractor"> - <a name="width" val="5"/> - </comp> - <comp lib="0" loc="(280,540)" name="Constant"/> - <comp lib="0" loc="(260,1440)" name="Constant"> - <a name="width" val="2"/> - <a name="value" val="0x0"/> + <a name="fanout" val="8"/> + <a name="incoming" val="8"/> </comp> - <comp lib="2" loc="(850,600)" name="Multiplexer"> + <comp lib="1" loc="(680,1140)" 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="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 lib="0" loc="(90,1760)" name="Pin"> + <a name="width" val="8"/> + <a name="tristate" val="false"/> + <a name="label" val="ALU OUTPUT"/> + <a name="labelloc" val="south"/> </comp> - <comp lib="0" loc="(280,310)" name="Constant"/> - <comp lib="0" loc="(400,60)" name="Constant"> - <a name="facing" val="south"/> - <a name="value" val="0x0"/> + <comp lib="1" loc="(330,1280)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="SP"/> + <a name="negate6" val="true"/> </comp> - <comp lib="1" loc="(640,600)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="1" loc="(1180,1410)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(880,1610)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="3" loc="(420,1940)" name="Comparator"> + <a name="mode" val="unsigned"/> </comp> - <comp lib="0" loc="(900,730)" name="Constant"> + <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="(860,820)" name="Constant"> + <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="1" loc="(770,1690)" name="AND Gate"> + <comp lib="1" loc="(1370,660)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> - </comp> - <comp lib="0" loc="(440,60)" name="Constant"> - <a name="facing" val="south"/> - <a name="value" val="0x0"/> </comp> - <comp lib="2" loc="(930,960)" name="Multiplexer"> + <comp lib="0" loc="(850,60)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="enable" val="false"/> - </comp> - <comp lib="0" loc="(220,1610)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="4"/> <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(280,1390)" name="Constant"/> - <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 lib="0" loc="(830,2010)" name="Pin"> + <a name="facing" val="west"/> + <a name="output" val="true"/> + <a name="label" val="External Address Select"/> + <a name="labelloc" val="east"/> </comp> - <comp lib="1" loc="(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="0" loc="(160,1790)" name="Constant"> + <a name="width" val="8"/> </comp> - <comp lib="2" loc="(290,1530)" name="Multiplexer"> - <a name="width" val="2"/> - <a name="enable" val="false"/> + <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="(850,690)" name="Multiplexer"> + <comp lib="2" loc="(930,690)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> <a name="disabled" val="0"/> <a name="enable" val="false"/> </comp> - <comp lib="3" loc="(420,1820)" name="Comparator"> - <a name="mode" val="unsigned"/> + <comp lib="1" loc="(1210,680)" name="AND Gate"> + <a name="facing" val="north"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="0" loc="(280,420)" name="Constant"/> + <comp lib="0" loc="(1200,950)" name="Bit Extender"> + <a name="in_width" val="4"/> + <a name="out_width" val="5"/> </comp> - <comp lib="1" loc="(820,1860)" name="AND Gate"> + <comp lib="1" loc="(1330,640)" 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="(600,960)" name="OR Gate"> + <comp lib="1" loc="(560,330)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(890,60)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="value" val="0x0"/> + <comp lib="2" loc="(550,1790)" name="Multiplexer"> + <a name="selloc" val="tr"/> + <a name="width" val="8"/> + <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(280,220)" name="Constant"/> - <comp lib="1" loc="(1190,650)" name="OR Gate"> - <a name="facing" val="north"/> + <comp lib="1" loc="(330,1190)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="SB"/> + <a name="negate2" val="true"/> + <a name="negate6" val="true"/> + </comp> + <comp lib="0" loc="(280,300)" name="Constant"/> + <comp lib="1" loc="(560,420)" name="OR Gate"> + <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(1050,1670)" name="AND Gate"> - <a name="facing" val="west"/> - <a name="label" val="ptrinc"/> + <comp lib="3" loc="(200,1800)" name="Adder"/> + <comp lib="3" loc="(1200,900)" name="Comparator"> + <a name="width" val="4"/> </comp> - <comp lib="0" loc="(280,1120)" name="Constant"/> - <comp lib="1" loc="(330,290)" name="AND Gate"> + <comp lib="1" loc="(330,110)" name="AND Gate"> <a name="inputs" val="8"/> - <a name="label" val="NAND"/> + <a name="label" val="OR"/> + <a name="negate0" val="true"/> <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(1170,1720)" 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 lib="2" loc="(850,1050)" name="Multiplexer"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(860,910)" name="Constant"> + <comp lib="2" loc="(930,870)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="value" val="0x0"/> + <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(760,1580)" name="Pin"> + <comp lib="0" loc="(280,1350)" name="Constant"/> + <comp lib="0" loc="(600,1810)" name="Pin"> <a name="facing" val="north"/> <a name="output" val="true"/> - <a name="label" val="POP"/> + <a name="width" val="8"/> + <a name="label" val="IMM VALUE"/> <a name="labelloc" val="south"/> </comp> - <comp lib="0" loc="(620,1400)" name="Splitter"> + <comp lib="4" loc="(1110,680)" name="Register"> + <a name="width" val="1"/> + </comp> + <comp lib="0" loc="(280,660)" name="Constant"/> + <comp lib="0" loc="(280,1390)" name="Constant"/> + <comp lib="0" loc="(440,2000)" name="Pin"> <a name="facing" val="north"/> - <a name="appear" val="center"/> + <a name="output" val="true"/> + <a name="label" val="Memory Select"/> + <a name="labelloc" val="south"/> </comp> - <comp lib="1" loc="(560,420)" name="OR Gate"> + <comp lib="2" loc="(890,960)" 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="(160,50)" name="Splitter"> - <a name="facing" val="south"/> - <a name="fanout" val="8"/> + <comp lib="0" loc="(240,1750)" name="Splitter"> + <a name="facing" val="north"/> <a name="incoming" val="8"/> + <a name="bit1" val="0"/> + <a name="bit2" val="0"/> + <a name="bit3" val="0"/> + <a name="bit4" val="1"/> + <a name="bit5" val="1"/> + <a name="bit6" val="1"/> + <a name="bit7" val="1"/> </comp> - <comp lib="0" loc="(280,240)" name="Constant"/> - <comp lib="2" loc="(930,600)" name="Multiplexer"> + <comp lib="0" loc="(280,150)" name="Constant"/> + <comp lib="0" loc="(280,1120)" name="Constant"/> + <comp lib="1" loc="(440,330)" 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="2" loc="(160,50)" name="Multiplexer"> + <comp lib="0" loc="(280,1200)" name="Constant"/> + <comp lib="0" loc="(80,50)" name="Pin"> <a name="width" val="8"/> - <a name="enable" val="false"/> + <a name="tristate" val="false"/> + <a name="label" val="DATA"/> + <a name="labelloc" val="north"/> </comp> - <comp lib="1" loc="(360,330)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="1" loc="(290,1730)" name="OR Gate"> + <a name="width" val="8"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(280,1110)" name="Constant"/> - <comp lib="0" loc="(1210,1640)" name="Pin"> - <a name="facing" val="west"/> - <a name="output" val="true"/> - <a name="width" val="4"/> - <a name="label" val="Dynamic OP"/> - <a name="labelloc" val="east"/> + <comp lib="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,550)" name="Comparator"> - <a name="width" val="5"/> + <comp lib="0" loc="(860,820)" name="Constant"> + <a name="facing" val="south"/> + <a name="width" val="2"/> </comp> - <comp lib="0" loc="(280,280)" name="Constant"/> - <comp lib="0" loc="(940,820)" 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="0" loc="(280,480)" 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="0" loc="(200,1580)" name="Splitter"> - <a name="facing" val="north"/> - <a name="incoming" val="4"/> - <a name="appear" val="right"/> - <a name="bit1" val="0"/> - <a name="bit2" val="1"/> - <a name="bit3" val="1"/> - </comp> - <comp lib="2" loc="(1170,610)" name="Multiplexer"> - <a name="width" val="5"/> - <a name="enable" val="false"/> + <comp lib="0" loc="(600,60)" name="Constant"> + <a name="facing" val="south"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(860,730)" 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="(520,1320)" 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="0" loc="(280,130)" name="Constant"/> - <comp lib="1" loc="(1050,1610)" 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="0" loc="(850,60)" name="Constant"> + <comp lib="1" loc="(640,1140)" name="OR Gate"> <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="value" val="0x0"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(660,1880)" name="Pin"> - <a name="facing" val="north"/> - <a name="tristate" val="false"/> - <a name="label" val="JMP FLAG"/> - <a name="labelloc" val="south"/> - </comp> - <comp lib="0" loc="(440,1880)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> - <a name="label" val="Memory Select"/> - <a name="labelloc" val="south"/> - </comp> - <comp lib="1" loc="(1370,660)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="0" loc="(280,140)" name="Constant"/> - <comp lib="0" loc="(760,1860)" name="Splitter"> - <a name="facing" val="north"/> - <a name="appear" val="right"/> - </comp> - <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="3" loc="(1280,620)" name="Subtractor"> + <a name="width" val="5"/> </comp> - <comp lib="1" loc="(440,1870)" name="AND 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="(260,1520)" name="Constant"> + <comp lib="0" loc="(280,640)" name="Constant"/> + <comp lib="0" loc="(280,1380)" name="Constant"/> + <comp lib="2" loc="(890,600)" name="Multiplexer"> + <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="value" val="0x0"/> + <a name="enable" val="false"/> </comp> - <comp lib="6" loc="(233,1834)" name="Text"> - <a name="text" val="This input defines the range of MMIO --&gt;"/> + <comp lib="1" loc="(330,560)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="LLI"/> + <a name="negate6" val="true"/> + <a name="negate7" val="true"/> </comp> <comp lib="0" loc="(480,60)" name="Constant"> <a name="facing" val="south"/> <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(840,1610)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> + <comp lib="2" loc="(910,1680)" name="Multiplexer"> + <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="label" val="A (R)"/> - <a name="labelloc" val="south"/> + <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(520,510)" name="OR Gate"> + <comp lib="1" loc="(920,1730)" 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,570)" name="Constant"/> - <comp lib="0" loc="(280,360)" name="Constant"/> - <comp lib="1" loc="(1210,680)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="1" loc="(680,1140)" name="OR Gate"> + <comp lib="0" loc="(280,270)" name="Constant"/> + <comp lib="1" loc="(900,1840)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(360,1010)" 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="(560,60)" name="Constant"> - <a name="facing" val="south"/> + <comp lib="0" loc="(260,1640)" name="Constant"> + <a name="width" val="2"/> <a name="value" val="0x0"/> </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="0" loc="(280,500)" name="Constant"/> - <comp lib="1" loc="(330,560)" name="AND Gate"> + <comp lib="1" loc="(330,380)" name="AND Gate"> <a name="inputs" val="8"/> - <a name="label" val="LLI"/> - <a name="negate6" val="true"/> - <a name="negate7" val="true"/> + <a name="label" val="DYN"/> + <a name="negate0" val="true"/> </comp> - <comp lib="4" loc="(110,50)" name="Register"> - <a name="trigger" val="falling"/> + <comp lib="3" loc="(1280,670)" name="Comparator"> + <a name="width" val="5"/> </comp> - <comp lib="0" loc="(80,50)" name="Pin"> - <a name="width" val="8"/> + <comp lib="0" loc="(50,250)" name="Pin"> <a name="tristate" val="false"/> - <a name="label" val="DATA"/> - <a name="labelloc" val="north"/> + <a name="label" val="RST"/> </comp> - <comp lib="1" loc="(680,1230)" name="OR Gate"> + <comp lib="0" loc="(400,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="(900,820)" name="Constant"> + <comp lib="0" loc="(760,1980)" name="Splitter"> + <a name="facing" val="north"/> + <a name="appear" val="right"/> + </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"/> + </comp> + <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="(510,1620)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="8"/> - <a name="value" val="0x2"/> + <comp lib="1" loc="(1110,1850)" name="OR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="3"/> </comp> - <comp lib="0" loc="(610,1690)" name="Pin"> + <comp lib="0" loc="(440,1740)" 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="width" val="3"/> + <a name="label" val="ALU OP"/> <a name="labelloc" val="south"/> </comp> - <comp lib="1" loc="(1210,790)" name="OR Gate"> + <comp lib="0" loc="(880,1730)" name="Pin"> + <a name="facing" val="north"/> + <a name="output" val="true"/> + <a name="width" val="2"/> + <a name="label" val="B (R)"/> + <a name="labelloc" val="south"/> + </comp> + <comp lib="0" loc="(940,730)" 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"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="2" loc="(890,760)" name="Multiplexer"> + <comp lib="0" loc="(280,630)" 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="4" loc="(260,1790)" name="Register"/> + <comp lib="0" loc="(1240,680)" name="Constant"> + <a name="width" val="5"/> + <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"/> + <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="(280,320)" 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="(860,730)" 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="2" loc="(290,1450)" name="Multiplexer"> + <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="0" loc="(940,550)" name="Constant"> + <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(280,580)" name="Constant"/> - <comp lib="0" loc="(280,1210)" name="Constant"/> - <comp lib="2" loc="(890,870)" name="Multiplexer"> + <comp lib="2" loc="(850,600)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(1200,950)" name="Bit Extender"> - <a name="in_width" val="4"/> - <a name="out_width" val="5"/> + <comp lib="1" loc="(840,1810)" name="OR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(920,1610)" name="OR Gate"> + <comp lib="0" loc="(280,1360)" name="Constant"/> + <comp lib="1" loc="(480,150)" name="OR Gate"> <a name="facing" val="south"/> - <a name="width" val="2"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(280,490)" name="Constant"/> - <comp lib="2" loc="(910,1560)" name="Multiplexer"> + <comp lib="0" loc="(680,60)" name="Constant"> <a name="facing" val="south"/> - <a name="selloc" val="tr"/> - <a name="width" val="2"/> - <a name="enable" val="false"/> + <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(520,1230)" name="OR Gate"> + <comp lib="1" loc="(1190,650)" name="OR Gate"> + <a name="facing" val="north"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="1" loc="(840,1730)" 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,330)" name="Constant"/> - <comp lib="0" loc="(880,1610)" name="Pin"> + <comp lib="0" loc="(250,1720)" name="Splitter"> <a name="facing" val="north"/> - <a name="output" val="true"/> + <a name="incoming" val="8"/> + <a name="bit1" val="0"/> + <a name="bit2" val="0"/> + <a name="bit3" val="0"/> + <a name="bit4" val="1"/> + <a name="bit5" val="1"/> + <a name="bit6" val="1"/> + <a name="bit7" val="1"/> + </comp> + <comp lib="1" loc="(330,830)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="PUSH"/> + <a name="negate2" val="true"/> + <a name="negate3" val="true"/> + <a name="negate5" val="true"/> + <a name="negate6" val="true"/> + </comp> + <comp lib="0" loc="(890,60)" name="Constant"> + <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="label" val="B (R)"/> - <a name="labelloc" val="south"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(440,1620)" name="Splitter"> - <a name="facing" val="north"/> - <a name="fanout" val="3"/> - <a name="incoming" val="3"/> - <a name="appear" val="center"/> + <comp lib="0" loc="(1220,930)" name="Constant"> + <a name="width" val="5"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="0" loc="(280,480)" name="Constant"/> + <comp lib="1" loc="(1320,540)" 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> + <comp lib="1" loc="(440,1140)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="1" loc="(520,1410)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="0" loc="(280,580)" name="Constant"/> + <comp lib="4" loc="(710,1820)" name="Register"> + <a name="width" val="1"/> + <a name="trigger" val="falling"/> </comp> + <comp lib="0" loc="(280,670)" name="Constant"/> <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="(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> </circuit> <circuit name="STK"> <a name="circuit" val="STK"/> @@ -4360,197 +4343,197 @@ <wire from="(750,260)" to="(760,260)"/> <wire from="(760,270)" to="(770,270)"/> <wire from="(1250,270)" to="(1270,270)"/> - <comp lib="2" loc="(1410,260)" name="Multiplexer"> + <comp lib="4" loc="(470,270)" name="Register"/> + <comp lib="4" loc="(3000,270)" name="Register"/> + <comp lib="4" loc="(800,270)" name="Register"/> + <comp lib="4" loc="(2230,270)" name="Register"/> + <comp lib="2" loc="(1630,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(3170,260)" name="Multiplexer"> + <comp lib="4" loc="(360,270)" name="Register"/> + <comp lib="2" loc="(750,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(3110,270)" name="Register"/> - <comp lib="4" loc="(1130,270)" name="Register"/> - <comp lib="4" loc="(1570,270)" name="Register"/> - <comp lib="4" loc="(470,270)" name="Register"/> - <comp lib="2" loc="(1520,260)" name="Multiplexer"> - <a name="width" val="8"/> - <a name="enable" val="false"/> - </comp> - <comp lib="2" loc="(750,260)" name="Multiplexer"> + <comp lib="0" loc="(150,220)" name="Pin"> + <a name="output" val="true"/> <a name="width" val="8"/> - <a name="enable" val="false"/> + <a name="tristate" val="false"/> + <a name="labelloc" val="east"/> </comp> - <comp lib="2" loc="(200,260)" name="Multiplexer"> + <comp lib="4" loc="(2780,270)" name="Register"/> + <comp lib="0" loc="(150,270)" name="Pin"> <a name="width" val="8"/> - <a name="enable" val="false"/> + <a name="tristate" val="false"/> </comp> - <comp lib="4" loc="(1900,270)" name="Register"/> - <comp lib="2" loc="(2950,260)" name="Multiplexer"> + <comp lib="2" loc="(2070,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(1630,260)" name="Multiplexer"> + <comp lib="4" loc="(3220,270)" name="Register"/> + <comp lib="2" loc="(3060,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(530,260)" name="Multiplexer"> + <comp lib="2" loc="(1520,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(2450,270)" name="Register"/> - <comp lib="2" loc="(1850,260)" name="Multiplexer"> + <comp lib="2" loc="(2620,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> + <comp lib="4" loc="(690,270)" name="Register"/> + <comp lib="1" loc="(130,340)" name="OR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> <comp lib="0" loc="(90,360)" name="Pin"> <a name="tristate" val="false"/> </comp> - <comp lib="2" loc="(2180,260)" name="Multiplexer"> + <comp lib="2" loc="(970,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(3550,270)" name="Register"/> - <comp lib="0" loc="(90,300)" name="Pin"> - <a name="tristate" val="false"/> + <comp lib="2" loc="(1410,260)" name="Multiplexer"> + <a name="width" val="8"/> + <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(3220,270)" name="Register"/> - <comp lib="2" loc="(2620,260)" name="Multiplexer"> + <comp lib="4" loc="(3660,270)" name="Register"/> + <comp lib="2" loc="(1190,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(1460,270)" name="Register"/> - <comp lib="2" loc="(1080,260)" name="Multiplexer"> + <comp lib="2" loc="(1960,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(3440,270)" name="Register"/> - <comp lib="4" loc="(2890,270)" name="Register"/> - <comp lib="4" loc="(3660,270)" name="Register"/> - <comp lib="2" loc="(640,260)" name="Multiplexer"> + <comp lib="2" loc="(3390,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="(1790,270)" name="Register"/> + <comp lib="2" loc="(2290,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(3280,260)" name="Multiplexer"> + <comp lib="4" loc="(1570,270)" name="Register"/> + <comp lib="4" loc="(3440,270)" name="Register"/> + <comp lib="4" loc="(2670,270)" name="Register"/> + <comp lib="4" loc="(2010,270)" name="Register"/> + <comp lib="2" loc="(420,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(1240,270)" name="Register"/> - <comp lib="4" loc="(360,270)" name="Register"/> - <comp lib="4" loc="(2120,270)" name="Register"/> - <comp lib="4" loc="(690,270)" name="Register"/> - <comp lib="2" loc="(2730,260)" name="Multiplexer"> + <comp lib="4" loc="(910,270)" name="Register"/> + <comp lib="4" loc="(2890,270)" name="Register"/> + <comp lib="4" loc="(3110,270)" name="Register"/> + <comp lib="2" loc="(2950,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(860,260)" name="Multiplexer"> + <comp lib="2" loc="(1850,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(250,270)" name="Register"/> - <comp lib="0" loc="(3670,220)" name="Constant"> - <a name="facing" val="west"/> + <comp lib="4" loc="(2450,270)" name="Register"/> + <comp lib="4" loc="(1350,270)" name="Register"/> + <comp lib="2" loc="(2510,260)" name="Multiplexer"> <a name="width" val="8"/> - <a name="value" val="0x0"/> + <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(150,220)" name="Pin"> - <a name="output" val="true"/> + <comp lib="2" loc="(640,260)" name="Multiplexer"> <a name="width" val="8"/> - <a name="tristate" val="false"/> - <a name="labelloc" val="east"/> + <a name="enable" val="false"/> </comp> + <comp lib="4" loc="(250,270)" name="Register"/> <comp lib="4" loc="(1020,270)" name="Register"/> - <comp lib="2" loc="(970,260)" name="Multiplexer"> + <comp lib="2" loc="(3170,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(2510,260)" name="Multiplexer"> + <comp lib="2" loc="(3280,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="(530,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(3000,270)" name="Register"/> - <comp lib="0" loc="(150,270)" name="Pin"> + <comp lib="4" loc="(2340,270)" name="Register"/> + <comp lib="4" loc="(3550,270)" name="Register"/> + <comp lib="2" loc="(2400,260)" name="Multiplexer"> <a name="width" val="8"/> + <a name="enable" val="false"/> + </comp> + <comp lib="0" loc="(90,300)" name="Pin"> <a name="tristate" val="false"/> </comp> - <comp lib="2" loc="(2290,260)" name="Multiplexer"> + <comp lib="4" loc="(3330,270)" name="Register"/> + <comp lib="2" loc="(2180,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(1740,260)" name="Multiplexer"> + <comp lib="2" loc="(2730,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(2070,260)" name="Multiplexer"> + <comp lib="0" loc="(90,330)" name="Pin"> + <a name="tristate" val="false"/> + </comp> + <comp lib="4" loc="(2560,270)" name="Register"/> + <comp lib="2" loc="(1080,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="(1130,270)" name="Register"/> + <comp lib="4" loc="(2120,270)" name="Register"/> + <comp lib="0" loc="(180,320)" name="Pin"> + <a name="tristate" val="false"/> + </comp> + <comp lib="4" loc="(1680,270)" name="Register"/> + <comp lib="2" loc="(2840,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(2670,270)" name="Register"/> - <comp lib="2" loc="(3390,260)" name="Multiplexer"> + <comp lib="2" loc="(1300,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(3330,270)" name="Register"/> - <comp lib="0" loc="(180,320)" name="Pin"> - <a name="tristate" val="false"/> - </comp> - <comp lib="4" loc="(2780,270)" name="Register"/> - <comp lib="4" loc="(910,270)" name="Register"/> - <comp lib="4" loc="(800,270)" name="Register"/> - <comp lib="2" loc="(1190,260)" name="Multiplexer"> + <comp lib="2" loc="(860,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(2400,260)" name="Multiplexer"> + <comp lib="4" loc="(1900,270)" name="Register"/> + <comp lib="2" loc="(3610,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(2010,270)" name="Register"/> <comp lib="2" loc="(3500,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(1350,270)" name="Register"/> - <comp lib="4" loc="(1680,270)" name="Register"/> - <comp lib="4" loc="(2560,270)" name="Register"/> - <comp lib="0" loc="(90,330)" name="Pin"> - <a name="tristate" val="false"/> - </comp> - <comp lib="2" loc="(1300,260)" name="Multiplexer"> + <comp lib="2" loc="(310,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(130,340)" name="OR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="4" loc="(580,270)" name="Register"/> - <comp lib="2" loc="(1960,260)" name="Multiplexer"> + <comp lib="4" loc="(1240,270)" name="Register"/> + <comp lib="2" loc="(200,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="(420,260)" name="Multiplexer"> + <comp lib="4" loc="(580,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="(1790,270)" name="Register"/> - <comp lib="4" loc="(2230,270)" name="Register"/> - <comp lib="2" loc="(2840,260)" name="Multiplexer"> + <comp lib="2" loc="(1740,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> + <comp lib="4" loc="(1460,270)" name="Register"/> </circuit> <circuit name="PC"> <a name="circuit" val="PC"/> @@ -4560,11 +4543,11 @@ <appear> <rect fill="none" height="30" stroke="#000000" stroke-width="2" width="30" x="50" y="50"/> <text font-family="SansSerif" font-size="12" text-anchor="middle" x="65" y="69">PC</text> - <circ-port height="8" pin="140,300" width="8" x="56" y="46"/> + <circ-port height="8" pin="190,300" width="8" x="56" y="46"/> <circ-port height="8" pin="140,430" width="8" x="76" y="56"/> - <circ-port height="10" pin="390,390" width="10" x="55" y="75"/> + <circ-port height="10" pin="360,390" width="10" x="55" y="75"/> <circ-port height="8" pin="140,500" width="8" x="46" y="66"/> - <circ-port height="10" pin="390,360" width="10" x="75" y="65"/> + <circ-port height="10" pin="430,330" width="10" x="75" y="65"/> <circ-port height="8" pin="140,450" width="8" x="76" y="76"/> <circ-port height="8" pin="140,470" width="8" x="66" y="76"/> <circ-port height="8" pin="130,360" width="8" x="66" y="46"/> @@ -4573,22 +4556,23 @@ <wire from="(300,310)" to="(300,380)"/> <wire from="(260,320)" to="(260,450)"/> <wire from="(270,330)" to="(270,470)"/> - <wire from="(300,380)" to="(350,380)"/> - <wire from="(230,430)" to="(350,430)"/> + <wire from="(140,400)" to="(320,400)"/> <wire from="(200,270)" to="(370,270)"/> <wire from="(200,270)" to="(200,290)"/> <wire from="(140,450)" to="(240,450)"/> <wire from="(140,430)" to="(230,430)"/> + <wire from="(230,430)" to="(320,430)"/> <wire from="(230,330)" to="(230,430)"/> <wire from="(300,310)" to="(320,310)"/> - <wire from="(370,360)" to="(390,360)"/> + <wire from="(300,380)" to="(320,380)"/> <wire from="(140,360)" to="(140,400)"/> - <wire from="(140,400)" to="(350,400)"/> - <wire from="(370,320)" to="(370,360)"/> <wire from="(280,330)" to="(280,500)"/> + <wire from="(190,300)" to="(210,300)"/> + <wire from="(420,330)" to="(430,330)"/> <wire from="(290,310)" to="(300,310)"/> <wire from="(360,320)" to="(370,320)"/> - <wire from="(380,390)" to="(390,390)"/> + <wire from="(350,390)" to="(360,390)"/> + <wire from="(370,320)" to="(380,320)"/> <wire from="(140,360)" to="(150,360)"/> <wire from="(130,360)" to="(140,360)"/> <wire from="(200,290)" to="(210,290)"/> @@ -4597,72 +4581,75 @@ <wire from="(190,370)" to="(200,370)"/> <wire from="(140,500)" to="(280,500)"/> <wire from="(370,270)" to="(370,320)"/> - <wire from="(140,300)" to="(210,300)"/> <wire from="(140,470)" to="(270,470)"/> <wire from="(200,310)" to="(200,370)"/> <comp lib="3" loc="(360,320)" name="Adder"/> - <comp lib="0" loc="(150,380)" name="Constant"> + <comp lib="0" loc="(320,430)" name="Splitter"> + <a name="facing" val="north"/> + <a name="appear" val="right"/> + </comp> + <comp lib="2" loc="(250,310)" name="Multiplexer"> + <a name="select" val="2"/> <a name="width" val="8"/> + <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(140,470)" name="Pin"> - <a name="tristate" val="false"/> + <comp lib="1" loc="(260,450)" name="NOT Gate"> + <a name="size" val="20"/> </comp> - <comp lib="0" loc="(320,330)" name="Constant"> - <a name="width" val="8"/> + <comp lib="4" loc="(290,310)" name="Register"> + <a name="trigger" val="falling"/> </comp> - <comp lib="0" loc="(130,360)" name="Pin"> + <comp lib="0" loc="(320,330)" name="Constant"> <a name="width" val="8"/> - <a name="tristate" val="false"/> - <a name="label" val="ALU"/> - </comp> - <comp lib="0" loc="(350,430)" name="Splitter"> - <a name="facing" val="north"/> - <a name="appear" val="right"/> </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"> + <comp lib="3" loc="(190,370)" name="Adder"/> + <comp lib="3" loc="(420,330)" name="Adder"/> + <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"> + <a name="tristate" val="false"/> + </comp> + <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="0" loc="(390,390)" name="Pin"> + <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="labelloc" val="east"/> </comp> - <comp lib="0" loc="(140,450)" name="Pin"> + <comp lib="0" loc="(140,500)" name="Pin"> <a name="tristate" val="false"/> </comp> - <comp lib="4" loc="(290,310)" name="Register"> - <a name="trigger" val="falling"/> - </comp> - <comp lib="3" loc="(190,370)" name="Adder"/> - <comp lib="2" loc="(380,390)" name="Multiplexer"> + <comp lib="0" loc="(130,360)" name="Pin"> <a name="width" val="8"/> - <a name="disabled" val="0"/> - <a name="enable" val="false"/> + <a name="tristate" val="false"/> + <a name="label" val="ALU"/> </comp> - <comp lib="0" loc="(390,360)" name="Pin"> + <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="labelloc" val="east"/> </comp> - <comp lib="0" loc="(140,300)" name="Pin"> + <comp lib="0" loc="(380,340)" name="Constant"> <a name="width" val="8"/> - <a name="tristate" val="false"/> - <a name="label" val="DATA"/> </comp> - <comp lib="2" loc="(250,310)" name="Multiplexer"> - <a name="select" val="2"/> + <comp lib="0" loc="(150,380)" name="Constant"> <a name="width" val="8"/> - <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(260,450)" name="NOT Gate"> - <a name="size" val="20"/> + <comp lib="0" loc="(140,470)" name="Pin"> + <a name="tristate" val="false"/> </comp> </circuit> <circuit name="ExampleConfigurationROM"> @@ -4678,8 +4665,8 @@ <wire from="(650,730)" to="(650,770)"/> <wire from="(680,360)" to="(680,400)"/> <wire from="(710,710)" to="(710,750)"/> - <wire from="(540,10)" to="(560,10)"/> <wire from="(520,710)" to="(540,710)"/> + <wire from="(540,10)" to="(560,10)"/> <wire from="(470,490)" to="(500,490)"/> <wire from="(640,750)" to="(660,750)"/> <wire from="(610,80)" to="(610,190)"/> @@ -4890,93 +4877,29 @@ <wire from="(560,710)" to="(570,710)"/> <wire from="(550,380)" to="(560,380)"/> <wire from="(650,80)" to="(660,80)"/> - <comp lib="1" loc="(810,420)" name="Controlled Buffer"> - <a name="facing" val="south"/> - <a name="width" val="8"/> - </comp> - <comp lib="0" loc="(350,370)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0xfe"/> + <comp lib="0" loc="(720,700)" name="Splitter"> + <a name="facing" val="west"/> + <a name="fanout" val="7"/> + <a name="incoming" val="7"/> + <a name="appear" val="right"/> </comp> - <comp lib="0" loc="(810,400)" name="Pin"> + <comp lib="5" loc="(740,370)" name="Hex Digit Display"/> + <comp lib="1" loc="(870,140)" name="Controlled Buffer"> <a name="facing" val="south"/> <a name="width" val="8"/> - <a name="tristate" val="false"/> - </comp> - <comp lib="0" loc="(690,400)" name="Splitter"> - <a name="facing" val="north"/> - <a name="incoming" val="8"/> - <a name="appear" val="right"/> - <a name="bit1" val="0"/> - <a name="bit2" val="0"/> - <a name="bit3" val="0"/> - <a name="bit4" val="1"/> - <a name="bit5" val="1"/> - <a name="bit6" val="1"/> - <a name="bit7" val="1"/> </comp> - <comp lib="4" loc="(650,80)" name="Register"/> - <comp lib="0" loc="(430,60)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0xff"/> + <comp lib="0" loc="(320,860)" name="Pin"> + <a name="tristate" val="false"/> + <a name="label" val="RESET"/> </comp> - <comp lib="1" loc="(860,820)" name="Controlled Buffer"> + <comp lib="1" loc="(860,780)" name="NOT Gate"> <a name="facing" val="south"/> - <a name="width" val="8"/> + <a name="size" val="20"/> </comp> <comp lib="0" loc="(410,60)" name="Constant"> <a name="width" val="8"/> <a name="value" val="0xfc"/> </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="3" loc="(540,360)" name="Comparator"> - <a name="mode" val="unsigned"/> - </comp> - <comp lib="0" loc="(490,920)" name="Probe"> - <a name="facing" val="west"/> - <a name="radix" val="16"/> - <a name="label" val="Output"/> - <a name="labelloc" val="east"/> - <a name="labelfont" val="SansSerif bold 12"/> - </comp> - <comp lib="1" loc="(600,90)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="3"/> - </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="6" loc="(883,753)" name="Text"> - <a name="text" val=" ← Keyboard"/> - <a name="font" val="SansSerif bold 16"/> - <a name="halign" val="left"/> - </comp> - <comp lib="5" loc="(700,370)" name="Hex Digit Display"/> - <comp lib="0" loc="(320,920)" name="Pin"> - <a name="output" val="true"/> - <a name="label" val="IO ACTIVE"/> - </comp> - <comp lib="5" loc="(740,510)" name="Hex Digit Display"/> - <comp lib="4" loc="(680,500)" name="Register"/> - <comp lib="1" loc="(690,760)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="3"/> - </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="(678,17)" name="Text"> - <a name="text" val="PROGRAM MEMORY"/> - <a name="font" val="SansSerif bold 12"/> - <a name="halign" val="left"/> - </comp> <comp lib="0" loc="(680,60)" name="Splitter"> <a name="facing" val="west"/> <a name="incoming" val="16"/> @@ -4997,103 +4920,79 @@ <a name="bit14" val="1"/> <a name="bit15" val="1"/> </comp> - <comp lib="1" loc="(370,550)" name="OR Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="0" loc="(320,860)" name="Pin"> - <a name="tristate" val="false"/> - <a name="label" val="RESET"/> + <comp lib="0" loc="(350,770)" name="Constant"> + <a name="width" val="8"/> + <a name="value" val="0xfc"/> </comp> - <comp lib="1" loc="(690,720)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="3"/> - <a name="negate0" val="true"/> + <comp lib="4" loc="(820,60)" name="ROM"> + <a name="addrWidth" val="16"/> + <a name="contents">addr/data: 16 8 +4f 0 a 30 2e 7b 31 20 +74 73 65 74 5f 6c 61 6e +69 6d 72 65 74 a0 83 e8 +4b 0 20 24 a0 83 e8 43 +20 c4 30 43 fc 9f 43 80 +a7 db 83 28 9b 23 e7 83 +40 ab bf ab f2 43 6e f7 +83 18 2b db 83 4b 83 22 +43 20 f7 83 22 ab 7 10 +de 83 22 7 9f bb 57 a +67 6e 69 70 5 a0 83 c0 +20 eb 83 68 57 0 a 67 +6e 6f 70 a0 83 e8 83 18 +6f a 33 32 31 67 6e 69 +74 73 65 74 b a0 83 c0 +20 eb 83 90 77 0 a 65 +76 69 6c 61 20 65 72 61 +20 65 77 a0 83 e8 83 18 +53 a 6f 6f 66 4 a0 83 +c0 20 eb 83 a8 53 0 a +72 61 62 a0 83 e8 83 18 +5b a 72 61 65 6c 63 6 +a0 83 c0 20 eb 83 18 47 +c fc a3 9f a3 9b 83 18 +7 9f b7 3 9f a3 9b 43 +20 9f 10 de a3 df 83 dd +10 7 de df 83 e2 a3 a7 +f0 30 db 83 d0 3 84 9f +97 90 7 84 3 9f 97 90 +a3 84 20 43 fc 9f a3 d7 +83 f5 9b 83 ee 48 90 +</a> </comp> - <comp loc="(220,130)" name="MCU"/> - <comp lib="1" loc="(370,260)" name="OR Gate"> + <comp lib="4" loc="(680,500)" name="Register"/> + <comp lib="1" loc="(370,550)" name="OR Gate"> <a name="facing" val="north"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="6" loc="(329,514)" name="Text"> - <a name="text" val="Memory Mapped I/O Port Address"/> - <a name="halign" val="right"/> - </comp> - <comp lib="1" loc="(810,560)" name="Controlled Buffer"> - <a name="facing" val="south"/> + <comp lib="0" loc="(350,510)" name="Constant"> <a name="width" val="8"/> - </comp> - <comp lib="0" loc="(680,120)" name="Probe"> - <a name="facing" val="west"/> - <a name="label" val="Real Address"/> - <a name="labelloc" val="east"/> - </comp> - <comp lib="1" loc="(860,780)" name="NOT Gate"> - <a name="facing" val="south"/> - <a name="size" val="20"/> + <a name="value" val="0xfd"/> </comp> <comp lib="6" loc="(388,63)" name="Text"> <a name="text" val="Sets the memory-mapped address range"/> <a name="halign" val="right"/> </comp> - <comp lib="1" loc="(590,510)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </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="(600,770)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="3" loc="(540,20)" name="Comparator"> + <a name="mode" val="unsigned"/> + </comp> + <comp lib="3" loc="(540,360)" name="Comparator"> + <a name="mode" val="unsigned"/> </comp> <comp lib="0" loc="(810,540)" name="Pin"> <a name="facing" val="south"/> <a name="width" val="8"/> <a name="tristate" val="false"/> </comp> - <comp lib="4" loc="(680,360)" name="Register"/> - <comp lib="4" loc="(820,60)" name="ROM"> - <a name="addrWidth" val="16"/> - <a name="contents">addr/data: 16 8 -43 20 c4 30 43 fc 9f 43 -80 a7 db 83 9 ab 9b 23 -e7 83 21 bf ab f2 43 70 -f7 83 0 2b db 83 2b 83 -3 43 20 f7 83 3 7 10 -de 83 3 7 9f bb 53 67 -6e 69 70 4 a0 93 83 91 -20 eb 83 49 57 0 a 67 -6e 6f 70 a0 93 83 b6 83 -0 7 9f b7 6b 33 32 31 -67 6e 69 74 73 65 74 a -a0 93 83 91 20 eb 83 75 -77 0 a 65 76 69 6c 61 -20 65 72 61 20 65 77 a0 -93 83 b6 83 0 7 9f b7 -4f 6f 6f 66 3 a0 93 83 -91 20 eb 83 0 53 0 a -72 61 62 a0 93 83 b6 83 -0 3 9f a3 9b 43 20 9f -10 de a3 df 83 ab 10 7 -de df 83 b0 a3 a7 f0 30 -db 83 9e 3 84 9f 97 90 -7 84 3 9f 97 90 a3 84 -20 43 fc 9f a3 d7 83 c3 -9b 83 bc 48 90 -</a> - </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="(350,510)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0xfd"/> + <comp lib="1" loc="(640,780)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> <comp lib="0" loc="(690,540)" name="Splitter"> <a name="facing" val="north"/> @@ -5107,67 +5006,106 @@ db 83 9e 3 84 9f 97 90 <a name="bit6" val="1"/> <a name="bit7" val="1"/> </comp> - <comp lib="1" loc="(640,780)" name="AND Gate"> + <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="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="3" loc="(540,90)" name="Comparator"> - <a name="mode" val="unsigned"/> + <comp loc="(220,130)" name="MCU"/> + <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="6" loc="(382,57)" name="Text"> - <a name="halign" val="right"/> + <comp lib="0" loc="(430,60)" name="Constant"> + <a name="width" val="8"/> + <a name="value" val="0xff"/> </comp> <comp lib="0" loc="(320,880)" name="Clock"> <a name="label" val="CLOCK"/> </comp> - <comp lib="1" loc="(560,710)" name="Controlled Buffer"> + <comp lib="1" loc="(590,370)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </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="(330,773)" name="Text"> - <a name="text" val="Memory Mapped I/O Port Address"/> + <comp lib="0" loc="(490,920)" name="Probe"> + <a name="facing" val="west"/> + <a name="radix" val="16"/> + <a name="label" val="Output"/> + <a name="labelloc" val="east"/> + <a name="labelfont" val="SansSerif bold 12"/> + </comp> + <comp lib="1" loc="(600,770)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="0" loc="(680,120)" name="Probe"> + <a name="facing" val="west"/> + <a name="label" val="Real Address"/> + <a name="labelloc" val="east"/> + </comp> + <comp lib="5" loc="(740,510)" name="Hex Digit Display"/> + <comp lib="6" loc="(382,57)" name="Text"> <a name="halign" val="right"/> </comp> - <comp lib="5" loc="(740,370)" name="Hex Digit Display"/> - <comp lib="5" loc="(700,510)" name="Hex Digit Display"/> + <comp lib="0" loc="(320,900)" name="Pin"> + <a name="output" val="true"/> + <a name="label" val="WRITE ACTIVE"/> + </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="1" loc="(600,90)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="3"/> + </comp> <comp lib="3" loc="(540,760)" name="Comparator"> <a name="mode" val="unsigned"/> </comp> - <comp lib="1" loc="(870,140)" name="Controlled Buffer"> - <a name="facing" val="south"/> - <a name="width" val="8"/> + <comp lib="3" loc="(540,500)" name="Comparator"> + <a name="mode" val="unsigned"/> </comp> - <comp lib="0" loc="(570,710)" name="Splitter"> - <a name="fanout" val="8"/> + <comp lib="1" loc="(690,720)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="3"/> + <a name="negate0" val="true"/> + </comp> + <comp lib="4" loc="(650,80)" name="Register"/> + <comp lib="0" loc="(690,400)" name="Splitter"> + <a name="facing" val="north"/> <a name="incoming" val="8"/> + <a name="appear" val="right"/> + <a name="bit1" val="0"/> + <a name="bit2" val="0"/> + <a name="bit3" val="0"/> + <a name="bit4" val="1"/> + <a name="bit5" val="1"/> + <a name="bit6" val="1"/> + <a name="bit7" val="1"/> </comp> - <comp lib="3" loc="(540,20)" name="Comparator"> - <a name="mode" val="unsigned"/> + <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="5" loc="(730,750)" name="Keyboard"> + <a name="buflen" val="80"/> + <a name="trigger" val="falling"/> </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="(490,890)" name="Probe"> - <a name="facing" val="west"/> - <a name="radix" val="16"/> - <a name="label" val="Address"/> - <a name="labelloc" val="east"/> - <a name="labelfont" val="SansSerif bold 12"/> - </comp> - <comp lib="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="(640,370)" name="AND Gate"> + <comp lib="1" loc="(590,510)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> @@ -5175,33 +5113,88 @@ db 83 9e 3 84 9f 97 90 <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="3" loc="(540,500)" name="Comparator"> - <a name="mode" val="unsigned"/> + <comp lib="1" loc="(810,560)" name="Controlled Buffer"> + <a name="facing" val="south"/> + <a name="width" val="8"/> </comp> - <comp lib="1" loc="(590,20)" name="AND Gate"> + <comp lib="1" loc="(690,760)" name="AND Gate"> <a name="size" val="30"/> - <a name="inputs" val="2"/> - <a name="negate1" val="true"/> + <a name="inputs" val="3"/> </comp> - <comp lib="0" loc="(350,770)" name="Constant"> + <comp lib="1" loc="(560,710)" name="Controlled Buffer"> <a name="width" val="8"/> - <a name="value" val="0xfc"/> </comp> - <comp lib="5" loc="(730,750)" name="Keyboard"> - <a name="buflen" val="80"/> - <a name="trigger" val="falling"/> + <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="6" loc="(329,514)" name="Text"> + <a name="text" val="Memory Mapped I/O Port Address"/> + <a name="halign" val="right"/> </comp> <comp lib="5" loc="(730,710)" name="TTY"> <a name="cols" val="80"/> <a name="trigger" val="falling"/> </comp> - <comp lib="0" loc="(720,700)" name="Splitter"> - <a name="facing" val="west"/> + <comp lib="3" loc="(540,90)" name="Comparator"> + <a name="mode" val="unsigned"/> + </comp> + <comp lib="0" loc="(570,710)" name="Splitter"> + <a name="fanout" val="8"/> + <a name="incoming" val="8"/> + </comp> + <comp lib="6" loc="(883,753)" name="Text"> + <a name="text" val=" ← Keyboard"/> + <a name="font" val="SansSerif bold 16"/> + <a name="halign" val="left"/> + </comp> + <comp lib="1" loc="(640,370)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="0" loc="(320,920)" name="Pin"> + <a name="output" val="true"/> + <a name="label" val="IO ACTIVE"/> + </comp> + <comp lib="5" loc="(700,370)" name="Hex Digit Display"/> + <comp lib="1" loc="(810,420)" name="Controlled Buffer"> + <a name="facing" val="south"/> + <a name="width" val="8"/> + </comp> + <comp lib="4" loc="(680,360)" name="Register"/> + <comp lib="0" loc="(870,760)" name="Splitter"> + <a name="facing" val="south"/> <a name="fanout" val="7"/> <a name="incoming" val="7"/> - <a name="appear" val="right"/> </comp> - <comp lib="1" loc="(590,370)" name="AND Gate"> + <comp lib="6" loc="(678,17)" name="Text"> + <a name="text" val="PROGRAM MEMORY"/> + <a name="font" val="SansSerif bold 12"/> + <a name="halign" val="left"/> + </comp> + <comp lib="5" loc="(700,510)" name="Hex Digit Display"/> + <comp lib="6" loc="(330,373)" name="Text"> + <a name="text" val="Memory Mapped I/O Port Address"/> + <a name="halign" val="right"/> + </comp> + <comp lib="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"/> + <a name="label" val="Address"/> + <a name="labelloc" val="east"/> + <a name="labelfont" val="SansSerif bold 12"/> + </comp> + <comp lib="1" loc="(370,260)" name="OR Gate"> + <a name="facing" val="north"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> diff --git a/ExamplePrograms/README.md b/ExamplePrograms/README.md @@ -2,6 +2,9 @@ TODO: Implement some kind of variables / defines +TODO: Hardcoded string constant meta-instruction + + ### Structure Each assembly line must start with either a comment, @@ -16,7 +19,7 @@ Or a label, followed with an instruction, [label]: [opcode] [arguments] -Please refer to other examples as reference. +Please refer to the examples as reference. ### Argument Legend @@ -49,13 +52,13 @@ Push GRA to the stack push -Pop the stack to GRA +Pop the stack to `GRA` pop -Program Counter Read - stores program counter value to `GRA` +Peek the stack to `GRA` - pcr + peek Set ADD Operation for `cmp` and `op` instructions. `cmp` will flag if there is an overflow. `op` will perform addition. @@ -97,9 +100,9 @@ there is underflow. `op` will perform A >> B. sop_rsh -Get the return value for a common function call and store the address in `GRA`. +Program Counter Return Address - stores program counter return address to `GRA` - gtr + pcr Unconditionally branch to the address in `GRA` diff --git a/ExamplePrograms/fibb_test.tac b/ExamplePrograms/fibb_test.tac @@ -1,13 +1,9 @@ # This program computes the classic Fibbonacci sequence -###################### Clear GRA and GRB -start: lli 0 - mov GRA GRB ###################### Set our memory pointer li 254 sp GRA ###################### Set our inital state - lli 1 - mov GRA GRC + cin NIL GRC ###################### Printout current state loop: sb GRB ###################### Swap GRB and GRC diff --git a/ExamplePrograms/routine_test.tac b/ExamplePrograms/routine_test.tac @@ -2,14 +2,12 @@ # load a string on the stack lni 0x0,0xa,0x21,0x65,0x6e,0x6f,0x20,0x67,0x6e,0x69,0x72,0x74,0x73 # get the return address and push to stack - gtr - push + pcr # jump to the print function jmp print # the print function returns here, and we print a different string lni 0x0,0xa,0x21,0x67,0x6e,0x69,0x72,0x74,0x73,0x20,0x64,0x6e,0x6f,0x63,0x65,0x73 - gtr - push + pcr jmp print complete: jmp complete # Print function! diff --git a/ExamplePrograms/terminal_test.tac b/ExamplePrograms/terminal_test.tac @@ -1,8 +1,17 @@ # This program reads the input from the 'keyboard' component and records in a # buffer until the user presses the return key, at that point it compares the # buffer with 3 unique commands with unique responses +###################### print the welcome string + lni 0x0,0xa,0x30,0x2e + lni 0x31,0x20,0x74,0x73,0x65,0x74,0x5f,0x6c,0x61,0x6e,0x69,0x6d,0x72,0x65,0x74 + pcr + jmp print +###################### print the terminal character '$ ' +setup: lni 0x0,0x20,0x24 + pcr + jmp print ###################### Set up our buffer pointer to live in GRC -setup: li 32 + li 32 mov GRA GRC ###################### Set up our polling address poll: sop_xor @@ -15,21 +24,21 @@ p_loop: lb GRB cmp GRB GRA jmp p_loop ###################### Handle buffering the data and echo -###################### Echo the byte - sb GRB ###################### Clears the byte out of the buffer in the keyboard sb GRA ###################### Did we read a backspace character? If so, handle that lli 8 cmp GRA GRB jmp bcksp +###################### Echo the byte + sb GRB ###################### Write the byte in the buffer in RAM sp GRC sb GRB ###################### Increment the buffer pointer cin GRC GRC ###################### If we have reached the end of the buffer, restart - li 112 + li 110 cmp GRA GRC jmp setup ###################### If the user pressed the enter key, output the buffer @@ -42,6 +51,8 @@ bcksp: li 32 ###################### Are we at the start of the buffer? If so, we can return cmp GRA GRC jmp poll +###################### Echo the byte + sb GRB ###################### Decrement the buffer pointer lli 1 sop_sub @@ -52,15 +63,14 @@ bcksp: li 32 ###################### This is in reverse order, as the bytes will be pushed to ###################### the stack. The last byte is the first byte out. ###################### The last byte is the length of the string. -############ Respond to 'ping' with 'pong' -##### first off, store our buffer end pointer +##### first off, store our buffer end pointer in RAM cmpr: lli 0x01 sp GRA sb GRC -# "ping", length 4 - lni 0x67,0x6e,0x69,0x70,4 - gtr - push +############ Respond to 'ping' with 'pong' +# "ping\n", length 5 + lni 0x0a,0x67,0x6e,0x69,0x70,5 + pcr jmp cmpr_f sop_and ############ If the strings match, print our response, else continue to the next @@ -69,18 +79,13 @@ cmpr: lli 0x01 ############ load the null-terminated string to print ############ "pong\n\0" lni 0x00,0x0a,0x67,0x6e,0x6f,0x70 - gtr - push + pcr jmp print jmp setup ############ Respond to 'testing123' with 'we are alive' -n0: lli 0x01 - sp GRA - lb GRC -# "testing123", length 10 - lni 0x33,0x32,0x31,0x67,0x6e,0x69,0x74,0x73,0x65,0x74,10 - gtr - push +# "testing123\n", length 11 +n0: lni 0x0a,0x33,0x32,0x31,0x67,0x6e,0x69,0x74,0x73,0x65,0x74,11 + pcr jmp cmpr_f sop_and ############ If the strings match, print our response, else go handle input @@ -89,33 +94,46 @@ n0: lli 0x01 ############ load the null-terminated string ############ "we are alive\n\0" lni 0x0,0xa,0x65,0x76,0x69,0x6c,0x61,0x20,0x65,0x72,0x61,0x20,0x65,0x77 - gtr - push + pcr jmp print jmp setup ############ Respond to 'foo' with 'bar' -n1: lli 0x01 - sp GRA - lb GRC -# "foo", length 3 - lni 0x6f,0x6f,0x66,3 - gtr - push +# "foo\n", length 4 +n1: lni 0x0a,0x6f,0x6f,0x66,4 + pcr jmp cmpr_f sop_and ############ If the strings match, print our response, else go handle input cmp GRB GRB - jmp setup + jmp n2 ############ load the null-terminated string ############ "bar\n\0" lni 0x0,0xa,0x72,0x61,0x62 - gtr - push + pcr jmp print jmp setup +############ Respond to 'clear' by clearing the TTY +# "clear\n", length 6 +n2: lni 0xa,0x72,0x61,0x65,0x6c,0x63,6 + pcr + jmp cmpr_f + sop_and + cmp GRB GRB + jmp setup + lni 12,252 + pop + sp GRA + pop + sb GRA + jmp setup ######### compare function -cmpr_f: lli 0x0 +cmpr_f: lli 0x01 + sp GRA +######## Get the buffer length + lb GRC + lli 0x0 sp GRA +######## Store the return pointer pop sb GRA li 32 diff --git a/ExamplePrograms/weird_loop_test.tac b/ExamplePrograms/weird_loop_test.tac @@ -9,8 +9,9 @@ start: nop nop nop pcr - mov GRA GRC lli 5 + mov GRA GRC + pop op GRA GRC GRA cin GRA GRB sp GRB diff --git a/INSTRUCTION_SET b/INSTRUCTION_SET @@ -7,7 +7,7 @@ Tiny Instruction Set Computer \ \ \ \ \ \ \ \_____ \ \ \ \ \ \ \ \ \ \ \|____|\ \ \ \ \____ \ \__\ \ \__\ ____\_\ \ \ \_______\ - \|__| \|__| |\_________\ \|_______| v2.1 + \|__| \|__| |\_________\ \|_______| v2.2 \|_________| -----------------------------------------------------------------------<-------- @@ -22,7 +22,7 @@ RAW - memonic - description 01100000 - SOP_LSH ----- SetOp LSH, lshift A by B bits, flag if overflow 01110000 - SOP_RSH ----- SetOp RSH, rshift A by B bits, flag if underflow 10010000 - GOTO ----- Branches unconditionally to address stored in GRA -10100000 - GTR ----- "Get Return" - save return address to GRA +10100000 - PCR ----- Push program counter return address to stack 11110000 - PTRINC ----- Increment pointer by 1 C B A 00 - OR ----- C = A | B C B A 01 - NAND ----- C = A nand B @@ -34,7 +34,7 @@ C B 0010 - CIN ----- C = ++B 10000011 - JMP ----- JMP to address in next program word if flag is false 10010011 - PSH ----- Push GRA to stack 10100011 - POP ----- Pop stack to reg GRA -10110011 - PCR ----- Get current line and save to register GRA +10110011 - PEEK ----- Peek stack to reg GRA 10B 0111 - LB ----- Load word from mem pointer to ARGB GPR 10B 1011 - SB ----- Store contents of ARGB GPR to mem pointer 10B 1111 - SP ----- Set pointer ARGB GPR diff --git a/README.md b/README.md @@ -3,7 +3,7 @@ This is a for-fun implementation of a relatively simple micro-architecture, with an assembler to program the simulated implementation in [Logisim](http://www.cburch.com/logisim/). -![TISC v2.0](Screenshots/tiscv2_1.png) +![TISC v2.2](Screenshots/tiscv2_2.png) ## Want to play with it too? @@ -13,7 +13,7 @@ which processes text input from the keyboard component and echoes the text out to the TTY component. In addition, the program buffers 32 characters and tests the buffer once the user inputs a line feed (enter key) against a target string. -![TISC Example configuration](Screenshots/tiscv2_1_example.png) +![TISC Example configuration](Screenshots/tiscv2_2_example.png) ## Compiling the assembler @@ -32,27 +32,25 @@ program that is ready to load into the Logisim circuit. A successful output will appear like this: - $ tisc ExamplePrograms/fibb_test.tac out + $ tisc ExamplePrograms/fibb_test.tac out Assembling tac file: 'ExamplePrograms/fibb_test.tac' TISC v2.1 ln# [addr]:label <op> <args> - 002 [0x00]:start lli 0 - 003 [0x01]: mov GRA GRB - 005 [0x02]: li 254 - 006 [0x04]: sp GRA - 008 [0x05]: lli 1 - 009 [0x06]: mov GRA GRC - 011 [0x07]:loop sb GRB - 013 [0x08]: sop_xor - 014 [0x09]: op GRB GRC GRC + 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 - 016 [0x0b]: op GRB GRC GRC - 018 [0x0c]: sop_add - 019 [0x0d]: op GRB GRC GRB - 021 [0x0e]: cmp GRB GRC - 022 [0x0f]: jmp loop - 024 [0x11]: sb GRB - 025 [0x12]:end jmp end - Finished assembling tac file: 'ExamplePrograms/fibb_test.tac', program size: 20 bytes + 017 [0x0b]: cmp GRB GRC + 018 [0x0c]: jmp loop + 020 [0x0e]: sb GRB + 021 [0x0f]:end jmp end + Finished assembling tac file: 'ExamplePrograms/fibb_test.tac', program size: 17 bytes + ## Loading a program diff --git a/Screenshots/tiscv2_1.png b/Screenshots/tiscv2_1.png Binary files differ. diff --git a/Screenshots/tiscv2_1_example.png b/Screenshots/tiscv2_1_example.png Binary files differ. diff --git a/Screenshots/tiscv2_2.png b/Screenshots/tiscv2_2.png Binary files differ. diff --git a/Screenshots/tiscv2_2_example.png b/Screenshots/tiscv2_2_example.png Binary files differ. diff --git a/tisc.c b/tisc.c @@ -9,7 +9,7 @@ #define MAX_LINE_LEN 100 #define MAX_INSTYPES 4 #define MAX_PGR_SIZE 0xFF - +#define MAX_LNI_SIZE 17 #define NR 0x0 #define NR_STRING "NIL" #define GR_A 0x1 @@ -359,7 +359,7 @@ int assemble_lni( int return_value = 0; int byte_len = 0; - int bytes[16]; + int bytes[MAX_LNI_SIZE]; char* byte_str = strtok(arg[0], ","); @@ -375,15 +375,11 @@ int assemble_lni( } byte_str = strtok(NULL, ","); - bytes[byte_len] = value; - byte_len++; - - if (byte_len > 16) + if (byte_len < MAX_LNI_SIZE) { - byte_len = 0; - printf("FATAL: byte array has too many elements. length must be <= 16\n"); - break; + bytes[byte_len] = value; } + byte_len++; } if (byte_len <= 1) @@ -391,7 +387,7 @@ int assemble_lni( printf("FATAL: must provide byte array length > 1\n"); } - if (byte_len > 1) + if (byte_len > 1 && byte_len < MAX_LNI_SIZE) { definition->instructionLength = byte_len + 1; @@ -404,6 +400,11 @@ int assemble_lni( return_value = 1; } + else + { + printf("FATAL: byte array has too many elements. length must be <= %i\n", MAX_LNI_SIZE); + printf("FATAL: length = %i\n", byte_len); + } return return_value; } @@ -436,7 +437,7 @@ InstructionDefinition_t definitions[TOT_INSTRUCTIONS] = { "nop", 0, 1, 0x00, assemble_0arg }, { "push", 0, 1, 0x93, assemble_0arg }, { "pop", 0, 1, 0xA3, assemble_0arg }, - { "pcr", 0, 1, 0xB3, assemble_0arg }, + { "peek", 0, 1, 0xB3, assemble_0arg }, { "sop_add", 0, 1, 0x00, assemble_0arg }, { "sop_sub", 0, 1, 0x10, assemble_0arg }, { "sop_and", 0, 1, 0x20, assemble_0arg }, @@ -446,7 +447,7 @@ InstructionDefinition_t definitions[TOT_INSTRUCTIONS] = { "sop_lsh", 0, 1, 0x60, assemble_0arg }, { "sop_rsh", 0, 1, 0x70, assemble_0arg }, { "goto", 0, 1, 0x90, assemble_0arg }, - { "gtr", 0, 1, 0xA0, assemble_0arg }, + { "pcr", 0, 1, 0xA0, assemble_0arg }, { "ptrinc", 0, 1, 0xF0, assemble_0arg }, { "lli", 1, 1, 0x03, assemble_lli }, { "lni", 1, 1, 0x43, assemble_lni },