tisc

tiny instruction set computer
Log | Files | Refs | README

commit 966f517136a2adcb0c1bc8ba7e10a25670a104fb
parent d60510d091863fb28c543e175cf1c6b02e3ca924
Author: Paul Longtine <paul@nanner.co>
Date:   Tue, 21 Jun 2022 02:54:16 -0400

TISCv2.1 Added support for calling/returning from subroutines

Diffstat:
MCPU/CPU.circ | 3333+++++++++++++++++++++++++++++++++++++++++--------------------------------------
MExamplePrograms/README.md | 10+++++++++-
AExamplePrograms/routine_test.tac | 27+++++++++++++++++++++++++++
MExamplePrograms/terminal_test.tac | 144++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------
MExamplePrograms/weird_loop_test.tac | 3++-
MINSTRUCTION_SET | 6++++--
MREADME.md | 10+++++-----
DScreenshots/tiscv2_0.png | 0
DScreenshots/tiscv2_0_example.png | 0
AScreenshots/tiscv2_1.png | 0
AScreenshots/tiscv2_1_example.png | 0
Mtisc.c | 10++++++----
12 files changed, 1908 insertions(+), 1635 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.0</text> + <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="152" y="43">IO ENABLE</text> <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="152" y="85">INPUT</text> <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="153" y="124">ADDRESS</text> @@ -99,6 +99,7 @@ <wire from="(340,40)" to="(340,180)"/> <wire from="(230,150)" to="(230,160)"/> <wire from="(460,340)" to="(510,340)"/> + <wire from="(170,130)" to="(220,130)"/> <wire from="(310,150)" to="(310,160)"/> <wire from="(480,200)" to="(480,220)"/> <wire from="(170,210)" to="(170,230)"/> @@ -114,6 +115,7 @@ <wire from="(220,60)" to="(220,100)"/> <wire from="(320,80)" to="(320,120)"/> <wire from="(180,210)" to="(200,210)"/> + <wire from="(170,130)" to="(170,180)"/> <wire from="(200,120)" to="(200,170)"/> <wire from="(500,300)" to="(510,300)"/> <wire from="(210,110)" to="(290,110)"/> @@ -197,10 +199,39 @@ <wire from="(210,110)" to="(210,230)"/> <wire from="(260,250)" to="(460,250)"/> <wire from="(330,190)" to="(400,190)"/> - <comp loc="(260,130)" name="ALU"/> - <comp lib="6" loc="(290,239)" name="Text"/> - <comp loc="(230,170)" name="ISD"/> - <comp loc="(280,150)" name="GPR"/> + <comp lib="0" loc="(510,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="(400,210)" name="Multiplexer"> + <a name="facing" val="north"/> + <a name="selloc" val="tr"/> + <a name="width" val="8"/> + <a name="enable" val="false"/> + </comp> + <comp lib="0" loc="(290,340)" name="Constant"> + <a name="facing" val="north"/> + </comp> + <comp lib="0" loc="(450,360)" name="Pin"> + <a name="facing" val="west"/> + <a name="width" val="8"/> + <a name="tristate" val="false"/> + <a name="pull" val="down"/> + <a name="label" val="IN"/> + <a name="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="0" loc="(510,320)" name="Pin"> <a name="facing" val="west"/> <a name="tristate" val="false"/> @@ -208,18 +239,35 @@ <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"/> <a name="size" val="30"/> <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"> <a name="facing" val="west"/> <a name="tristate" val="false"/> @@ -227,10 +275,14 @@ <a name="label" val="RST"/> <a name="labelloc" val="east"/> </comp> - <comp lib="0" loc="(510,340)" name="Pin"> + <comp loc="(160,210)" name="PC"/> + <comp lib="0" loc="(450,400)" name="Pin"> <a name="facing" val="west"/> <a name="output" val="true"/> - <a name="label" val="WRITE ACTIVE"/> + <a name="width" val="8"/> + <a name="tristate" val="false"/> + <a name="pull" val="down"/> + <a name="label" val="ADDR"/> <a name="labelloc" val="east"/> </comp> <comp lib="0" loc="(450,380)" name="Pin"> @@ -242,6 +294,7 @@ <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"> <a name="facing" val="west"/> <a name="tristate" val="false"/> @@ -249,57 +302,6 @@ <a name="label" val="CLK"/> <a name="labelloc" val="east"/> </comp> - <comp lib="2" loc="(400,210)" name="Multiplexer"> - <a name="facing" val="north"/> - <a name="selloc" val="tr"/> - <a name="width" val="8"/> - <a name="enable" val="false"/> - </comp> - <comp loc="(200,90)" name="STK"/> - <comp loc="(160,210)" name="PC"/> - <comp lib="2" loc="(170,280)" name="Multiplexer"> - <a name="facing" val="south"/> - <a name="selloc" val="tr"/> - <a name="width" val="8"/> - <a name="enable" val="false"/> - </comp> - <comp lib="1" loc="(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"/> - <a name="width" val="8"/> - <a name="tristate" val="false"/> - <a name="pull" val="down"/> - <a name="label" val="IN"/> - <a name="labelloc" val="east"/> - </comp> - <comp lib="0" loc="(450,400)" name="Pin"> - <a name="facing" val="west"/> - <a name="output" val="true"/> - <a name="width" val="8"/> - <a name="tristate" val="false"/> - <a name="pull" val="down"/> - <a name="label" val="ADDR"/> - <a name="labelloc" val="east"/> - </comp> - <comp lib="4" loc="(380,300)" name="RAM"> - <a name="bus" val="separate"/> - </comp> - <comp lib="0" loc="(290,340)" name="Constant"> - <a name="facing" val="north"/> - </comp> - <comp lib="6" loc="(303,244)" name="Text"> - <a name="text" val="TISCv2.0"/> - <a name="font" val="Dialog plain 14"/> - </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> </circuit> <circuit name="ALU"> <a name="circuit" val="ALU"/> @@ -669,47 +671,47 @@ <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="(390,280)" name="Tunnel"> - <a name="label" val="o2"/> - </comp> - <comp lib="1" loc="(340,370)" name="XNOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(130,750)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a7"/> </comp> - <comp lib="1" loc="(310,420)" name="OR Gate"> - <a name="facing" val="west"/> + <comp lib="1" loc="(250,550)" name="NOR 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="(680,120)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a7"/> </comp> - <comp lib="0" loc="(550,60)" name="Tunnel"> + <comp lib="0" loc="(680,90)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b1"/> + <a name="label" val="a4"/> </comp> - <comp lib="1" loc="(190,130)" 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="3" loc="(930,160)" name="Shifter"> - <a name="shift" val="lr"/> + <comp lib="0" loc="(130,180)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b1"/> </comp> - <comp lib="1" loc="(340,100)" name="XNOR Gate"> + <comp lib="1" loc="(190,220)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(300,180)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="4" loc="(670,550)" name="ROM"> + <a name="addrWidth" val="4"/> + <a name="dataWidth" val="7"/> + <a name="contents">addr/data: 4 7 +3 7 9 a 6 4 30 50 +</a> </comp> - <comp lib="1" loc="(300,690)" name="AND Gate"> + <comp lib="1" loc="(330,130)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(250,730)" name="NOR Gate"> + <comp lib="1" loc="(240,760)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> @@ -718,780 +720,780 @@ <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(330,760)" name="AND Gate"> + <comp lib="0" loc="(390,100)" name="Tunnel"> + <a name="label" val="o0"/> + </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"/> - <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(300,630)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="1" loc="(310,510)" name="OR Gate"> + <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(330,130)" name="AND Gate"> + <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"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="6" loc="(472,443)" name="Text"> - <a name="text" val="ALU STATE"/> + <comp lib="0" loc="(670,260)" name="Tunnel"> + <a name="label" val="o2"/> </comp> - <comp lib="0" loc="(790,380)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="FC"/> + <comp lib="0" loc="(730,400)" name="Splitter"> + <a name="facing" val="north"/> + <a name="fanout" val="6"/> + <a name="incoming" val="6"/> + <a name="appear" val="right"/> </comp> - <comp lib="1" loc="(250,640)" name="NOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(130,570)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a5"/> </comp> - <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 lib="0" loc="(130,540)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b5"/> </comp> - <comp lib="0" loc="(760,380)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="OR"/> + <comp lib="0" loc="(810,200)" name="Splitter"> + <a name="fanout" val="8"/> + <a name="incoming" val="8"/> </comp> - <comp lib="1" loc="(190,580)" name="XOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(390,370)" name="Tunnel"> + <a name="label" val="o3"/> </comp> - <comp lib="0" loc="(550,50)" name="Tunnel"> + <comp lib="0" loc="(130,480)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b0"/> + <a name="label" val="a4"/> </comp> - <comp lib="1" loc="(300,720)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="1" loc="(250,460)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(710,470)" name="Splitter"> - <a name="facing" val="west"/> - <a name="fanout" val="3"/> - <a name="incoming" val="3"/> + <comp lib="6" loc="(481,532)" name="Text"> + <a name="text" val="DYN OP"/> </comp> - <comp lib="1" loc="(190,490)" name="XOR Gate"> + <comp lib="1" loc="(250,280)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="3" loc="(1060,80)" name="Comparator"> - <a name="width" val="4"/> - </comp> - <comp lib="6" loc="(880,461)" name="Text"> - <a name="text" val="OPCODES: 000: OR, 001: AND, 010: XOR, 011: ADD, 100: CIN, 101: NAND, 110: XNOR, 111: SUB"/> + <comp lib="0" loc="(550,80)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b3"/> </comp> - <comp lib="1" loc="(190,670)" name="XOR Gate"> + <comp lib="1" loc="(190,490)" name="XOR 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="(130,300)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a2"/> - </comp> - <comp lib="1" loc="(340,190)" name="XNOR 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"/> </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> - <comp lib="1" loc="(300,600)" name="AND Gate"> + <comp lib="1" loc="(270,500)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(190,550)" name="XOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <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="(310,690)" name="OR Gate"> - <a name="facing" val="west"/> + <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="4" loc="(670,550)" name="ROM"> - <a name="addrWidth" val="4"/> - <a name="dataWidth" val="7"/> - <a name="contents">addr/data: 4 7 -3 7 9 a 6 4 30 50 -</a> - </comp> - <comp lib="0" loc="(130,210)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a1"/> - </comp> - <comp lib="0" loc="(850,150)" name="Splitter"> - <a name="facing" val="west"/> - <a name="fanout" val="3"/> - <a name="incoming" val="3"/> - <a name="appear" val="right"/> - </comp> - <comp lib="6" loc="(736,75)" name="Text"> - <a name="text" val="Input A"/> + <comp lib="0" loc="(390,280)" name="Tunnel"> + <a name="label" val="o2"/> </comp> - <comp lib="1" loc="(190,100)" name="XOR Gate"> + <comp lib="1" loc="(250,190)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(130,720)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b7"/> + <comp lib="0" loc="(500,550)" name="Pin"> + <a name="width" val="4"/> + <a name="tristate" val="false"/> </comp> - <comp lib="1" loc="(190,370)" name="XOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="3" loc="(930,160)" name="Shifter"> + <a name="shift" val="lr"/> </comp> - <comp lib="0" loc="(340,70)" name="Tunnel"> + <comp lib="1" loc="(300,450)" name="OR Gate"> <a name="facing" val="south"/> - <a name="label" val="FC"/> - </comp> - <comp lib="1" loc="(270,770)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - <a name="negate1" val="true"/> - </comp> - <comp lib="0" loc="(640,440)" name="Constant"/> - <comp lib="0" loc="(710,520)" name="Splitter"> - <a name="facing" val="west"/> - <a name="appear" val="center"/> - </comp> - <comp lib="1" loc="(190,280)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(240,130)" name="AND 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="(550,120)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b7"/> - </comp> - <comp lib="0" loc="(710,320)" name="Splitter"> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> - </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,360)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="3" loc="(1000,90)" name="BitAdder"/> - <comp lib="1" loc="(270,140)" name="AND Gate"> + <comp lib="1" loc="(300,420)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(190,190)" name="XOR Gate"> + <comp lib="1" loc="(340,460)" name="XNOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(390,460)" name="Tunnel"> - <a name="label" val="o4"/> + <comp lib="2" loc="(820,90)" name="Multiplexer"> + <a name="width" val="8"/> + <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(390,640)" name="Tunnel"> - <a name="label" val="o6"/> + <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="(300,810)" name="OR Gate"> + <comp lib="0" loc="(220,70)" name="Tunnel"> <a name="facing" val="south"/> + <a name="label" val="OR"/> + </comp> + <comp lib="1" loc="(280,200)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(130,630)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b6"/> - </comp> - <comp lib="0" loc="(670,270)" name="Tunnel"> - <a name="label" val="o3"/> + <comp lib="0" loc="(340,70)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="FC"/> </comp> - <comp lib="0" loc="(130,660)" name="Tunnel"> + <comp lib="0" loc="(130,390)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a6"/> - </comp> - <comp lib="0" loc="(390,190)" name="Tunnel"> - <a name="label" val="o1"/> + <a name="label" val="a3"/> </comp> - <comp lib="1" loc="(190,640)" name="XOR Gate"> + <comp lib="1" loc="(300,600)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(130,570)" name="Tunnel"> + <comp lib="0" loc="(770,200)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a5"/> - </comp> - <comp lib="1" loc="(310,330)" name="OR Gate"> - <a name="facing" val="west"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="width" val="8"/> + <a name="label" val="B"/> </comp> - <comp lib="0" loc="(130,90)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b0"/> + <comp lib="0" loc="(330,850)" name="Constant"> + <a name="facing" val="south"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(680,60)" name="Tunnel"> + <comp lib="0" loc="(550,110)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a1"/> + <a name="label" val="b6"/> </comp> - <comp lib="1" loc="(280,110)" name="OR Gate"> + <comp lib="1" loc="(280,740)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(190,460)" name="XOR Gate"> + <comp lib="1" loc="(340,280)" name="XNOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(130,180)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b1"/> + <comp lib="0" loc="(260,70)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="CC"/> </comp> - <comp lib="1" loc="(300,150)" name="AND Gate"> + <comp lib="1" loc="(250,640)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(270,230)" name="AND Gate"> + <comp lib="1" loc="(240,670)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> - </comp> - <comp lib="0" loc="(130,540)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b5"/> </comp> - <comp lib="0" loc="(670,310)" name="Tunnel"> - <a name="label" val="o7"/> + <comp lib="1" loc="(190,760)" name="XOR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="2" loc="(320,890)" name="Multiplexer"> - <a name="facing" val="south"/> - <a name="selloc" val="tr"/> - <a name="select" val="2"/> + <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="(340,550)" name="XNOR Gate"> + <comp lib="1" loc="(270,770)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> <comp lib="1" loc="(240,220)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(780,180)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="0" loc="(670,550)" name="Splitter"> - <a name="fanout" val="7"/> - <a name="incoming" val="7"/> - </comp> - <comp lib="0" loc="(650,320)" name="Splitter"> + <comp lib="0" loc="(710,320)" name="Splitter"> <a name="fanout" val="8"/> <a name="incoming" val="8"/> </comp> - <comp lib="1" loc="(280,560)" name="OR Gate"> + <comp lib="1" loc="(190,580)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(490,460)" name="Pin"> - <a name="tristate" val="false"/> - </comp> - <comp lib="1" loc="(280,470)" name="OR Gate"> + <comp lib="1" loc="(310,240)" name="OR Gate"> + <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(340,280)" name="XNOR Gate"> + <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"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(330,670)" name="AND Gate"> + <comp lib="6" loc="(355,906)" name="Text"> + <a name="text" val="FLAG"/> + </comp> + <comp lib="1" loc="(190,670)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(130,480)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a4"/> + <comp lib="0" loc="(390,550)" name="Tunnel"> + <a name="label" val="o5"/> </comp> - <comp lib="0" loc="(680,80)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a3"/> + <comp lib="0" loc="(700,40)" name="Pin"> + <a name="facing" val="west"/> + <a name="width" val="8"/> + <a name="tristate" val="false"/> </comp> - <comp lib="1" loc="(190,400)" name="XOR Gate"> + <comp lib="1" loc="(190,460)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(670,300)" name="Tunnel"> - <a name="label" val="o6"/> - </comp> - <comp lib="1" loc="(340,640)" name="XNOR 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="(190,760)" name="XOR Gate"> + <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> + <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 lib="0" loc="(130,300)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a2"/> </comp> - <comp lib="0" loc="(300,70)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="CI"/> + <comp lib="0" loc="(670,290)" name="Tunnel"> + <a name="label" val="o5"/> </comp> - <comp lib="1" loc="(280,200)" name="OR Gate"> + <comp lib="1" loc="(250,370)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(130,270)" name="Tunnel"> + <comp lib="6" loc="(602,74)" name="Text"> + <a name="text" val="Input B"/> + </comp> + <comp lib="0" loc="(680,60)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b2"/> + <a name="label" val="a1"/> </comp> - <comp lib="1" loc="(300,450)" name="OR Gate"> - <a name="facing" val="south"/> + <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,420)" name="AND Gate"> + <comp lib="1" loc="(190,310)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> - </comp> - <comp lib="2" loc="(570,400)" name="Multiplexer"> - <a name="width" val="3"/> - <a name="enable" val="false"/> + </comp> + <comp lib="1" loc="(300,180)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="0" loc="(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="(700,40)" name="Pin"> - <a name="facing" val="west"/> + <comp lib="0" loc="(790,80)" name="Constant"> <a name="width" val="8"/> - <a name="tristate" val="false"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(550,80)" name="Tunnel"> + <comp lib="0" loc="(130,630)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b3"/> - </comp> - <comp lib="1" loc="(300,270)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="label" val="b6"/> </comp> - <comp lib="1" loc="(190,220)" name="XOR Gate"> + <comp lib="1" loc="(340,730)" name="XNOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(390,730)" name="Tunnel"> - <a name="label" val="o7"/> - </comp> - <comp lib="0" loc="(570,40)" name="Splitter"> - <a name="facing" val="west"/> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> - </comp> - <comp lib="1" loc="(280,380)" name="OR Gate"> + <comp lib="1" loc="(190,280)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(670,290)" name="Tunnel"> - <a name="label" val="o5"/> - </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="0" loc="(680,80)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a3"/> </comp> - <comp lib="1" loc="(270,590)" name="AND Gate"> + <comp lib="1" loc="(330,490)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(500,550)" name="Pin"> - <a name="width" val="4"/> + <comp lib="0" loc="(490,460)" name="Pin"> <a name="tristate" val="false"/> </comp> - <comp lib="0" loc="(140,70)" name="Tunnel"> + <comp lib="0" loc="(300,70)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="CI"/> + </comp> + <comp lib="0" loc="(740,380)" name="Tunnel"> <a name="facing" val="south"/> <a name="label" val="!A"/> </comp> - <comp lib="6" loc="(481,532)" name="Text"> - <a name="text" val="DYN OP"/> + <comp lib="0" loc="(750,380)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="!B"/> </comp> - <comp lib="1" loc="(250,100)" name="NOR Gate"> + <comp lib="0" loc="(780,100)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="width" val="8"/> + <a name="label" val="A"/> + </comp> + <comp lib="0" loc="(680,50)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a0"/> + </comp> + <comp lib="1" loc="(190,550)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="2" loc="(1010,210)" name="Multiplexer"> + <comp lib="0" loc="(390,460)" name="Tunnel"> + <a name="label" val="o4"/> + </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"> <a name="facing" val="south"/> - <a name="width" val="8"/> + <a name="selloc" val="tr"/> + <a name="select" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(750,490)" name="OR Gate"> - <a name="facing" val="north"/> + <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,740)" name="OR Gate"> + <comp lib="1" loc="(280,110)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(190,730)" name="XOR Gate"> + <comp lib="1" loc="(340,550)" name="XNOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(240,670)" name="AND Gate"> + <comp lib="1" loc="(280,380)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="3" loc="(930,70)" name="BitAdder"/> - <comp lib="0" loc="(130,450)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b4"/> - </comp> - <comp lib="0" loc="(680,50)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a0"/> + <comp 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="1" loc="(310,510)" name="OR Gate"> - <a name="facing" val="west"/> + <comp lib="1" loc="(280,650)" name="OR 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="(190,400)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(330,400)" name="AND Gate"> + <comp lib="1" loc="(310,690)" name="OR Gate"> + <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(680,100)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a5"/> + <comp lib="6" loc="(472,443)" name="Text"> + <a name="text" val="ALU STATE"/> </comp> - <comp lib="0" loc="(550,20)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="width" val="8"/> - <a name="label" val="B"/> + <comp lib="0" loc="(670,240)" name="Tunnel"> + <a name="label" val="o0"/> </comp> - <comp lib="1" loc="(240,310)" name="AND Gate"> + <comp lib="1" loc="(280,560)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(240,490)" name="AND Gate"> + <comp lib="1" loc="(310,150)" name="OR Gate"> + <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(330,220)" name="AND Gate"> + <comp lib="0" loc="(570,40)" name="Splitter"> + <a name="facing" val="west"/> + <a name="fanout" val="8"/> + <a name="incoming" val="8"/> + </comp> + <comp lib="1" loc="(340,370)" name="XNOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(270,500)" name="AND Gate"> + <comp lib="1" loc="(190,130)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(740,380)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="!A"/> + <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="(250,280)" name="NOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(670,250)" name="Tunnel"> + <a name="label" val="o1"/> </comp> - <comp lib="0" loc="(340,850)" name="Constant"> - <a name="facing" val="south"/> - <a name="value" val="0x0"/> + <comp lib="0" loc="(550,70)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b2"/> </comp> - <comp lib="0" loc="(260,70)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="CC"/> + <comp lib="0" loc="(390,640)" name="Tunnel"> + <a name="label" val="o6"/> </comp> - <comp lib="1" loc="(250,190)" name="NOR Gate"> + <comp lib="1" loc="(340,640)" name="XNOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(810,200)" name="Splitter"> - <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="b3"/> + <comp lib="0" loc="(390,190)" name="Tunnel"> + <a name="label" val="o1"/> </comp> - <comp lib="0" loc="(220,70)" name="Tunnel"> + <comp lib="2" loc="(1010,210)" name="Multiplexer"> <a name="facing" val="south"/> - <a name="label" val="OR"/> + <a name="width" val="8"/> + <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(280,290)" name="OR 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="1" loc="(330,490)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - <a name="negate1" val="true"/> + <comp lib="1" loc="(830,280)" name="OR Gate"> + <a name="size" val="70"/> + <a name="inputs" val="8"/> </comp> - <comp lib="6" loc="(355,906)" name="Text"> - <a name="text" val="FLAG"/> + <comp lib="0" loc="(780,180)" name="Constant"> + <a name="width" val="8"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(670,250)" name="Tunnel"> - <a name="label" val="o1"/> + <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"> <a name="facing" val="west"/> <a name="fanout" val="8"/> <a name="incoming" val="8"/> </comp> - <comp lib="1" loc="(300,330)" name="AND Gate"> + <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="0" loc="(670,270)" name="Tunnel"> + <a name="label" val="o3"/> + </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="(250,550)" name="NOR Gate"> + <comp lib="1" loc="(330,760)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(780,380)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="CI"/> - </comp> - <comp lib="0" loc="(680,70)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a2"/> - </comp> - <comp lib="0" loc="(770,200)" name="Tunnel"> + <comp lib="3" loc="(1000,90)" name="BitAdder"/> + <comp lib="0" loc="(130,450)" name="Tunnel"> <a name="facing" val="east"/> - <a name="width" val="8"/> - <a name="label" val="B"/> + <a name="label" val="b4"/> </comp> - <comp lib="1" loc="(300,540)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="1" loc="(240,130)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="3" loc="(930,110)" name="Shifter"/> - <comp lib="1" loc="(560,300)" name="AND Gate"> - <a name="facing" val="north"/> + <comp lib="1" loc="(190,370)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(330,310)" name="AND Gate"> + <comp lib="1" loc="(300,780)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(550,100)" name="Tunnel"> + <comp lib="0" loc="(130,210)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b5"/> + <a name="label" val="a1"/> </comp> - <comp lib="0" loc="(390,370)" name="Tunnel"> - <a name="label" val="o3"/> + <comp lib="2" loc="(810,190)" name="Multiplexer"> + <a name="width" val="8"/> + <a name="enable" val="false"/> </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 lib="6" loc="(736,75)" name="Text"> + <a name="text" val="Input A"/> </comp> - <comp lib="0" loc="(770,380)" name="Tunnel"> + <comp lib="0" loc="(760,380)" name="Tunnel"> <a name="facing" val="south"/> - <a name="label" val="CC"/> + <a name="label" val="OR"/> </comp> - <comp lib="1" loc="(240,580)" 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="0" loc="(670,260)" name="Tunnel"> - <a name="label" val="o2"/> + <comp lib="1" loc="(330,670)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(680,90)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a4"/> + <comp lib="0" loc="(670,280)" name="Tunnel"> + <a name="label" val="o4"/> </comp> - <comp lib="0" loc="(390,100)" name="Tunnel"> - <a name="label" val="o0"/> + <comp lib="0" loc="(130,120)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a0"/> </comp> - <comp lib="0" loc="(130,750)" name="Tunnel"> + <comp lib="0" loc="(550,90)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a7"/> + <a name="label" val="b4"/> </comp> - <comp lib="1" loc="(340,460)" name="XNOR Gate"> + <comp lib="1" loc="(280,470)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(270,320)" name="AND Gate"> + <comp lib="1" loc="(300,810)" name="OR Gate"> + <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> - <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="1" loc="(310,150)" name="OR Gate"> + <comp lib="1" loc="(310,330)" name="OR Gate"> <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(550,110)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b6"/> - </comp> - <comp lib="0" loc="(320,890)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> - <a name="tristate" val="false"/> - <a name="labelloc" val="east"/> + <comp lib="6" loc="(617,355)" name="Text"> + <a name="text" val="Opcodes"/> </comp> - <comp lib="0" loc="(550,70)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b2"/> + <comp lib="1" loc="(240,580)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(340,730)" name="XNOR Gate"> + <comp lib="1" loc="(340,100)" name="XNOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="2" loc="(810,190)" name="Multiplexer"> - <a name="width" val="8"/> - <a name="enable" val="false"/> + <comp lib="1" loc="(240,310)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(130,120)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a0"/> + <comp lib="1" loc="(250,730)" name="NOR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(310,240)" name="OR Gate"> + <comp lib="0" loc="(570,40)" name="Pin"> <a name="facing" val="west"/> + <a name="width" val="8"/> + <a name="tristate" val="false"/> + </comp> + <comp lib="1" loc="(240,490)" name="AND Gate"> <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="1" loc="(340,190)" name="XNOR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(670,240)" name="Tunnel"> - <a name="label" val="o0"/> + <comp lib="0" loc="(790,380)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="FC"/> </comp> - <comp lib="1" loc="(270,410)" name="AND Gate"> + <comp lib="1" loc="(270,230)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(530,280)" name="Pin"> - <a name="output" val="true"/> - <a name="width" val="8"/> - <a name="labelloc" val="east"/> - </comp> - <comp lib="6" loc="(498,373)" name="Text"> - <a name="text" val="STATIC OPCODE"/> + <comp lib="1" loc="(250,100)" name="NOR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </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 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="4" loc="(730,400)" name="ROM"> - <a name="addrWidth" val="3"/> - <a name="dataWidth" val="6"/> - <a name="contents">addr/data: 3 6 -8 3b 4 0 2 38 7 12 -</a> + <comp lib="0" loc="(130,360)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b3"/> </comp> - <comp lib="1" loc="(300,780)" 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"/> </comp> - <comp lib="0" loc="(680,20)" name="Tunnel"> + <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> + <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="(550,20)" name="Tunnel"> <a name="facing" val="east"/> <a name="width" val="8"/> - <a name="label" val="A"/> + <a name="label" val="B"/> </comp> - <comp lib="0" loc="(750,380)" name="Tunnel"> + <comp lib="1" loc="(300,270)" name="OR Gate"> <a name="facing" val="south"/> - <a name="label" val="!B"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(300,510)" name="AND Gate"> + <comp lib="0" loc="(550,60)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b1"/> + </comp> + <comp lib="0" loc="(680,70)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a2"/> + </comp> + <comp lib="6" loc="(880,461)" name="Text"> + <a name="text" val="OPCODES: 000: OR, 001: AND, 010: XOR, 011: ADD, 100: CIN, 101: NAND, 110: XNOR, 111: SUB"/> + </comp> + <comp lib="1" loc="(190,190)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(250,460)" name="NOR Gate"> + <comp lib="1" loc="(300,360)" name="OR Gate"> + <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(780,100)" name="Tunnel"> + <comp lib="0" loc="(140,70)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="!A"/> + </comp> + <comp lib="0" loc="(550,100)" name="Tunnel"> <a name="facing" val="east"/> - <a name="width" val="8"/> - <a name="label" val="A"/> + <a name="label" val="b5"/> </comp> - <comp lib="0" loc="(390,550)" name="Tunnel"> - <a name="label" val="o5"/> + <comp lib="0" loc="(130,720)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b7"/> </comp> - <comp lib="2" loc="(540,280)" name="Multiplexer"> + <comp lib="0" loc="(710,520)" name="Splitter"> <a name="facing" val="west"/> - <a name="width" val="8"/> - <a name="enable" val="false"/> + <a name="appear" val="center"/> </comp> - <comp lib="1" loc="(250,370)" 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="(550,90)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b4"/> + <comp lib="0" loc="(340,850)" name="Constant"> + <a name="facing" val="south"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(510,390)" name="Pin"> - <a name="width" val="3"/> - <a name="tristate" val="false"/> + <comp lib="1" loc="(750,490)" name="OR Gate"> + <a name="facing" val="north"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(130,390)" name="Tunnel"> + <comp lib="0" loc="(680,100)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a3"/> + <a name="label" val="a5"/> </comp> - <comp lib="0" loc="(790,80)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0x0"/> + <comp lib="4" loc="(730,400)" name="ROM"> + <a name="addrWidth" val="3"/> + <a name="dataWidth" val="6"/> + <a name="contents">addr/data: 3 6 +8 3b 4 0 2 38 7 12 +</a> </comp> - <comp lib="1" loc="(330,580)" name="AND Gate"> + <comp lib="0" loc="(650,320)" name="Splitter"> + <a name="fanout" val="8"/> + <a name="incoming" val="8"/> + </comp> + <comp lib="1" loc="(270,410)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="2" loc="(820,90)" name="Multiplexer"> - <a name="width" val="8"/> - <a name="enable" val="false"/> + <comp lib="6" loc="(498,373)" name="Text"> + <a name="text" val="STATIC OPCODE"/> </comp> - <comp lib="1" loc="(280,650)" name="OR Gate"> + <comp lib="0" loc="(780,380)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="CI"/> + </comp> + <comp lib="1" loc="(330,220)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="6" loc="(602,74)" name="Text"> - <a name="text" val="Input B"/> + <comp lib="0" loc="(130,660)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a6"/> </comp> - <comp lib="1" loc="(190,310)" name="XOR Gate"> + <comp lib="2" loc="(570,400)" name="Multiplexer"> + <a name="width" val="3"/> + <a name="enable" val="false"/> + </comp> + <comp lib="0" loc="(390,730)" name="Tunnel"> + <a name="label" val="o7"/> + </comp> + <comp lib="1" loc="(190,640)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(240,760)" name="AND Gate"> + <comp lib="0" loc="(130,90)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b0"/> + </comp> + <comp lib="0" loc="(670,300)" name="Tunnel"> + <a name="label" val="o6"/> + </comp> + <comp lib="1" loc="(270,680)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(570,40)" name="Pin"> - <a name="facing" val="west"/> - <a name="width" val="8"/> - <a name="tristate" val="false"/> + <comp lib="1" loc="(300,540)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> </circuit> <circuit name="GPR"> @@ -1591,42 +1593,42 @@ <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="(250,120)" name="Pin"> - <a name="facing" val="south"/> + <comp lib="0" loc="(130,200)" name="Pin"> <a name="tristate" val="false"/> </comp> - <comp lib="0" loc="(310,260)" name="Constant"> + <comp lib="0" loc="(250,340)" name="Pin"> <a name="facing" val="west"/> - <a name="width" val="8"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="4" loc="(270,170)" name="Register"/> - <comp lib="0" loc="(140,130)" name="Pin"> - <a name="width" val="8"/> - <a name="tristate" val="false"/> - <a name="label" val="Input"/> - </comp> - <comp lib="0" loc="(350,280)" name="Pin"> - <a name="facing" val="north"/> + <a name="width" val="2"/> <a name="tristate" val="false"/> - <a name="label" val="Forward Input A"/> + <a name="label" val="Read B"/> <a name="labelloc" val="east"/> </comp> - <comp lib="1" loc="(230,260)" name="Controlled Buffer"> + <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"> <a name="facing" val="south"/> <a name="width" val="8"/> </comp> - <comp lib="0" loc="(130,200)" name="Pin"> + <comp lib="0" loc="(130,80)" name="Pin"> + <a name="width" val="2"/> <a name="tristate" val="false"/> + <a name="label" val="Write"/> </comp> <comp lib="1" loc="(190,260)" name="Controlled Buffer"> <a name="facing" val="south"/> <a name="width" val="8"/> </comp> - <comp lib="0" loc="(140,340)" name="Pin"> - <a name="width" val="2"/> - <a name="tristate" val="false"/> - <a name="label" val="Read A"/> + <comp 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"/> @@ -1634,75 +1636,75 @@ <a name="select" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(250,230)" name="Controlled Buffer"> - <a name="facing" val="south"/> + <comp lib="0" loc="(310,260)" name="Constant"> + <a name="facing" val="west"/> <a name="width" val="8"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(250,340)" name="Pin"> - <a name="facing" val="west"/> - <a name="width" val="2"/> + <comp lib="0" loc="(250,120)" name="Pin"> + <a name="facing" val="south"/> <a name="tristate" val="false"/> - <a name="label" val="Read B"/> - <a name="labelloc" val="east"/> </comp> - <comp lib="1" loc="(270,260)" name="Controlled Buffer"> - <a name="facing" val="south"/> + <comp lib="0" loc="(140,130)" name="Pin"> <a name="width" val="8"/> + <a name="tristate" val="false"/> + <a name="label" val="Input"/> </comp> <comp lib="1" loc="(290,260)" 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="width" val="8"/> - </comp> - <comp lib="1" loc="(290,230)" name="Controlled Buffer"> - <a name="facing" val="west"/> - <a name="width" val="8"/> - <a name="control" val="left"/> + <comp lib="0" loc="(350,280)" name="Pin"> + <a name="facing" val="north"/> + <a name="tristate" val="false"/> + <a name="label" val="Forward Input A"/> + <a name="labelloc" val="east"/> </comp> - <comp lib="0" loc="(140,260)" name="Pin"> - <a name="output" val="true"/> - <a name="width" val="8"/> - <a name="label" val="Read B"/> + <comp lib="2" loc="(150,340)" name="Decoder"> + <a name="facing" val="north"/> + <a name="select" val="2"/> + <a name="enable" val="false"/> </comp> <comp lib="0" loc="(370,220)" name="Constant"> <a name="facing" val="west"/> <a name="width" val="8"/> <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(210,230)" name="Controlled Buffer"> + <comp lib="1" loc="(170,230)" name="Controlled Buffer"> <a name="facing" val="south"/> <a name="width" val="8"/> </comp> - <comp lib="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="(230,170)" name="Register"/> - <comp lib="2" loc="(150,340)" name="Decoder"> - <a name="facing" val="north"/> + <comp lib="2" loc="(160,80)" name="Decoder"> + <a name="facing" val="south"/> <a name="select" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(130,80)" name="Pin"> + <comp lib="0" loc="(140,340)" name="Pin"> <a name="width" val="2"/> <a name="tristate" val="false"/> - <a name="label" val="Write"/> + <a name="label" val="Read A"/> </comp> + <comp lib="4" loc="(230,170)" name="Register"/> <comp lib="0" loc="(140,230)" name="Pin"> <a name="output" val="true"/> <a name="width" val="8"/> <a name="label" val="Read A"/> </comp> - <comp lib="2" loc="(160,80)" name="Decoder"> + <comp lib="1" loc="(270,260)" name="Controlled Buffer"> <a name="facing" val="south"/> - <a name="select" val="2"/> + <a name="width" val="8"/> + </comp> + <comp lib="1" loc="(210,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"/> @@ -1716,7 +1718,7 @@ <circ-port height="8" pin="50,150" width="8" x="66" y="106"/> <circ-port height="8" pin="50,250" width="8" x="146" y="96"/> <circ-port height="10" pin="440,1620" width="10" x="65" y="45"/> - <circ-port height="10" pin="620,1610" width="10" x="85" y="45"/> + <circ-port height="10" pin="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"/> @@ -1724,13 +1726,13 @@ <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="1160,1190" width="10" x="75" y="105"/> - <circ-port height="10" pin="780,1880" width="10" x="45" y="75"/> + <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="530,1690" width="10" x="145" y="65"/> - <circ-port height="10" pin="1190,1480" width="10" x="75" y="45"/> + <circ-port height="10" pin="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="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"/> @@ -1739,16 +1741,14 @@ </appear> <wire from="(610,600)" to="(610,930)"/> <wire from="(190,580)" to="(250,580)"/> - <wire from="(1090,1500)" to="(1130,1500)"/> - <wire from="(720,1370)" to="(1040,1370)"/> <wire from="(450,1140)" to="(450,1600)"/> <wire from="(470,470)" to="(470,480)"/> <wire from="(170,960)" to="(280,960)"/> <wire from="(210,1360)" to="(210,1440)"/> <wire from="(830,920)" to="(870,920)"/> <wire from="(830,830)" to="(830,850)"/> - <wire from="(170,1320)" to="(170,1410)"/> <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)"/> @@ -1757,27 +1757,28 @@ <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="(1090,1530)" to="(1100,1530)"/> + <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="(450,60)" to="(450,300)"/> <wire from="(530,1750)" to="(660,1750)"/> <wire from="(650,60)" to="(650,570)"/> <wire from="(920,1240)" to="(920,1290)"/> <wire from="(840,520)" to="(840,570)"/> - <wire from="(960,820)" to="(1040,820)"/> <wire from="(880,880)" to="(880,930)"/> <wire from="(510,1100)" to="(630,1100)"/> <wire from="(510,1280)" to="(510,1290)"/> <wire from="(610,1050)" to="(610,1380)"/> <wire from="(1080,890)" to="(1080,910)"/> - <wire from="(910,1680)" to="(910,1690)"/> <wire from="(890,60)" to="(890,70)"/> <wire from="(210,730)" to="(270,730)"/> - <wire from="(1180,1500)" to="(1180,1590)"/> <wire from="(1220,710)" to="(1220,740)"/> <wire from="(230,440)" to="(280,440)"/> <wire from="(170,1410)" to="(280,1410)"/> @@ -1788,8 +1789,9 @@ <wire from="(200,840)" to="(200,930)"/> <wire from="(220,540)" to="(220,630)"/> <wire from="(240,880)" to="(240,970)"/> + <wire from="(1040,1610)" to="(1050,1610)"/> + <wire from="(1130,1700)" to="(1140,1700)"/> <wire from="(510,1190)" to="(670,1190)"/> - <wire from="(340,1750)" to="(340,1790)"/> <wire from="(1090,680)" to="(1120,680)"/> <wire from="(570,60)" to="(570,120)"/> <wire from="(690,1140)" to="(690,1200)"/> @@ -1799,11 +1801,11 @@ <wire from="(880,1330)" to="(880,1380)"/> <wire from="(930,870)" to="(930,880)"/> <wire from="(1080,700)" to="(1080,720)"/> - <wire from="(990,840)" to="(990,1680)"/> <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="(820,800)" to="(1110,800)"/> + <wire from="(1000,1780)" to="(1190,1780)"/> <wire from="(200,1290)" to="(200,1380)"/> <wire from="(180,950)" to="(180,1040)"/> <wire from="(220,990)" to="(220,1080)"/> @@ -1814,23 +1816,19 @@ <wire from="(850,1110)" to="(850,1150)"/> <wire from="(940,1520)" to="(940,1560)"/> <wire from="(1380,680)" to="(1380,730)"/> - <wire from="(1030,1540)" to="(1030,1790)"/> <wire from="(440,1140)" to="(450,1140)"/> <wire from="(920,340)" to="(930,340)"/> <wire from="(100,250)" to="(100,1780)"/> <wire from="(880,300)" to="(890,300)"/> - <wire from="(970,560)" to="(970,1570)"/> <wire from="(260,1670)" to="(330,1670)"/> <wire from="(800,1700)" to="(800,1750)"/> <wire from="(640,60)" to="(650,60)"/> <wire from="(930,1380)" to="(930,1520)"/> <wire from="(890,960)" to="(890,970)"/> <wire from="(850,600)" to="(850,610)"/> - <wire from="(340,1790)" to="(1030,1790)"/> <wire from="(190,1540)" to="(190,1550)"/> <wire from="(230,1340)" to="(280,1340)"/> <wire from="(150,1580)" to="(200,1580)"/> - <wire from="(1010,640)" to="(1200,640)"/> <wire from="(830,670)" to="(870,670)"/> <wire from="(1200,630)" to="(1200,640)"/> <wire from="(190,130)" to="(190,220)"/> @@ -1840,10 +1838,9 @@ <wire from="(1310,740)" to="(1310,750)"/> <wire from="(870,1690)" to="(890,1690)"/> <wire from="(220,1350)" to="(250,1350)"/> - <wire from="(800,780)" to="(960,780)"/> <wire from="(170,420)" to="(250,420)"/> <wire from="(190,760)" to="(270,760)"/> - <wire from="(290,1760)" to="(300,1760)"/> + <wire from="(1110,1600)" to="(1140,1600)"/> <wire from="(920,790)" to="(930,790)"/> <wire from="(920,1110)" to="(930,1110)"/> <wire from="(690,1720)" to="(690,1770)"/> @@ -1851,14 +1848,11 @@ <wire from="(840,390)" to="(850,390)"/> <wire from="(880,430)" to="(890,430)"/> <wire from="(180,1400)" to="(180,1520)"/> - <wire from="(880,750)" to="(890,750)"/> - <wire from="(520,1670)" to="(530,1670)"/> <wire from="(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="(440,1680)" to="(490,1680)"/> <wire from="(530,1750)" to="(530,1880)"/> <wire from="(200,480)" to="(250,480)"/> <wire from="(220,180)" to="(270,180)"/> @@ -1871,10 +1865,7 @@ <wire from="(1130,620)" to="(1130,820)"/> <wire from="(940,820)" to="(940,840)"/> <wire from="(530,150)" to="(530,300)"/> - <wire from="(510,1280)" to="(980,1280)"/> <wire from="(1260,940)" to="(1270,940)"/> - <wire from="(1030,1350)" to="(1040,1350)"/> - <wire from="(1010,1590)" to="(1010,1780)"/> <wire from="(670,1700)" to="(670,1820)"/> <wire from="(920,1240)" to="(930,1240)"/> <wire from="(330,920)" to="(590,920)"/> @@ -1892,8 +1883,8 @@ <wire from="(800,1380)" to="(800,1580)"/> <wire from="(220,1260)" to="(280,1260)"/> <wire from="(330,1190)" to="(510,1190)"/> - <wire from="(1090,1510)" to="(1130,1510)"/> <wire from="(590,1010)" to="(630,1010)"/> + <wire from="(330,980)" to="(330,1000)"/> <wire from="(170,690)" to="(170,780)"/> <wire from="(50,150)" to="(90,150)"/> <wire from="(210,730)" to="(210,820)"/> @@ -1910,6 +1901,7 @@ <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)"/> @@ -1924,11 +1916,15 @@ <wire from="(830,1750)" to="(950,1750)"/> <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="(470,290)" to="(470,300)"/> <wire from="(200,1380)" to="(250,1380)"/> <wire from="(170,780)" to="(280,780)"/> - <wire from="(1160,1490)" to="(1160,1560)"/> + <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)"/> @@ -1940,13 +1936,11 @@ <wire from="(240,160)" to="(270,160)"/> <wire from="(180,1130)" to="(270,1130)"/> <wire from="(890,390)" to="(890,430)"/> - <wire from="(330,1660)" to="(490,1660)"/> - <wire from="(930,750)" to="(930,790)"/> - <wire from="(960,780)" to="(960,820)"/> <wire from="(1170,540)" to="(1240,540)"/> <wire from="(440,60)" to="(450,60)"/> <wire from="(1080,810)" to="(1240,810)"/> <wire from="(480,420)" to="(490,420)"/> + <wire from="(980,840)" to="(980,1670)"/> <wire from="(200,840)" to="(280,840)"/> <wire from="(150,1690)" to="(160,1690)"/> <wire from="(110,50)" to="(120,50)"/> @@ -1954,10 +1948,7 @@ <wire from="(800,1380)" to="(810,1380)"/> <wire from="(800,1700)" to="(810,1700)"/> <wire from="(920,1060)" to="(920,1110)"/> - <wire from="(1170,1500)" to="(1170,1610)"/> <wire from="(840,340)" to="(840,390)"/> - <wire from="(880,700)" to="(880,750)"/> - <wire from="(1020,730)" to="(1070,730)"/> <wire from="(510,1100)" to="(510,1110)"/> <wire from="(1340,520)" to="(1340,600)"/> <wire from="(430,380)" to="(430,390)"/> @@ -1965,6 +1956,7 @@ <wire from="(170,1230)" to="(280,1230)"/> <wire from="(790,830)" to="(830,830)"/> <wire from="(180,320)" to="(180,410)"/> + <wire from="(820,800)" to="(1120,800)"/> <wire from="(220,360)" to="(220,450)"/> <wire from="(200,660)" to="(200,750)"/> <wire from="(240,700)" to="(240,790)"/> @@ -1979,8 +1971,8 @@ <wire from="(180,320)" to="(250,320)"/> <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="(910,1680)" to="(990,1680)"/> <wire from="(880,1150)" to="(880,1200)"/> <wire from="(840,790)" to="(840,840)"/> <wire from="(930,690)" to="(930,700)"/> @@ -1988,7 +1980,10 @@ <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)"/> @@ -1999,12 +1994,12 @@ <wire from="(220,810)" to="(220,900)"/> <wire from="(230,80)" to="(270,80)"/> <wire from="(240,1150)" to="(240,1240)"/> - <wire from="(1070,1550)" to="(1120,1550)"/> - <wire from="(1010,640)" to="(1010,720)"/> <wire from="(1130,820)" to="(1270,820)"/> <wire from="(890,1290)" to="(890,1330)"/> + <wire from="(1090,1360)" to="(1160,1360)"/> <wire from="(820,640)" to="(820,800)"/> <wire from="(1130,890)" to="(1130,950)"/> + <wire from="(1110,1610)" to="(1140,1610)"/> <wire from="(570,330)" to="(570,390)"/> <wire from="(350,290)" to="(430,290)"/> <wire from="(370,60)" to="(370,300)"/> @@ -2014,34 +2009,35 @@ <wire from="(920,480)" to="(930,480)"/> <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="(230,1160)" to="(280,1160)"/> - <wire from="(620,1400)" to="(620,1610)"/> <wire from="(220,1260)" to="(220,1350)"/> <wire from="(180,1220)" to="(180,1310)"/> <wire from="(1280,530)" to="(1280,540)"/> + <wire from="(780,1690)" to="(780,1840)"/> <wire from="(290,1450)" to="(830,1450)"/> - <wire from="(1150,1480)" to="(1160,1480)"/> + <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="(1020,1610)" to="(1020,1770)"/> + <wire from="(910,740)" to="(1040,740)"/> <wire from="(170,240)" to="(250,240)"/> - <wire from="(780,1690)" to="(780,1880)"/> <wire from="(530,420)" to="(530,480)"/> <wire from="(920,610)" to="(930,610)"/> <wire from="(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="(180,70)" to="(180,140)"/> <wire from="(1030,380)" to="(1030,1350)"/> <wire from="(1410,660)" to="(1410,740)"/> <wire from="(850,870)" to="(850,880)"/> - <wire from="(1090,1520)" to="(1130,1520)"/> <wire from="(1240,810)" to="(1240,900)"/> <wire from="(860,1710)" to="(860,1780)"/> <wire from="(200,300)" to="(250,300)"/> @@ -2051,27 +2047,29 @@ <wire from="(210,640)" to="(250,640)"/> <wire from="(950,1540)" to="(950,1750)"/> <wire from="(180,680)" to="(280,680)"/> - <wire from="(1110,1570)" to="(1120,1570)"/> + <wire from="(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="(330,1750)" to="(340,1750)"/> - <wire from="(1030,1540)" to="(1120,1540)"/> + <wire from="(1110,1550)" to="(1140,1550)"/> <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="(560,60)" to="(570,60)"/> + <wire from="(1020,1550)" to="(1020,1660)"/> <wire from="(630,1100)" to="(630,1110)"/> <wire from="(550,380)" to="(550,390)"/> <wire from="(1070,730)" to="(1180,730)"/> <wire from="(1090,750)" to="(1200,750)"/> <wire from="(1200,710)" to="(1200,730)"/> <wire from="(220,1080)" to="(280,1080)"/> + <wire from="(1100,1660)" to="(1140,1660)"/> <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)"/> @@ -2080,9 +2078,12 @@ <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="(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="(880,1150)" to="(890,1150)"/> <wire from="(840,790)" to="(850,790)"/> @@ -2099,24 +2100,26 @@ <wire from="(440,1680)" to="(440,1690)"/> <wire from="(830,560)" to="(870,560)"/> <wire from="(870,920)" to="(910,920)"/> + <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="(210,1000)" to="(210,1090)"/> <wire from="(240,70)" to="(240,160)"/> - <wire from="(860,820)" to="(860,840)"/> <wire from="(270,1550)" to="(560,1550)"/> <wire from="(240,610)" to="(280,610)"/> <wire from="(1200,730)" to="(1380,730)"/> - <wire from="(1150,1430)" to="(1150,1480)"/> <wire from="(720,1370)" to="(720,1860)"/> <wire from="(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="(640,600)" to="(640,660)"/> + <wire from="(1000,640)" to="(1200,640)"/> <wire from="(840,1240)" to="(850,1240)"/> <wire from="(920,880)" to="(920,930)"/> <wire from="(840,160)" to="(840,210)"/> @@ -2129,6 +2132,7 @@ <wire from="(250,1620)" to="(250,1640)"/> <wire from="(170,1050)" to="(280,1050)"/> <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)"/> @@ -2140,9 +2144,11 @@ <wire from="(650,640)" to="(820,640)"/> <wire from="(830,1750)" to="(830,1830)"/> <wire from="(430,290)" to="(470,290)"/> + <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)"/> @@ -2151,28 +2157,29 @@ <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="(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="(910,560)" to="(970,560)"/> <wire from="(140,1800)" to="(900,1800)"/> <wire from="(230,530)" to="(280,530)"/> <wire from="(370,330)" to="(370,480)"/> - <wire from="(800,1660)" to="(800,1680)"/> <wire from="(1210,790)" to="(1210,800)"/> <wire from="(200,930)" to="(200,1020)"/> <wire from="(180,590)" to="(180,680)"/> <wire from="(220,630)" to="(220,720)"/> <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="(850,750)" to="(850,790)"/> <wire from="(890,1110)" to="(890,1150)"/> <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)"/> @@ -2184,13 +2191,13 @@ <wire from="(840,1060)" to="(840,1110)"/> <wire from="(930,960)" to="(930,970)"/> <wire from="(890,600)" to="(890,610)"/> - <wire from="(1020,900)" to="(1020,1610)"/> + <wire from="(1100,1540)" to="(1140,1540)"/> <wire from="(240,1630)" to="(290,1630)"/> <wire from="(230,980)" to="(280,980)"/> <wire from="(430,1100)" to="(430,1110)"/> <wire from="(290,640)" to="(290,650)"/> - <wire from="(1000,1010)" to="(1000,1650)"/> <wire from="(170,70)" to="(170,150)"/> + <wire from="(950,820)" to="(1050,820)"/> <wire from="(870,670)" to="(910,670)"/> <wire from="(220,1080)" to="(220,1170)"/> <wire from="(180,1040)" to="(180,1130)"/> @@ -2204,28 +2211,28 @@ <wire from="(570,510)" to="(570,1380)"/> <wire from="(360,510)" to="(370,510)"/> <wire from="(610,960)" to="(610,1020)"/> - <wire from="(1010,910)" to="(1080,910)"/> <wire from="(920,430)" to="(930,430)"/> - <wire from="(920,750)" to="(930,750)"/> - <wire from="(1020,1610)" to="(1170,1610)"/> + <wire from="(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="(890,1050)" to="(890,1060)"/> <wire from="(850,690)" to="(850,700)"/> <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="(1030,1510)" to="(1030,1540)"/> + <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="(170,510)" to="(250,510)"/> <wire from="(190,850)" to="(270,850)"/> - <wire from="(1010,720)" to="(1080,720)"/> <wire from="(450,1750)" to="(530,1750)"/> <wire from="(920,880)" to="(930,880)"/> <wire from="(920,1200)" to="(930,1200)"/> @@ -2237,10 +2244,11 @@ <wire from="(880,520)" to="(890,520)"/> <wire from="(490,330)" to="(490,390)"/> <wire from="(590,560)" to="(590,570)"/> - <wire from="(500,1650)" to="(1000,1650)"/> + <wire from="(1040,1740)" to="(1080,1740)"/> + <wire from="(1010,730)" to="(1070,730)"/> <wire from="(200,570)" to="(250,570)"/> <wire from="(330,650)" to="(630,650)"/> - <wire from="(1110,800)" to="(1110,1570)"/> + <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)"/> @@ -2251,27 +2259,28 @@ <wire from="(940,910)" to="(940,930)"/> <wire from="(670,1190)" to="(1160,1190)"/> <wire from="(250,1690)" to="(250,1780)"/> - <wire from="(730,1660)" to="(730,1680)"/> - <wire from="(1020,730)" to="(1020,900)"/> - <wire from="(1010,720)" to="(1010,910)"/> <wire from="(250,1620)" to="(260,1620)"/> <wire from="(530,1140)" to="(530,1200)"/> <wire from="(920,1330)" to="(930,1330)"/> - <wire from="(330,1010)" to="(590,1010)"/> <wire from="(880,970)" to="(890,970)"/> <wire from="(840,610)" to="(850,610)"/> <wire from="(480,1410)" to="(480,1470)"/> <wire from="(880,1290)" to="(890,1290)"/> <wire from="(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="(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="(870,740)" to="(910,740)"/> <wire from="(170,780)" to="(170,870)"/> <wire from="(190,1120)" to="(190,1210)"/> <wire from="(210,820)" to="(210,910)"/> @@ -2280,29 +2289,28 @@ <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="(510,380)" to="(550,380)"/> <wire from="(180,1400)" to="(280,1400)"/> - <wire from="(1100,200)" to="(1100,1530)"/> - <wire from="(1040,820)" to="(1040,870)"/> <wire from="(1400,660)" to="(1410,660)"/> <wire from="(180,770)" to="(270,770)"/> <wire from="(930,390)" to="(930,430)"/> <wire from="(1320,780)" to="(1320,840)"/> <wire from="(1090,870)" to="(1290,870)"/> + <wire from="(1160,1580)" to="(1160,1640)"/> <wire from="(480,60)" to="(490,60)"/> - <wire from="(730,1660)" to="(800,1660)"/> <wire from="(840,1060)" to="(850,1060)"/> <wire from="(840,1380)" to="(850,1380)"/> - <wire from="(920,700)" to="(920,750)"/> <wire from="(760,660)" to="(770,660)"/> <wire from="(520,420)" to="(530,420)"/> <wire from="(880,340)" to="(880,390)"/> <wire from="(190,490)" to="(250,490)"/> <wire from="(210,190)" to="(270,190)"/> + <wire from="(330,980)" to="(1020,980)"/> <wire from="(470,380)" to="(470,390)"/> <wire from="(220,1170)" to="(270,1170)"/> <wire from="(170,870)" to="(280,870)"/> - <wire from="(730,740)" to="(730,1660)"/> + <wire from="(850,760)" to="(850,790)"/> <wire from="(830,830)" to="(870,830)"/> <wire from="(660,1850)" to="(660,1880)"/> <wire from="(170,1230)" to="(170,1320)"/> @@ -2317,8 +2325,9 @@ <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="(1070,1550)" to="(1070,1800)"/> + <wire from="(610,1660)" to="(1020,1660)"/> <wire from="(480,510)" to="(490,510)"/> <wire from="(100,70)" to="(100,250)"/> <wire from="(210,1270)" to="(280,1270)"/> @@ -2328,40 +2337,41 @@ <wire from="(880,790)" to="(880,840)"/> <wire from="(510,1190)" to="(510,1200)"/> <wire from="(790,830)" to="(790,840)"/> - <wire from="(1010,1590)" to="(1180,1590)"/> <wire from="(810,1810)" to="(810,1820)"/> <wire from="(230,350)" to="(280,350)"/> + <wire from="(990,1010)" to="(990,1650)"/> + <wire from="(330,1010)" to="(330,1020)"/> <wire from="(170,1320)" to="(280,1320)"/> <wire from="(180,410)" to="(180,500)"/> - <wire from="(900,1800)" to="(1070,1800)"/> <wire from="(220,450)" to="(220,540)"/> <wire from="(200,750)" to="(200,840)"/> <wire from="(240,1330)" to="(280,1330)"/> + <wire from="(360,1010)" to="(590,1010)"/> <wire from="(240,790)" to="(240,880)"/> <wire from="(170,690)" to="(270,690)"/> <wire from="(220,360)" to="(250,360)"/> + <wire from="(1160,1640)" to="(1170,1640)"/> <wire from="(930,1290)" to="(930,1330)"/> - <wire from="(1030,1510)" to="(1040,1510)"/> - <wire from="(860,1780)" to="(1010,1780)"/> + <wire from="(1160,1520)" to="(1160,1580)"/> <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="(200,750)" to="(270,750)"/> - <wire from="(990,840)" to="(1320,840)"/> - <wire from="(210,1790)" to="(340,1790)"/> <wire from="(920,120)" to="(930,120)"/> - <wire from="(1040,870)" to="(1060,870)"/> <wire from="(520,1320)" to="(530,1320)"/> <wire from="(880,1240)" to="(880,1290)"/> <wire from="(840,880)" to="(840,930)"/> + <wire from="(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)"/> <wire from="(190,1390)" to="(250,1390)"/> <wire from="(250,100)" to="(250,110)"/> + <wire from="(1100,1680)" to="(1140,1680)"/> <wire from="(230,800)" to="(280,800)"/> - <wire from="(1110,800)" to="(1210,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)"/> @@ -2374,11 +2384,12 @@ <wire from="(150,1420)" to="(1130,1420)"/> <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="(430,1100)" to="(510,1100)"/> <wire from="(920,250)" to="(930,250)"/> - <wire from="(240,1690)" to="(240,1750)"/> <wire from="(880,210)" to="(890,210)"/> <wire from="(840,1330)" to="(840,1380)"/> <wire from="(330,380)" to="(390,380)"/> @@ -2394,10 +2405,14 @@ <wire from="(220,1350)" to="(220,1440)"/> <wire from="(230,80)" to="(230,170)"/> <wire from="(210,280)" to="(250,280)"/> - <wire from="(1040,820)" to="(1050,820)"/> + <wire from="(1030,1730)" to="(1080,1730)"/> + <wire from="(1010,730)" to="(1010,900)"/> <wire from="(660,1380)" to="(690,1380)"/> - <wire from="(330,1730)" to="(980,1730)"/> + <wire from="(1010,900)" to="(1010,1770)"/> + <wire from="(1120,1740)" to="(1120,1800)"/> + <wire from="(520,1630)" to="(610,1630)"/> <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)"/> @@ -2409,6 +2424,7 @@ <wire from="(1090,750)" to="(1090,830)"/> <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)"/> @@ -2418,13 +2434,16 @@ <wire from="(190,490)" to="(190,580)"/> <wire from="(210,190)" to="(210,280)"/> <wire from="(490,510)" to="(490,1380)"/> - <wire from="(1100,1530)" to="(1100,1580)"/> <wire from="(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="(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="(840,750)" to="(850,750)"/> <wire from="(680,1230)" to="(690,1230)"/> <wire from="(560,150)" to="(570,150)"/> <wire from="(920,70)" to="(920,120)"/> @@ -2443,11 +2462,11 @@ <wire from="(910,830)" to="(910,850)"/> <wire from="(900,820)" to="(900,840)"/> <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="(930,210)" to="(930,250)"/> <wire from="(710,1700)" to="(730,1700)"/> - <wire from="(1010,910)" to="(1010,1590)"/> <wire from="(330,830)" to="(790,830)"/> <wire from="(880,1560)" to="(890,1560)"/> <wire from="(650,1140)" to="(650,1380)"/> @@ -2456,11 +2475,13 @@ <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="(190,310)" to="(250,310)"/> + <wire from="(1100,1560)" to="(1140,1560)"/> <wire from="(200,1290)" to="(250,1290)"/> <wire from="(220,990)" to="(270,990)"/> <wire from="(870,1010)" to="(910,1010)"/> @@ -2473,36 +2494,40 @@ <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="(240,70)" to="(270,70)"/> <wire from="(180,1040)" to="(270,1040)"/> <wire from="(890,300)" to="(890,340)"/> + <wire from="(850,1770)" to="(1010,1770)"/> <wire from="(760,680)" to="(760,780)"/> + <wire from="(210,1790)" to="(350,1790)"/> <wire from="(480,330)" to="(490,330)"/> - <wire from="(290,1740)" to="(300,1740)"/> + <wire from="(1100,1570)" to="(1130,1570)"/> <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="(210,460)" to="(270,460)"/> <wire from="(430,290)" to="(430,300)"/> - <wire from="(300,1760)" to="(300,1770)"/> <wire from="(170,1140)" to="(280,1140)"/> + <wire from="(840,700)" to="(840,730)"/> <wire from="(180,230)" to="(180,320)"/> <wire from="(830,1010)" to="(830,1030)"/> <wire from="(200,570)" to="(200,660)"/> <wire from="(240,610)" to="(240,700)"/> <wire from="(220,270)" to="(220,360)"/> <wire from="(240,1150)" to="(280,1150)"/> - <wire from="(530,1670)" to="(530,1690)"/> <wire from="(210,70)" to="(210,100)"/> <wire from="(430,380)" to="(470,380)"/> - <wire from="(160,1430)" to="(1150,1430)"/> <wire from="(930,1540)" to="(950,1540)"/> <wire from="(850,390)" to="(850,430)"/> - <wire from="(890,750)" to="(890,790)"/> <wire from="(1280,620)" to="(1290,620)"/> <wire from="(930,1110)" to="(930,1150)"/> + <wire from="(1120,1740)" to="(1130,1740)"/> + <wire from="(300,1570)" to="(960,1570)"/> + <wire from="(1130,1630)" to="(1130,1690)"/> <wire from="(400,60)" to="(410,60)"/> <wire from="(440,420)" to="(450,420)"/> <wire from="(1130,580)" to="(1290,580)"/> @@ -2511,15 +2536,15 @@ <wire from="(760,1380)" to="(770,1380)"/> <wire from="(520,1140)" to="(530,1140)"/> <wire from="(880,1060)" to="(880,1110)"/> - <wire from="(840,700)" to="(840,750)"/> + <wire from="(1000,720)" to="(1080,720)"/> <wire from="(930,600)" to="(930,610)"/> <wire from="(190,1210)" to="(250,1210)"/> <wire from="(210,910)" to="(270,910)"/> - <wire from="(1090,1490)" to="(1130,1490)"/> <wire from="(80,70)" to="(80,80)"/> <wire from="(390,380)" to="(390,390)"/> <wire from="(230,620)" to="(280,620)"/> <wire from="(1320,540)" to="(1320,610)"/> + <wire from="(1020,1720)" to="(1080,1720)"/> <wire from="(180,680)" to="(180,770)"/> <wire from="(220,720)" to="(220,810)"/> <wire from="(200,1020)" to="(200,1110)"/> @@ -2531,6 +2556,7 @@ <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="(920,390)" to="(930,390)"/> <wire from="(920,70)" to="(930,70)"/> @@ -2538,7 +2564,7 @@ <wire from="(880,1510)" to="(880,1560)"/> <wire from="(840,1150)" to="(840,1200)"/> <wire from="(300,1770)" to="(690,1770)"/> - <wire from="(1020,900)" to="(1070,900)"/> + <wire from="(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)"/> @@ -2551,25 +2577,25 @@ <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="(210,100)" to="(250,100)"/> <wire from="(560,1380)" to="(560,1550)"/> <wire from="(410,1590)" to="(440,1590)"/> <wire from="(850,1290)" to="(850,1330)"/> - <wire from="(240,1750)" to="(260,1750)"/> + <wire from="(1130,1570)" to="(1130,1630)"/> + <wire from="(350,1750)" to="(350,1790)"/> <wire from="(170,150)" to="(250,150)"/> <wire from="(530,330)" to="(530,390)"/> - <wire from="(1070,1360)" to="(1160,1360)"/> <wire from="(120,40)" to="(130,40)"/> <wire from="(920,520)" to="(930,520)"/> <wire from="(840,120)" to="(850,120)"/> - <wire from="(800,1680)" to="(810,1680)"/> <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="(980,1280)" to="(980,1730)"/> <wire from="(210,1500)" to="(260,1500)"/> <wire from="(160,1430)" to="(160,1570)"/> <wire from="(760,780)" to="(800,780)"/> @@ -2580,9 +2606,10 @@ <wire from="(290,640)" to="(650,640)"/> <wire from="(150,1420)" to="(150,1580)"/> <wire from="(920,1490)" to="(920,1530)"/> - <wire from="(910,1010)" to="(1000,1010)"/> <wire from="(270,1470)" to="(480,1470)"/> + <wire from="(580,1650)" to="(990,1650)"/> <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)"/> @@ -2594,19 +2621,25 @@ <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="(630,1100)" to="(670,1100)"/> + <wire from="(610,1630)" to="(610,1660)"/> <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="(850,1770)" to="(1020,1770)"/> + <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="(520,60)" to="(530,60)"/> <wire from="(630,1010)" to="(830,1010)"/> - <wire from="(1100,1580)" to="(1130,1580)"/> + <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)"/> @@ -2617,18 +2650,22 @@ <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="(190,130)" to="(250,130)"/> <wire from="(220,810)" to="(270,810)"/> <wire from="(200,1110)" to="(250,1110)"/> <wire from="(510,380)" to="(510,390)"/> <wire from="(440,1590)" to="(440,1600)"/> <wire from="(530,510)" to="(530,1110)"/> + <wire from="(1040,1610)" to="(1040,1740)"/> + <wire from="(890,760)" to="(890,790)"/> <wire from="(870,830)" to="(910,830)"/> <wire from="(170,870)" to="(170,960)"/> <wire from="(1200,750)" to="(1200,760)"/> <wire from="(210,910)" to="(210,1000)"/> <wire from="(190,1210)" to="(190,1300)"/> <wire from="(240,520)" to="(280,520)"/> + <wire from="(160,1430)" to="(1160,1430)"/> <wire from="(220,1460)" to="(260,1460)"/> <wire from="(380,1720)" to="(380,1810)"/> <wire from="(230,1250)" to="(230,1340)"/> @@ -2638,66 +2675,70 @@ <wire from="(180,860)" to="(270,860)"/> <wire from="(890,120)" to="(890,160)"/> <wire from="(930,480)" to="(930,520)"/> - <wire from="(300,1570)" to="(970,1570)"/> <wire from="(200,70)" to="(200,120)"/> <wire from="(480,150)" to="(490,150)"/> <wire from="(80,70)" to="(90,70)"/> <wire from="(930,1560)" to="(940,1560)"/> <wire from="(880,1510)" to="(890,1510)"/> + <wire from="(500,1650)" to="(500,1700)"/> <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="0" loc="(160,1670)" name="Constant"> - <a name="width" val="8"/> + <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="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 lib="0" loc="(90,1640)" name="Pin"> + <a name="width" val="8"/> + <a name="tristate" val="false"/> + <a name="label" val="ALU OUTPUT"/> + <a name="labelloc" val="south"/> </comp> - <comp lib="0" loc="(640,60)" name="Constant"> + <comp lib="1" loc="(810,840)" name="AND Gate"> <a name="facing" val="south"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="1" loc="(800,670)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate0" val="true"/> </comp> - <comp lib="0" loc="(760,1580)" name="Pin"> + <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="(800,1580)" name="Pin"> <a name="facing" val="north"/> <a name="output" val="true"/> - <a name="label" val="POP"/> + <a name="label" val="PUSH"/> <a name="labelloc" val="south"/> </comp> - <comp lib="1" loc="(480,1410)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="1" loc="(1050,820)" name="AND Gate"> + <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(640,1050)" name="OR Gate"> + <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"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(330,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="(860,910)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="0" loc="(940,820)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="value" val="0x0"/> + <comp 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"/> @@ -2706,89 +2747,113 @@ <a name="negate3" val="true"/> <a name="negate6" val="true"/> </comp> - <comp lib="1" loc="(640,1140)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="0" loc="(280,570)" name="Constant"/> - <comp lib="1" loc="(1370,660)" name="AND Gate"> - <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="0" loc="(260,1520)" name="Constant"> - <a name="width" val="2"/> - <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="0" loc="(280,230)" name="Constant"/> - <comp lib="0" loc="(280,390)" name="Constant"/> + <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> - <comp lib="0" loc="(280,420)" name="Constant"/> - <comp lib="1" loc="(400,420)" name="OR Gate"> + <comp lib="1" loc="(330,110)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="OR"/> + <a name="negate0" val="true"/> + <a name="negate1" val="true"/> + </comp> + <comp lib="1" loc="(900,1720)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(280,220)" name="Constant"/> - <comp lib="2" loc="(320,1620)" name="Multiplexer"> - <a name="selloc" val="tr"/> - <a name="width" val="8"/> - <a name="enable" val="false"/> - </comp> - <comp lib="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="(1330,800)" 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="(600,1050)" 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="(940,550)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - </comp> - <comp lib="0" loc="(620,1400)" name="Splitter"> - <a name="facing" val="north"/> - <a name="appear" val="center"/> + <comp lib="1" loc="(1110,1730)" name="OR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="3"/> </comp> - <comp lib="2" loc="(930,960)" name="Multiplexer"> + <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="(1200,950)" name="Bit Extender"> - <a name="in_width" val="4"/> - <a name="out_width" val="5"/> + <comp lib="0" loc="(280,670)" 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="(280,280)" name="Constant"/> - <comp lib="0" loc="(280,1120)" name="Constant"/> - <comp lib="2" loc="(850,960)" name="Multiplexer"> + <comp lib="2" loc="(930,870)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(50,250)" name="Pin"> - <a name="tristate" val="false"/> - <a name="label" val="RST"/> + <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="0" loc="(1240,560)" name="Constant"> - <a name="width" val="5"/> - <a name="value" val="0x0"/> + <comp lib="4" loc="(1090,870)" name="Register"> + <a name="width" val="1"/> </comp> - <comp lib="1" loc="(600,960)" name="OR Gate"> + <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> + <comp lib="2" loc="(230,1670)" name="Multiplexer"> + <a name="width" val="8"/> + <a name="enable" val="false"/> + </comp> + <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="(940,910)" name="Constant"> + <comp lib="0" loc="(1160,1580)" name="Splitter"> + <a name="facing" val="west"/> + <a name="fanout" val="4"/> + <a name="incoming" val="4"/> + </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> + <comp lib="0" loc="(50,150)" name="Pin"> + <a name="tristate" val="false"/> + <a name="label" val="CLK"/> + </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="1" loc="(670,1820)" name="AND Gate"> + <a name="facing" val="north"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> <comp lib="0" loc="(240,1630)" name="Splitter"> <a name="facing" val="north"/> @@ -2801,301 +2866,241 @@ <a name="bit6" val="1"/> <a name="bit7" val="1"/> </comp> - <comp lib="1" loc="(820,1860)" name="AND Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - <a name="negate0" val="true"/> - </comp> - <comp lib="1" loc="(440,330)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="1" loc="(1040,1510)" name="AND Gate"> - <a name="facing" val="west"/> - <a name="label" val="ptrinc"/> - </comp> - <comp lib="0" loc="(900,550)" 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"/> - </comp> - <comp lib="2" loc="(160,50)" name="Multiplexer"> - <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(900,910)" name="Constant"> + <comp lib="0" loc="(930,60)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(240,1580)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="4"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="0" loc="(280,120)" name="Constant"/> - <comp lib="0" loc="(560,60)" name="Constant"> - <a name="facing" val="south"/> - <a name="value" val="0x0"/> + <comp lib="0" loc="(1240,630)" name="Constant"> + <a name="width" val="5"/> </comp> - <comp lib="2" loc="(850,1050)" name="Multiplexer"> + <comp lib="1" loc="(560,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="1" loc="(360,510)" name="OR Gate"> + <comp lib="1" loc="(440,330)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(280,640)" name="Constant"/> - <comp lib="1" loc="(670,1820)" name="AND Gate"> - <a name="facing" val="north"/> + <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> + <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> - <comp lib="1" loc="(1320,780)" 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="1" loc="(1210,790)" name="OR Gate"> - <a name="facing" val="south"/> + <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> - <comp lib="2" loc="(520,1670)" name="Multiplexer"> - <a name="selloc" val="tr"/> - <a name="width" val="8"/> - <a name="enable" val="false"/> - </comp> - <comp lib="1" loc="(330,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="(440,1690)" name="Pin"> - <a name="facing" val="north"/> - <a name="width" val="8"/> - <a name="tristate" val="false"/> - <a name="label" val="PC ADDRESS"/> - <a name="labelloc" val="south"/> - </comp> - <comp lib="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="(1160,1520)" name="Splitter"> + <a name="facing" val="west"/> + <a name="fanout" val="4"/> + <a name="incoming" val="4"/> </comp> - <comp lib="2" loc="(850,690)" name="Multiplexer"> + <comp lib="0" loc="(900,910)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="disabled" val="0"/> - <a name="enable" val="false"/> + <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(520,1230)" name="OR Gate"> + <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="(160,50)" name="Splitter"> + <comp lib="0" loc="(280,410)" name="Constant"/> + <comp lib="1" loc="(640,1050)" name="OR Gate"> <a name="facing" val="south"/> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> - </comp> - <comp lib="0" loc="(1190,1480)" name="Pin"> - <a name="facing" val="west"/> - <a name="output" val="true"/> - <a name="width" val="4"/> - <a name="label" val="Dynamic OP"/> - <a name="labelloc" val="east"/> - </comp> - <comp lib="3" loc="(1280,550)" name="Comparator"> - <a name="width" val="5"/> - </comp> - <comp lib="1" loc="(1070,1360)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(280,1390)" name="Constant"/> - <comp lib="0" loc="(280,140)" name="Constant"/> - <comp lib="0" loc="(280,360)" name="Constant"/> - <comp lib="1" loc="(810,840)" name="AND Gate"> + <comp lib="1" loc="(480,420)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate0" val="true"/> - </comp> - <comp lib="0" loc="(440,1620)" name="Splitter"> - <a name="facing" val="north"/> - <a name="fanout" val="3"/> - <a name="incoming" val="3"/> - <a name="appear" val="center"/> </comp> - <comp lib="4" loc="(1400,660)" name="Register"> - <a name="width" val="1"/> + <comp 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> - <comp lib="1" loc="(520,1140)" name="OR Gate"> + <comp lib="0" loc="(860,550)" name="Constant"> <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="width" val="2"/> + <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(770,1690)" name="AND Gate"> + <comp lib="3" loc="(200,1680)" name="Adder"/> + <comp lib="1" loc="(480,330)" 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="(600,60)" name="Constant"> + <comp lib="2" loc="(890,960)" name="Multiplexer"> <a name="facing" val="south"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="0" loc="(920,1610)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> <a name="width" val="2"/> - <a name="label" val="C (W)"/> - <a name="labelloc" val="south"/> + <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(520,1320)" name="OR Gate"> + <comp lib="1" loc="(600,1050)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(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="(1160,1360)" name="Pin"> <a name="facing" val="west"/> <a name="output" val="true"/> <a name="label" val="ALU State"/> <a name="labelloc" val="east"/> </comp> - <comp lib="0" loc="(280,240)" name="Constant"/> - <comp lib="1" loc="(680,1140)" name="OR Gate"> + <comp lib="0" loc="(640,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="4" loc="(260,1670)" name="Register"/> - <comp lib="1" loc="(1050,820)" name="AND Gate"> - <a name="facing" val="west"/> + <comp lib="0" loc="(900,660)" name="Constant"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="1" loc="(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="(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> - <comp lib="0" loc="(800,1580)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> - <a name="label" val="PUSH"/> - <a name="labelloc" val="south"/> + <comp lib="0" loc="(490,1620)" name="Constant"> + <a name="facing" val="south"/> + <a name="width" val="8"/> + <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(260,1750)" name="AND Gate"> - <a name="facing" val="west"/> + <comp lib="0" loc="(280,1360)" 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"/> </comp> - <comp lib="2" loc="(290,1450)" name="Multiplexer"> + <comp lib="1" loc="(840,1610)" 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="(850,600)" name="Multiplexer"> + <comp lib="1" loc="(560,150)" name="OR Gate"> <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="enable" val="false"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(50,150)" name="Pin"> - <a name="tristate" val="false"/> - <a name="label" val="CLK"/> + <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> - <comp lib="3" loc="(420,1820)" name="Comparator"> - <a name="mode" val="unsigned"/> + <comp lib="0" loc="(380,1830)" name="Constant"> + <a name="width" val="8"/> + <a name="value" val="0xf0"/> </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 lib="0" loc="(280,270)" name="Constant"/> + <comp lib="1" loc="(840,1690)" name="OR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(640,690)" name="OR Gate"> + <comp lib="1" loc="(520,1410)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> - <a name="inputs" val="3"/> + <a name="inputs" val="2"/> </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 lib="0" loc="(1220,930)" name="Constant"> + <a name="width" val="5"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(280,510)" name="Constant"/> - <comp lib="1" loc="(1160,1560)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="4"/> - <a name="negate0" val="true"/> - <a name="negate1" val="true"/> - <a name="negate2" val="true"/> + <comp lib="0" loc="(620,1580)" 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="0" loc="(680,60)" name="Constant"> + <comp lib="2" loc="(500,1650)" name="Multiplexer"> <a name="facing" val="south"/> - <a name="value" val="0x0"/> + <a name="selloc" val="tr"/> + <a name="width" val="8"/> + <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(260,1440)" name="Constant"> + <comp lib="2" loc="(320,1620)" name="Multiplexer"> + <a name="selloc" val="tr"/> + <a name="width" val="8"/> + <a name="enable" val="false"/> + </comp> + <comp lib="0" loc="(940,550)" name="Constant"> + <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(90,1640)" name="Pin"> + <comp lib="0" loc="(330,1680)" name="Pin"> + <a name="facing" val="north"/> + <a name="output" val="true"/> <a name="width" val="8"/> - <a name="tristate" val="false"/> - <a name="label" val="ALU OUTPUT"/> + <a name="label" val="MEM POINTER"/> <a name="labelloc" val="south"/> </comp> - <comp lib="1" loc="(330,110)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="OR"/> - <a name="negate0" val="true"/> - <a name="negate1" val="true"/> + <comp 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="(850,60)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="value" val="0x0"/> + <comp lib="0" loc="(160,1670)" name="Constant"> + <a name="width" val="8"/> </comp> - <comp lib="1" loc="(280,370)" name="OR Gate"> + <comp lib="0" loc="(530,1880)" name="Pin"> + <a name="facing" val="north"/> + <a name="output" val="true"/> + <a name="label" val="Address MUX"/> + <a name="labelloc" val="south"/> + </comp> + <comp lib="0" loc="(280,150)" name="Constant"/> + <comp lib="1" loc="(440,420)" name="OR Gate"> + <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(620,1610)" name="Pin"> + <comp lib="0" loc="(830,1890)" name="Pin"> + <a name="facing" val="west"/> + <a name="output" val="true"/> + <a name="label" val="External Address Select"/> + <a name="labelloc" val="east"/> + </comp> + <comp lib="0" loc="(920,1610)" name="Pin"> <a name="facing" val="north"/> <a name="output" val="true"/> <a name="width" val="2"/> - <a name="label" val="GPR MUX"/> + <a name="label" val="C (W)"/> <a name="labelloc" val="south"/> </comp> - <comp lib="1" loc="(560,510)" name="OR Gate"> + <comp lib="3" loc="(1260,940)" name="Adder"> + <a name="width" val="5"/> + </comp> + <comp lib="1" loc="(600,600)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> @@ -3104,361 +3109,548 @@ <a name="width" val="4"/> <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(280,130)" name="Constant"/> - <comp lib="0" loc="(440,1880)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> - <a name="label" val="Memory Select"/> - <a name="labelloc" val="south"/> + <comp lib="1" loc="(640,690)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="3"/> </comp> - <comp lib="0" loc="(200,1500)" name="Splitter"> - <a name="facing" val="north"/> - <a name="appear" val="center"/> + <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="(280,630)" name="Constant"/> - <comp lib="0" loc="(860,820)" 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="0" loc="(530,1880)" name="Pin"> + <comp lib="0" loc="(1240,680)" name="Constant"> + <a name="width" val="5"/> + <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="output" val="true"/> - <a name="label" val="Address MUX"/> - <a name="labelloc" val="south"/> + <a name="appear" val="center"/> </comp> - <comp lib="0" loc="(400,60)" name="Constant"> + <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> + <comp lib="0" loc="(940,1000)" name="Constant"> <a name="facing" val="south"/> - <a name="value" val="0x0"/> + <a name="width" val="2"/> </comp> - <comp lib="1" loc="(330,650)" name="AND Gate"> + <comp lib="1" loc="(330,200)" name="AND Gate"> <a name="inputs" val="8"/> - <a name="label" val="LNI/LI"/> - <a name="negate7" val="true"/> + <a name="label" val="SOP"/> + <a name="negate0" val="true"/> + <a name="negate1" val="true"/> + <a name="negate2" val="true"/> + <a name="negate3" val="true"/> </comp> - <comp lib="2" loc="(1170,610)" name="Multiplexer"> + <comp lib="0" loc="(280,320)" name="Constant"/> + <comp lib="0" loc="(940,660)" name="Constant"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + </comp> + <comp lib="3" loc="(1280,670)" name="Comparator"> <a name="width" val="5"/> + </comp> + <comp lib="2" loc="(890,690)" name="Multiplexer"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + <a name="disabled" val="0"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(280,490)" name="Constant"/> - <comp lib="0" loc="(520,60)" name="Constant"> + <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> + <comp lib="0" loc="(360,60)" name="Constant"> <a name="facing" val="south"/> <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(440,1620)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> - <a name="width" val="3"/> - <a name="label" val="ALU OP"/> - <a name="labelloc" val="south"/> + <comp lib="1" loc="(1310,670)" name="NOT Gate"> + <a name="size" val="20"/> </comp> - <comp lib="0" loc="(280,330)" name="Constant"/> - <comp lib="1" loc="(480,330)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="1" loc="(280,370)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(280,1360)" name="Constant"/> - <comp lib="2" loc="(230,1670)" name="Multiplexer"> + <comp lib="2" loc="(600,1670)" name="Multiplexer"> + <a name="selloc" val="tr"/> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(280,270)" name="Constant"/> - <comp lib="2" loc="(930,600)" name="Multiplexer"> + <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"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="2" loc="(890,1050)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(560,420)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="0" loc="(50,250)" name="Pin"> + <a name="tristate" val="false"/> + <a name="label" val="RST"/> + </comp> + <comp lib="0" loc="(280,300)" name="Constant"/> + <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="(380,1830)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0xf0"/> + <comp lib="1" loc="(800,670)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(840,1690)" name="OR Gate"> + <comp lib="1" loc="(480,1410)" name="OR Gate"> + <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="2" loc="(290,1530)" name="Multiplexer"> + <comp lib="0" loc="(280,1290)" name="Constant"/> + <comp lib="1" loc="(640,1140)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="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,1110)" name="Constant"/> + <comp lib="0" loc="(280,1200)" name="Constant"/> + <comp lib="1" loc="(480,150)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="0" loc="(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> + <comp lib="0" loc="(280,210)" 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"> + <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="(280,1380)" name="Constant"/> + <comp lib="0" loc="(130,60)" name="Constant"> + <a name="width" val="8"/> + <a name="value" val="0x0"/> + </comp> <comp lib="1" loc="(1320,540)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(800,870)" name="OR Gate"> + <comp lib="2" loc="(850,870)" name="Multiplexer"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + <a name="enable" val="false"/> + </comp> + <comp lib="0" loc="(900,1000)" name="Constant"> + <a name="facing" val="south"/> + <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"> + <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="(200,1500)" name="Splitter"> + <a name="facing" val="north"/> + <a name="appear" val="center"/> + </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="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"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(280,480)" name="Constant"/> - <comp lib="1" loc="(480,150)" name="OR Gate"> + <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="(440,420)" name="OR Gate"> + <comp lib="0" loc="(680,60)" name="Constant"> <a name="facing" val="south"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="3" loc="(550,1690)" name="Adder"/> + <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="4" loc="(1090,680)" name="Register"> <a name="width" val="1"/> </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="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="(860,1000)" name="Constant"> + <comp lib="2" loc="(850,960)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> + <a name="enable" val="false"/> + </comp> + <comp lib="0" loc="(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"/> </comp> - <comp lib="2" loc="(850,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="(1240,630)" name="Constant"> - <a name="width" val="5"/> + <comp lib="2" loc="(930,690)" name="Multiplexer"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + <a name="disabled" val="0"/> + <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(1210,680)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <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> - <comp lib="0" loc="(280,1200)" name="Constant"/> - <comp lib="1" loc="(440,1140)" name="OR Gate"> + <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="(330,1680)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> - <a name="width" val="8"/> - <a name="label" val="MEM POINTER"/> - <a name="labelloc" val="south"/> - </comp> - <comp lib="1" loc="(330,290)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="NAND"/> - <a name="negate1" val="true"/> - </comp> - <comp lib="0" loc="(1150,1480)" name="Splitter"> - <a name="facing" val="west"/> - <a name="fanout" val="4"/> - <a name="incoming" val="4"/> - </comp> - <comp lib="1" loc="(520,330)" name="OR Gate"> + <comp lib="1" loc="(880,1610)" name="OR Gate"> <a name="facing" val="south"/> + <a name="width" val="2"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="2" loc="(890,600)" name="Multiplexer"> + <comp lib="0" loc="(900,730)" 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="(860,660)" name="Constant"> + <comp lib="0" loc="(860,820)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="value" val="0x0"/> </comp> - <comp lib="3" loc="(1200,900)" name="Comparator"> - <a name="width" val="4"/> + <comp lib="1" loc="(770,1690)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(480,60)" name="Constant"> + <comp lib="0" loc="(440,60)" name="Constant"> <a name="facing" val="south"/> <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(440,60)" name="Constant"> + <comp lib="2" loc="(930,960)" name="Multiplexer"> <a name="facing" val="south"/> - <a name="value" val="0x0"/> + <a name="width" val="2"/> + <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(710,1700)" name="Register"> - <a name="width" val="1"/> - <a name="trigger" val="falling"/> + <comp lib="0" loc="(220,1610)" name="Constant"> + <a name="facing" val="south"/> + <a name="width" val="4"/> + <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(80,80)" name="AND Gate"> - <a name="facing" val="north"/> + <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> + <comp lib="1" loc="(330,470)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="CIN"/> <a name="negate0" val="true"/> + <a name="negate2" val="true"/> + <a name="negate3" val="true"/> </comp> - <comp lib="2" loc="(890,960)" name="Multiplexer"> + <comp lib="2" loc="(290,1530)" name="Multiplexer"> + <a name="width" val="2"/> + <a name="enable" val="false"/> + </comp> + <comp lib="2" loc="(850,690)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> + <a name="disabled" val="0"/> <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(1240,760)" name="AND Gate"> - <a name="facing" val="west"/> + <comp lib="3" loc="(420,1820)" name="Comparator"> + <a name="mode" val="unsigned"/> + </comp> + <comp lib="1" loc="(820,1860)" name="AND Gate"> + <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> - </comp> - <comp lib="4" loc="(110,50)" name="Register"> - <a name="trigger" val="falling"/> + <a name="negate0" val="true"/> </comp> - <comp lib="0" loc="(280,660)" name="Constant"/> - <comp lib="1" loc="(840,1610)" name="OR Gate"> + <comp lib="1" loc="(600,960)" name="OR Gate"> <a name="facing" val="south"/> - <a name="width" val="2"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="2" loc="(890,870)" name="Multiplexer"> + <comp lib="0" loc="(890,60)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="enable" val="false"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(220,1460)" name="Splitter"> + <comp lib="0" loc="(280,220)" name="Constant"/> + <comp lib="1" loc="(1190,650)" name="OR Gate"> <a name="facing" val="north"/> - <a name="appear" val="center"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(900,660)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="value" val="0x0"/> + <comp lib="1" loc="(1050,1670)" name="AND Gate"> + <a name="facing" val="west"/> + <a name="label" val="ptrinc"/> </comp> - <comp lib="1" loc="(330,920)" name="AND Gate"> + <comp lib="0" loc="(280,1120)" name="Constant"/> + <comp lib="1" loc="(330,290)" name="AND Gate"> <a name="inputs" val="8"/> - <a name="label" val="POP"/> + <a name="label" val="NAND"/> + <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"/> - <a name="negate4" val="true"/> - <a name="negate6" val="true"/> - </comp> - <comp lib="3" loc="(1280,670)" name="Comparator"> - <a name="width" val="5"/> - </comp> - <comp lib="3" loc="(200,1680)" name="Adder"/> - <comp lib="3" loc="(1260,940)" name="Adder"> - <a name="width" val="5"/> </comp> - <comp lib="0" loc="(280,1290)" name="Constant"/> - <comp lib="0" loc="(280,400)" name="Constant"/> - <comp lib="1" loc="(560,150)" name="OR Gate"> + <comp lib="0" loc="(860,910)" name="Constant"> <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="0" loc="(280,90)" name="Constant"/> - <comp lib="0" loc="(130,60)" name="Constant"> - <a name="width" val="8"/> + <a name="width" val="2"/> <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(530,1690)" name="Pin"> + <comp lib="0" loc="(760,1580)" name="Pin"> <a name="facing" val="north"/> <a name="output" val="true"/> - <a name="width" val="8"/> - <a name="label" val="IMM VALUE"/> + <a name="label" val="POP"/> <a name="labelloc" val="south"/> </comp> - <comp lib="0" loc="(280,150)" name="Constant"/> - <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 lib="0" loc="(620,1400)" name="Splitter"> + <a name="facing" val="north"/> + <a name="appear" val="center"/> </comp> - <comp lib="1" loc="(440,1870)" name="AND Gate"> + <comp lib="1" loc="(560,420)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(80,50)" name="Pin"> - <a name="width" val="8"/> - <a name="tristate" val="false"/> - <a name="label" val="DATA"/> - <a name="labelloc" val="north"/> + <comp lib="0" loc="(160,50)" name="Splitter"> + <a name="facing" val="south"/> + <a name="fanout" val="8"/> + <a name="incoming" val="8"/> </comp> - <comp lib="3" loc="(1280,620)" name="Subtractor"> - <a name="width" val="5"/> + <comp lib="0" loc="(280,240)" name="Constant"/> + <comp lib="2" loc="(930,600)" name="Multiplexer"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(330,1100)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="LB"/> - <a name="negate3" val="true"/> - <a name="negate6" val="true"/> + <comp lib="2" loc="(160,50)" name="Multiplexer"> + <a name="width" val="8"/> + <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(280,550)" name="Constant"/> - <comp lib="1" loc="(880,1610)" name="OR Gate"> + <comp lib="1" loc="(360,330)" name="OR Gate"> <a name="facing" val="south"/> - <a name="width" val="2"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(900,1000)" name="Constant"> + <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> + <comp lib="3" loc="(1280,550)" name="Comparator"> + <a name="width" val="5"/> + </comp> + <comp lib="0" loc="(280,280)" name="Constant"/> + <comp lib="0" loc="(940,820)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(280,1380)" name="Constant"/> - <comp lib="1" loc="(680,1230)" name="OR Gate"> + <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> + <comp lib="0" loc="(860,730)" name="Constant"> <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="width" val="2"/> </comp> - <comp lib="1" loc="(360,330)" name="OR Gate"> + <comp lib="1" loc="(520,1320)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(890,60)" name="Constant"> + <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"> <a name="facing" val="south"/> <a name="width" val="2"/> <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(520,150)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(660,1880)" name="Pin"> + <a name="facing" val="north"/> + <a name="tristate" val="false"/> + <a name="label" val="JMP FLAG"/> + <a name="labelloc" val="south"/> </comp> - <comp lib="1" loc="(520,510)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <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="(290,1610)" name="OR Gate"> - <a name="width" val="8"/> + <comp lib="1" loc="(1370,660)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(200,1580)" name="Splitter"> + <comp lib="0" loc="(280,140)" name="Constant"/> + <comp lib="0" loc="(760,1860)" name="Splitter"> <a name="facing" val="north"/> - <a name="incoming" val="4"/> <a name="appear" val="right"/> - <a name="bit1" val="0"/> - <a name="bit2" val="1"/> - <a name="bit3" val="1"/> </comp> - <comp lib="1" loc="(560,330)" name="OR Gate"> + <comp lib="0" loc="(860,1000)" name="Constant"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="1" loc="(440,1870)" name="AND Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(280,1350)" name="Constant"/> - <comp lib="0" loc="(280,1300)" name="Constant"/> - <comp lib="0" loc="(360,60)" name="Constant"> - <a name="facing" val="south"/> + <comp lib="0" loc="(260,1520)" name="Constant"> + <a name="width" val="2"/> <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(1220,930)" name="Constant"> - <a name="width" val="5"/> - <a name="value" val="0x0"/> + <comp lib="6" loc="(233,1834)" name="Text"> + <a name="text" val="This input defines the range of MMIO --&gt;"/> </comp> - <comp lib="0" loc="(940,1000)" name="Constant"> + <comp lib="0" loc="(480,60)" name="Constant"> <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="value" val="0x3"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(280,540)" name="Constant"/> <comp lib="0" loc="(840,1610)" name="Pin"> <a name="facing" val="north"/> <a name="output" val="true"/> @@ -3466,207 +3658,137 @@ <a name="label" val="A (R)"/> <a name="labelloc" val="south"/> </comp> - <comp lib="0" loc="(280,410)" name="Constant"/> - <comp lib="1" loc="(1310,670)" name="NOT Gate"> - <a name="size" val="20"/> - </comp> - <comp lib="4" loc="(1090,870)" name="Register"> - <a name="width" val="1"/> - </comp> - <comp lib="0" loc="(660,1880)" name="Pin"> - <a name="facing" val="north"/> - <a name="tristate" val="false"/> - <a name="label" val="JMP FLAG"/> - <a name="labelloc" val="south"/> - </comp> - <comp lib="1" loc="(1330,640)" name="AND 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"/> - <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(1170,680)" name="AND Gate"> + <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="0" loc="(280,1210)" name="Constant"/> - <comp lib="0" loc="(250,1600)" name="Splitter"> - <a name="facing" val="north"/> - <a name="incoming" val="8"/> - <a name="bit1" val="0"/> - <a name="bit2" val="0"/> - <a name="bit3" val="0"/> - <a name="bit4" val="1"/> - <a name="bit5" val="1"/> - <a name="bit6" val="1"/> - <a name="bit7" val="1"/> - </comp> - <comp lib="1" loc="(330,1370)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="CMP"/> - </comp> - <comp lib="1" loc="(480,420)" name="OR Gate"> + <comp lib="1" loc="(680,1140)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="4" loc="(1190,1480)" name="Register"> - <a name="width" val="4"/> - <a name="trigger" val="falling"/> - </comp> - <comp lib="1" loc="(520,420)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="1" loc="(360,1010)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="4" loc="(1210,610)" name="Register"> - <a name="width" val="5"/> - </comp> - <comp lib="0" loc="(940,660)" name="Constant"> + <comp lib="0" loc="(560,60)" name="Constant"> <a name="facing" val="south"/> - <a name="width" val="2"/> + <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(900,1720)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp 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="1" loc="(1190,650)" name="OR Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(280,500)" name="Constant"/> + <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="4" loc="(870,1690)" name="Register"> - <a name="width" val="1"/> + <comp lib="4" loc="(110,50)" name="Register"> <a name="trigger" val="falling"/> </comp> - <comp lib="0" loc="(280,320)" name="Constant"/> - <comp lib="0" loc="(1240,680)" name="Constant"> - <a name="width" val="5"/> - <a name="value" val="0x0"/> + <comp lib="0" loc="(80,50)" name="Pin"> + <a name="width" val="8"/> + <a name="tristate" val="false"/> + <a name="label" val="DATA"/> + <a name="labelloc" val="north"/> </comp> - <comp lib="1" loc="(600,600)" name="OR Gate"> + <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="(930,1050)" name="Multiplexer"> + <comp lib="0" loc="(900,820)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="enable" val="false"/> - </comp> - <comp lib="1" loc="(330,1280)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="SP"/> - <a name="negate6" val="true"/> - </comp> - <comp lib="1" loc="(300,1740)" name="OR Gate"> - <a name="facing" val="west"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="0" loc="(220,1610)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="4"/> <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(640,600)" name="OR Gate"> + <comp lib="0" loc="(510,1620)" name="Constant"> <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="width" val="8"/> + <a name="value" val="0x2"/> </comp> - <comp lib="1" loc="(480,510)" name="OR Gate"> + <comp lib="0" loc="(610,1690)" name="Pin"> + <a name="facing" val="north"/> + <a name="output" val="true"/> + <a name="width" val="8"/> + <a name="label" val="IMM VALUE"/> + <a name="labelloc" val="south"/> + </comp> + <comp lib="1" loc="(1210,790)" 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="0" loc="(860,550)" name="Constant"> + <comp lib="2" loc="(890,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,500)" name="Constant"/> - <comp lib="0" loc="(280,670)" name="Constant"/> - <comp lib="2" loc="(930,870)" name="Multiplexer"> - <a name="facing" val="south"/> + <comp lib="2" loc="(290,1450)" name="Multiplexer"> <a name="width" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(880,1610)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> + <comp lib="0" loc="(280,580)" name="Constant"/> + <comp lib="0" loc="(280,1210)" name="Constant"/> + <comp lib="2" loc="(890,870)" name="Multiplexer"> + <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="label" val="B (R)"/> - <a name="labelloc" val="south"/> + <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(280,100)" name="OR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(1200,950)" name="Bit Extender"> + <a name="in_width" val="4"/> + <a name="out_width" val="5"/> </comp> - <comp lib="2" loc="(290,1490)" name="Multiplexer"> + <comp lib="1" loc="(920,1610)" name="OR Gate"> + <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="enable" val="false"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> + <comp lib="0" loc="(280,490)" name="Constant"/> <comp lib="2" loc="(910,1560)" name="Multiplexer"> <a name="facing" val="south"/> <a name="selloc" val="tr"/> <a name="width" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(280,300)" name="Constant"/> - <comp lib="1" loc="(330,200)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="SOP"/> - <a name="negate0" val="true"/> - <a name="negate1" val="true"/> - <a name="negate2" val="true"/> - <a name="negate3" val="true"/> + <comp 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="0" loc="(780,1880)" name="Pin"> + <comp lib="0" loc="(280,330)" name="Constant"/> + <comp lib="0" loc="(880,1610)" name="Pin"> <a name="facing" val="north"/> <a name="output" val="true"/> - <a name="label" val="BRANCH"/> - <a name="labelloc" val="south"/> - </comp> - <comp lib="0" loc="(930,60)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="0" loc="(900,820)" name="Constant"> - <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="value" val="0x0"/> + <a name="label" val="B (R)"/> + <a name="labelloc" val="south"/> </comp> - <comp lib="0" loc="(180,1540)" name="Splitter"> + <comp lib="0" loc="(440,1620)" name="Splitter"> <a name="facing" val="north"/> + <a name="fanout" val="3"/> + <a name="incoming" val="3"/> <a name="appear" val="center"/> </comp> - <comp lib="6" loc="(233,1834)" name="Text"> - <a name="text" val="This input defines the range of MMIO --&gt;"/> - </comp> - <comp lib="2" loc="(890,1050)" name="Multiplexer"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="enable" val="false"/> - </comp> - <comp lib="1" loc="(920,1610)" name="OR Gate"> + <comp lib="1" loc="(520,1140)" name="OR Gate"> <a name="facing" val="south"/> - <a name="width" val="2"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(280,210)" name="Constant"/> - <comp lib="0" loc="(1330,800)" 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="0" loc="(280,310)" name="Constant"/> </circuit> <circuit name="STK"> <a name="circuit" val="STK"/> @@ -4238,194 +4360,194 @@ <wire from="(750,260)" to="(760,260)"/> <wire from="(760,270)" to="(770,270)"/> <wire from="(1250,270)" to="(1270,270)"/> - <comp lib="4" loc="(1460,270)" name="Register"/> - <comp lib="2" loc="(420,260)" name="Multiplexer"> + <comp lib="2" loc="(1410,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(2290,260)" name="Multiplexer"> + <comp lib="2" loc="(3170,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="2" loc="(2510,260)" name="Multiplexer"> + <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="4" loc="(1570,270)" name="Register"/> - <comp lib="4" loc="(470,270)" name="Register"/> - <comp lib="2" loc="(1410,260)" name="Multiplexer"> + <comp lib="2" loc="(750,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(1790,270)" name="Register"/> - <comp lib="2" loc="(3280,260)" name="Multiplexer"> + <comp lib="2" loc="(200,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(3550,270)" name="Register"/> - <comp lib="4" loc="(3330,270)" name="Register"/> - <comp lib="4" loc="(3220,270)" name="Register"/> + <comp lib="4" loc="(1900,270)" name="Register"/> <comp lib="2" loc="(2950,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(250,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="(530,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="(970,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="(1240,270)" name="Register"/> - <comp lib="4" loc="(360,270)" name="Register"/> - <comp lib="2" loc="(750,260)" name="Multiplexer"> - <a name="width" val="8"/> - <a name="enable" val="false"/> + <comp lib="0" loc="(90,360)" name="Pin"> + <a name="tristate" val="false"/> </comp> - <comp lib="4" loc="(3110,270)" name="Register"/> - <comp lib="2" loc="(3390,260)" name="Multiplexer"> + <comp lib="2" loc="(2180,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(2120,270)" name="Register"/> - <comp lib="4" loc="(2780,270)" name="Register"/> - <comp lib="2" loc="(1190,260)" name="Multiplexer"> + <comp lib="4" loc="(3550,270)" name="Register"/> + <comp lib="0" loc="(90,300)" name="Pin"> + <a name="tristate" val="false"/> + </comp> + <comp lib="4" loc="(3220,270)" name="Register"/> + <comp lib="2" loc="(2620,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(2400,260)" name="Multiplexer"> + <comp lib="4" loc="(1460,270)" name="Register"/> + <comp lib="2" loc="(1080,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> + <comp lib="4" loc="(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"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(1520,260)" name="Multiplexer"> + <comp lib="2" loc="(3610,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(3060,260)" name="Multiplexer"> + <comp lib="2" loc="(3280,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(530,260)" name="Multiplexer"> + <comp lib="4" loc="(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"> <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="4" loc="(1020,270)" name="Register"/> - <comp lib="4" loc="(800,270)" name="Register"/> - <comp lib="2" loc="(3500,260)" name="Multiplexer"> + <comp lib="2" loc="(860,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(2230,270)" name="Register"/> - <comp lib="4" loc="(2010,270)" name="Register"/> + <comp lib="4" loc="(250,270)" name="Register"/> + <comp lib="0" loc="(3670,220)" name="Constant"> + <a name="facing" val="west"/> + <a name="width" val="8"/> + <a name="value" val="0x0"/> + </comp> <comp lib="0" loc="(150,220)" name="Pin"> <a name="output" val="true"/> <a name="width" val="8"/> <a name="tristate" val="false"/> <a name="labelloc" val="east"/> </comp> - <comp lib="2" loc="(860,260)" name="Multiplexer"> + <comp lib="4" loc="(1020,270)" name="Register"/> + <comp lib="2" loc="(970,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(1960,260)" name="Multiplexer"> + <comp lib="2" loc="(2510,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(3610,260)" name="Multiplexer"> + <comp lib="2" loc="(310,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(2340,270)" name="Register"/> - <comp lib="2" loc="(1300,260)" name="Multiplexer"> + <comp lib="4" loc="(3000,270)" name="Register"/> + <comp lib="0" loc="(150,270)" name="Pin"> <a name="width" val="8"/> - <a name="enable" val="false"/> - </comp> - <comp lib="4" loc="(1130,270)" name="Register"/> - <comp lib="0" loc="(90,360)" name="Pin"> - <a name="tristate" val="false"/> - </comp> - <comp lib="4" loc="(1900,270)" name="Register"/> - <comp lib="0" loc="(180,320)" name="Pin"> <a name="tristate" val="false"/> </comp> - <comp lib="4" loc="(2670,270)" name="Register"/> - <comp lib="4" loc="(2890,270)" name="Register"/> - <comp lib="2" loc="(2620,260)" name="Multiplexer"> + <comp lib="2" loc="(2290,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(2180,260)" name="Multiplexer"> + <comp lib="2" loc="(1740,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(1850,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="(310,260)" name="Multiplexer"> + <comp lib="2" loc="(3060,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(2070,260)" name="Multiplexer"> + <comp lib="4" loc="(2670,270)" name="Register"/> + <comp lib="2" loc="(3390,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(200,260)" name="Multiplexer"> - <a name="width" val="8"/> - <a name="enable" val="false"/> + <comp lib="4" loc="(3330,270)" name="Register"/> + <comp lib="0" loc="(180,320)" name="Pin"> + <a name="tristate" val="false"/> </comp> - <comp lib="2" loc="(3170,260)" name="Multiplexer"> + <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"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(3660,270)" name="Register"/> - <comp lib="4" loc="(2560,270)" name="Register"/> - <comp lib="2" loc="(2730,260)" name="Multiplexer"> + <comp lib="2" loc="(2400,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(1080,260)" name="Multiplexer"> + <comp lib="4" loc="(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="(690,270)" name="Register"/> - <comp lib="4" loc="(910,270)" name="Register"/> - <comp lib="0" loc="(150,270)" name="Pin"> - <a name="width" val="8"/> - <a name="tristate" val="false"/> - </comp> + <comp lib="4" loc="(1350,270)" name="Register"/> <comp lib="4" loc="(1680,270)" name="Register"/> - <comp lib="4" loc="(3000,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="(1630,260)" name="Multiplexer"> + <comp lib="2" loc="(1300,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(2840,260)" name="Multiplexer"> + <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"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(580,270)" name="Register"/> - <comp lib="4" loc="(1350,270)" name="Register"/> - <comp lib="4" loc="(3440,270)" name="Register"/> - <comp lib="0" loc="(3670,220)" name="Constant"> - <a name="facing" val="west"/> + <comp lib="4" loc="(2340,270)" name="Register"/> + <comp lib="2" loc="(420,260)" name="Multiplexer"> <a name="width" val="8"/> - <a name="value" val="0x0"/> + <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(1740,260)" name="Multiplexer"> + <comp lib="4" loc="(1790,270)" name="Register"/> + <comp lib="4" loc="(2230,270)" name="Register"/> + <comp lib="2" loc="(2840,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> @@ -4438,82 +4560,110 @@ <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,320" width="8" x="56" y="46"/> - <circ-port height="8" pin="140,350" width="8" x="76" y="56"/> - <circ-port height="10" pin="270,360" width="10" x="55" y="75"/> - <circ-port height="8" pin="140,430" width="8" x="46" y="66"/> - <circ-port height="10" pin="360,360" width="10" x="75" y="65"/> - <circ-port height="8" pin="140,380" width="8" x="76" y="76"/> - <circ-port height="8" pin="140,400" width="8" x="66" y="76"/> + <circ-port height="8" pin="140,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="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="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"/> <circ-anchor facing="east" height="6" width="6" x="57" y="77"/> </appear> - <wire from="(140,380)" to="(170,380)"/> - <wire from="(200,380)" to="(230,380)"/> - <wire from="(240,330)" to="(240,400)"/> - <wire from="(140,350)" to="(200,350)"/> - <wire from="(250,330)" to="(250,430)"/> - <wire from="(270,310)" to="(290,310)"/> - <wire from="(340,280)" to="(360,280)"/> - <wire from="(140,320)" to="(190,320)"/> - <wire from="(340,280)" to="(340,320)"/> - <wire from="(170,300)" to="(190,300)"/> - <wire from="(140,430)" to="(250,430)"/> - <wire from="(260,310)" to="(270,310)"/> - <wire from="(330,320)" to="(340,320)"/> - <wire from="(170,280)" to="(340,280)"/> - <wire from="(360,280)" to="(360,360)"/> - <wire from="(220,310)" to="(230,310)"/> - <wire from="(170,280)" to="(170,300)"/> - <wire from="(270,310)" to="(270,360)"/> - <wire from="(200,330)" to="(200,350)"/> - <wire from="(140,400)" to="(240,400)"/> - <wire from="(230,320)" to="(230,380)"/> - <comp lib="6" loc="(101,297)" name="Text"> - <a name="text" val="Jump Address"/> - </comp> - <comp lib="0" loc="(140,400)" name="Pin"> + <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="(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,330)" to="(230,430)"/> + <wire from="(300,310)" to="(320,310)"/> + <wire from="(370,360)" to="(390,360)"/> + <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="(290,310)" to="(300,310)"/> + <wire from="(360,320)" to="(370,320)"/> + <wire from="(380,390)" to="(390,390)"/> + <wire from="(140,360)" to="(150,360)"/> + <wire from="(130,360)" to="(140,360)"/> + <wire from="(200,290)" to="(210,290)"/> + <wire from="(250,310)" to="(260,310)"/> + <wire from="(200,310)" to="(210,310)"/> + <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"> + <a name="width" val="8"/> + </comp> + <comp lib="0" loc="(140,470)" name="Pin"> <a name="tristate" val="false"/> </comp> - <comp lib="3" loc="(330,320)" name="Adder"/> - <comp lib="0" loc="(290,330)" name="Constant"> + <comp lib="0" loc="(320,330)" name="Constant"> <a name="width" val="8"/> </comp> - <comp lib="0" loc="(360,360)" name="Pin"> - <a name="facing" val="west"/> - <a name="output" val="true"/> + <comp lib="0" loc="(130,360)" name="Pin"> <a name="width" val="8"/> - <a name="labelloc" val="east"/> + <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,380)" name="Pin"> + <comp lib="0" loc="(140,500)" name="Pin"> <a name="tristate" val="false"/> </comp> - <comp lib="0" loc="(270,360)" name="Pin"> + <comp lib="0" loc="(390,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="2" loc="(220,310)" name="Multiplexer"> + <comp lib="0" loc="(140,450)" 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"> <a name="width" val="8"/> + <a name="disabled" val="0"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(140,320)" name="Pin"> + <comp lib="0" loc="(390,360)" name="Pin"> + <a name="facing" val="west"/> + <a name="output" val="true"/> <a name="width" val="8"/> - <a name="tristate" val="false"/> + <a name="labelloc" val="east"/> </comp> - <comp lib="0" loc="(140,430)" name="Pin"> + <comp lib="0" loc="(140,300)" name="Pin"> + <a name="width" val="8"/> <a name="tristate" val="false"/> + <a name="label" val="DATA"/> </comp> - <comp lib="6" loc="(79,355)" name="Text"> - <a name="text" val="Jump Enable"/> - </comp> - <comp lib="4" loc="(260,310)" name="Register"> - <a name="trigger" val="falling"/> + <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,350)" name="Pin"> - <a name="tristate" val="false"/> + <comp lib="1" loc="(260,450)" name="NOT Gate"> + <a name="size" val="20"/> </comp> - <comp lib="1" loc="(200,380)" name="NOT Gate"/> </circuit> <circuit name="ExampleConfigurationROM"> <a name="circuit" val="ExampleConfigurationROM"/> @@ -4740,13 +4890,52 @@ <wire from="(560,710)" to="(570,710)"/> <wire from="(550,380)" to="(560,380)"/> <wire from="(650,80)" to="(660,80)"/> - <comp lib="3" loc="(540,360)" name="Comparator"> - <a name="mode" val="unsigned"/> - </comp> <comp lib="1" loc="(810,420)" name="Controlled Buffer"> <a name="facing" val="south"/> <a name="width" val="8"/> </comp> + <comp lib="0" loc="(350,370)" name="Constant"> + <a name="width" val="8"/> + <a name="value" val="0xfe"/> + </comp> + <comp lib="0" loc="(810,400)" name="Pin"> + <a name="facing" val="south"/> + <a name="width" val="8"/> + <a name="tristate" val="false"/> + </comp> + <comp lib="0" loc="(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> + <comp lib="1" loc="(860,820)" name="Controlled Buffer"> + <a name="facing" val="south"/> + <a name="width" val="8"/> + </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"/> @@ -4754,45 +4943,39 @@ <a name="labelloc" val="east"/> <a name="labelfont" val="SansSerif bold 12"/> </comp> - <comp lib="1" loc="(370,420)" name="OR Gate"> - <a name="facing" val="north"/> + <comp lib="1" loc="(600,90)" name="AND Gate"> <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="inputs" val="3"/> </comp> - <comp lib="3" loc="(540,760)" name="Comparator"> - <a name="mode" val="unsigned"/> + <comp lib="6" loc="(656,608)" name="Text"> + <a name="text" val="Output:"/> + <a name="font" val="SansSerif bold 16"/> + <a name="halign" val="left"/> </comp> - <comp lib="1" loc="(860,820)" name="Controlled Buffer"> - <a name="facing" val="south"/> - <a name="width" val="8"/> + <comp lib="6" loc="(883,753)" name="Text"> + <a name="text" val=" ← Keyboard"/> + <a name="font" val="SansSerif bold 16"/> + <a name="halign" val="left"/> </comp> - <comp lib="0" loc="(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 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="4" loc="(820,60)" name="ROM"> - <a name="addrWidth" val="16"/> - <a name="contents">addr/data: 16 8 -43 20 c4 30 43 fc 9f 43 -80 a7 db 83 9 ab 9b 23 -e7 83 21 bf ab f2 43 70 -f7 83 0 2b db 83 2b 83 -3 43 20 f7 83 3 7 10 -de 83 3 43 20 9f 10 de -53 67 6e 69 70 4 a3 df -83 0 10 7 de df 83 49 -a3 a7 f0 30 db 83 3a 83 -0 57 0 a 67 6e 6f 70 -20 43 fc 9f a3 9b d7 83 -0 83 54 -</a> + <comp 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="1" loc="(370,550)" name="OR Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="6" loc="(678,17)" name="Text"> + <a name="text" val="PROGRAM MEMORY"/> + <a name="font" val="SansSerif bold 12"/> + <a name="halign" val="left"/> </comp> <comp lib="0" loc="(680,60)" name="Splitter"> <a name="facing" val="west"/> @@ -4814,92 +4997,105 @@ a3 a7 f0 30 db 83 3a 83 <a name="bit14" val="1"/> <a name="bit15" val="1"/> </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 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="3" loc="(540,20)" name="Comparator"> - <a name="mode" val="unsigned"/> + <comp lib="0" loc="(320,860)" name="Pin"> + <a name="tristate" val="false"/> + <a name="label" val="RESET"/> </comp> - <comp lib="1" loc="(590,510)" name="AND Gate"> + <comp lib="1" loc="(690,720)" name="AND Gate"> <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="inputs" val="3"/> + <a name="negate0" val="true"/> </comp> - <comp lib="0" loc="(320,940)" name="Pin"> - <a name="output" val="true"/> - <a name="label" val="IO ENABLE"/> + <comp loc="(220,130)" name="MCU"/> + <comp lib="1" loc="(370,260)" name="OR Gate"> + <a name="facing" val="north"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="6" loc="(330,773)" name="Text"> + <comp lib="6" loc="(329,514)" name="Text"> <a name="text" val="Memory Mapped I/O Port Address"/> <a name="halign" val="right"/> </comp> - <comp lib="1" loc="(640,510)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="1" loc="(810,560)" name="Controlled Buffer"> + <a name="facing" val="south"/> + <a name="width" val="8"/> </comp> - <comp lib="0" loc="(490,860)" name="Probe"> + <comp lib="0" loc="(680,120)" name="Probe"> <a name="facing" val="west"/> - <a name="radix" val="16"/> - <a name="label" val="Input"/> + <a name="label" val="Real Address"/> <a name="labelloc" val="east"/> - <a name="labelfont" val="SansSerif bold 12"/> + </comp> + <comp lib="1" loc="(860,780)" name="NOT Gate"> + <a name="facing" val="south"/> + <a name="size" val="20"/> </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="0" loc="(570,710)" name="Splitter"> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> + <comp lib="1" loc="(590,510)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(640,780)" name="AND Gate"> + <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="4" loc="(680,360)" name="Register"/> - <comp lib="5" loc="(740,370)" name="Hex Digit Display"/> - <comp lib="0" loc="(810,400)" name="Pin"> + <comp lib="1" loc="(600,770)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </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="6" loc="(678,17)" name="Text"> - <a name="text" val="PROGRAM MEMORY"/> - <a name="font" val="SansSerif bold 12"/> - <a name="halign" val="left"/> + <comp lib="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="0" loc="(680,120)" name="Probe"> - <a name="facing" val="west"/> - <a name="label" val="Real Address"/> - <a name="labelloc" val="east"/> + <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> - <comp lib="3" loc="(540,500)" name="Comparator"> - <a name="mode" val="unsigned"/> - </comp> - <comp lib="0" loc="(320,900)" name="Pin"> - <a name="output" val="true"/> - <a name="label" val="WRITE ACTIVE"/> - </comp> - <comp lib="1" loc="(600,90)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="3"/> - </comp> - <comp loc="(220,130)" name="MCU"/> - <comp lib="5" loc="(730,750)" name="Keyboard"> - <a name="buflen" val="80"/> - <a name="trigger" val="falling"/> - </comp> - <comp lib="6" loc="(382,57)" name="Text"> - <a name="halign" val="right"/> - </comp> - <comp lib="0" loc="(690,400)" name="Splitter"> + <comp lib="0" loc="(690,540)" name="Splitter"> <a name="facing" val="north"/> <a name="incoming" val="8"/> <a name="appear" val="right"/> @@ -4911,136 +5107,103 @@ a3 a7 f0 30 db 83 3a 83 <a name="bit6" val="1"/> <a name="bit7" val="1"/> </comp> - <comp lib="0" loc="(430,60)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0xff"/> - </comp> - <comp lib="3" loc="(540,90)" name="Comparator"> - <a name="mode" val="unsigned"/> - </comp> - <comp lib="1" loc="(640,370)" name="AND Gate"> + <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"> + <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"/> - <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="(810,540)" name="Pin"> - <a name="facing" val="south"/> - <a name="width" val="8"/> - <a name="tristate" val="false"/> + <comp lib="3" loc="(540,90)" name="Comparator"> + <a name="mode" val="unsigned"/> </comp> - <comp lib="6" loc="(329,514)" name="Text"> - <a name="text" val="Memory Mapped I/O Port Address"/> + <comp lib="6" loc="(382,57)" name="Text"> <a name="halign" val="right"/> </comp> - <comp lib="0" loc="(320,860)" name="Pin"> - <a name="tristate" val="false"/> - <a name="label" val="RESET"/> - </comp> <comp lib="0" loc="(320,880)" name="Clock"> <a name="label" val="CLOCK"/> </comp> - <comp lib="5" loc="(700,370)" name="Hex Digit Display"/> - <comp lib="5" loc="(700,510)" name="Hex Digit Display"/> - <comp lib="4" loc="(680,500)" name="Register"/> - <comp lib="5" loc="(730,710)" name="TTY"> - <a name="cols" val="80"/> - <a name="trigger" val="falling"/> + <comp lib="1" loc="(560,710)" name="Controlled Buffer"> + <a name="width" val="8"/> </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="6" loc="(330,773)" name="Text"> + <a name="text" val="Memory Mapped I/O Port Address"/> + <a name="halign" val="right"/> </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 lib="5" loc="(740,370)" name="Hex Digit Display"/> + <comp lib="5" loc="(700,510)" name="Hex Digit Display"/> + <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> - <comp lib="4" loc="(650,80)" name="Register"/> - <comp lib="1" loc="(590,20)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - <a name="negate1" val="true"/> + <comp lib="0" loc="(570,710)" name="Splitter"> + <a name="fanout" val="8"/> + <a name="incoming" val="8"/> </comp> - <comp lib="0" loc="(320,920)" name="Pin"> + <comp lib="3" loc="(540,20)" name="Comparator"> + <a name="mode" val="unsigned"/> + </comp> + <comp lib="0" loc="(320,940)" name="Pin"> <a name="output" val="true"/> - <a name="label" val="IO ACTIVE"/> + <a name="label" val="IO ENABLE"/> </comp> - <comp lib="1" loc="(370,260)" name="OR Gate"> - <a name="facing" val="north"/> + <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"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(590,370)" name="AND Gate"> + <comp lib="1" loc="(640,510)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="5" loc="(740,510)" name="Hex Digit Display"/> - <comp lib="6" loc="(330,373)" name="Text"> - <a name="text" val="Memory Mapped I/O Port Address"/> - <a name="halign" val="right"/> + <comp lib="3" loc="(540,500)" name="Comparator"> + <a name="mode" val="unsigned"/> </comp> - <comp lib="0" loc="(870,760)" name="Splitter"> - <a name="facing" val="south"/> - <a name="fanout" val="7"/> - <a name="incoming" val="7"/> + <comp lib="1" loc="(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="(350,770)" name="Constant"> <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> + <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"/> <a name="fanout" val="7"/> <a name="incoming" val="7"/> <a name="appear" val="right"/> </comp> - <comp lib="1" loc="(690,760)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="3"/> - </comp> - <comp lib="0" loc="(410,60)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0xfc"/> - </comp> - <comp lib="1" loc="(560,710)" name="Controlled Buffer"> - <a name="width" val="8"/> - </comp> - <comp lib="1" loc="(810,560)" name="Controlled Buffer"> - <a name="facing" val="south"/> - <a name="width" 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="0" loc="(350,370)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0xfe"/> - </comp> - <comp lib="1" loc="(600,770)" name="AND Gate"> + <comp lib="1" loc="(590,370)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(860,780)" name="NOT Gate"> - <a name="facing" val="south"/> - <a name="size" val="20"/> - </comp> </circuit> </project> diff --git a/ExamplePrograms/README.md b/ExamplePrograms/README.md @@ -53,7 +53,7 @@ Pop the stack to GRA pop -Program Counter Read - stores program counter value to `GRC` +Program Counter Read - stores program counter value to `GRA` pcr @@ -97,6 +97,14 @@ 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`. + + gtr + +Unconditionally branch to the address in `GRA` + + goto + Increment memory pointer (set with the `sp` instruction) by `1` ptrinc diff --git a/ExamplePrograms/routine_test.tac b/ExamplePrograms/routine_test.tac @@ -0,0 +1,27 @@ +# routine call test +# 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 +# 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 + jmp print +complete: jmp complete +# Print function! +print: pop + mov GRA GRB + sop_and + li 252 + sp GRA +print_loop: pop + cmp GRA GRA + jmp print_done + sb GRA + jmp print_loop +print_done: mov GRB GRA + goto diff --git a/ExamplePrograms/terminal_test.tac b/ExamplePrograms/terminal_test.tac @@ -1,6 +1,6 @@ # This program reads the input from the 'keyboard' component and records in a # buffer until the user presses the return key, at that point it compares the -# buffer with "ping", if the buffer == "ping" then it responds with "pong" +# buffer with 3 unique commands with unique responses ###################### Set up our buffer pointer to live in GRC setup: li 32 mov GRA GRC @@ -48,54 +48,124 @@ bcksp: li 32 op GRC GRA GRC jmp poll ###################### Compare the buffer to our commands -cmpr: li 32 - sp GRA -###################### Compute the length of our stored buffer - sop_sub - op GRC GRA GRC ###################### Specify the string we will be comparing, and the length. ###################### This is in reverse order, as the bytes will be pushed to ###################### the stack. The last byte is the first byte out. ###################### The last byte is the length of the string. -# "ping" - lni 0x67,0x6e,0x69,0x70,0x04 -###################### If the length of our string is greater than the buffer, -###################### just exit immediately. - pop - cmp GRC GRA - jmp setup +############ Respond to 'ping' with 'pong' +##### first off, store our buffer end pointer +cmpr: lli 0x01 + sp GRA + sb GRC +# "ping", length 4 + lni 0x67,0x6e,0x69,0x70,4 + gtr + push + jmp cmpr_f + sop_and +############ If the strings match, print our response, else continue to the next + cmp GRB GRB + jmp n0 +############ load the null-terminated string to print +############ "pong\n\0" + lni 0x00,0x0a,0x67,0x6e,0x6f,0x70 + gtr + push + 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 + jmp cmpr_f + sop_and +############ If the strings match, print our response, else go handle input + cmp GRB GRB + jmp n1 +############ 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 + 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 + jmp cmpr_f + sop_and +############ If the strings match, print our response, else go handle input + cmp GRB GRB + jmp setup +############ load the null-terminated string +############ "bar\n\0" + lni 0x0,0xa,0x72,0x61,0x62 + gtr + push + jmp print + jmp setup +######### compare function +cmpr_f: lli 0x0 + sp GRA + pop + sb GRA + li 32 + sp GRA +######## Compute the length of our stored buffer + sop_sub + op GRC GRA GRC +######## If the length of our string is greater than the buffer, +######## just exit immediately. + pop + cmp GRC GRA + jmp c_fail c_loop: sop_sub -###################### Test if we've reached the end of our comparision buffer. +######## Test if we've reached the end of our comparision buffer. lli 1 op GRC GRA GRC cmp GRC GRA -###################### If we've reached the end and haven't branched out, then -###################### it is a match! - jmp ping -###################### Pop the comparision string and get the buffer byte +######## If we've reached the end and haven't branched out, then +######## it is a match! + jmp c_match +######## Pop the comparision string and get the buffer byte pop lb GRB -###################### Increment our buffer pointer +######## Increment our buffer pointer ptrinc -###################### If the bytes match, continue looping +######## If the bytes match, continue looping sop_xor cmp GRB GRA jmp c_loop -###################### If the bytes don't match, we quit - jmp setup -###################### Respond to 'ping' with 'pong' -###################### First, load the null-terminated string -# "pong\n\0" -ping: lni 0x00,0x0a,0x67,0x6e,0x6f,0x70 -###################### To test if a byte is null, we compare the byte to itself -###################### with a bitwise AND. - sop_and -###################### Set our output location - li 252 +######## If the bytes don't match, we quit +c_fail: lli 0x00 + mov GRA GRB sp GRA -###################### Print our response string until we've reached the null -p_l: pop - sb GRA - cmp GRA GRA - jmp setup - jmp p_l + lb GRA + goto +c_match: lli 0x01 + move GRA GRB + lli 0x00 + sp GRA + lb GRA + goto +print: pop + mov GRA GRB + sop_and + li 252 + sp GRA +print_loop: pop + cmp GRA GRA + jmp print_done + sb GRA + jmp print_loop +print_done: mov GRB GRA + goto diff --git a/ExamplePrograms/weird_loop_test.tac b/ExamplePrograms/weird_loop_test.tac @@ -9,7 +9,8 @@ start: nop nop nop pcr - lli 4 + mov GRA GRC + lli 5 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.0 + \|__| \|__| |\_________\ \|_______| v2.1 \|_________| -----------------------------------------------------------------------<-------- @@ -21,6 +21,8 @@ RAW - memonic - description 01010000 - SOP_CIN ----- SetOp CIN, CMP will A+B+1 and flag if overflow 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 11110000 - PTRINC ----- Increment pointer by 1 C B A 00 - OR ----- C = A | B C B A 01 - NAND ----- C = A nand B @@ -32,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 GRC +10110011 - PCR ----- Get current line and save to register 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_0.png) +![TISC v2.0](Screenshots/tiscv2_1.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_0_example.png) +![TISC Example configuration](Screenshots/tiscv2_1_example.png) ## Compiling the assembler @@ -32,8 +32,8 @@ program that is ready to load into the Logisim circuit. A successful output will appear like this: - $ tisc fibb_test.tac out - Assembling tac file: 'fibb_test.tac' + $ 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 @@ -52,7 +52,7 @@ A successful output will appear like this: 022 [0x0f]: jmp loop 024 [0x11]: sb GRB 025 [0x12]:end jmp end - Finished assembling tac file: 'fibb_test.tac', program size: 20 bytes + Finished assembling tac file: 'ExamplePrograms/fibb_test.tac', program size: 20 bytes ## Loading a program diff --git a/Screenshots/tiscv2_0.png b/Screenshots/tiscv2_0.png Binary files differ. diff --git a/Screenshots/tiscv2_0_example.png b/Screenshots/tiscv2_0_example.png Binary files differ. diff --git a/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/tisc.c b/tisc.c @@ -3,7 +3,7 @@ #include <stdint.h> #include <string.h> -#define TOT_INSTRUCTIONS 26 +#define TOT_INSTRUCTIONS 28 #define MAX_SYMBOLS 1000 #define MAX_SYMBOL_LEN 100 #define MAX_LINE_LEN 100 @@ -95,7 +95,7 @@ int label_address(const char *label) for (i = 0; i < validSymbols; i++) { - if (strncmp(symbols[i], label, strlen(symbols[i])) == 0) + if (strcmp(symbols[i], label) == 0) { address = addresses[i]; break; @@ -111,7 +111,7 @@ void update_label(const char* label, int address) for (i = 0; i < validSymbols; i++) { - if (strncmp(symbols[i], label, strlen(symbols[i])) == 0) + if (strcmp(symbols[i], label) == 0) { addresses[i] = address; break; @@ -445,6 +445,8 @@ InstructionDefinition_t definitions[TOT_INSTRUCTIONS] = { "sop_cin", 0, 1, 0x50, assemble_0arg }, { "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 }, { "ptrinc", 0, 1, 0xF0, assemble_0arg }, { "lli", 1, 1, 0x03, assemble_lli }, { "lni", 1, 1, 0x43, assemble_lni }, @@ -727,7 +729,7 @@ int main(int argc, char *argv[]) printf("Error opening file '%s'\n", output); goto DITCH; } - printf("Assembling tac file: '%s' TISC v2.0\n", input); + printf("Assembling tac file: '%s' TISC v2.1\n", input); while (parse(&line_number, inputf, line, &label, &opcodes, args)) {