tisc

tiny instruction set computer
Log | Files | Refs | README

commit 8cca4420017e7704fb7d02cfc88b341f936804c9
parent 39719314755e79b7058fba07f85d5f93de15489b
Author: Paul Longtine <paul@nanner.co>
Date:   Sat, 18 Jun 2022 17:32:54 -0400

TISCv1.4 Implement a "write active" pin

This write active pin goes high when the current instruction is writing out to
memory. This allows the MMIO to differentiate between a read and a write.

Diffstat:
MCPU/CPU.circ | 3357++++++++++++++++++++++++++++++++++++++++---------------------------------------
MINSTRUCTION_SET | 3+--
MREADME.md | 4++--
DScreenshots/tiscv1_3.png | 0
DScreenshots/tiscv1_3_example.png | 0
AScreenshots/tiscv1_4.png | 0
AScreenshots/tiscv1_4_example.png | 0
7 files changed, 1710 insertions(+), 1654 deletions(-)

diff --git a/CPU/CPU.circ b/CPU/CPU.circ @@ -74,222 +74,231 @@ <a name="clabelfont" val="SansSerif plain 12"/> <appear> <path d="M53,12 Q57,22 61,12" fill="none" stroke="#808080" stroke-width="2"/> - <rect fill="none" height="137" stroke="#000000" stroke-width="2" width="120" x="40" y="11"/> - <rect fill="#707070" height="137" stroke="#000000" width="120" x="40" y="10"/> - <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="101" y="126">tisc v1.3</text> - <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="152" y="44">IO ENABLE</text> - <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="151" y="62">INPUT</text> - <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="153" y="82">ADDRESS</text> - <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="154" y="102">OUTPUT</text> - <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="155" y="123">CLK</text> - <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="154" y="142">RST</text> + <rect fill="none" height="161" stroke="#000000" stroke-width="2" width="120" x="40" y="11"/> + <rect fill="#707070" height="160" stroke="#000000" width="119" x="40" y="10"/> + <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="86" y="159">tisc v1.4</text> + <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="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> + <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="152" y="105">OUTPUT</text> + <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="150" y="144">CLK</text> + <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="152" y="163">RST</text> <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="152" y="24">IO ACTIVE</text> - <circ-port height="8" pin="480,340" width="8" x="156" y="36"/> - <circ-port height="8" pin="420,360" width="8" x="156" y="56"/> - <circ-port height="10" pin="420,380" width="10" x="155" y="75"/> - <circ-port height="10" pin="420,400" width="10" x="155" y="95"/> - <circ-port height="8" pin="480,420" width="8" x="156" y="116"/> - <circ-port height="8" pin="480,440" width="8" x="156" y="136"/> - <circ-port height="10" pin="480,320" width="10" x="155" y="15"/> + <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="152" y="64">WRITE ACTIVE</text> + <circ-port height="8" pin="510,320" width="8" x="156" y="36"/> + <circ-port height="8" pin="450,360" width="8" x="156" y="76"/> + <circ-port height="10" pin="450,400" width="10" x="155" y="115"/> + <circ-port height="10" pin="450,380" width="10" x="155" y="95"/> + <circ-port height="8" pin="510,420" width="8" x="156" y="136"/> + <circ-port height="8" pin="510,440" width="8" x="156" y="156"/> + <circ-port height="10" pin="510,300" width="10" x="155" y="15"/> + <circ-port height="10" pin="510,340" width="10" x="155" y="55"/> <circ-anchor facing="east" height="6" width="6" x="157" y="37"/> </appear> <wire from="(350,140)" to="(350,210)"/> <wire from="(340,40)" to="(340,180)"/> <wire from="(230,150)" to="(230,160)"/> + <wire from="(460,340)" to="(510,340)"/> + <wire from="(480,200)" to="(480,220)"/> <wire from="(170,210)" to="(170,230)"/> - <wire from="(330,200)" to="(440,200)"/> - <wire from="(440,200)" to="(440,230)"/> <wire from="(220,130)" to="(220,220)"/> <wire from="(140,110)" to="(180,110)"/> <wire from="(260,220)" to="(260,250)"/> - <wire from="(270,360)" to="(310,360)"/> <wire from="(220,100)" to="(220,130)"/> + <wire from="(460,250)" to="(460,340)"/> <wire from="(230,250)" to="(260,250)"/> - <wire from="(210,350)" to="(240,350)"/> <wire from="(350,340)" to="(350,440)"/> - <wire from="(330,190)" to="(360,190)"/> <wire from="(260,130)" to="(280,130)"/> <wire from="(190,30)" to="(190,70)"/> <wire from="(220,60)" to="(220,100)"/> <wire from="(320,80)" to="(320,120)"/> - <wire from="(380,260)" to="(380,300)"/> <wire from="(180,210)" to="(200,210)"/> <wire from="(200,120)" to="(200,170)"/> + <wire from="(500,300)" to="(510,300)"/> <wire from="(210,110)" to="(290,110)"/> + <wire from="(380,300)" to="(390,300)"/> <wire from="(220,220)" to="(230,220)"/> <wire from="(350,20)" to="(350,140)"/> + <wire from="(210,230)" to="(210,420)"/> + <wire from="(410,240)" to="(410,360)"/> + <wire from="(500,170)" to="(500,300)"/> <wire from="(190,70)" to="(250,70)"/> <wire from="(190,80)" to="(190,90)"/> <wire from="(250,220)" to="(250,230)"/> <wire from="(180,190)" to="(230,190)"/> <wire from="(300,150)" to="(300,160)"/> <wire from="(260,150)" to="(260,160)"/> - <wire from="(460,170)" to="(460,320)"/> <wire from="(160,30)" to="(160,180)"/> + <wire from="(480,240)" to="(480,320)"/> <wire from="(140,20)" to="(140,110)"/> <wire from="(170,230)" to="(210,230)"/> <wire from="(210,230)" to="(250,230)"/> - <wire from="(440,340)" to="(480,340)"/> <wire from="(160,30)" to="(190,30)"/> - <wire from="(360,30)" to="(360,190)"/> <wire from="(290,80)" to="(320,80)"/> - <wire from="(350,260)" to="(380,260)"/> + <wire from="(400,30)" to="(400,190)"/> <wire from="(220,220)" to="(220,320)"/> <wire from="(260,140)" to="(280,140)"/> <wire from="(330,210)" to="(350,210)"/> - <wire from="(400,360)" to="(420,360)"/> <wire from="(160,210)" to="(160,250)"/> <wire from="(140,20)" to="(350,20)"/> + <wire from="(190,30)" to="(400,30)"/> + <wire from="(420,230)" to="(430,230)"/> <wire from="(230,40)" to="(230,90)"/> <wire from="(200,210)" to="(200,260)"/> <wire from="(140,200)" to="(140,440)"/> <wire from="(330,180)" to="(340,180)"/> <wire from="(210,100)" to="(220,100)"/> + <wire from="(320,370)" to="(320,420)"/> + <wire from="(390,240)" to="(390,300)"/> <wire from="(190,120)" to="(190,180)"/> - <wire from="(170,380)" to="(420,380)"/> <wire from="(190,80)" to="(250,80)"/> + <wire from="(320,420)" to="(510,420)"/> <wire from="(180,240)" to="(180,250)"/> <wire from="(250,150)" to="(250,160)"/> <wire from="(180,200)" to="(230,200)"/> <wire from="(290,150)" to="(290,160)"/> <wire from="(290,110)" to="(290,120)"/> - <wire from="(350,250)" to="(350,260)"/> <wire from="(230,40)" to="(340,40)"/> - <wire from="(170,300)" to="(170,380)"/> - <wire from="(190,30)" to="(360,30)"/> + <wire from="(210,420)" to="(320,420)"/> + <wire from="(330,170)" to="(500,170)"/> <wire from="(240,220)" to="(240,240)"/> <wire from="(140,110)" to="(140,200)"/> <wire from="(190,180)" to="(230,180)"/> - <wire from="(440,250)" to="(440,340)"/> + <wire from="(410,360)" to="(450,360)"/> <wire from="(220,60)" to="(250,60)"/> - <wire from="(370,250)" to="(400,250)"/> - <wire from="(400,250)" to="(400,360)"/> + <wire from="(350,440)" to="(510,440)"/> + <wire from="(480,320)" to="(510,320)"/> + <wire from="(170,300)" to="(170,400)"/> <wire from="(330,140)" to="(350,140)"/> - <wire from="(430,250)" to="(440,250)"/> + <wire from="(170,400)" to="(450,400)"/> <wire from="(140,200)" to="(150,200)"/> - <wire from="(230,370)" to="(240,370)"/> <wire from="(170,300)" to="(240,300)"/> - <wire from="(220,400)" to="(420,400)"/> - <wire from="(330,170)" to="(460,170)"/> - <wire from="(210,350)" to="(210,420)"/> + <wire from="(220,320)" to="(220,380)"/> <wire from="(180,240)" to="(240,240)"/> <wire from="(240,150)" to="(240,160)"/> <wire from="(320,150)" to="(320,160)"/> - <wire from="(310,340)" to="(310,360)"/> - <wire from="(220,320)" to="(220,400)"/> + <wire from="(400,190)" to="(400,210)"/> <wire from="(170,280)" to="(170,300)"/> - <wire from="(360,190)" to="(360,220)"/> + <wire from="(220,380)" to="(450,380)"/> <wire from="(200,170)" to="(230,170)"/> <wire from="(200,210)" to="(230,210)"/> - <wire from="(380,240)" to="(400,240)"/> - <wire from="(460,320)" to="(480,320)"/> + <wire from="(460,240)" to="(480,240)"/> <wire from="(140,440)" to="(350,440)"/> <wire from="(230,90)" to="(250,90)"/> <wire from="(220,320)" to="(240,320)"/> - <wire from="(210,420)" to="(480,420)"/> + <wire from="(330,200)" to="(480,200)"/> + <wire from="(470,220)" to="(480,220)"/> <wire from="(220,130)" to="(230,130)"/> <wire from="(190,260)" to="(200,260)"/> <wire from="(270,100)" to="(270,160)"/> + <wire from="(230,370)" to="(300,370)"/> <wire from="(230,250)" to="(230,370)"/> <wire from="(210,110)" to="(210,230)"/> - <wire from="(210,230)" to="(210,350)"/> - <wire from="(350,440)" to="(480,440)"/> - <comp lib="0" loc="(480,420)" name="Pin"> + <wire from="(260,250)" to="(460,250)"/> + <wire from="(330,190)" to="(400,190)"/> + <comp loc="(160,210)" name="PC"/> + <comp lib="0" loc="(450,380)" name="Pin"> <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="CLK"/> + <a name="label" val="OUT"/> <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 lib="0" loc="(510,440)" name="Pin"> + <a name="facing" val="west"/> + <a name="tristate" val="false"/> + <a name="pull" val="down"/> + <a name="label" val="RST"/> + <a name="labelloc" val="east"/> </comp> - <comp lib="2" loc="(360,220)" name="Multiplexer"> + <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="1" loc="(400,240)" name="AND Gate"> + <comp lib="0" loc="(290,340)" name="Constant"> + <a name="facing" val="north"/> + </comp> + <comp lib="0" loc="(450,400)" name="Pin"> <a name="facing" val="west"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - <a name="negate0" val="true"/> + <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 loc="(280,150)" name="GPR"/> + <comp loc="(230,170)" name="ISD"/> + <comp loc="(200,90)" name="STK"/> + <comp lib="4" loc="(380,300)" name="RAM"> + <a name="bus" val="separate"/> + </comp> + <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="(260,130)" name="ALU"/> <comp lib="2" loc="(170,280)" name="Multiplexer"> <a name="facing" val="south"/> <a name="selloc" val="tr"/> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(420,360)" name="Pin"> + <comp lib="1" loc="(430,230)" name="AND Gate"> <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 loc="(200,90)" name="STK"/> - <comp lib="0" loc="(290,340)" name="Constant"> - <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="(480,340)" name="Pin"> + <comp lib="0" loc="(510,420)" name="Pin"> <a name="facing" val="west"/> <a name="tristate" val="false"/> <a name="pull" val="down"/> - <a name="label" val="IO ENABLE"/> + <a name="label" val="CLK"/> <a name="labelloc" val="east"/> </comp> - <comp loc="(230,170)" name="ISD"/> - <comp lib="1" loc="(270,360)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="0" loc="(480,320)" name="Pin"> + <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="0" loc="(420,380)" name="Pin"> + <comp lib="1" loc="(310,340)" name="AND Gate"> + <a name="facing" val="north"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="0" loc="(510,340)" name="Pin"> <a name="facing" val="west"/> <a name="output" val="true"/> - <a name="width" val="8"/> - <a name="tristate" val="false"/> - <a name="pull" val="down"/> - <a name="label" val="ADDR"/> + <a name="label" val="WRITE ACTIVE"/> <a name="labelloc" val="east"/> </comp> - <comp lib="0" loc="(420,400)" name="Pin"> + <comp loc="(260,130)" name="ALU"/> + <comp lib="0" loc="(450,360)" name="Pin"> <a name="facing" val="west"/> - <a name="output" val="true"/> <a name="width" val="8"/> <a name="tristate" val="false"/> <a name="pull" val="down"/> - <a name="label" val="OUT"/> + <a name="label" val="IN"/> <a name="labelloc" val="east"/> </comp> - <comp lib="4" loc="(380,300)" name="RAM"> - <a name="bus" val="separate"/> - </comp> - <comp lib="6" loc="(290,239)" name="Text"/> <comp lib="6" loc="(303,244)" name="Text"> <a name="text" val="TISCv1.3"/> <a name="font" val="Dialog plain 14"/> </comp> - <comp loc="(160,210)" name="PC"/> - <comp lib="0" loc="(480,440)" name="Pin"> + <comp lib="6" loc="(290,239)" name="Text"/> + <comp lib="0" loc="(510,320)" name="Pin"> <a name="facing" val="west"/> <a name="tristate" val="false"/> <a name="pull" val="down"/> - <a name="label" val="RST"/> + <a name="label" val="IO ENABLE"/> <a name="labelloc" val="east"/> </comp> - <comp loc="(280,150)" name="GPR"/> </circuit> <circuit name="ALU"> <a name="circuit" val="ALU"/> @@ -659,742 +668,680 @@ <wire from="(770,200)" to="(780,200)"/> <wire from="(530,280)" to="(540,280)"/> <wire from="(870,100)" to="(870,150)"/> - <comp lib="1" loc="(280,650)" name="OR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="0" loc="(550,70)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b2"/> - </comp> - <comp lib="6" loc="(476,260)" name="Text"> - <a name="text" val="Output"/> + <comp lib="2" loc="(820,90)" name="Multiplexer"> + <a name="width" val="8"/> + <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(190,490)" name="XOR Gate"> + <comp lib="1" loc="(190,550)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(310,150)" name="OR Gate"> - <a name="facing" val="west"/> + <comp lib="1" loc="(340,550)" name="XNOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </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="0" loc="(390,370)" name="Tunnel"> - <a name="label" val="o3"/> - </comp> <comp lib="0" loc="(390,640)" name="Tunnel"> <a name="label" val="o6"/> </comp> - <comp lib="0" loc="(710,320)" name="Splitter"> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> - </comp> - <comp lib="0" loc="(780,180)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0x0"/> + <comp lib="0" loc="(670,270)" name="Tunnel"> + <a name="label" val="o3"/> </comp> - <comp lib="1" loc="(300,180)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="1" loc="(190,280)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(330,580)" name="AND Gate"> + <comp lib="1" loc="(270,320)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(670,270)" name="Tunnel"> - <a name="label" val="o3"/> + <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="2" loc="(820,90)" name="Multiplexer"> - <a name="width" val="8"/> - <a name="enable" val="false"/> + <comp lib="0" loc="(740,380)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="!A"/> </comp> - <comp lib="0" loc="(390,190)" name="Tunnel"> - <a name="label" val="o1"/> + <comp lib="1" loc="(190,220)" name="XOR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(310,690)" name="OR Gate"> - <a name="facing" val="west"/> + <comp lib="1" loc="(300,780)" 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 lib="1" loc="(830,280)" name="OR Gate"> + <a name="size" val="70"/> + <a name="inputs" val="8"/> </comp> - <comp lib="0" loc="(640,440)" name="Constant"/> - <comp lib="6" loc="(472,443)" name="Text"> - <a name="text" val="ALU STATE"/> + <comp lib="1" loc="(190,640)" name="XOR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(670,250)" name="Tunnel"> - <a name="label" val="o1"/> + <comp lib="1" loc="(190,760)" name="XOR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(130,660)" name="Tunnel"> + <comp lib="0" loc="(780,100)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a6"/> - </comp> - <comp lib="0" loc="(570,40)" name="Pin"> - <a name="facing" val="west"/> <a name="width" val="8"/> - <a name="tristate" val="false"/> - </comp> - <comp lib="0" loc="(550,50)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b0"/> + <a name="label" val="A"/> </comp> - <comp lib="0" loc="(650,320)" name="Splitter"> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> + <comp lib="1" loc="(300,450)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> <comp lib="2" loc="(810,190)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(240,130)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="1" loc="(300,690)" name="AND Gate"> + <comp lib="1" loc="(300,270)" name="OR Gate"> + <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(270,140)" name="AND Gate"> + <comp lib="1" loc="(280,110)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> - </comp> - <comp lib="1" loc="(830,280)" name="OR Gate"> - <a name="size" val="70"/> - <a name="inputs" val="8"/> </comp> - <comp lib="3" loc="(930,70)" name="BitAdder"/> - <comp lib="1" loc="(300,450)" name="OR Gate"> + <comp lib="0" loc="(330,850)" name="Constant"> <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(300,330)" 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="(680,100)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a5"/> - </comp> - <comp lib="0" loc="(130,720)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b7"/> - </comp> - <comp lib="0" loc="(550,100)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b5"/> - </comp> - <comp lib="1" loc="(280,740)" name="OR Gate"> - <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="B"/> </comp> - <comp lib="1" loc="(310,330)" name="OR Gate"> - <a name="facing" val="west"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(790,80)" name="Constant"> + <a name="width" val="8"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(130,90)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b0"/> + <comp lib="0" loc="(670,280)" name="Tunnel"> + <a name="label" val="o4"/> </comp> - <comp lib="1" loc="(280,380)" name="OR Gate"> + <comp lib="1" loc="(300,330)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(300,720)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="1" loc="(340,100)" name="XNOR 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="1" loc="(280,650)" name="OR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="4" loc="(730,400)" name="ROM"> - <a name="addrWidth" val="3"/> - <a name="dataWidth" val="6"/> - <a name="contents">addr/data: 3 6 -8 3b 4 0 2 38 7 12 + <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="(280,200)" name="OR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(650,320)" name="Splitter"> + <a name="fanout" val="8"/> + <a name="incoming" val="8"/> </comp> <comp lib="0" loc="(750,380)" name="Tunnel"> <a name="facing" val="south"/> <a name="label" val="!B"/> </comp> - <comp lib="0" loc="(680,60)" name="Tunnel"> + <comp lib="0" loc="(130,390)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a1"/> + <a name="label" val="a3"/> </comp> - <comp lib="1" loc="(300,270)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="0" loc="(130,750)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a7"/> + </comp> + <comp lib="1" loc="(240,490)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(680,80)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a3"/> + <comp lib="0" loc="(340,850)" name="Constant"> + <a name="facing" val="south"/> + <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(190,640)" name="XOR Gate"> + <comp lib="1" loc="(240,580)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(130,300)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a2"/> - </comp> - <comp lib="1" loc="(240,400)" 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="0" loc="(700,40)" name="Splitter"> + <comp lib="0" loc="(570,40)" name="Pin"> <a name="facing" val="west"/> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> - </comp> - <comp lib="0" loc="(320,890)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> + <a name="width" val="8"/> <a name="tristate" val="false"/> - <a name="labelloc" val="east"/> - </comp> - <comp lib="1" loc="(750,490)" name="OR Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> </comp> <comp lib="1" loc="(250,280)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(190,460)" name="XOR Gate"> + <comp lib="0" loc="(550,80)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b3"/> + </comp> + <comp lib="1" loc="(750,490)" name="OR Gate"> + <a name="facing" val="north"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(220,70)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="OR"/> - </comp> - <comp lib="1" loc="(330,670)" name="AND Gate"> + <comp lib="1" loc="(270,140)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(130,210)" name="Tunnel"> + <comp lib="0" loc="(130,120)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a0"/> + </comp> + <comp lib="0" loc="(680,60)" name="Tunnel"> <a name="facing" val="east"/> <a name="label" val="a1"/> </comp> - <comp lib="1" loc="(300,240)" name="AND Gate"> + <comp lib="1" loc="(280,200)" name="OR 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="1" loc="(340,730)" name="XNOR Gate"> <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,460)" name="Tunnel"> + <a name="label" val="o4"/> + </comp> + <comp lib="1" loc="(240,670)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(330,310)" name="AND Gate"> + <comp lib="1" loc="(240,220)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(260,70)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="CC"/> + <comp lib="0" loc="(550,60)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b1"/> </comp> - <comp lib="1" loc="(340,370)" name="XNOR Gate"> + <comp lib="0" loc="(700,40)" name="Pin"> + <a name="facing" val="west"/> + <a name="width" val="8"/> + <a name="tristate" val="false"/> + </comp> + <comp lib="0" loc="(780,180)" name="Constant"> + <a name="width" val="8"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="1" loc="(270,590)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - </comp> - <comp lib="0" loc="(550,80)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b3"/> + <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> - <comp lib="0" loc="(570,40)" name="Splitter"> - <a name="facing" val="west"/> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> + <comp lib="0" loc="(390,370)" name="Tunnel"> + <a name="label" val="o3"/> </comp> - <comp lib="1" loc="(330,130)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - <a name="negate1" val="true"/> + <comp lib="0" loc="(680,120)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a7"/> </comp> - <comp lib="1" loc="(310,600)" name="OR Gate"> - <a name="facing" val="west"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(340,70)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="FC"/> </comp> - <comp lib="0" loc="(730,400)" name="Splitter"> - <a name="facing" val="north"/> - <a name="fanout" val="6"/> - <a name="incoming" val="6"/> + <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="(340,730)" 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="(670,260)" name="Tunnel"> - <a name="label" val="o2"/> + <comp lib="6" loc="(481,532)" name="Text"> + <a name="text" val="DYN OP"/> </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,110)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a6"/> - </comp> - <comp lib="6" loc="(602,74)" name="Text"> - <a name="text" val="Input B"/> - </comp> - <comp lib="1" loc="(190,550)" name="XOR Gate"> + <comp lib="1" loc="(250,460)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(550,120)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b7"/> - </comp> - <comp lib="0" loc="(130,540)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b5"/> + <comp lib="0" loc="(640,440)" name="Constant"/> + <comp lib="0" loc="(390,190)" name="Tunnel"> + <a name="label" val="o1"/> </comp> - <comp lib="1" loc="(240,760)" name="AND Gate"> + <comp lib="1" loc="(190,490)" name="XOR 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="(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="(130,180)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b1"/> + <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="(390,460)" name="Tunnel"> - <a name="label" val="o4"/> + <comp lib="6" loc="(602,74)" name="Text"> + <a name="text" val="Input B"/> </comp> - <comp lib="1" loc="(190,370)" name="XOR Gate"> + <comp lib="1" loc="(190,100)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(390,550)" name="Tunnel"> - <a name="label" val="o5"/> + <comp lib="1" loc="(250,550)" name="NOR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(310,780)" name="OR Gate"> - <a name="facing" val="west"/> + <comp lib="1" loc="(250,100)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(300,630)" name="OR Gate"> + <comp lib="0" loc="(760,380)" name="Tunnel"> <a name="facing" val="south"/> + <a name="label" val="OR"/> + </comp> + <comp lib="1" loc="(340,190)" name="XNOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(340,460)" name="XNOR Gate"> + <comp lib="0" loc="(390,730)" name="Tunnel"> + <a name="label" val="o7"/> + </comp> + <comp lib="1" loc="(310,240)" name="OR Gate"> + <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(300,780)" name="AND Gate"> + <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="(250,370)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="6" loc="(498,373)" name="Text"> - <a name="text" val="STATIC OPCODE"/> + <comp lib="6" loc="(736,75)" name="Text"> + <a name="text" val="Input A"/> </comp> - <comp lib="1" loc="(270,410)" name="AND Gate"> + <comp lib="1" loc="(190,400)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> - </comp> - <comp lib="0" loc="(810,200)" name="Splitter"> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> </comp> - <comp lib="3" loc="(1060,80)" name="Comparator"> - <a name="width" val="4"/> + <comp lib="0" loc="(130,450)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b4"/> </comp> - <comp lib="0" loc="(130,120)" name="Tunnel"> + <comp lib="0" loc="(680,50)" name="Tunnel"> <a name="facing" val="east"/> <a name="label" val="a0"/> </comp> - <comp lib="1" loc="(270,770)" name="AND Gate"> + <comp lib="1" loc="(300,240)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(190,580)" name="XOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(570,40)" name="Splitter"> + <a name="facing" val="west"/> + <a name="fanout" val="8"/> + <a name="incoming" val="8"/> </comp> - <comp lib="1" loc="(340,550)" name="XNOR Gate"> + <comp lib="1" loc="(270,410)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(740,380)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="!A"/> - </comp> - <comp lib="1" loc="(240,490)" name="AND Gate"> + <comp lib="1" loc="(240,760)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(250,190)" name="NOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <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="(250,460)" name="NOR Gate"> + <comp lib="1" loc="(190,670)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(330,220)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - <a name="negate1" val="true"/> + <comp lib="0" loc="(670,240)" name="Tunnel"> + <a name="label" val="o0"/> </comp> - <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 lib="0" loc="(130,300)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a2"/> </comp> - <comp lib="1" loc="(250,730)" name="NOR Gate"> + <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,300)" name="Tunnel"> - <a name="label" val="o6"/> + <comp lib="6" loc="(617,355)" name="Text"> + <a name="text" val="Opcodes"/> + </comp> + <comp lib="6" loc="(498,373)" name="Text"> + <a name="text" val="STATIC OPCODE"/> </comp> <comp lib="0" loc="(390,280)" name="Tunnel"> <a name="label" val="o2"/> </comp> - <comp lib="0" loc="(680,20)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="width" val="8"/> - <a name="label" val="A"/> + <comp lib="0" loc="(710,320)" name="Splitter"> + <a name="fanout" val="8"/> + <a name="incoming" val="8"/> </comp> - <comp lib="0" loc="(130,270)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b2"/> + <comp lib="3" loc="(1060,80)" name="Comparator"> + <a name="width" val="4"/> </comp> - <comp lib="3" loc="(1000,90)" name="BitAdder"/> - <comp lib="1" loc="(280,560)" name="OR Gate"> + <comp lib="0" loc="(500,550)" name="Pin"> + <a name="width" val="4"/> + <a name="tristate" val="false"/> + </comp> + <comp lib="1" loc="(270,500)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(340,190)" name="XNOR 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,480)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a4"/> - </comp> - <comp lib="1" loc="(300,810)" name="OR Gate"> + <comp lib="0" loc="(260,70)" name="Tunnel"> <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="label" val="CC"/> </comp> <comp lib="0" loc="(300,70)" name="Tunnel"> <a name="facing" val="south"/> <a name="label" val="CI"/> </comp> - <comp lib="2" loc="(320,890)" name="Multiplexer"> - <a name="facing" val="south"/> - <a name="selloc" val="tr"/> - <a name="select" val="2"/> - <a name="enable" val="false"/> + <comp lib="3" loc="(930,160)" name="Shifter"> + <a name="shift" val="lr"/> </comp> - <comp lib="1" loc="(560,300)" name="AND Gate"> - <a name="facing" val="north"/> + <comp lib="0" loc="(680,100)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a5"/> + </comp> + <comp lib="1" loc="(300,540)" name="OR Gate"> + <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(130,360)" name="Tunnel"> + <comp lib="0" loc="(130,210)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b3"/> + <a name="label" val="a1"/> </comp> - <comp lib="1" loc="(330,490)" name="AND Gate"> + <comp lib="1" loc="(190,370)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(280,290)" name="OR Gate"> + <comp lib="0" loc="(670,310)" name="Tunnel"> + <a name="label" val="o7"/> + </comp> + <comp lib="1" loc="(300,600)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(310,240)" name="OR Gate"> - <a name="facing" val="west"/> + <comp lib="1" loc="(340,370)" name="XNOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(240,220)" name="AND Gate"> + <comp lib="1" loc="(270,680)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(300,510)" name="AND Gate"> + <comp lib="1" loc="(330,310)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="6" loc="(736,75)" name="Text"> - <a name="text" val="Input A"/> - </comp> - <comp lib="0" loc="(510,390)" name="Pin"> - <a name="width" val="3"/> - <a name="tristate" val="false"/> - </comp> - <comp lib="0" loc="(130,390)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a3"/> + <comp lib="1" loc="(240,400)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(680,70)" name="Tunnel"> + <comp lib="0" loc="(550,120)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a2"/> + <a name="label" val="b7"/> </comp> - <comp lib="1" loc="(250,100)" name="NOR 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="(770,200)" name="Tunnel"> + <comp lib="0" loc="(550,70)" name="Tunnel"> <a name="facing" val="east"/> - <a name="width" val="8"/> - <a name="label" val="B"/> - </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"/> + <a name="label" val="b2"/> </comp> - <comp lib="0" loc="(130,750)" name="Tunnel"> + <comp lib="0" loc="(680,20)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a7"/> + <a name="width" val="8"/> + <a name="label" val="A"/> </comp> - <comp lib="0" loc="(130,450)" name="Tunnel"> + <comp lib="0" loc="(130,720)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b4"/> - </comp> - <comp lib="0" loc="(180,70)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="!B"/> - </comp> - <comp lib="1" loc="(190,100)" name="XOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="0" loc="(790,80)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0x0"/> + <a name="label" val="b7"/> </comp> - <comp lib="1" loc="(280,110)" name="OR Gate"> + <comp lib="1" loc="(330,760)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(790,380)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="FC"/> + <comp lib="6" loc="(476,260)" name="Text"> + <a name="text" val="Output"/> </comp> - <comp lib="0" loc="(680,50)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a0"/> + <comp lib="0" loc="(670,300)" name="Tunnel"> + <a name="label" val="o6"/> </comp> - <comp lib="0" loc="(340,70)" name="Tunnel"> + <comp lib="1" loc="(300,360)" name="OR Gate"> <a name="facing" val="south"/> - <a name="label" val="FC"/> - </comp> - <comp lib="1" loc="(250,550)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </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,130)" name="XOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(130,180)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b1"/> </comp> - <comp lib="1" loc="(310,510)" 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="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="(390,730)" name="Tunnel"> - <a name="label" val="o7"/> - </comp> - <comp lib="1" loc="(240,310)" name="AND Gate"> + <comp lib="1" loc="(300,510)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(550,90)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b4"/> - </comp> - <comp lib="3" loc="(930,110)" name="Shifter"/> - <comp lib="0" loc="(390,100)" name="Tunnel"> - <a name="label" val="o0"/> + <comp lib="2" loc="(570,400)" name="Multiplexer"> + <a name="width" val="3"/> + <a name="enable" val="false"/> </comp> - <comp lib="6" loc="(481,532)" name="Text"> - <a name="text" val="DYN OP"/> + <comp lib="0" loc="(670,550)" name="Splitter"> + <a name="fanout" val="7"/> + <a name="incoming" val="7"/> </comp> - <comp lib="0" loc="(330,850)" name="Constant"> + <comp lib="2" loc="(1010,210)" name="Multiplexer"> <a name="facing" val="south"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="0" loc="(700,40)" name="Pin"> - <a name="facing" val="west"/> <a name="width" val="8"/> - <a name="tristate" val="false"/> + <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(680,120)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a7"/> + <comp lib="2" loc="(320,890)" name="Multiplexer"> + <a name="facing" val="south"/> + <a name="selloc" val="tr"/> + <a name="select" val="2"/> + <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(270,680)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - <a name="negate1" val="true"/> + <comp lib="0" loc="(680,70)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a2"/> </comp> - <comp lib="0" loc="(770,380)" name="Tunnel"> + <comp lib="0" loc="(140,70)" name="Tunnel"> <a name="facing" val="south"/> - <a name="label" val="CC"/> + <a name="label" val="!A"/> </comp> - <comp lib="0" loc="(550,110)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b6"/> + <comp lib="1" loc="(280,560)" name="OR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(190,220)" name="XOR Gate"> + <comp lib="1" loc="(310,150)" name="OR Gate"> + <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(130,630)" name="Tunnel"> + <comp lib="0" loc="(130,270)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b6"/> - </comp> - <comp lib="6" loc="(617,355)" name="Text"> - <a name="text" val="Opcodes"/> + <a name="label" val="b2"/> </comp> - <comp lib="0" loc="(670,240)" name="Tunnel"> - <a name="label" val="o0"/> + <comp lib="0" loc="(670,250)" name="Tunnel"> + <a name="label" val="o1"/> </comp> - <comp lib="1" loc="(240,580)" name="AND Gate"> + <comp lib="1" loc="(300,630)" name="OR Gate"> + <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(280,470)" name="OR Gate"> + <comp lib="1" loc="(280,290)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(710,470)" name="Splitter"> - <a name="facing" val="west"/> - <a name="fanout" val="3"/> - <a name="incoming" val="3"/> - </comp> - <comp lib="2" loc="(540,280)" name="Multiplexer"> - <a name="facing" val="west"/> - <a name="width" val="8"/> - <a name="enable" val="false"/> - </comp> - <comp lib="0" loc="(670,310)" name="Tunnel"> - <a name="label" val="o7"/> - </comp> - <comp lib="1" loc="(270,590)" name="AND Gate"> + <comp lib="1" loc="(190,460)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> + </comp> + <comp lib="3" loc="(930,70)" name="BitAdder"/> + <comp lib="0" loc="(130,570)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a5"/> </comp> <comp lib="0" loc="(710,520)" name="Splitter"> <a name="facing" val="west"/> <a name="appear" val="center"/> </comp> - <comp lib="1" loc="(270,230)" 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="1" loc="(190,280)" name="XOR Gate"> + <comp lib="0" loc="(130,540)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b5"/> + </comp> + <comp lib="0" loc="(670,290)" name="Tunnel"> + <a name="label" val="o5"/> + </comp> + <comp lib="1" loc="(240,130)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="2" loc="(570,400)" name="Multiplexer"> - <a name="width" val="3"/> - <a name="enable" val="false"/> + <comp lib="6" loc="(472,443)" name="Text"> + <a name="text" val="ALU STATE"/> </comp> - <comp lib="0" loc="(670,550)" name="Splitter"> - <a name="fanout" val="7"/> - <a name="incoming" val="7"/> + <comp lib="0" loc="(180,70)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="!B"/> </comp> - <comp lib="1" loc="(340,280)" name="XNOR Gate"> + <comp lib="1" loc="(310,510)" name="OR Gate"> + <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(670,280)" name="Tunnel"> - <a name="label" val="o4"/> + <comp lib="0" loc="(390,100)" name="Tunnel"> + <a name="label" val="o0"/> </comp> - <comp lib="1" loc="(300,540)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="0" loc="(390,550)" name="Tunnel"> + <a name="label" val="o5"/> + </comp> + <comp lib="1" loc="(190,580)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(490,460)" name="Pin"> + <comp lib="0" loc="(320,890)" name="Pin"> + <a name="facing" val="north"/> + <a name="output" val="true"/> <a name="tristate" val="false"/> + <a name="labelloc" val="east"/> </comp> - <comp lib="1" loc="(270,320)" name="AND Gate"> + <comp lib="6" loc="(880,461)" name="Text"> + <a name="text" val="OPCODES: 000: OR, 001: AND, 010: XOR, 011: ADD, 100: CIN, 101: NAND, 110: XNOR, 111: SUB"/> + </comp> + <comp lib="1" loc="(190,730)" name="XOR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="0" loc="(550,100)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b5"/> + </comp> + <comp lib="1" loc="(250,190)" name="NOR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="1" loc="(330,670)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(250,370)" name="NOR Gate"> + <comp lib="1" loc="(190,190)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(530,280)" name="Pin"> - <a name="output" val="true"/> - <a name="width" val="8"/> - <a name="labelloc" val="east"/> + <comp lib="0" loc="(130,360)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b3"/> </comp> - <comp lib="0" loc="(140,70)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="!A"/> + <comp lib="0" loc="(550,90)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b4"/> </comp> - <comp lib="1" loc="(190,310)" name="XOR Gate"> + <comp lib="3" loc="(930,110)" name="Shifter"/> + <comp lib="4" loc="(730,400)" name="ROM"> + <a name="addrWidth" val="3"/> + <a name="dataWidth" val="6"/> + <a name="contents">addr/data: 3 6 +8 3b 4 0 2 38 7 12 +</a> + </comp> + <comp lib="0" loc="(730,400)" name="Splitter"> + <a name="facing" val="north"/> + <a name="fanout" val="6"/> + <a name="incoming" val="6"/> + <a name="appear" val="right"/> + </comp> + <comp lib="0" loc="(510,390)" name="Pin"> + <a name="width" val="3"/> + <a name="tristate" val="false"/> + </comp> + <comp lib="3" loc="(1000,90)" name="BitAdder"/> + <comp lib="1" loc="(240,310)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="1" loc="(280,380)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> @@ -1403,85 +1350,147 @@ <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> + <comp lib="2" loc="(540,280)" name="Multiplexer"> + <a name="facing" val="west"/> + <a name="width" val="8"/> + <a name="enable" val="false"/> + </comp> + <comp lib="1" loc="(300,150)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + <a name="negate1" val="true"/> + </comp> <comp lib="1" loc="(250,640)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(550,60)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b1"/> + <comp lib="1" loc="(310,600)" name="OR Gate"> + <a name="facing" val="west"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(330,400)" name="AND Gate"> + <comp lib="1" loc="(310,780)" name="OR Gate"> + <a name="facing" val="west"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </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> + <comp lib="0" loc="(670,260)" name="Tunnel"> + <a name="label" val="o2"/> + </comp> + <comp lib="1" loc="(330,580)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(340,850)" name="Constant"> - <a name="facing" val="south"/> - <a name="value" val="0x0"/> + <comp lib="1" loc="(310,690)" name="OR Gate"> + <a name="facing" val="west"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(190,670)" name="XOR Gate"> + <comp lib="1" loc="(560,300)" name="AND Gate"> + <a name="facing" val="north"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(190,400)" name="XOR Gate"> + <comp lib="0" loc="(680,80)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a3"/> + </comp> + <comp lib="0" loc="(220,70)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="OR"/> + </comp> + <comp lib="0" loc="(770,380)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="CC"/> + </comp> + <comp lib="1" loc="(300,690)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(190,190)" name="XOR Gate"> + <comp lib="0" loc="(680,110)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a6"/> + </comp> + <comp lib="0" loc="(770,200)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="width" val="8"/> + <a name="label" val="B"/> + </comp> + <comp lib="1" loc="(280,740)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> + <comp lib="0" loc="(130,480)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a4"/> + </comp> <comp lib="6" loc="(355,906)" name="Text"> <a name="text" val="FLAG"/> </comp> - <comp lib="1" loc="(300,150)" name="AND Gate"> + <comp lib="1" loc="(250,730)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(780,100)" name="Tunnel"> + <comp lib="0" loc="(550,110)" name="Tunnel"> <a name="facing" val="east"/> - <a name="width" val="8"/> - <a name="label" val="A"/> + <a name="label" val="b6"/> </comp> - <comp lib="1" loc="(340,100)" name="XNOR Gate"> + <comp lib="0" loc="(130,630)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b6"/> + </comp> + <comp lib="0" loc="(130,660)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a6"/> + </comp> + <comp lib="1" loc="(330,130)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(240,670)" name="AND Gate"> + <comp lib="0" loc="(550,50)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b0"/> + </comp> + <comp lib="0" loc="(130,90)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b0"/> + </comp> + <comp lib="1" loc="(330,220)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="2" loc="(1010,210)" name="Multiplexer"> + <comp lib="1" loc="(300,810)" name="OR Gate"> <a name="facing" val="south"/> - <a name="width" val="8"/> - <a name="enable" val="false"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> <comp lib="1" loc="(340,640)" name="XNOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(670,290)" name="Tunnel"> - <a name="label" val="o5"/> + <comp lib="0" loc="(790,380)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="FC"/> </comp> - <comp lib="1" loc="(300,600)" name="AND Gate"> + <comp lib="1" loc="(280,470)" name="OR 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"> - <a name="facing" val="east"/> - <a name="label" val="a5"/> </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="1" loc="(300,420)" 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> </circuit> <circuit name="GPR"> @@ -1564,113 +1573,113 @@ <wire from="(180,250)" to="(190,250)"/> <wire from="(220,250)" to="(230,250)"/> <wire from="(300,250)" to="(300,310)"/> - <comp lib="0" loc="(310,230)" name="Constant"> - <a name="facing" val="west"/> + <comp lib="0" loc="(140,260)" name="Pin"> + <a name="output" val="true"/> <a name="width" val="8"/> - <a name="value" val="0x0"/> + <a name="labelloc" val="east"/> </comp> - <comp lib="0" loc="(240,180)" name="Constant"/> - <comp lib="1" loc="(270,260)" name="Controlled Buffer"> + <comp lib="1" loc="(230,260)" name="Controlled Buffer"> + <a name="facing" val="south"/> + <a name="width" val="8"/> + </comp> + <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"> <a name="tristate" val="false"/> </comp> - <comp lib="2" loc="(240,340)" name="Decoder"> - <a name="facing" val="north"/> + <comp lib="2" loc="(130,80)" name="Multiplexer"> <a name="selloc" val="tr"/> - <a name="select" val="2"/> + <a name="width" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(160,180)" name="Constant"/> - <comp lib="0" loc="(100,70)" name="Constant"> + <comp lib="0" loc="(200,180)" name="Constant"/> + <comp lib="1" loc="(170,230)" name="Controlled Buffer"> + <a name="facing" val="south"/> + <a name="width" val="8"/> + </comp> + <comp lib="4" loc="(270,170)" name="Register"/> + <comp lib="0" loc="(140,130)" name="Pin"> + <a name="width" val="8"/> + <a name="tristate" val="false"/> + </comp> + <comp lib="0" loc="(240,340)" name="Pin"> + <a name="facing" val="west"/> <a name="width" val="2"/> - <a name="value" val="0x0"/> + <a name="tristate" val="false"/> </comp> <comp lib="2" loc="(150,340)" name="Decoder"> <a name="facing" val="north"/> <a name="select" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(150,340)" name="Pin"> + <comp lib="1" loc="(270,260)" name="Controlled Buffer"> + <a name="facing" val="south"/> + <a name="width" val="8"/> + </comp> + <comp lib="0" loc="(160,180)" name="Constant"/> + <comp lib="0" loc="(150,340)" name="Pin"> <a name="width" val="2"/> <a name="tristate" val="false"/> </comp> <comp lib="4" loc="(190,170)" name="Register"/> + <comp lib="4" loc="(230,170)" name="Register"/> <comp lib="0" loc="(110,60)" name="Pin"> <a name="facing" val="south"/> <a name="tristate" val="false"/> </comp> - <comp lib="1" loc="(210,230)" name="Controlled Buffer"> - <a name="facing" val="south"/> - <a name="width" val="8"/> - </comp> - <comp lib="1" loc="(190,260)" name="Controlled Buffer"> - <a name="facing" val="south"/> + <comp lib="0" loc="(310,230)" name="Constant"> + <a name="facing" val="west"/> <a name="width" val="8"/> - </comp> - <comp lib="4" loc="(230,170)" name="Register"/> - <comp lib="2" loc="(130,80)" name="Multiplexer"> - <a name="selloc" val="tr"/> - <a name="width" val="2"/> - <a name="enable" val="false"/> + <a name="value" val="0x0"/> </comp> <comp lib="1" loc="(290,230)" name="Controlled Buffer"> <a name="facing" val="west"/> <a name="width" val="8"/> </comp> - <comp lib="0" loc="(140,130)" name="Pin"> - <a name="width" val="8"/> + <comp lib="0" loc="(240,180)" name="Constant"/> + <comp lib="0" loc="(100,70)" name="Constant"> + <a name="width" val="2"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="0" loc="(100,90)" name="Pin"> + <a name="width" val="2"/> <a name="tristate" val="false"/> </comp> - <comp lib="1" loc="(170,230)" name="Controlled Buffer"> + <comp lib="1" loc="(210,230)" name="Controlled Buffer"> <a name="facing" val="south"/> <a name="width" val="8"/> </comp> - <comp lib="0" loc="(140,230)" name="Pin"> - <a name="output" val="true"/> - <a name="width" val="8"/> - <a name="labelloc" val="east"/> - </comp> - <comp lib="0" loc="(140,260)" name="Pin"> - <a name="output" val="true"/> - <a name="width" val="8"/> - <a name="labelloc" val="east"/> - </comp> <comp lib="2" loc="(160,80)" name="Decoder"> <a name="facing" val="south"/> <a name="select" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(270,170)" name="Register"/> - <comp lib="0" loc="(240,340)" name="Pin"> - <a name="facing" val="west"/> - <a name="width" val="2"/> - <a name="tristate" val="false"/> + <comp lib="0" loc="(140,230)" name="Pin"> + <a name="output" val="true"/> + <a name="width" val="8"/> + <a name="labelloc" val="east"/> </comp> <comp lib="0" loc="(310,260)" name="Constant"> <a name="facing" val="west"/> <a name="width" val="8"/> <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(290,260)" name="Controlled Buffer"> - <a name="facing" val="west"/> - <a name="width" val="8"/> + <comp lib="2" loc="(240,340)" name="Decoder"> + <a name="facing" val="north"/> + <a name="selloc" val="tr"/> + <a name="select" val="2"/> + <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(230,260)" name="Controlled Buffer"> + <comp lib="1" loc="(190,260)" name="Controlled Buffer"> <a name="facing" val="south"/> <a name="width" val="8"/> </comp> - <comp lib="1" loc="(250,230)" name="Controlled Buffer"> - <a name="facing" val="south"/> + <comp lib="1" loc="(290,260)" name="Controlled Buffer"> + <a name="facing" val="west"/> <a name="width" val="8"/> </comp> - <comp lib="0" loc="(100,90)" name="Pin"> - <a name="width" val="2"/> - <a name="tristate" val="false"/> - </comp> - <comp lib="0" loc="(200,180)" name="Constant"/> </circuit> <circuit name="ISD"> <a name="circuit" val="ISD"/> @@ -2526,354 +2535,314 @@ <wire from="(520,510)" to="(530,510)"/> <wire from="(880,430)" to="(880,480)"/> <wire from="(450,1140)" to="(450,1580)"/> - <comp lib="1" loc="(330,560)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="LLI"/> - <a name="negate6" val="true"/> - <a name="negate7" val="true"/> - </comp> - <comp lib="0" loc="(280,1290)" name="Constant"/> - <comp lib="0" loc="(440,1690)" name="Pin"> - <a name="facing" val="north"/> - <a name="width" val="8"/> - <a name="tristate" val="false"/> - <a name="label" val="PC ADDRESS"/> - <a name="labelloc" val="south"/> - </comp> - <comp lib="0" loc="(280,500)" name="Constant"/> - <comp lib="0" loc="(900,640)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - </comp> - <comp lib="0" loc="(940,1000)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="value" val="0x3"/> - </comp> - <comp lib="1" loc="(920,1610)" name="OR Gate"> + <comp lib="2" loc="(850,960)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(940,640)" name="Constant"> + <comp lib="0" loc="(860,640)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> - </comp> - <comp lib="0" loc="(400,60)" name="Constant"> - <a name="facing" val="south"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="0" loc="(800,60)" name="Constant"> - <a name="facing" val="south"/> <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(280,670)" name="Constant"/> - <comp lib="1" loc="(440,330)" name="OR Gate"> + <comp lib="1" loc="(800,870)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(640,1050)" name="OR Gate"> + <comp lib="1" loc="(760,960)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(440,420)" name="OR Gate"> + <comp lib="1" loc="(520,1320)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(250,1600)" name="Splitter"> - <a name="facing" val="north"/> - <a name="incoming" val="8"/> - <a name="bit1" val="0"/> - <a name="bit2" val="0"/> - <a name="bit3" val="0"/> - <a name="bit4" val="1"/> - <a name="bit5" val="1"/> - <a name="bit6" val="1"/> - <a name="bit7" val="1"/> - </comp> - <comp lib="0" loc="(570,1690)" name="Pin"> - <a name="facing" val="north"/> - <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="(680,1230)" name="OR Gate"> + <comp lib="1" loc="(440,730)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(880,1610)" name="OR Gate"> + <comp lib="0" loc="(850,60)" name="Constant"> <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,130)" name="Constant"/> - <comp lib="0" loc="(280,330)" name="Constant"/> - <comp lib="1" loc="(680,1140)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="0" loc="(530,1880)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> - <a name="label" val="Address MUX"/> - <a name="labelloc" val="south"/> - </comp> - <comp lib="0" loc="(280,1390)" name="Constant"/> - <comp lib="0" loc="(180,1580)" name="Splitter"> - <a name="facing" val="north"/> - <a name="incoming" val="4"/> - <a name="appear" val="right"/> - <a name="bit1" val="0"/> - <a name="bit2" val="1"/> - <a name="bit3" val="1"/> - </comp> - <comp lib="0" loc="(220,1460)" name="Splitter"> - <a name="facing" val="north"/> - <a name="appear" val="center"/> - </comp> - <comp lib="1" loc="(840,1690)" name="OR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(520,150)" name="OR Gate"> + <comp lib="2" loc="(890,960)" name="Multiplexer"> <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="0" loc="(180,1540)" name="Splitter"> - <a name="facing" val="north"/> - <a name="appear" val="center"/> + <a name="width" val="2"/> + <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(940,910)" 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="1" loc="(330,920)" name="AND Gate"> + <comp lib="1" loc="(330,470)" name="AND Gate"> <a name="inputs" val="8"/> - <a name="label" val="POP"/> + <a name="label" val="CIN"/> + <a name="negate0" val="true"/> <a name="negate2" val="true"/> <a name="negate3" val="true"/> - <a name="negate4" val="true"/> - <a name="negate6" val="true"/> </comp> - <comp lib="0" loc="(1110,1360)" name="Pin"> + <comp lib="0" loc="(280,240)" name="Constant"/> + <comp lib="1" loc="(330,110)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="OR"/> + <a name="negate0" val="true"/> + <a name="negate1" val="true"/> + </comp> + <comp lib="0" loc="(1190,1480)" name="Pin"> <a name="facing" val="west"/> <a name="output" val="true"/> - <a name="label" val="ALU State"/> + <a name="width" val="4"/> + <a name="label" val="Dynamic OP"/> <a name="labelloc" val="east"/> </comp> - <comp lib="0" loc="(280,1300)" name="Constant"/> - <comp lib="1" loc="(1070,1360)" name="OR Gate"> + <comp lib="1" loc="(840,1610)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="width" val="2"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(880,1610)" name="Pin"> + <comp lib="0" loc="(760,1580)" name="Pin"> <a name="facing" val="north"/> <a name="output" val="true"/> - <a name="width" val="2"/> - <a name="label" val="B (R)"/> + <a name="label" val="POP"/> <a name="labelloc" val="south"/> </comp> - <comp lib="1" loc="(300,1740)" name="OR Gate"> - <a name="facing" val="west"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(520,60)" name="Constant"> + <a name="facing" val="south"/> + <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(520,1140)" name="OR Gate"> + <comp lib="1" loc="(400,420)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(280,230)" name="Constant"/> + <comp lib="2" loc="(850,870)" name="Multiplexer"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + <a name="enable" val="false"/> + </comp> <comp lib="4" loc="(1190,1480)" name="Register"> <a name="width" val="4"/> <a name="trigger" val="falling"/> </comp> - <comp lib="1" loc="(640,600)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="2" loc="(890,600)" name="Multiplexer"> + <comp lib="0" loc="(280,1200)" name="Constant"/> + <comp lib="0" loc="(280,540)" name="Constant"/> + <comp lib="2" loc="(930,1050)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(330,1280)" name="AND Gate"> + <comp lib="1" loc="(330,830)" name="AND Gate"> <a name="inputs" val="8"/> - <a name="label" val="SP"/> + <a name="label" val="PUSH"/> + <a name="negate2" val="true"/> + <a name="negate3" val="true"/> + <a name="negate5" val="true"/> <a name="negate6" val="true"/> </comp> - <comp lib="0" loc="(160,1670)" name="Constant"> - <a name="width" val="8"/> + <comp lib="0" loc="(780,1880)" name="Pin"> + <a name="facing" val="north"/> + <a name="output" val="true"/> + <a name="label" val="BRANCH"/> + <a name="labelloc" val="south"/> </comp> - <comp lib="0" loc="(280,360)" name="Constant"/> - <comp lib="1" loc="(560,420)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="0" loc="(280,1290)" name="Constant"/> + <comp lib="1" loc="(1150,1560)" name="AND Gate"> <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="inputs" val="4"/> + <a name="negate0" val="true"/> + <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(930,60)" name="Constant"> + <comp lib="1" loc="(520,1230)" name="OR Gate"> <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="value" val="0x0"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> <comp lib="0" loc="(260,1520)" name="Constant"> <a name="width" val="2"/> <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(600,60)" name="Constant"> + <comp lib="0" loc="(280,1120)" name="Constant"/> + <comp lib="0" loc="(860,910)" name="Constant"> <a name="facing" val="south"/> + <a name="width" val="2"/> <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(600,690)" 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="(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="(940,550)" name="Constant"> + <a name="facing" val="south"/> + <a name="width" val="2"/> </comp> - <comp lib="6" loc="(233,1834)" name="Text"> - <a name="text" val="This input defines the range of MMIO --&gt;"/> + <comp lib="0" loc="(280,360)" name="Constant"/> + <comp lib="0" loc="(900,820)" name="Constant"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(480,510)" name="OR Gate"> + <comp lib="1" loc="(600,600)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(330,110)" name="AND Gate"> + <comp lib="0" loc="(280,670)" 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="(280,410)" name="Constant"/> + <comp lib="1" loc="(330,380)" name="AND Gate"> <a name="inputs" val="8"/> - <a name="label" val="OR"/> + <a name="label" val="DYN"/> <a name="negate0" val="true"/> - <a name="negate1" val="true"/> - </comp> - <comp lib="0" loc="(280,220)" name="Constant"/> - <comp lib="0" loc="(800,1580)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> - <a name="label" val="PUSH"/> - <a name="labelloc" val="south"/> - </comp> - <comp lib="0" loc="(280,1120)" name="Constant"/> - <comp lib="4" loc="(870,1690)" name="Register"> - <a name="width" val="1"/> - <a name="trigger" val="falling"/> </comp> - <comp lib="1" loc="(840,1610)" name="OR Gate"> + <comp lib="1" loc="(640,1050)" name="OR Gate"> <a name="facing" val="south"/> - <a name="width" val="2"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(900,820)" name="Constant"> + <comp lib="0" loc="(480,60)" name="Constant"> <a name="facing" val="south"/> - <a name="width" val="2"/> <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(620,1400)" name="Splitter"> - <a name="facing" val="north"/> - <a name="appear" val="center"/> - </comp> - <comp lib="2" loc="(930,870)" name="Multiplexer"> + <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="(780,1880)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> - <a name="label" val="BRANCH"/> - <a name="labelloc" val="south"/> - </comp> - <comp lib="1" loc="(440,1870)" name="AND Gate"> + <comp lib="0" loc="(360,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="2" loc="(930,690)" name="Multiplexer"> + <comp lib="2" loc="(890,870)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(280,570)" name="Constant"/> - <comp lib="1" loc="(400,420)" name="OR Gate"> + <comp lib="0" loc="(160,1670)" name="Constant"> + <a name="width" val="8"/> + </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="1" loc="(520,330)" name="OR Gate"> + <comp lib="1" loc="(560,330)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(330,1680)" name="Pin"> + <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="0" loc="(440,1610)" 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="width" val="3"/> + <a name="label" val="ALU OP"/> <a name="labelloc" val="south"/> </comp> - <comp lib="0" loc="(440,60)" name="Constant"> + <comp lib="0" loc="(280,150)" name="Constant"/> + <comp lib="3" loc="(200,1680)" name="Adder"/> + <comp lib="0" loc="(860,1000)" name="Constant"> <a name="facing" val="south"/> + <a name="width" val="2"/> <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(280,410)" name="Constant"/> - <comp lib="4" loc="(1070,560)" name="Register"> - <a name="width" val="1"/> - <a name="trigger" val="falling"/> - </comp> - <comp lib="0" loc="(890,60)" name="Constant"> + <comp lib="0" loc="(900,1000)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(720,780)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(280,280)" name="Constant"/> + <comp lib="0" loc="(280,420)" name="Constant"/> + <comp lib="0" loc="(620,1610)" name="Pin"> + <a name="facing" val="north"/> + <a name="output" val="true"/> + <a name="width" val="2"/> + <a name="label" val="GPR MUX"/> + <a name="labelloc" val="south"/> </comp> - <comp lib="1" loc="(520,510)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="0" loc="(280,510)" name="Constant"/> + <comp lib="1" loc="(770,1690)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="4" loc="(110,50)" name="Register"> - <a name="trigger" val="falling"/> + <comp lib="0" loc="(280,1380)" name="Constant"/> + <comp lib="0" loc="(180,1540)" name="Splitter"> + <a name="facing" val="north"/> + <a name="appear" val="center"/> + </comp> + <comp lib="0" loc="(280,640)" name="Constant"/> + <comp lib="2" loc="(520,1670)" name="Multiplexer"> + <a name="selloc" val="tr"/> + <a name="width" val="8"/> + <a name="enable" val="false"/> + </comp> + <comp lib="2" loc="(160,50)" name="Multiplexer"> + <a name="width" val="8"/> + <a name="enable" val="false"/> + </comp> + <comp lib="0" loc="(280,1350)" name="Constant"/> + <comp lib="0" loc="(280,490)" name="Constant"/> + <comp lib="0" loc="(80,80)" name="Pin"> + <a name="tristate" val="false"/> + <a name="label" val="CLK"/> </comp> <comp lib="2" loc="(290,1530)" name="Multiplexer"> <a name="width" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(280,370)" name="OR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <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="1" loc="(670,1820)" name="AND Gate"> + <comp lib="4" loc="(1070,560)" name="Register"> + <a name="width" val="1"/> + <a name="trigger" val="falling"/> + </comp> + <comp lib="0" loc="(440,1880)" name="Pin"> <a name="facing" val="north"/> + <a name="output" val="true"/> + <a name="label" val="Memory Select"/> + <a name="labelloc" val="south"/> + </comp> + <comp lib="0" loc="(400,60)" name="Constant"> + <a name="facing" val="south"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="1" loc="(880,1610)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="width" val="2"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(1040,1510)" name="AND Gate"> - <a name="facing" val="west"/> - <a name="label" val="ptrinc"/> + <comp lib="0" loc="(440,1600)" name="Splitter"> + <a name="facing" val="north"/> + <a name="fanout" val="3"/> + <a name="incoming" val="3"/> + <a name="appear" val="center"/> </comp> - <comp lib="0" loc="(760,60)" name="Constant"> - <a name="facing" val="south"/> - <a name="value" val="0x0"/> + <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="1" loc="(330,740)" name="AND Gate"> <a name="inputs" val="8"/> @@ -2884,7 +2853,17 @@ <a name="negate5" val="true"/> <a name="negate6" val="true"/> </comp> - <comp lib="2" loc="(890,1050)" name="Multiplexer"> + <comp lib="0" loc="(1110,1360)" name="Pin"> + <a name="facing" val="west"/> + <a name="output" val="true"/> + <a name="label" val="ALU State"/> + <a name="labelloc" val="east"/> + </comp> + <comp lib="0" loc="(800,60)" name="Constant"> + <a name="facing" val="south"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="2" loc="(930,690)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> <a name="enable" val="false"/> @@ -2893,159 +2872,191 @@ <a name="facing" val="south"/> <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(330,1100)" name="AND Gate"> + <comp lib="0" loc="(280,310)" name="Constant"/> + <comp lib="1" loc="(330,650)" name="AND Gate"> <a name="inputs" val="8"/> - <a name="label" val="LB"/> - <a name="negate3" val="true"/> - <a name="negate6" val="true"/> + <a name="label" val="LUI"/> + <a name="negate7" val="true"/> </comp> - <comp lib="0" loc="(280,490)" name="Constant"/> - <comp lib="0" loc="(280,1210)" name="Constant"/> - <comp lib="1" loc="(330,1190)" name="AND Gate"> + <comp lib="0" loc="(280,1390)" name="Constant"/> + <comp lib="0" loc="(940,910)" name="Constant"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + </comp> + <comp lib="1" loc="(330,1280)" name="AND Gate"> <a name="inputs" val="8"/> - <a name="label" val="SB"/> - <a name="negate2" val="true"/> + <a name="label" val="SP"/> <a name="negate6" val="true"/> </comp> - <comp lib="0" loc="(940,550)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="2"/> + <comp lib="0" loc="(280,270)" name="Constant"/> + <comp lib="0" loc="(130,60)" name="Constant"> + <a name="width" val="8"/> + <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(600,960)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <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="2" loc="(930,600)" name="Multiplexer"> + <comp lib="2" loc="(850,690)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(900,550)" name="Constant"> + <comp lib="0" loc="(280,330)" name="Constant"/> + <comp lib="0" loc="(280,660)" name="Constant"/> + <comp lib="1" loc="(920,1610)" name="OR Gate"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="value" val="0x0"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(440,1880)" name="Pin"> + <comp lib="0" loc="(330,1680)" name="Pin"> <a name="facing" val="north"/> <a name="output" val="true"/> - <a name="label" val="Memory Select"/> + <a name="width" val="8"/> + <a name="label" val="MEM POINTER"/> <a name="labelloc" val="south"/> </comp> - <comp lib="1" loc="(280,100)" name="OR Gate"> + <comp lib="1" loc="(430,700)" name="AND Gate"> + <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(860,820)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - </comp> - <comp lib="0" loc="(260,1440)" name="Constant"> - <a name="width" val="2"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="2" loc="(850,690)" name="Multiplexer"> + <comp lib="1" loc="(820,1860)" name="AND Gate"> <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="enable" val="false"/> - </comp> - <comp lib="0" loc="(280,580)" name="Constant"/> - <comp lib="0" loc="(280,310)" name="Constant"/> - <comp lib="1" loc="(1150,1560)" name="AND Gate"> <a name="size" val="30"/> - <a name="inputs" val="4"/> + <a name="inputs" val="2"/> <a name="negate0" val="true"/> - <a name="negate1" val="true"/> - </comp> - <comp lib="0" loc="(280,150)" name="Constant"/> - <comp lib="0" loc="(80,80)" name="Pin"> - <a name="tristate" val="false"/> - <a name="label" val="CLK"/> </comp> - <comp lib="0" loc="(900,910)" name="Constant"> + <comp lib="0" loc="(280,230)" name="Constant"/> + <comp lib="1" loc="(640,600)" name="OR Gate"> <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="value" val="0x0"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(1190,1480)" name="Pin"> - <a name="facing" val="west"/> - <a name="output" val="true"/> - <a name="width" val="4"/> - <a name="label" val="Dynamic OP"/> - <a name="labelloc" val="east"/> + <comp lib="1" loc="(600,690)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="2" loc="(930,960)" name="Multiplexer"> + <comp lib="2" loc="(890,1050)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(520,1230)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="0" loc="(380,1830)" name="Constant"> + <a name="width" val="8"/> + <a name="value" val="0xf0"/> + </comp> + <comp lib="4" loc="(710,1700)" name="Register"> + <a name="width" val="1"/> + <a name="trigger" val="falling"/> + </comp> + <comp lib="1" loc="(840,1690)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(600,600)" name="OR Gate"> + <comp lib="4" loc="(870,1690)" name="Register"> + <a name="width" val="1"/> + <a name="trigger" val="falling"/> + </comp> + <comp lib="0" loc="(280,320)" name="Constant"/> + <comp lib="1" loc="(680,1140)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(520,1320)" name="OR Gate"> + <comp lib="0" loc="(600,60)" name="Constant"> <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(160,50)" name="Splitter"> + <comp lib="1" loc="(330,1100)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="LB"/> + <a name="negate3" val="true"/> + <a name="negate6" val="true"/> + </comp> + <comp lib="0" loc="(620,1400)" name="Splitter"> + <a name="facing" val="north"/> + <a name="appear" val="center"/> + </comp> + <comp lib="0" loc="(570,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="(440,1870)" name="AND Gate"> <a name="facing" val="south"/> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(480,420)" name="OR Gate"> + <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="2" loc="(890,690)" name="Multiplexer"> + <comp lib="0" loc="(280,130)" name="Constant"/> + <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="1" loc="(800,870)" name="OR Gate"> + <comp lib="0" loc="(280,1360)" name="Constant"/> + <comp lib="2" loc="(930,960)" name="Multiplexer"> <a name="facing" val="south"/> + <a name="width" val="2"/> + <a name="enable" val="false"/> + </comp> + <comp lib="1" loc="(280,370)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(330,1370)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="CMP"/> + <comp lib="1" loc="(480,330)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> <comp lib="1" loc="(480,1410)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(280,210)" name="Constant"/> - <comp lib="0" loc="(380,1830)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0xf0"/> - </comp> <comp lib="2" loc="(230,1670)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(720,60)" name="Constant"> + <comp lib="0" loc="(860,820)" name="Constant"> <a name="facing" val="south"/> - <a name="value" val="0x0"/> + <a name="width" val="2"/> </comp> - <comp lib="0" loc="(280,1360)" name="Constant"/> - <comp lib="1" loc="(480,150)" name="OR Gate"> + <comp lib="0" loc="(160,50)" name="Splitter"> <a name="facing" val="south"/> + <a name="fanout" val="8"/> + <a name="incoming" val="8"/> + </comp> + <comp lib="0" loc="(220,1460)" name="Splitter"> + <a name="facing" val="north"/> + <a name="appear" val="center"/> + </comp> + <comp lib="1" loc="(260,1750)" name="AND Gate"> + <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(240,1580)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="4"/> - <a name="value" val="0x0"/> + <comp lib="0" loc="(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="2" loc="(290,1490)" name="Multiplexer"> + <a name="width" val="2"/> + <a name="enable" val="false"/> </comp> <comp lib="0" loc="(840,1610)" name="Pin"> <a name="facing" val="north"/> @@ -3054,148 +3065,174 @@ <a name="label" val="A (R)"/> <a name="labelloc" val="south"/> </comp> - <comp lib="1" loc="(330,380)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="DYN"/> - <a name="negate0" val="true"/> + <comp lib="0" loc="(260,1480)" name="Constant"> + <a name="width" val="2"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(280,270)" name="Constant"/> - <comp lib="1" loc="(640,1140)" name="OR Gate"> + <comp lib="1" loc="(600,960)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(520,420)" name="OR Gate"> + <comp lib="0" loc="(200,1500)" name="Splitter"> + <a name="facing" val="north"/> + <a name="appear" val="center"/> + </comp> + <comp lib="1" loc="(520,1140)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(900,1000)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="1" loc="(480,330)" name="OR Gate"> + <comp lib="1" loc="(440,330)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(480,60)" name="Constant"> - <a name="facing" val="south"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="0" loc="(280,280)" name="Constant"/> - <comp lib="3" loc="(200,1680)" name="Adder"/> - <comp lib="2" loc="(850,600)" name="Multiplexer"> + <comp lib="1" loc="(520,1410)" 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="(600,1050)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="1" loc="(1070,1360)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="2" loc="(890,870)" name="Multiplexer"> + <comp lib="0" loc="(220,1610)" name="Constant"> <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="enable" val="false"/> + <a name="width" val="4"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(440,1610)" name="Pin"> - <a name="facing" val="north"/> + <comp lib="0" loc="(280,550)" name="Constant"/> + <comp lib="0" loc="(1110,1190)" name="Pin"> + <a name="facing" val="west"/> <a name="output" val="true"/> - <a name="width" val="3"/> - <a name="label" val="ALU OP"/> - <a name="labelloc" val="south"/> + <a name="label" val="Write Enable"/> + <a name="labelloc" val="east"/> </comp> - <comp lib="0" loc="(230,1580)" name="Splitter"> + <comp lib="0" loc="(80,250)" name="Pin"> + <a name="tristate" val="false"/> + <a name="label" val="RST"/> + </comp> + <comp lib="0" loc="(240,1630)" name="Splitter"> <a name="facing" val="north"/> - <a name="incoming" val="4"/> + <a name="incoming" val="8"/> <a name="bit1" val="0"/> - <a name="bit2" val="1"/> - <a name="bit3" val="1"/> - </comp> - <comp lib="1" loc="(560,510)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="bit2" val="0"/> + <a name="bit3" val="0"/> + <a name="bit4" val="1"/> + <a name="bit5" val="1"/> + <a name="bit6" val="1"/> + <a name="bit7" val="1"/> </comp> - <comp lib="0" loc="(860,1000)" name="Constant"> + <comp lib="0" loc="(900,550)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(280,120)" name="Constant"/> - <comp lib="0" loc="(80,250)" name="Pin"> - <a name="tristate" val="false"/> - <a name="label" val="RST"/> + <comp lib="0" loc="(280,140)" name="Constant"/> + <comp lib="1" loc="(480,510)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(280,90)" name="Constant"/> + <comp lib="0" loc="(280,630)" name="Constant"/> <comp lib="3" loc="(420,1820)" name="Comparator"> <a name="mode" val="unsigned"/> </comp> - <comp lib="0" loc="(220,1610)" name="Constant"> + <comp lib="0" loc="(930,60)" name="Constant"> <a name="facing" val="south"/> - <a name="width" val="4"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="2" loc="(290,1490)" name="Multiplexer"> <a name="width" val="2"/> - <a name="enable" val="false"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(280,550)" name="Constant"/> - <comp lib="1" loc="(430,700)" name="AND 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"/> - <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(330,290)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="NAND"/> - <a name="negate1" val="true"/> + <comp lib="0" loc="(240,1580)" name="Constant"> + <a name="facing" val="south"/> + <a name="width" val="4"/> + <a name="value" val="0x0"/> </comp> - <comp lib="2" loc="(850,870)" name="Multiplexer"> + <comp lib="0" loc="(880,1610)" name="Pin"> + <a name="facing" val="north"/> + <a name="output" val="true"/> + <a name="width" val="2"/> + <a name="label" val="B (R)"/> + <a name="labelloc" val="south"/> + </comp> + <comp lib="0" loc="(860,550)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="enable" val="false"/> + <a name="value" val="0x0"/> </comp> - <comp lib="4" loc="(260,1670)" name="Register"/> - <comp lib="1" loc="(360,330)" name="OR Gate"> + <comp lib="0" loc="(280,1210)" name="Constant"/> + <comp lib="0" loc="(900,910)" name="Constant"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="0" loc="(280,300)" name="Constant"/> + <comp lib="1" loc="(440,420)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(280,1200)" name="Constant"/> - <comp lib="2" loc="(320,1620)" name="Multiplexer"> - <a name="selloc" val="tr"/> - <a name="width" val="8"/> - <a name="enable" val="false"/> + <comp lib="0" loc="(280,210)" name="Constant"/> + <comp lib="0" loc="(280,220)" name="Constant"/> + <comp lib="1" loc="(560,150)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(280,640)" name="Constant"/> - <comp lib="0" loc="(280,420)" name="Constant"/> - <comp lib="0" loc="(280,140)" name="Constant"/> - <comp lib="0" loc="(260,1480)" name="Constant"> - <a name="width" val="2"/> + <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="(280,580)" name="Constant"/> + <comp lib="0" loc="(720,60)" name="Constant"> + <a name="facing" val="south"/> <a name="value" val="0x0"/> </comp> - <comp lib="2" loc="(890,960)" name="Multiplexer"> + <comp lib="1" loc="(720,780)" 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="(330,650)" name="AND Gate"> + <comp lib="6" loc="(233,1834)" name="Text"> + <a name="text" val="This input defines the range of MMIO --&gt;"/> + </comp> + <comp lib="1" loc="(330,1190)" name="AND Gate"> <a name="inputs" val="8"/> - <a name="label" val="LUI"/> - <a name="negate7" val="true"/> + <a name="label" val="SB"/> + <a name="negate2" val="true"/> + <a name="negate6" val="true"/> </comp> - <comp lib="0" loc="(280,300)" name="Constant"/> - <comp lib="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 lib="1" loc="(480,420)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> + <comp lib="2" loc="(930,870)" name="Multiplexer"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + <a name="enable" val="false"/> + </comp> + <comp lib="0" loc="(280,570)" name="Constant"/> + <comp lib="4" loc="(260,1670)" name="Register"/> + <comp lib="1" loc="(300,1740)" name="OR Gate"> + <a name="facing" val="west"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="0" loc="(280,480)" name="Constant"/> <comp lib="1" loc="(330,200)" name="AND Gate"> <a name="inputs" val="8"/> <a name="label" val="SOP"/> @@ -3204,245 +3241,217 @@ <a name="negate2" val="true"/> <a name="negate3" val="true"/> </comp> - <comp lib="4" loc="(710,1700)" name="Register"> - <a name="width" val="1"/> - <a name="trigger" val="falling"/> + <comp lib="1" loc="(330,290)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="NAND"/> + <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(560,150)" name="OR Gate"> + <comp lib="0" loc="(640,60)" name="Constant"> + <a name="facing" val="south"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="1" loc="(360,330)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(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="(660,1880)" name="Pin"> - <a name="facing" val="north"/> - <a name="tristate" val="false"/> - <a name="label" val="JMP FLAG"/> - <a name="labelloc" val="south"/> - </comp> - <comp lib="0" loc="(80,50)" name="Pin"> - <a name="width" val="8"/> - <a name="tristate" val="false"/> - <a name="label" val="DATA"/> - <a name="labelloc" val="north"/> + <comp 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="(1150,1480)" name="Splitter"> <a name="facing" val="west"/> <a name="fanout" val="4"/> <a name="incoming" val="4"/> </comp> - <comp lib="0" loc="(620,1610)" name="Pin"> + <comp lib="1" loc="(670,1820)" name="AND Gate"> <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"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="2" loc="(910,1560)" name="Multiplexer"> + <comp lib="2" loc="(890,600)" name="Multiplexer"> <a name="facing" val="south"/> - <a name="selloc" val="tr"/> <a name="width" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(330,1010)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="PCR"/> - <a name="negate2" val="true"/> - <a name="negate3" val="true"/> - <a name="negate6" val="true"/> - </comp> - <comp lib="0" loc="(280,1110)" name="Constant"/> - <comp lib="0" loc="(850,60)" name="Constant"> + <comp lib="0" loc="(280,1300)" name="Constant"/> + <comp lib="1" loc="(560,420)" name="OR Gate"> <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="value" val="0x0"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(360,60)" 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="(280,400)" name="Constant"/> + <comp lib="0" loc="(280,120)" name="Constant"/> + <comp lib="1" loc="(520,510)" name="OR Gate"> <a name="facing" val="south"/> - <a name="value" val="0x0"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(280,630)" name="Constant"/> - <comp lib="1" loc="(770,1690)" name="AND Gate"> + <comp lib="0" loc="(830,1890)" name="Pin"> + <a name="facing" val="west"/> + <a name="output" val="true"/> + <a name="label" val="External Address Select"/> + <a name="labelloc" val="east"/> + </comp> + <comp lib="1" loc="(600,1050)" 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="2" loc="(850,1050)" name="Multiplexer"> + <comp lib="0" loc="(180,1580)" name="Splitter"> + <a name="facing" val="north"/> + <a name="incoming" val="4"/> + <a name="appear" val="right"/> + <a name="bit1" val="0"/> + <a name="bit2" val="1"/> + <a name="bit3" val="1"/> + </comp> + <comp lib="0" loc="(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="2" loc="(290,1450)" name="Multiplexer"> + <comp lib="1" loc="(330,920)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="POP"/> + <a name="negate2" val="true"/> + <a name="negate3" val="true"/> + <a name="negate4" val="true"/> + <a name="negate6" val="true"/> + </comp> + <comp lib="0" loc="(230,1580)" name="Splitter"> + <a name="facing" val="north"/> + <a name="incoming" val="4"/> + <a name="bit1" val="0"/> + <a name="bit2" val="1"/> + <a name="bit3" val="1"/> + </comp> + <comp lib="0" loc="(940,640)" name="Constant"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + </comp> + <comp lib="2" loc="(930,600)" name="Multiplexer"> + <a name="facing" val="south"/> <a name="width" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(280,1350)" name="Constant"/> - <comp lib="0" loc="(280,320)" name="Constant"/> - <comp lib="1" loc="(440,1140)" name="OR Gate"> + <comp lib="1" loc="(640,690)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(280,510)" name="Constant"/> - <comp lib="0" loc="(920,1610)" name="Pin"> + <comp lib="0" loc="(800,1580)" name="Pin"> <a name="facing" val="north"/> <a name="output" val="true"/> - <a name="width" val="2"/> - <a name="label" val="C (W)"/> + <a name="label" val="PUSH"/> <a name="labelloc" val="south"/> </comp> - <comp lib="0" loc="(280,540)" name="Constant"/> - <comp lib="0" loc="(130,60)" name="Constant"> - <a name="width" val="8"/> + <comp lib="0" loc="(760,60)" name="Constant"> + <a name="facing" val="south"/> <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(560,330)" 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="1" loc="(820,1860)" name="AND Gate"> + <comp lib="1" loc="(330,1370)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="CMP"/> + </comp> + <comp lib="0" loc="(940,1000)" name="Constant"> <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - <a name="negate0" val="true"/> + <a name="width" val="2"/> + <a name="value" val="0x3"/> </comp> - <comp lib="0" loc="(860,550)" name="Constant"> + <comp lib="2" loc="(890,690)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="value" val="0x0"/> + <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(520,1410)" name="OR Gate"> + <comp lib="0" loc="(280,500)" 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="0" loc="(940,820)" name="Constant"> + <comp lib="0" loc="(900,640)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="0" loc="(440,1600)" name="Splitter"> - <a name="facing" val="north"/> - <a name="fanout" val="3"/> - <a name="incoming" val="3"/> - <a name="appear" val="center"/> </comp> - <comp lib="1" loc="(330,470)" name="AND Gate"> + <comp lib="1" loc="(330,1010)" name="AND Gate"> <a name="inputs" val="8"/> - <a name="label" val="CIN"/> - <a name="negate0" val="true"/> + <a name="label" val="PCR"/> <a name="negate2" val="true"/> <a name="negate3" val="true"/> + <a name="negate6" val="true"/> </comp> - <comp lib="1" loc="(290,1610)" name="OR Gate"> - <a name="width" val="8"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="2" loc="(850,600)" name="Multiplexer"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(360,510)" name="OR Gate"> + <comp lib="1" loc="(520,330)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(440,730)" name="OR Gate"> + <comp lib="0" loc="(280,90)" 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="0" loc="(640,60)" name="Constant"> - <a name="facing" val="south"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="0" loc="(200,1500)" name="Splitter"> - <a name="facing" val="north"/> - <a name="appear" val="center"/> - </comp> - <comp lib="2" loc="(930,1050)" name="Multiplexer"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="enable" val="false"/> - </comp> - <comp lib="0" loc="(280,390)" name="Constant"/> - <comp lib="0" loc="(280,1380)" name="Constant"/> - <comp lib="2" loc="(520,1670)" name="Multiplexer"> - <a name="selloc" val="tr"/> + <comp lib="1" loc="(290,1610)" name="OR Gate"> <a name="width" val="8"/> - <a name="enable" val="false"/> - </comp> - <comp lib="0" loc="(240,1630)" name="Splitter"> - <a name="facing" val="north"/> - <a name="incoming" val="8"/> - <a name="bit1" val="0"/> - <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="(1110,1190)" name="Pin"> - <a name="facing" val="west"/> - <a name="output" val="true"/> - <a name="label" val="Write Enable"/> - <a name="labelloc" val="east"/> - </comp> - <comp lib="1" loc="(640,690)" name="OR Gate"> - <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="2" loc="(850,960)" name="Multiplexer"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="enable" val="false"/> + <comp lib="4" loc="(110,50)" name="Register"> + <a name="trigger" val="falling"/> </comp> - <comp lib="0" loc="(560,60)" name="Constant"> - <a name="facing" val="south"/> - <a name="value" val="0x0"/> + <comp lib="1" loc="(1040,1510)" name="AND Gate"> + <a name="facing" val="west"/> + <a name="label" val="ptrinc"/> </comp> - <comp lib="0" loc="(760,1580)" name="Pin"> + <comp lib="0" loc="(440,1690)" name="Pin"> <a name="facing" val="north"/> - <a name="output" val="true"/> - <a name="label" val="POP"/> - <a name="labelloc" val="south"/> - </comp> - <comp lib="0" loc="(280,480)" name="Constant"/> - <comp lib="2" loc="(160,50)" name="Multiplexer"> <a name="width" val="8"/> - <a name="enable" val="false"/> + <a name="tristate" val="false"/> + <a name="label" val="PC ADDRESS"/> + <a name="labelloc" val="south"/> </comp> - <comp lib="0" loc="(520,60)" name="Constant"> + <comp lib="0" loc="(280,390)" name="Constant"/> + <comp lib="0" loc="(560,60)" name="Constant"> <a name="facing" val="south"/> <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(860,910)" name="Constant"> - <a name="facing" val="south"/> + <comp lib="2" loc="(290,1450)" name="Multiplexer"> <a name="width" val="2"/> - <a name="value" val="0x0"/> + <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(280,400)" name="Constant"/> - <comp lib="0" loc="(280,660)" name="Constant"/> - <comp lib="1" loc="(260,1750)" name="AND Gate"> - <a name="facing" val="west"/> + <comp lib="0" loc="(280,1110)" 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="(860,640)" name="Constant"> - <a name="facing" val="south"/> + <comp lib="0" loc="(260,1440)" name="Constant"> <a name="width" val="2"/> <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(280,240)" name="Constant"/> - <comp lib="1" loc="(760,960)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(920,1610)" name="Pin"> + <a name="facing" val="north"/> + <a name="output" val="true"/> + <a name="width" val="2"/> + <a name="label" val="C (W)"/> + <a name="labelloc" val="south"/> </comp> </circuit> <circuit name="STK"> @@ -3955,201 +3964,201 @@ <wire from="(750,260)" to="(760,260)"/> <wire from="(760,270)" to="(770,270)"/> <wire from="(1250,270)" to="(1270,270)"/> - <comp lib="2" loc="(2950,260)" name="Multiplexer"> - <a name="width" val="8"/> - <a name="enable" val="false"/> - </comp> - <comp lib="0" loc="(180,320)" name="Pin"> - <a name="tristate" val="false"/> - </comp> - <comp lib="2" loc="(530,260)" name="Multiplexer"> + <comp lib="2" loc="(200,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(3500,260)" name="Multiplexer"> + <comp lib="4" loc="(2340,270)" name="Register"/> + <comp lib="4" loc="(2670,270)" name="Register"/> + <comp lib="2" loc="(2510,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> <comp lib="4" loc="(3000,270)" name="Register"/> - <comp lib="2" loc="(2840,260)" name="Multiplexer"> + <comp lib="0" loc="(3670,220)" name="Constant"> + <a name="facing" val="west"/> <a name="width" val="8"/> - <a name="enable" val="false"/> + <a name="value" val="0x0"/> </comp> - <comp lib="2" loc="(3610,260)" name="Multiplexer"> + <comp lib="4" loc="(690,270)" name="Register"/> + <comp lib="4" loc="(1460,270)" name="Register"/> + <comp lib="4" loc="(1240,270)" name="Register"/> + <comp lib="4" loc="(1570,270)" name="Register"/> + <comp lib="4" loc="(470,270)" name="Register"/> + <comp lib="2" loc="(2400,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(2010,270)" name="Register"/> - <comp lib="2" loc="(1300,260)" name="Multiplexer"> + <comp lib="2" loc="(2070,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(200,260)" name="Multiplexer"> + <comp lib="4" loc="(580,270)" name="Register"/> + <comp lib="2" loc="(3610,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(690,270)" name="Register"/> - <comp lib="2" loc="(3390,260)" name="Multiplexer"> + <comp lib="2" loc="(2730,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(1350,270)" name="Register"/> - <comp lib="4" loc="(1460,270)" name="Register"/> - <comp lib="4" loc="(1240,270)" name="Register"/> - <comp lib="4" loc="(800,270)" name="Register"/> + <comp lib="4" loc="(3550,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="(2450,270)" name="Register"/> - <comp lib="2" loc="(1630,260)" name="Multiplexer"> + <comp lib="4" loc="(2780,270)" name="Register"/> + <comp lib="4" loc="(1020,270)" name="Register"/> + <comp lib="2" loc="(3390,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(3670,220)" name="Constant"> - <a name="facing" val="west"/> + <comp lib="4" loc="(800,270)" name="Register"/> + <comp lib="2" loc="(1850,260)" name="Multiplexer"> <a name="width" val="8"/> - <a name="value" val="0x0"/> + <a name="enable" val="false"/> </comp> + <comp lib="4" loc="(2120,270)" name="Register"/> <comp lib="4" loc="(3220,270)" name="Register"/> - <comp lib="4" loc="(2340,270)" name="Register"/> - <comp lib="2" loc="(2730,260)" name="Multiplexer"> + <comp lib="2" loc="(1410,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(1130,270)" name="Register"/> - <comp lib="2" loc="(1850,260)" name="Multiplexer"> + <comp lib="4" loc="(3110,270)" name="Register"/> + <comp lib="4" loc="(3660,270)" name="Register"/> + <comp lib="2" loc="(310,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(910,270)" name="Register"/> - <comp lib="2" loc="(1080,260)" name="Multiplexer"> - <a name="width" val="8"/> - <a name="enable" val="false"/> + <comp lib="4" loc="(360,270)" name="Register"/> + <comp lib="0" loc="(90,330)" name="Pin"> + <a name="tristate" val="false"/> </comp> - <comp lib="2" loc="(3060,260)" name="Multiplexer"> + <comp lib="0" loc="(90,360)" name="Pin"> + <a name="tristate" val="false"/> + </comp> + <comp lib="2" loc="(2290,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(970,260)" name="Multiplexer"> + <comp lib="4" loc="(250,270)" name="Register"/> + <comp lib="4" loc="(3330,270)" name="Register"/> + <comp lib="2" loc="(1080,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(90,290)" name="Pin"> - <a name="tristate" val="false"/> - </comp> - <comp lib="0" loc="(150,220)" name="Pin"> - <a name="output" val="true"/> + <comp lib="4" loc="(2230,270)" name="Register"/> + <comp lib="4" loc="(2010,270)" name="Register"/> + <comp lib="2" loc="(640,260)" name="Multiplexer"> <a name="width" val="8"/> - <a name="tristate" val="false"/> - <a name="labelloc" val="east"/> + <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(580,270)" name="Register"/> - <comp lib="0" loc="(150,270)" name="Pin"> - <a name="width" val="8"/> - <a name="tristate" val="false"/> + <comp lib="1" loc="(130,340)" name="OR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="4" loc="(3550,270)" name="Register"/> - <comp lib="4" loc="(1900,270)" name="Register"/> - <comp lib="4" loc="(2120,270)" name="Register"/> - <comp lib="4" loc="(1020,270)" name="Register"/> - <comp lib="4" loc="(2670,270)" name="Register"/> - <comp lib="4" loc="(1790,270)" name="Register"/> - <comp lib="4" loc="(1680,270)" name="Register"/> - <comp lib="4" loc="(3330,270)" name="Register"/> - <comp lib="4" loc="(470,270)" name="Register"/> - <comp lib="2" loc="(3170,260)" name="Multiplexer"> + <comp lib="2" loc="(420,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(90,360)" name="Pin"> - <a name="tristate" val="false"/> - </comp> - <comp lib="4" loc="(3660,270)" name="Register"/> <comp lib="1" loc="(150,300)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="2" loc="(2290,260)" name="Multiplexer"> + <comp lib="2" loc="(530,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(1570,270)" name="Register"/> - <comp lib="2" loc="(860,260)" name="Multiplexer"> + <comp lib="2" loc="(2840,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(1520,260)" name="Multiplexer"> + <comp lib="4" loc="(2890,270)" name="Register"/> + <comp lib="2" loc="(1960,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(250,270)" name="Register"/> - <comp lib="2" loc="(3280,260)" name="Multiplexer"> + <comp lib="4" loc="(1900,270)" name="Register"/> + <comp lib="2" loc="(750,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> + <comp lib="4" loc="(1130,270)" name="Register"/> <comp lib="2" loc="(2180,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(2560,270)" name="Register"/> - <comp lib="2" loc="(1410,260)" name="Multiplexer"> + <comp lib="4" loc="(2450,270)" name="Register"/> + <comp lib="2" loc="(2950,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(1960,260)" name="Multiplexer"> + <comp lib="0" loc="(90,290)" name="Pin"> + <a name="tristate" val="false"/> + </comp> + <comp lib="2" loc="(970,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(3440,270)" name="Register"/> - <comp lib="2" loc="(310,260)" name="Multiplexer"> + <comp lib="2" loc="(1630,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(130,340)" name="OR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="4" loc="(3110,270)" name="Register"/> - <comp lib="4" loc="(360,270)" name="Register"/> - <comp lib="2" loc="(2620,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="(420,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="2" loc="(640,260)" name="Multiplexer"> + <comp lib="2" loc="(1740,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(90,330)" name="Pin"> + <comp lib="4" loc="(1790,270)" name="Register"/> + <comp lib="0" loc="(150,220)" name="Pin"> + <a name="output" val="true"/> + <a name="width" val="8"/> <a name="tristate" val="false"/> + <a name="labelloc" val="east"/> </comp> - <comp lib="2" loc="(2070,260)" name="Multiplexer"> + <comp lib="0" loc="(180,320)" name="Pin"> + <a name="tristate" val="false"/> + </comp> + <comp lib="4" loc="(1680,270)" name="Register"/> + <comp lib="2" loc="(3280,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(2890,270)" name="Register"/> - <comp lib="2" loc="(2400,260)" name="Multiplexer"> + <comp lib="4" loc="(2560,270)" name="Register"/> + <comp lib="4" loc="(910,270)" name="Register"/> + <comp lib="2" loc="(1300,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(1740,260)" name="Multiplexer"> + <comp lib="2" loc="(3170,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(750,260)" name="Multiplexer"> + <comp lib="4" loc="(3440,270)" name="Register"/> + <comp lib="0" loc="(150,270)" name="Pin"> + <a name="width" val="8"/> + <a name="tristate" val="false"/> + </comp> + <comp lib="2" loc="(2620,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(2510,260)" name="Multiplexer"> + <comp lib="2" loc="(1520,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(2780,270)" name="Register"/> + <comp lib="2" loc="(3500,260)" name="Multiplexer"> + <a name="width" val="8"/> + <a name="enable" val="false"/> + </comp> + <comp lib="4" loc="(1350,270)" name="Register"/> </circuit> <circuit name="PC"> <a name="circuit" val="PC"/> @@ -4189,330 +4198,438 @@ <wire from="(200,330)" to="(200,350)"/> <wire from="(140,400)" to="(240,400)"/> <wire from="(230,320)" to="(230,380)"/> - <comp lib="0" loc="(290,330)" name="Constant"> + <comp lib="2" loc="(220,310)" name="Multiplexer"> <a name="width" val="8"/> + <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(140,400)" name="Pin"> - <a name="tristate" val="false"/> + <comp lib="4" loc="(260,310)" name="Register"> + <a name="trigger" val="falling"/> </comp> - <comp lib="0" loc="(140,380)" name="Pin"> + <comp lib="0" loc="(140,320)" name="Pin"> + <a name="width" val="8"/> <a name="tristate" val="false"/> </comp> - <comp lib="0" loc="(270,360)" name="Pin"> - <a name="facing" val="west"/> - <a name="output" val="true"/> + <comp lib="0" loc="(290,330)" name="Constant"> <a name="width" val="8"/> - <a name="labelloc" val="east"/> </comp> <comp lib="0" loc="(140,430)" name="Pin"> <a name="tristate" val="false"/> </comp> - <comp lib="6" loc="(101,297)" name="Text"> - <a name="text" val="Jump Address"/> + <comp lib="0" loc="(140,400)" name="Pin"> + <a name="tristate" val="false"/> </comp> - <comp lib="0" loc="(140,350)" name="Pin"> + <comp lib="0" loc="(140,380)" name="Pin"> <a name="tristate" val="false"/> </comp> - <comp lib="2" loc="(220,310)" name="Multiplexer"> + <comp lib="1" loc="(200,380)" name="NOT Gate"/> + <comp lib="0" loc="(360,360)" name="Pin"> + <a name="facing" val="west"/> + <a name="output" val="true"/> <a name="width" val="8"/> - <a name="enable" val="false"/> + <a name="labelloc" val="east"/> </comp> - <comp lib="0" loc="(140,320)" name="Pin"> - <a name="width" val="8"/> + <comp lib="3" loc="(330,320)" name="Adder"/> + <comp lib="0" loc="(140,350)" name="Pin"> <a name="tristate" val="false"/> </comp> - <comp lib="4" loc="(260,310)" name="Register"> - <a name="trigger" val="falling"/> - </comp> - <comp lib="1" loc="(200,380)" name="NOT Gate"/> <comp lib="6" loc="(79,355)" name="Text"> <a name="text" val="Jump Enable"/> </comp> - <comp lib="0" loc="(360,360)" name="Pin"> + <comp lib="6" loc="(101,297)" name="Text"> + <a name="text" val="Jump Address"/> + </comp> + <comp lib="0" loc="(270,360)" name="Pin"> <a name="facing" val="west"/> <a name="output" val="true"/> <a name="width" val="8"/> <a name="labelloc" val="east"/> </comp> - <comp lib="3" loc="(330,320)" name="Adder"/> </circuit> <circuit name="ExampleConfigurationROM"> <a name="circuit" val="ExampleConfigurationROM"/> <a name="clabel" val=""/> <a name="clabelup" val="east"/> <a name="clabelfont" val="SansSerif plain 12"/> - <wire from="(650,770)" to="(650,780)"/> - <wire from="(420,540)" to="(420,800)"/> - <wire from="(820,60)" to="(870,60)"/> - <wire from="(620,380)" to="(620,390)"/> - <wire from="(460,730)" to="(520,730)"/> - <wire from="(480,560)" to="(480,820)"/> - <wire from="(600,80)" to="(600,90)"/> - <wire from="(430,390)" to="(620,390)"/> - <wire from="(600,410)" to="(780,410)"/> - <wire from="(220,170)" to="(470,170)"/> - <wire from="(420,400)" to="(420,540)"/> - <wire from="(480,420)" to="(480,560)"/> + <wire from="(600,360)" to="(600,370)"/> + <wire from="(470,210)" to="(470,350)"/> <wire from="(480,420)" to="(790,420)"/> - <wire from="(360,280)" to="(360,290)"/> - <wire from="(420,800)" to="(590,800)"/> - <wire from="(470,30)" to="(470,50)"/> - <wire from="(850,810)" to="(850,840)"/> - <wire from="(540,700)" to="(640,700)"/> - <wire from="(440,550)" to="(550,550)"/> - <wire from="(720,800)" to="(720,830)"/> - <wire from="(710,750)" to="(710,780)"/> - <wire from="(620,100)" to="(620,120)"/> - <wire from="(290,800)" to="(290,900)"/> - <wire from="(550,30)" to="(550,70)"/> + <wire from="(320,880)" to="(420,880)"/> + <wire from="(590,660)" to="(700,660)"/> <wire from="(650,730)" to="(650,770)"/> - <wire from="(420,130)" to="(420,230)"/> + <wire from="(680,360)" to="(680,400)"/> <wire from="(710,710)" to="(710,750)"/> - <wire from="(540,90)" to="(560,90)"/> <wire from="(540,10)" to="(560,10)"/> + <wire from="(520,710)" to="(540,710)"/> <wire from="(470,490)" to="(500,490)"/> <wire from="(640,750)" to="(660,750)"/> - <wire from="(650,400)" to="(670,400)"/> - <wire from="(540,690)" to="(700,690)"/> - <wire from="(540,650)" to="(700,650)"/> - <wire from="(420,130)" to="(630,130)"/> - <wire from="(460,60)" to="(610,60)"/> - <wire from="(220,210)" to="(430,210)"/> + <wire from="(610,80)" to="(610,190)"/> <wire from="(350,510)" to="(500,510)"/> - <wire from="(430,210)" to="(430,390)"/> - <wire from="(460,470)" to="(600,470)"/> - <wire from="(470,170)" to="(470,350)"/> <wire from="(410,10)" to="(410,60)"/> <wire from="(590,20)" to="(850,20)"/> - <wire from="(380,450)" to="(780,450)"/> - <wire from="(850,130)" to="(860,130)"/> - <wire from="(860,780)" to="(870,780)"/> + <wire from="(410,400)" to="(670,400)"/> <wire from="(650,770)" to="(660,770)"/> - <wire from="(650,730)" to="(660,730)"/> - <wire from="(430,100)" to="(500,100)"/> - <wire from="(550,70)" to="(560,70)"/> + <wire from="(680,400)" to="(690,400)"/> + <wire from="(480,170)" to="(480,420)"/> <wire from="(640,360)" to="(650,360)"/> - <wire from="(640,80)" to="(650,80)"/> - <wire from="(590,510)" to="(600,510)"/> - <wire from="(600,360)" to="(610,360)"/> - <wire from="(680,370)" to="(680,380)"/> + <wire from="(700,510)" to="(700,520)"/> + <wire from="(430,830)" to="(430,900)"/> <wire from="(750,720)" to="(750,730)"/> - <wire from="(720,370)" to="(720,380)"/> <wire from="(460,470)" to="(460,730)"/> - <wire from="(430,120)" to="(620,120)"/> <wire from="(460,330)" to="(460,470)"/> - <wire from="(470,50)" to="(650,50)"/> - <wire from="(550,70)" to="(550,140)"/> - <wire from="(780,550)" to="(780,580)"/> - <wire from="(220,190)" to="(460,190)"/> + <wire from="(410,800)" to="(720,800)"/> + <wire from="(620,760)" to="(660,760)"/> <wire from="(550,520)" to="(550,550)"/> - <wire from="(600,330)" to="(600,360)"/> - <wire from="(590,800)" to="(590,830)"/> - <wire from="(630,520)" to="(630,540)"/> - <wire from="(650,60)" to="(650,80)"/> - <wire from="(610,60)" to="(610,80)"/> + <wire from="(590,630)" to="(700,630)"/> <wire from="(370,450)" to="(370,550)"/> - <wire from="(600,770)" to="(600,810)"/> - <wire from="(600,370)" to="(600,410)"/> - <wire from="(650,500)" to="(650,540)"/> - <wire from="(750,760)" to="(750,800)"/> - <wire from="(540,500)" to="(560,500)"/> + <wire from="(320,860)" to="(410,860)"/> <wire from="(710,710)" to="(730,710)"/> - <wire from="(710,750)" to="(730,750)"/> - <wire from="(540,660)" to="(700,660)"/> - <wire from="(690,520)" to="(720,520)"/> - <wire from="(420,540)" to="(630,540)"/> - <wire from="(310,790)" to="(310,900)"/> - <wire from="(380,280)" to="(850,280)"/> - <wire from="(480,850)" to="(490,850)"/> - <wire from="(460,730)" to="(460,910)"/> + <wire from="(710,380)" to="(740,380)"/> + <wire from="(460,190)" to="(610,190)"/> + <wire from="(600,410)" to="(800,410)"/> <wire from="(360,450)" to="(370,450)"/> <wire from="(360,290)" to="(370,290)"/> - <wire from="(380,580)" to="(780,580)"/> - <wire from="(290,800)" to="(420,800)"/> - <wire from="(220,230)" to="(420,230)"/> - <wire from="(670,120)" to="(680,120)"/> - <wire from="(370,130)" to="(370,250)"/> - <wire from="(550,520)" to="(560,520)"/> - <wire from="(590,80)" to="(600,80)"/> + <wire from="(430,180)" to="(560,180)"/> + <wire from="(460,730)" to="(460,920)"/> + <wire from="(480,170)" to="(870,170)"/> <wire from="(600,770)" to="(610,770)"/> - <wire from="(600,370)" to="(610,370)"/> <wire from="(370,590)" to="(370,840)"/> - <wire from="(600,90)" to="(610,90)"/> - <wire from="(640,700)" to="(640,710)"/> - <wire from="(430,530)" to="(430,790)"/> + <wire from="(660,520)" to="(660,530)"/> + <wire from="(430,570)" to="(430,830)"/> <wire from="(480,820)" to="(860,820)"/> - <wire from="(470,490)" to="(470,750)"/> - <wire from="(620,520)" to="(620,530)"/> - <wire from="(460,60)" to="(460,190)"/> - <wire from="(430,530)" to="(620,530)"/> - <wire from="(470,750)" to="(470,880)"/> - <wire from="(600,550)" to="(780,550)"/> + <wire from="(470,50)" to="(660,50)"/> + <wire from="(370,130)" to="(370,260)"/> <wire from="(370,290)" to="(370,420)"/> - <wire from="(440,140)" to="(440,410)"/> - <wire from="(430,390)" to="(430,530)"/> - <wire from="(470,350)" to="(470,490)"/> - <wire from="(310,790)" to="(430,790)"/> - <wire from="(720,730)" to="(720,800)"/> - <wire from="(480,560)" to="(790,560)"/> - <wire from="(650,780)" to="(710,780)"/> + <wire from="(430,430)" to="(430,570)"/> <wire from="(600,810)" to="(850,810)"/> - <wire from="(360,580)" to="(360,590)"/> - <wire from="(440,410)" to="(550,410)"/> - <wire from="(440,810)" to="(550,810)"/> - <wire from="(480,820)" to="(480,850)"/> - <wire from="(470,50)" to="(470,80)"/> - <wire from="(850,130)" to="(850,280)"/> - <wire from="(430,120)" to="(430,210)"/> - <wire from="(470,80)" to="(470,170)"/> + <wire from="(410,250)" to="(410,400)"/> + <wire from="(640,100)" to="(640,130)"/> + <wire from="(590,680)" to="(700,680)"/> + <wire from="(420,790)" to="(420,880)"/> + <wire from="(620,720)" to="(620,740)"/> <wire from="(850,20)" to="(850,130)"/> + <wire from="(550,760)" to="(570,760)"/> <wire from="(470,350)" to="(500,350)"/> <wire from="(470,750)" to="(500,750)"/> <wire from="(470,30)" to="(500,30)"/> - <wire from="(650,540)" to="(670,540)"/> - <wire from="(540,630)" to="(700,630)"/> - <wire from="(540,670)" to="(700,670)"/> - <wire from="(720,800)" to="(750,800)"/> - <wire from="(470,880)" to="(490,880)"/> + <wire from="(600,90)" to="(620,90)"/> + <wire from="(440,810)" to="(440,920)"/> + <wire from="(850,130)" to="(850,290)"/> + <wire from="(220,150)" to="(430,150)"/> <wire from="(350,770)" to="(500,770)"/> <wire from="(350,370)" to="(500,370)"/> - <wire from="(280,900)" to="(290,900)"/> - <wire from="(460,330)" to="(600,330)"/> - <wire from="(590,830)" to="(720,830)"/> + <wire from="(480,820)" to="(480,860)"/> + <wire from="(480,860)" to="(490,860)"/> + <wire from="(680,60)" to="(680,120)"/> <wire from="(640,780)" to="(650,780)"/> <wire from="(720,700)" to="(730,700)"/> + <wire from="(540,760)" to="(550,760)"/> <wire from="(600,500)" to="(610,500)"/> - <wire from="(220,150)" to="(480,150)"/> - <wire from="(590,770)" to="(600,770)"/> - <wire from="(590,370)" to="(600,370)"/> - <wire from="(640,500)" to="(650,500)"/> - <wire from="(680,510)" to="(680,520)"/> - <wire from="(720,510)" to="(720,520)"/> + <wire from="(700,370)" to="(700,380)"/> + <wire from="(220,250)" to="(410,250)"/> <wire from="(440,550)" to="(440,810)"/> + <wire from="(420,530)" to="(420,790)"/> <wire from="(690,760)" to="(740,760)"/> - <wire from="(690,720)" to="(740,720)"/> - <wire from="(870,140)" to="(870,150)"/> - <wire from="(480,150)" to="(480,420)"/> + <wire from="(810,560)" to="(810,570)"/> <wire from="(440,410)" to="(440,550)"/> - <wire from="(430,790)" to="(610,790)"/> + <wire from="(420,390)" to="(420,530)"/> <wire from="(460,190)" to="(460,330)"/> - <wire from="(440,140)" to="(550,140)"/> + <wire from="(560,740)" to="(560,830)"/> + <wire from="(870,140)" to="(870,170)"/> <wire from="(550,780)" to="(550,810)"/> <wire from="(550,380)" to="(550,410)"/> - <wire from="(630,100)" to="(630,130)"/> - <wire from="(600,470)" to="(600,500)"/> + <wire from="(420,530)" to="(660,530)"/> + <wire from="(640,470)" to="(640,500)"/> <wire from="(440,110)" to="(440,140)"/> - <wire from="(520,710)" to="(520,730)"/> - <wire from="(630,380)" to="(630,400)"/> + <wire from="(560,100)" to="(560,180)"/> + <wire from="(590,650)" to="(700,650)"/> + <wire from="(410,130)" to="(640,130)"/> <wire from="(410,10)" to="(500,10)"/> + <wire from="(790,570)" to="(810,570)"/> <wire from="(600,510)" to="(600,550)"/> <wire from="(640,710)" to="(640,750)"/> - <wire from="(650,360)" to="(650,400)"/> - <wire from="(540,760)" to="(560,760)"/> - <wire from="(540,360)" to="(560,360)"/> - <wire from="(780,410)" to="(780,450)"/> <wire from="(470,80)" to="(500,80)"/> - <wire from="(460,910)" to="(490,910)"/> <wire from="(370,840)" to="(850,840)"/> + <wire from="(420,230)" to="(420,390)"/> <wire from="(220,110)" to="(440,110)"/> - <wire from="(540,680)" to="(700,680)"/> - <wire from="(690,380)" to="(720,380)"/> - <wire from="(420,400)" to="(630,400)"/> - <wire from="(540,640)" to="(700,640)"/> + <wire from="(420,120)" to="(420,230)"/> <wire from="(720,730)" to="(750,730)"/> <wire from="(220,130)" to="(370,130)"/> - <wire from="(420,230)" to="(420,400)"/> + <wire from="(470,890)" to="(490,890)"/> + <wire from="(450,260)" to="(450,940)"/> + <wire from="(870,60)" to="(870,120)"/> + <wire from="(410,800)" to="(410,860)"/> + <wire from="(610,520)" to="(610,570)"/> + <wire from="(640,510)" to="(650,510)"/> + <wire from="(610,80)" to="(620,80)"/> + <wire from="(650,770)" to="(650,780)"/> + <wire from="(660,380)" to="(660,390)"/> + <wire from="(820,60)" to="(870,60)"/> + <wire from="(460,730)" to="(520,730)"/> + <wire from="(480,560)" to="(480,820)"/> + <wire from="(220,210)" to="(470,210)"/> + <wire from="(480,420)" to="(480,560)"/> + <wire from="(460,470)" to="(640,470)"/> + <wire from="(470,30)" to="(470,50)"/> + <wire from="(850,810)" to="(850,840)"/> + <wire from="(440,550)" to="(550,550)"/> + <wire from="(710,750)" to="(710,780)"/> + <wire from="(430,150)" to="(430,180)"/> + <wire from="(620,740)" to="(620,760)"/> + <wire from="(660,60)" to="(660,80)"/> + <wire from="(550,780)" to="(570,780)"/> + <wire from="(460,920)" to="(490,920)"/> + <wire from="(850,130)" to="(860,130)"/> + <wire from="(550,30)" to="(550,80)"/> + <wire from="(860,780)" to="(870,780)"/> + <wire from="(320,940)" to="(450,940)"/> + <wire from="(650,730)" to="(660,730)"/> + <wire from="(430,100)" to="(500,100)"/> + <wire from="(590,510)" to="(600,510)"/> + <wire from="(220,170)" to="(480,170)"/> + <wire from="(600,360)" to="(610,360)"/> + <wire from="(740,510)" to="(740,520)"/> + <wire from="(410,540)" to="(410,800)"/> + <wire from="(420,790)" to="(610,790)"/> + <wire from="(790,560)" to="(790,570)"/> + <wire from="(810,420)" to="(810,430)"/> + <wire from="(410,400)" to="(410,540)"/> + <wire from="(430,570)" to="(610,570)"/> + <wire from="(620,720)" to="(660,720)"/> + <wire from="(780,550)" to="(780,580)"/> + <wire from="(220,190)" to="(460,190)"/> + <wire from="(420,390)" to="(660,390)"/> + <wire from="(640,330)" to="(640,360)"/> + <wire from="(590,670)" to="(700,670)"/> + <wire from="(670,520)" to="(670,540)"/> + <wire from="(550,720)" to="(550,760)"/> + <wire from="(790,430)" to="(810,430)"/> + <wire from="(600,770)" to="(600,810)"/> + <wire from="(600,370)" to="(600,410)"/> + <wire from="(750,760)" to="(750,800)"/> + <wire from="(540,500)" to="(560,500)"/> + <wire from="(800,410)" to="(800,450)"/> + <wire from="(710,750)" to="(730,750)"/> + <wire from="(540,90)" to="(570,90)"/> + <wire from="(550,80)" to="(550,140)"/> + <wire from="(380,580)" to="(780,580)"/> + <wire from="(610,380)" to="(610,430)"/> + <wire from="(220,230)" to="(420,230)"/> + <wire from="(550,520)" to="(560,520)"/> + <wire from="(410,130)" to="(410,250)"/> + <wire from="(640,370)" to="(650,370)"/> + <wire from="(640,700)" to="(640,710)"/> + <wire from="(470,490)" to="(470,750)"/> + <wire from="(600,500)" to="(600,510)"/> + <wire from="(600,550)" to="(780,550)"/> + <wire from="(440,140)" to="(440,410)"/> + <wire from="(470,350)" to="(470,490)"/> + <wire from="(460,330)" to="(640,330)"/> + <wire from="(470,750)" to="(470,890)"/> + <wire from="(480,560)" to="(790,560)"/> + <wire from="(720,730)" to="(720,800)"/> + <wire from="(320,920)" to="(440,920)"/> + <wire from="(650,780)" to="(710,780)"/> + <wire from="(360,580)" to="(360,590)"/> + <wire from="(440,410)" to="(550,410)"/> + <wire from="(440,810)" to="(550,810)"/> + <wire from="(470,50)" to="(470,80)"/> + <wire from="(380,450)" to="(800,450)"/> + <wire from="(590,640)" to="(700,640)"/> + <wire from="(780,550)" to="(800,550)"/> + <wire from="(680,500)" to="(680,540)"/> + <wire from="(550,80)" to="(570,80)"/> + <wire from="(720,800)" to="(750,800)"/> + <wire from="(380,290)" to="(850,290)"/> + <wire from="(430,830)" to="(560,830)"/> + <wire from="(410,540)" to="(670,540)"/> + <wire from="(680,540)" to="(690,540)"/> + <wire from="(430,180)" to="(430,430)"/> + <wire from="(560,100)" to="(570,100)"/> + <wire from="(590,370)" to="(600,370)"/> + <wire from="(640,500)" to="(650,500)"/> + <wire from="(740,370)" to="(740,380)"/> + <wire from="(690,720)" to="(740,720)"/> + <wire from="(470,80)" to="(470,210)"/> + <wire from="(790,420)" to="(790,430)"/> + <wire from="(590,700)" to="(640,700)"/> + <wire from="(430,430)" to="(610,430)"/> + <wire from="(560,740)" to="(620,740)"/> + <wire from="(440,140)" to="(550,140)"/> + <wire from="(320,900)" to="(430,900)"/> + <wire from="(590,690)" to="(700,690)"/> + <wire from="(520,710)" to="(520,730)"/> + <wire from="(630,100)" to="(630,120)"/> + <wire from="(670,380)" to="(670,400)"/> + <wire from="(540,360)" to="(560,360)"/> + <wire from="(420,120)" to="(630,120)"/> + <wire from="(710,520)" to="(740,520)"/> <wire from="(430,60)" to="(430,100)"/> - <wire from="(870,60)" to="(870,120)"/> <wire from="(360,590)" to="(370,590)"/> - <wire from="(670,60)" to="(670,120)"/> - <wire from="(670,60)" to="(680,60)"/> + <wire from="(370,260)" to="(450,260)"/> <wire from="(640,710)" to="(650,710)"/> - <wire from="(480,150)" to="(870,150)"/> - <wire from="(550,780)" to="(560,780)"/> + <wire from="(560,710)" to="(570,710)"/> <wire from="(550,380)" to="(560,380)"/> - <wire from="(600,510)" to="(610,510)"/> - <comp lib="0" loc="(490,850)" name="Probe"> + <wire from="(650,80)" to="(660,80)"/> + <comp lib="0" loc="(680,60)" name="Splitter"> + <a name="facing" val="west"/> + <a name="incoming" val="16"/> + <a name="appear" val="center"/> + <a name="bit1" val="0"/> + <a name="bit2" val="0"/> + <a name="bit3" val="0"/> + <a name="bit4" val="0"/> + <a name="bit5" val="0"/> + <a name="bit6" val="0"/> + <a name="bit7" val="0"/> + <a name="bit8" val="1"/> + <a name="bit9" val="1"/> + <a name="bit10" val="1"/> + <a name="bit11" val="1"/> + <a name="bit12" val="1"/> + <a name="bit13" val="1"/> + <a name="bit14" val="1"/> + <a name="bit15" val="1"/> + </comp> + <comp lib="1" loc="(860,780)" name="NOT Gate"> + <a name="facing" val="south"/> + <a name="size" val="20"/> + </comp> + <comp lib="1" loc="(600,770)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="6" loc="(330,773)" name="Text"> + <a name="text" val="Memory Mapped I/O Port Address"/> + <a name="halign" val="right"/> + </comp> + <comp lib="3" loc="(540,500)" name="Comparator"> + <a name="mode" val="unsigned"/> + </comp> + <comp lib="5" loc="(700,370)" name="Hex Digit Display"/> + <comp lib="3" loc="(540,360)" name="Comparator"> + <a name="mode" val="unsigned"/> + </comp> + <comp lib="4" loc="(820,60)" name="ROM"> + <a name="addrWidth" val="16"/> + <a name="contents">addr/data: 16 8 +4b c4 30 33 7f 9f 63 a7 +db 83 7 ab 9b 23 e7 83 +1e bf ab f2 5f f7 83 0 +2b db 83 27 83 2 4b f7 +83 2 7 10 de 83 2 4b +9f a7 93 33 7f 9f ab a3 +52 f7 83 0 83 28 +</a> + </comp> + <comp lib="1" loc="(370,260)" name="OR Gate"> + <a name="facing" val="north"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="0" loc="(690,400)" name="Splitter"> + <a name="facing" val="north"/> + <a name="incoming" val="8"/> + <a name="appear" val="right"/> + <a name="bit1" val="0"/> + <a name="bit2" val="0"/> + <a name="bit3" val="0"/> + <a name="bit4" val="1"/> + <a name="bit5" val="1"/> + <a name="bit6" val="1"/> + <a name="bit7" val="1"/> + </comp> + <comp lib="4" loc="(680,360)" name="Register"/> + <comp lib="0" loc="(490,860)" name="Probe"> <a name="facing" val="west"/> <a name="label" val="Input"/> <a name="labelloc" val="east"/> <a name="labelfont" val="SansSerif bold 12"/> </comp> - <comp lib="6" loc="(329,514)" name="Text"> - <a name="text" val="Memory Mapped I/O Port Address"/> - <a name="halign" val="right"/> + <comp 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"> + <comp lib="0" loc="(410,60)" name="Constant"> <a name="width" val="8"/> <a name="value" val="0xfc"/> </comp> + <comp lib="5" loc="(700,510)" name="Hex Digit Display"/> + <comp lib="6" loc="(329,514)" name="Text"> + <a name="text" val="Memory Mapped I/O Port Address"/> + <a name="halign" val="right"/> + </comp> <comp lib="0" loc="(860,800)" name="Splitter"> <a name="facing" val="north"/> <a name="fanout" val="8"/> <a name="incoming" val="8"/> <a name="appear" val="right"/> </comp> - <comp lib="5" loc="(730,710)" name="TTY"> - <a name="cols" val="80"/> - <a name="trigger" val="falling"/> + <comp lib="0" loc="(320,940)" name="Pin"> + <a name="output" val="true"/> + <a name="label" val="IO ENABLE"/> </comp> <comp lib="1" loc="(860,820)" name="Controlled Buffer"> <a name="facing" val="south"/> <a name="width" val="8"/> </comp> - <comp lib="6" loc="(382,57)" name="Text"> - <a name="halign" val="right"/> - </comp> - <comp lib="1" loc="(370,250)" name="OR Gate"> - <a name="facing" val="north"/> + <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="5" loc="(730,750)" name="Keyboard"> - <a name="buflen" val="80"/> - <a name="trigger" val="falling"/> + <comp lib="1" loc="(690,760)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="3"/> </comp> - <comp lib="4" loc="(640,500)" name="Register"/> + <comp lib="4" loc="(650,80)" name="Register"/> <comp lib="1" loc="(590,510)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(690,720)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - <a name="negate0" val="true"/> + <comp lib="1" loc="(560,710)" name="Controlled Buffer"> + <a name="width" val="8"/> </comp> - <comp lib="1" loc="(640,780)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(350,510)" name="Constant"> + <a name="width" val="8"/> + <a name="value" val="0xfd"/> </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 lib="0" loc="(320,900)" name="Pin"> + <a name="output" val="true"/> + <a name="label" val="WRITE ACTIVE"/> </comp> - <comp lib="0" loc="(870,760)" name="Splitter"> + <comp lib="1" loc="(810,560)" name="Controlled Buffer"> <a name="facing" val="south"/> - <a name="fanout" val="7"/> - <a name="incoming" val="7"/> + <a name="width" val="8"/> </comp> - <comp lib="0" loc="(790,400)" name="Pin"> + <comp lib="0" loc="(320,860)" name="Pin"> + <a name="tristate" val="false"/> + <a name="label" val="RESET"/> + </comp> + <comp lib="1" loc="(810,420)" name="Controlled Buffer"> <a name="facing" val="south"/> <a name="width" val="8"/> - <a name="tristate" val="false"/> </comp> - <comp lib="4" loc="(640,360)" name="Register"/> - <comp lib="6" loc="(678,17)" name="Text"> - <a name="text" val="PROGRAM MEMORY"/> - <a name="font" val="SansSerif bold 12"/> + <comp lib="5" loc="(730,710)" name="TTY"> + <a name="cols" val="80"/> + <a name="trigger" val="falling"/> + </comp> + <comp lib="5" loc="(740,370)" name="Hex Digit Display"/> + <comp lib="6" loc="(656,608)" name="Text"> + <a name="text" val="Output:"/> + <a name="font" val="SansSerif bold 16"/> <a name="halign" val="left"/> </comp> - <comp lib="1" loc="(590,80)" name="AND Gate"> + <comp lib="0" loc="(870,760)" name="Splitter"> + <a name="facing" val="south"/> + <a name="fanout" val="7"/> + <a name="incoming" val="7"/> + </comp> + <comp lib="1" loc="(640,370)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(370,550)" name="OR Gate"> - <a name="facing" val="north"/> + <comp lib="1" loc="(640,780)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> @@ -4520,8 +4637,7 @@ <a name="width" val="8"/> <a name="value" val="0xfe"/> </comp> - <comp lib="4" loc="(640,80)" name="Register"/> - <comp lib="0" loc="(670,540)" name="Splitter"> + <comp lib="0" loc="(690,540)" name="Splitter"> <a name="facing" val="north"/> <a name="incoming" val="8"/> <a name="appear" val="right"/> @@ -4533,179 +4649,120 @@ <a name="bit6" val="1"/> <a name="bit7" val="1"/> </comp> - <comp lib="5" loc="(720,510)" name="Hex Digit Display"/> - <comp lib="1" loc="(790,560)" name="Controlled Buffer"> - <a name="facing" val="south"/> - <a name="width" val="8"/> - </comp> - <comp lib="5" loc="(680,370)" name="Hex Digit Display"/> - <comp lib="0" loc="(490,880)" name="Probe"> + <comp lib="0" loc="(490,890)" name="Probe"> <a name="facing" val="west"/> <a name="label" val="Address"/> <a name="labelloc" val="east"/> <a name="labelfont" val="SansSerif bold 12"/> </comp> - <comp lib="0" loc="(720,700)" name="Splitter"> - <a name="facing" val="west"/> - <a name="fanout" val="7"/> - <a name="incoming" val="7"/> - <a name="appear" val="right"/> - </comp> - <comp lib="6" loc="(388,63)" name="Text"> - <a name="text" val="Sets the memory-mapped address range"/> - <a name="halign" val="right"/> - </comp> - <comp lib="1" loc="(590,770)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(320,920)" name="Pin"> + <a name="output" val="true"/> + <a name="label" val="IO ACTIVE"/> </comp> - <comp lib="0" loc="(350,510)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0xfd"/> + <comp lib="3" loc="(540,20)" name="Comparator"> + <a name="mode" val="unsigned"/> </comp> - <comp lib="1" loc="(590,20)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - <a name="negate1" val="true"/> + <comp lib="6" loc="(330,373)" name="Text"> + <a name="text" val="Memory Mapped I/O Port Address"/> + <a name="halign" val="right"/> </comp> + <comp lib="4" loc="(680,500)" name="Register"/> <comp lib="1" loc="(590,370)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp loc="(220,130)" name="MCU"/> - <comp lib="0" loc="(280,900)" name="Pin"> - <a name="facing" val="north"/> - <a name="tristate" val="false"/> - <a name="label" val="RESET"/> - </comp> - <comp lib="0" loc="(790,540)" name="Pin"> - <a name="facing" val="south"/> + <comp lib="0" loc="(350,770)" name="Constant"> <a name="width" val="8"/> - <a name="tristate" val="false"/> - </comp> - <comp lib="0" loc="(490,910)" name="Probe"> - <a name="facing" val="west"/> - <a name="label" val="Output"/> - <a name="labelloc" val="east"/> - <a name="labelfont" val="SansSerif bold 12"/> + <a name="value" val="0xfc"/> </comp> - <comp lib="5" loc="(680,510)" name="Hex Digit Display"/> <comp lib="1" loc="(870,140)" name="Controlled Buffer"> <a name="facing" val="south"/> <a name="width" val="8"/> </comp> - <comp lib="0" loc="(670,60)" name="Splitter"> - <a name="facing" val="west"/> - <a name="incoming" val="16"/> - <a name="appear" val="center"/> - <a name="bit1" val="0"/> - <a name="bit2" val="0"/> - <a name="bit3" val="0"/> - <a name="bit4" val="0"/> - <a name="bit5" val="0"/> - <a name="bit6" val="0"/> - <a name="bit7" val="0"/> - <a name="bit8" val="1"/> - <a name="bit9" val="1"/> - <a name="bit10" val="1"/> - <a name="bit11" val="1"/> - <a name="bit12" val="1"/> - <a name="bit13" val="1"/> - <a name="bit14" val="1"/> - <a name="bit15" val="1"/> - </comp> - <comp lib="6" loc="(331,773)" name="Text"> - <a name="text" val="Memory Mapped I/O Port Address"/> - <a name="halign" val="right"/> - </comp> - <comp lib="3" loc="(540,760)" name="Comparator"> - <a name="mode" val="unsigned"/> - </comp> - <comp lib="1" loc="(690,760)" name="AND Gate"> + <comp lib="1" loc="(600,90)" name="AND Gate"> <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="1" loc="(790,420)" name="Controlled Buffer"> - <a name="facing" val="south"/> - <a name="width" val="8"/> + <a name="inputs" val="3"/> </comp> - <comp lib="0" loc="(670,400)" name="Splitter"> - <a name="facing" val="north"/> - <a name="incoming" val="8"/> - <a name="appear" val="right"/> - <a name="bit1" val="0"/> - <a name="bit2" val="0"/> - <a name="bit3" val="0"/> - <a name="bit4" val="1"/> - <a name="bit5" val="1"/> - <a name="bit6" val="1"/> - <a name="bit7" val="1"/> - </comp> - <comp lib="1" loc="(860,780)" name="NOT Gate"> - <a name="facing" val="south"/> - <a name="size" val="20"/> - </comp> - <comp lib="0" loc="(310,900)" name="Clock"> - <a name="facing" val="north"/> - <a name="label" val="CLOCK"/> - <a name="labelloc" val="east"/> - </comp> - <comp lib="6" loc="(656,608)" name="Text"> - <a name="text" val="Output:"/> - <a name="font" val="SansSerif bold 16"/> - <a name="halign" val="left"/> - </comp> - <comp lib="5" loc="(720,370)" name="Hex Digit Display"/> - <comp lib="0" loc="(520,710)" name="Splitter"> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> + <comp lib="6" loc="(388,63)" name="Text"> + <a name="text" val="Sets the memory-mapped address range"/> + <a name="halign" val="right"/> </comp> - <comp lib="3" loc="(540,360)" name="Comparator"> + <comp lib="3" loc="(540,90)" name="Comparator"> <a name="mode" val="unsigned"/> </comp> + <comp lib="0" loc="(810,540)" name="Pin"> + <a name="facing" val="south"/> + <a name="width" val="8"/> + <a name="tristate" val="false"/> + </comp> <comp lib="0" loc="(680,120)" name="Probe"> <a name="facing" val="west"/> <a name="label" val="Real Address"/> <a name="labelloc" val="east"/> </comp> - <comp lib="4" loc="(820,60)" name="ROM"> - <a name="addrWidth" val="16"/> - <a name="contents">addr/data: 16 8 -3 4b c4 30 33 7f 9f 3 -63 a7 db 83 9 ab 9b 23 -43 e7 83 23 bf ab f2 3 -5f f7 83 0 2b 43 db 83 -2e 83 3 3 4b f7 83 3 -7 43 10 de 83 3 3 4b -9f a7 93 33 7f 9f ab a3 -52 f7 83 0 83 30 -</a> + <comp loc="(220,130)" name="MCU"/> + <comp lib="6" loc="(883,753)" name="Text"> + <a name="text" val=" ← Keyboard"/> + <a name="font" val="SansSerif bold 16"/> + <a name="halign" val="left"/> </comp> - <comp lib="3" loc="(540,500)" name="Comparator"> - <a name="mode" val="unsigned"/> + <comp lib="0" loc="(720,700)" name="Splitter"> + <a name="facing" val="west"/> + <a name="fanout" val="7"/> + <a name="incoming" val="7"/> + <a name="appear" val="right"/> </comp> - <comp lib="0" loc="(430,60)" name="Constant"> + <comp lib="5" loc="(740,510)" name="Hex Digit Display"/> + <comp lib="0" loc="(810,400)" name="Pin"> + <a name="facing" val="south"/> <a name="width" val="8"/> - <a name="value" val="0xff"/> + <a name="tristate" val="false"/> </comp> - <comp lib="3" loc="(540,20)" name="Comparator"> - <a name="mode" val="unsigned"/> + <comp lib="6" loc="(382,57)" name="Text"> + <a name="halign" val="right"/> </comp> - <comp lib="3" loc="(540,90)" name="Comparator"> - <a name="mode" val="unsigned"/> + <comp lib="1" loc="(640,510)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="0" loc="(570,710)" name="Splitter"> + <a name="fanout" val="8"/> + <a name="incoming" val="8"/> </comp> <comp lib="1" loc="(370,420)" name="OR Gate"> <a name="facing" val="north"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="6" loc="(330,373)" name="Text"> - <a name="text" val="Memory Mapped I/O Port Address"/> - <a name="halign" val="right"/> + <comp lib="1" loc="(370,550)" name="OR Gate"> + <a name="facing" val="north"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(410,60)" name="Constant"> + <comp lib="5" loc="(730,750)" name="Keyboard"> + <a name="buflen" val="80"/> + <a name="trigger" val="falling"/> + </comp> + <comp lib="0" loc="(320,880)" name="Clock"> + <a name="label" val="CLOCK"/> + </comp> + <comp lib="0" loc="(490,920)" name="Probe"> + <a name="facing" val="west"/> + <a name="label" val="Output"/> + <a name="labelloc" val="east"/> + <a name="labelfont" val="SansSerif bold 12"/> + </comp> + <comp lib="6" loc="(678,17)" name="Text"> + <a name="text" val="PROGRAM MEMORY"/> + <a name="font" val="SansSerif bold 12"/> + <a name="halign" val="left"/> + </comp> + <comp lib="0" loc="(430,60)" name="Constant"> <a name="width" val="8"/> - <a name="value" val="0xfc"/> + <a name="value" val="0xff"/> + </comp> + <comp lib="3" loc="(540,760)" name="Comparator"> + <a name="mode" val="unsigned"/> </comp> </circuit> <circuit name="gridtest"> @@ -4843,95 +4900,83 @@ <wire from="(550,380)" to="(560,380)"/> <wire from="(600,510)" to="(610,510)"/> <wire from="(460,470)" to="(460,910)"/> - <comp lib="1" loc="(590,370)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="1" loc="(790,420)" name="Controlled Buffer"> + <a name="facing" val="south"/> + <a name="width" val="8"/> </comp> - <comp lib="1" loc="(590,20)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - <a name="negate1" val="true"/> + <comp lib="0" loc="(350,510)" name="Constant"> + <a name="width" val="8"/> + <a name="value" val="0xfd"/> </comp> - <comp lib="1" loc="(790,420)" name="Controlled Buffer"> + <comp lib="0" loc="(790,400)" name="Pin"> <a name="facing" val="south"/> <a name="width" val="8"/> + <a name="tristate" val="false"/> </comp> - <comp lib="0" loc="(490,880)" name="Probe"> + <comp lib="3" loc="(540,360)" name="Comparator"> + <a name="mode" val="unsigned"/> + </comp> + <comp lib="3" loc="(540,500)" name="Comparator"> + <a name="mode" val="unsigned"/> + </comp> + <comp lib="0" loc="(490,910)" name="Probe"> <a name="facing" val="west"/> - <a name="label" val="Address"/> + <a name="label" val="Output"/> <a name="labelloc" val="east"/> <a name="labelfont" val="SansSerif bold 12"/> </comp> - <comp lib="0" loc="(430,930)" name="Clock"> - <a name="facing" val="north"/> - <a name="label" val="CLOCK"/> - <a name="labelloc" val="east"/> - </comp> - <comp lib="0" loc="(430,60)" name="Constant"> + <comp lib="1" loc="(650,560)" name="Controlled Buffer"> + <a name="facing" val="south"/> <a name="width" val="8"/> - <a name="value" val="0xff"/> - </comp> - <comp lib="3" loc="(540,500)" name="Comparator"> - <a name="mode" val="unsigned"/> </comp> <comp lib="5" loc="(680,370)" name="Hex Digit Display"/> - <comp lib="1" loc="(590,510)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="6" loc="(330,373)" name="Text"> - <a name="text" val="Memory Mapped I/O Port Address"/> + <comp lib="6" loc="(388,63)" name="Text"> + <a name="text" val="Sets the memory-mapped address range"/> <a name="halign" val="right"/> </comp> <comp lib="1" loc="(870,140)" name="Controlled Buffer"> <a name="facing" val="south"/> <a name="width" val="8"/> </comp> + <comp lib="0" loc="(430,60)" name="Constant"> + <a name="width" val="8"/> + <a name="value" val="0xff"/> + </comp> + <comp lib="4" loc="(640,500)" name="Register"/> <comp lib="0" loc="(490,850)" name="Probe"> <a name="facing" val="west"/> <a name="label" val="Input"/> <a name="labelloc" val="east"/> <a name="labelfont" val="SansSerif bold 12"/> </comp> - <comp lib="3" loc="(540,90)" name="Comparator"> - <a name="mode" val="unsigned"/> - </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="5" loc="(720,370)" name="Hex Digit Display"/> - <comp lib="0" loc="(350,370)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0xfe"/> - </comp> - <comp lib="0" loc="(670,400)" name="Splitter"> - <a name="facing" val="north"/> - <a name="incoming" val="8"/> - <a name="appear" val="right"/> - <a name="bit1" val="0"/> - <a name="bit2" val="0"/> - <a name="bit3" val="0"/> - <a name="bit4" val="1"/> - <a name="bit5" val="1"/> - <a name="bit6" val="1"/> - <a name="bit7" val="1"/> - </comp> - <comp lib="4" loc="(640,80)" name="Register"/> <comp lib="6" loc="(329,514)" name="Text"> <a name="text" val="Memory Mapped I/O Port Address"/> <a name="halign" val="right"/> </comp> - <comp lib="0" loc="(790,400)" name="Pin"> - <a name="facing" val="south"/> - <a name="width" val="8"/> - <a name="tristate" val="false"/> + <comp lib="1" loc="(590,20)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> <comp lib="1" loc="(370,250)" name="OR Gate"> <a name="facing" val="north"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> + <comp lib="1" loc="(590,80)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="6" loc="(330,373)" name="Text"> + <a name="text" val="Memory Mapped I/O Port Address"/> + <a name="halign" val="right"/> + </comp> + <comp lib="0" loc="(680,120)" name="Probe"> + <a name="facing" val="west"/> + <a name="label" val="Real Address"/> + <a name="labelloc" val="east"/> + </comp> + <comp lib="4" loc="(640,360)" name="Register"/> <comp lib="0" loc="(670,60)" name="Splitter"> <a name="facing" val="west"/> <a name="incoming" val="16"/> @@ -4952,27 +4997,64 @@ <a name="bit14" val="1"/> <a name="bit15" val="1"/> </comp> - <comp lib="4" loc="(640,500)" name="Register"/> - <comp lib="0" loc="(490,910)" name="Probe"> - <a name="facing" val="west"/> - <a name="label" val="Output"/> - <a name="labelloc" val="east"/> - <a name="labelfont" val="SansSerif bold 12"/> + <comp lib="1" loc="(590,510)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="0" loc="(350,370)" name="Constant"> + <a name="width" val="8"/> + <a name="value" val="0xfe"/> </comp> + <comp lib="4" loc="(640,80)" name="Register"/> <comp loc="(220,130)" name="MCU"/> - <comp lib="0" loc="(680,120)" name="Probe"> + <comp lib="0" loc="(670,400)" name="Splitter"> + <a name="facing" val="north"/> + <a name="incoming" val="8"/> + <a name="appear" val="right"/> + <a name="bit1" val="0"/> + <a name="bit2" val="0"/> + <a name="bit3" val="0"/> + <a name="bit4" val="1"/> + <a name="bit5" val="1"/> + <a name="bit6" val="1"/> + <a name="bit7" val="1"/> + </comp> + <comp lib="1" loc="(370,420)" name="OR Gate"> + <a name="facing" val="north"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="0" loc="(490,880)" name="Probe"> <a name="facing" val="west"/> - <a name="label" val="Real Address"/> + <a name="label" val="Address"/> <a name="labelloc" val="east"/> - </comp> - <comp lib="3" loc="(540,360)" name="Comparator"> - <a name="mode" val="unsigned"/> + <a name="labelfont" val="SansSerif bold 12"/> </comp> <comp lib="0" loc="(280,900)" name="Pin"> <a name="facing" val="north"/> <a name="tristate" val="false"/> <a name="label" val="RESET"/> </comp> + <comp lib="0" loc="(410,60)" name="Constant"> + <a name="width" val="8"/> + <a name="value" val="0xfc"/> + </comp> + <comp lib="3" loc="(540,20)" name="Comparator"> + <a name="mode" val="unsigned"/> + </comp> + <comp lib="1" loc="(590,370)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="0" loc="(430,930)" name="Clock"> + <a name="facing" val="north"/> + <a name="label" val="CLOCK"/> + <a name="labelloc" val="east"/> + </comp> + <comp lib="5" loc="(720,370)" name="Hex Digit Display"/> + <comp lib="3" loc="(540,90)" name="Comparator"> + <a name="mode" val="unsigned"/> + </comp> <comp lib="4" loc="(820,60)" name="ROM"> <a name="addrWidth" val="16"/> <a name="contents">addr/data: 16 8 @@ -4986,30 +5068,5 @@ 52 f7 83 0 83 30 </a> </comp> - <comp lib="1" loc="(370,420)" name="OR Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="4" loc="(640,360)" name="Register"/> - <comp lib="1" loc="(590,80)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="0" loc="(410,60)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0xfc"/> - </comp> - <comp lib="3" loc="(540,20)" name="Comparator"> - <a name="mode" val="unsigned"/> - </comp> - <comp lib="0" loc="(350,510)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0xfd"/> - </comp> - <comp lib="1" loc="(650,560)" name="Controlled Buffer"> - <a name="facing" val="south"/> - <a name="width" val="8"/> - </comp> </circuit> </project> diff --git a/INSTRUCTION_SET b/INSTRUCTION_SET @@ -13,8 +13,6 @@ Tiny Instruction Set Computer -----------------------------------------------------------------------<-------- RAW - memonic - description -----------------------------------------------------------------------<-------- -00000000 - NOP ----- This will default the set operation (to ADD) -C B A 00 - OR ----- C = A | B 00000000 - SOP_ADD ----- SetOp ADD, flag if overflow 00010000 - SOP_SUB ----- SetOp SUB, A-B and flag if sign is positive 00100000 - SOP_AND ----- SetOp AND, A&B and flag if the output is nonzero @@ -24,6 +22,7 @@ C B A 00 - OR ----- C = A | B 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 11110000 - PTRINC ----- Increment pointer by 1 +C B A 00 - OR ----- C = A | B C B A 01 - NAND ----- C = A nand B C B A 10 - OP ----- C = A (OP) B - perform operation set by SOP_* C B 0010 - CIN ----- C = ++B 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 v1.3](Screenshots/tiscv1_3.png) +![TISC v1.4](Screenshots/tiscv1_4.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 echoes the buffer once the user inputs a line feed (enter key). -![TISC Example configuration](Screenshots/tiscv1_3_example.png) +![TISC Example configuration](Screenshots/tiscv1_4_example.png) ## Compiling the assembler diff --git a/Screenshots/tiscv1_3.png b/Screenshots/tiscv1_3.png Binary files differ. diff --git a/Screenshots/tiscv1_3_example.png b/Screenshots/tiscv1_3_example.png Binary files differ. diff --git a/Screenshots/tiscv1_4.png b/Screenshots/tiscv1_4.png Binary files differ. diff --git a/Screenshots/tiscv1_4_example.png b/Screenshots/tiscv1_4_example.png Binary files differ.