tisc

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit d6715cf3c9438f8228382d4ec2bb4cfccb0ef9f1
parent fc6eafdc05524e527aeefe728e0700b648dfdcba
Author: Paul Longtine <paul@nanner.co>
Date:   Wed, 17 Jun 2020 02:57:56 -0400

Added a new test program, some minor modifications to the circuit to fix bugs, and updated the README and documentation a bit

Diffstat:
MCPU/CPU.circ | 2641+++++++++++++++++++++++++++++++++++++++++--------------------------------------
MExamplePrograms/README.md | 19+++++++++++--------
MExamplePrograms/test_compare.tac | 14+++++++++++---
AExamplePrograms/typing_test.tac | 45+++++++++++++++++++++++++++++++++++++++++++++
MREADME.md | 4+++-
5 files changed, 1457 insertions(+), 1266 deletions(-)

diff --git a/CPU/CPU.circ b/CPU/CPU.circ @@ -98,14 +98,14 @@ <wire from="(220,100)" to="(220,130)"/> <wire from="(230,250)" to="(260,250)"/> <wire from="(210,350)" to="(240,350)"/> - <wire from="(150,240)" to="(240,240)"/> - <wire from="(200,380)" to="(420,380)"/> + <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="(210,110)" to="(290,110)"/> <wire from="(220,220)" to="(230,220)"/> @@ -119,7 +119,6 @@ <wire from="(160,30)" to="(160,180)"/> <wire from="(140,20)" to="(140,110)"/> <wire from="(170,230)" to="(210,230)"/> - <wire from="(200,300)" to="(240,300)"/> <wire from="(210,230)" to="(250,230)"/> <wire from="(440,340)" to="(480,340)"/> <wire from="(160,30)" to="(190,30)"/> @@ -129,22 +128,25 @@ <wire from="(220,220)" to="(220,320)"/> <wire from="(260,140)" to="(280,140)"/> <wire from="(330,210)" to="(350,210)"/> - <wire from="(150,240)" to="(150,280)"/> <wire from="(400,360)" to="(420,360)"/> + <wire from="(160,210)" to="(160,250)"/> <wire from="(140,20)" to="(350,20)"/> - <wire from="(160,210)" to="(160,260)"/> <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="(190,120)" to="(190,180)"/> + <wire from="(170,380)" to="(420,380)"/> <wire from="(190,80)" to="(250,80)"/> + <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="(240,220)" to="(240,240)"/> <wire from="(140,110)" to="(140,200)"/> @@ -154,83 +156,74 @@ <wire from="(370,250)" to="(400,250)"/> <wire from="(400,250)" to="(400,360)"/> <wire from="(330,140)" to="(350,140)"/> - <wire from="(140,440)" to="(480,440)"/> - <wire from="(150,280)" to="(170,280)"/> <wire from="(430,250)" to="(440,250)"/> <wire from="(140,200)" to="(150,200)"/> - <wire from="(160,260)" to="(170,260)"/> <wire from="(230,370)" to="(240,370)"/> + <wire from="(170,300)" to="(240,300)"/> <wire from="(220,400)" to="(420,400)"/> <wire from="(210,350)" to="(210,420)"/> + <wire from="(180,240)" to="(240,240)"/> <wire from="(240,150)" to="(240,160)"/> - <wire from="(180,210)" to="(230,210)"/> <wire from="(320,150)" to="(320,160)"/> <wire from="(310,340)" to="(310,360)"/> <wire from="(220,320)" to="(220,400)"/> - <wire from="(200,300)" to="(200,380)"/> + <wire from="(170,280)" to="(170,300)"/> <wire from="(360,190)" to="(360,220)"/> - <wire from="(200,270)" to="(200,300)"/> <wire from="(200,170)" to="(230,170)"/> + <wire from="(200,210)" to="(230,210)"/> <wire from="(380,240)" to="(400,240)"/> - <wire from="(180,210)" to="(180,250)"/> + <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="(220,130)" to="(230,130)"/> + <wire from="(190,260)" to="(200,260)"/> <wire from="(270,100)" to="(270,160)"/> <wire from="(230,250)" to="(230,370)"/> - <wire from="(210,230)" to="(210,350)"/> <wire from="(210,110)" to="(210,230)"/> - <comp loc="(160,210)" name="PC"/> - <comp lib="2" loc="(360,220)" name="Multiplexer"> + <wire from="(210,230)" to="(210,350)"/> + <wire from="(350,440)" to="(480,440)"/> + <comp lib="0" loc="(290,340)" name="Constant"> <a name="facing" val="north"/> - <a name="selloc" val="tr"/> - <a name="width" val="8"/> - <a name="enable" val="false"/> - </comp> - <comp lib="2" loc="(290,80)" name="Multiplexer"> - <a name="select" val="2"/> - <a name="width" val="8"/> - <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(200,270)" name="Multiplexer"> - <a name="selloc" val="tr"/> - <a name="width" val="8"/> - <a name="enable" val="false"/> + <comp lib="6" loc="(303,244)" name="Text"> + <a name="text" val="TISCv1.2"/> + <a name="font" val="Dialog plain 14"/> </comp> <comp loc="(280,150)" name="GPR"/> - <comp loc="(230,170)" name="ISD"/> - <comp loc="(260,130)" name="ALU"/> - <comp lib="1" loc="(400,240)" name="AND Gate"> - <a name="facing" val="west"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - <a name="negate0" val="true"/> - </comp> - <comp lib="0" loc="(420,380)" name="Pin"> + <comp loc="(200,90)" name="STK"/> + <comp lib="0" loc="(420,400)" name="Pin"> <a name="facing" val="west"/> <a name="output" val="true"/> <a name="width" val="8"/> <a name="tristate" val="false"/> <a name="pull" val="down"/> - <a name="label" val="ADDR"/> + <a name="label" val="OUT"/> <a name="labelloc" val="east"/> </comp> - <comp lib="0" loc="(480,340)" name="Pin"> + <comp loc="(230,170)" name="ISD"/> + <comp lib="4" loc="(380,300)" name="RAM"> + <a name="bus" val="separate"/> + </comp> + <comp lib="6" loc="(290,239)" name="Text"/> + <comp lib="0" loc="(420,360)" name="Pin"> <a name="facing" val="west"/> + <a name="width" val="8"/> <a name="tristate" val="false"/> <a name="pull" val="down"/> - <a name="label" val="IN ENABLE"/> + <a name="label" val="IN"/> <a name="labelloc" val="east"/> </comp> - <comp lib="0" loc="(420,360)" name="Pin"> + <comp lib="0" loc="(420,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="IN"/> + <a name="label" val="ADDR"/> <a name="labelloc" val="east"/> </comp> + <comp loc="(160,210)" name="PC"/> <comp lib="0" loc="(480,420)" name="Pin"> <a name="facing" val="west"/> <a name="tristate" val="false"/> @@ -238,37 +231,47 @@ <a name="label" val="CLK"/> <a name="labelloc" val="east"/> </comp> - <comp lib="0" loc="(290,340)" name="Constant"> - <a name="facing" val="north"/> - </comp> - <comp lib="6" loc="(303,244)" name="Text"> - <a name="text" val="TISCv1.2"/> - <a name="font" val="Dialog plain 14"/> - </comp> - <comp lib="6" loc="(290,239)" name="Text"/> - <comp lib="0" loc="(480,440)" name="Pin"> + <comp lib="0" loc="(480,340)" 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="IN ENABLE"/> <a name="labelloc" val="east"/> </comp> - <comp loc="(200,90)" name="STK"/> + <comp lib="2" loc="(360,220)" 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="(270,360)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(420,400)" name="Pin"> - <a name="facing" val="west"/> - <a name="output" val="true"/> + <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="(480,440)" name="Pin"> + <a name="facing" val="west"/> <a name="tristate" val="false"/> <a name="pull" val="down"/> - <a name="label" val="OUT"/> + <a name="label" val="RST"/> <a name="labelloc" val="east"/> </comp> - <comp lib="4" loc="(380,300)" name="RAM"> - <a name="bus" val="separate"/> + <comp loc="(260,130)" name="ALU"/> + <comp lib="1" loc="(400,240)" name="AND Gate"> + <a name="facing" val="west"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + <a name="negate0" val="true"/> + </comp> + <comp lib="2" loc="(290,80)" name="Multiplexer"> + <a name="select" val="2"/> + <a name="width" val="8"/> + <a name="enable" val="false"/> </comp> </circuit> <circuit name="ALU"> @@ -588,699 +591,709 @@ <wire from="(200,270)" to="(210,270)"/> <wire from="(200,750)" to="(210,750)"/> <wire from="(550,420)" to="(550,470)"/> - <comp lib="1" loc="(270,770)" 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="(340,640)" name="XNOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(390,190)" name="Tunnel"> + <a name="label" val="o1"/> </comp> - <comp lib="1" loc="(190,490)" name="XOR Gate"> + <comp lib="1" loc="(300,240)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(670,250)" name="Tunnel"> - <a name="label" val="o1"/> + <comp lib="0" loc="(130,270)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b2"/> </comp> - <comp lib="0" loc="(500,550)" name="Pin"> - <a name="width" val="4"/> - <a name="tristate" val="false"/> + <comp lib="0" loc="(650,320)" name="Splitter"> + <a name="fanout" val="8"/> + <a name="incoming" val="8"/> </comp> - <comp lib="1" loc="(190,460)" name="XOR Gate"> + <comp lib="1" loc="(280,560)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(300,510)" 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="(560,180)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b4"/> - </comp> - <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 lib="6" loc="(624,352)" name="Text"> + <a name="text" val="Opcodes"/> </comp> - <comp lib="0" loc="(390,640)" name="Tunnel"> - <a name="label" val="o6"/> + <comp lib="0" loc="(670,260)" name="Tunnel"> + <a name="label" val="o2"/> </comp> - <comp lib="1" loc="(300,240)" name="AND Gate"> + <comp lib="1" loc="(270,770)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(190,730)" name="XOR Gate"> + <comp lib="1" loc="(280,470)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(670,550)" name="Splitter"> - <a name="fanout" val="4"/> - <a name="incoming" val="4"/> - </comp> - <comp lib="1" loc="(310,150)" name="OR Gate"> - <a name="facing" val="west"/> + <comp lib="1" loc="(340,640)" name="XNOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(560,140)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b0"/> + <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="0" loc="(670,280)" name="Tunnel"> - <a name="label" val="o4"/> + <comp lib="1" loc="(240,670)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(130,660)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a6"/> + <comp lib="6" loc="(612,164)" name="Text"> + <a name="text" val="Input B"/> </comp> - <comp lib="1" loc="(250,280)" name="NOR Gate"> + <comp lib="1" loc="(310,150)" name="OR Gate"> + <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(270,590)" name="AND Gate"> + <comp lib="1" loc="(250,190)" name="NOR 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="0" loc="(770,380)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="CC"/> - </comp> - <comp lib="0" loc="(130,270)" name="Tunnel"> + <comp lib="0" loc="(130,480)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b2"/> + <a name="label" val="a4"/> </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="0" loc="(790,380)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="FC"/> - </comp> - <comp lib="0" loc="(560,190)" name="Tunnel"> + <comp lib="0" loc="(130,120)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b5"/> + <a name="label" val="a0"/> </comp> - <comp lib="0" loc="(180,70)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="!B"/> + <comp lib="1" loc="(190,460)" name="XOR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(390,370)" name="Tunnel"> - <a name="label" val="o3"/> + <comp lib="0" loc="(130,720)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b7"/> </comp> - <comp lib="0" loc="(390,730)" name="Tunnel"> - <a name="label" val="o7"/> + <comp lib="0" loc="(220,70)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="OR"/> </comp> - <comp lib="0" loc="(650,320)" name="Pin"> - <a name="output" val="true"/> - <a name="width" val="8"/> - <a name="labelloc" val="east"/> + <comp lib="0" loc="(130,630)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b6"/> </comp> - <comp lib="1" loc="(310,600)" name="OR Gate"> - <a name="facing" val="west"/> + <comp lib="1" loc="(190,580)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(240,130)" name="AND Gate"> + <comp lib="1" loc="(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="(340,730)" name="XNOR Gate"> + <comp lib="1" loc="(300,540)" name="OR Gate"> + <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(330,490)" name="AND Gate"> + <comp lib="1" loc="(240,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,750)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a7"/> </comp> - <comp lib="0" loc="(130,90)" name="Tunnel"> + <comp lib="0" loc="(560,200)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b0"/> + <a name="label" val="b6"/> </comp> - <comp lib="1" loc="(270,500)" 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="(300,70)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="CI"/> - </comp> - <comp lib="0" loc="(690,150)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a1"/> - </comp> - <comp lib="0" loc="(390,190)" name="Tunnel"> - <a name="label" val="o1"/> </comp> - <comp lib="0" loc="(780,380)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="CI"/> + <comp lib="6" loc="(340,904)" name="Text"> + <a name="text" val="FLAG"/> </comp> - <comp lib="1" loc="(300,780)" name="AND Gate"> + <comp lib="1" loc="(310,420)" name="OR Gate"> + <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(270,680)" 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="1" loc="(300,810)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(670,550)" name="Splitter"> + <a name="fanout" val="4"/> + <a name="incoming" val="4"/> </comp> - <comp lib="6" loc="(624,352)" name="Text"> - <a name="text" val="Opcodes"/> + <comp lib="0" loc="(690,150)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a1"/> </comp> - <comp lib="0" loc="(580,130)" name="Pin"> - <a name="facing" val="west"/> - <a name="width" val="8"/> - <a name="tristate" val="false"/> + <comp lib="0" loc="(560,190)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b5"/> </comp> - <comp lib="1" loc="(330,220)" name="AND Gate"> + <comp lib="0" loc="(560,160)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b2"/> + </comp> + <comp lib="6" loc="(746,165)" name="Text"> + <a name="text" val="Input A"/> + </comp> + <comp lib="1" loc="(190,190)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(670,260)" name="Tunnel"> - <a name="label" val="o2"/> + <comp lib="1" loc="(280,290)" name="OR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(300,360)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="1" loc="(300,510)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(310,240)" name="OR Gate"> + <comp lib="1" loc="(310,600)" name="OR Gate"> <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(690,170)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a3"/> - </comp> - <comp lib="0" loc="(130,450)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b4"/> + <comp lib="0" loc="(390,280)" name="Tunnel"> + <a name="label" val="o2"/> </comp> - <comp lib="0" loc="(130,300)" name="Tunnel"> + <comp lib="0" loc="(690,180)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a2"/> - </comp> - <comp lib="0" loc="(260,70)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="CC"/> + <a name="label" val="a4"/> </comp> - <comp lib="0" loc="(130,570)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a5"/> + <comp lib="2" loc="(570,400)" name="Multiplexer"> + <a name="width" val="3"/> + <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(330,580)" name="AND Gate"> + <comp lib="1" loc="(330,220)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(190,190)" name="XOR Gate"> + <comp lib="1" loc="(240,310)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(300,690)" name="AND Gate"> + <comp lib="1" loc="(240,760)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(190,760)" name="XOR Gate"> + <comp lib="0" loc="(670,240)" name="Tunnel"> + <a name="label" val="o0"/> + </comp> + <comp lib="1" loc="(300,630)" name="OR Gate"> + <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(250,550)" name="NOR Gate"> + <comp lib="0" loc="(310,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="(300,690)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(690,210)" name="Tunnel"> + <comp lib="0" loc="(130,390)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a7"/> + <a name="label" val="a3"/> </comp> - <comp lib="1" loc="(250,640)" name="NOR Gate"> + <comp lib="1" loc="(280,380)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(280,560)" name="OR Gate"> + <comp lib="1" loc="(190,310)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(580,130)" name="Splitter"> - <a name="facing" val="west"/> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> - </comp> - <comp lib="1" loc="(300,420)" name="AND Gate"> + <comp lib="1" loc="(190,730)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(190,640)" name="XOR Gate"> + <comp lib="0" loc="(670,250)" name="Tunnel"> + <a name="label" val="o1"/> + </comp> + <comp lib="1" loc="(190,760)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(330,310)" name="AND Gate"> + <comp lib="0" loc="(560,150)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b1"/> + </comp> + <comp lib="0" loc="(130,570)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a5"/> + </comp> + <comp lib="0" loc="(260,70)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="CC"/> + </comp> + <comp lib="1" loc="(250,370)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(640,440)" name="Constant"/> - <comp lib="2" loc="(570,400)" name="Multiplexer"> - <a name="width" val="3"/> - <a name="enable" val="false"/> + <comp lib="0" loc="(670,290)" name="Tunnel"> + <a name="label" val="o5"/> </comp> - <comp lib="0" loc="(690,160)" name="Tunnel"> + <comp lib="0" loc="(130,300)" name="Tunnel"> <a name="facing" val="east"/> <a name="label" val="a2"/> </comp> - <comp lib="0" loc="(670,310)" name="Tunnel"> - <a name="label" val="o7"/> + <comp lib="0" loc="(560,170)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b3"/> </comp> - <comp lib="1" loc="(830,280)" name="OR Gate"> - <a name="size" val="70"/> - <a name="inputs" val="8"/> + <comp lib="0" loc="(690,200)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a6"/> </comp> - <comp lib="1" loc="(280,110)" name="OR Gate"> + <comp lib="1" loc="(190,370)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(390,460)" name="Tunnel"> - <a name="label" val="o4"/> + <comp lib="0" loc="(690,170)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a3"/> </comp> - <comp lib="1" loc="(300,600)" name="AND Gate"> + <comp lib="1" loc="(340,100)" name="XNOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(500,380)" name="Pin"> - <a name="width" val="3"/> + <comp lib="0" loc="(500,550)" name="Pin"> + <a name="width" val="4"/> <a name="tristate" val="false"/> </comp> - <comp lib="6" loc="(611,272)" name="Text"> - <a name="text" val="Output"/> + <comp lib="0" loc="(390,550)" name="Tunnel"> + <a name="label" val="o5"/> </comp> - <comp lib="1" loc="(280,380)" name="OR Gate"> + <comp lib="1" loc="(190,280)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(690,180)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a4"/> + <comp lib="1" loc="(330,400)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(250,370)" name="NOR Gate"> + <comp lib="1" loc="(310,330)" name="OR Gate"> + <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(690,140)" name="Tunnel"> + <comp lib="0" loc="(130,660)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a0"/> + <a name="label" val="a6"/> + </comp> + <comp lib="0" loc="(760,380)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="OR"/> + </comp> + <comp lib="1" loc="(340,730)" name="XNOR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="1" loc="(240,400)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> <comp lib="4" loc="(670,550)" name="ROM"> <a name="addrWidth" val="4"/> <a name="dataWidth" val="4"/> <a name="contents">addr/data: 4 4 -7 3 9 d a +7 3 9 a a </a> </comp> - <comp lib="0" loc="(130,120)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a0"/> + <comp lib="0" loc="(300,70)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="CI"/> </comp> - <comp lib="1" loc="(280,650)" name="OR 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="1" loc="(190,310)" name="XOR Gate"> + <comp lib="1" loc="(300,420)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(310,330)" name="OR Gate"> - <a name="facing" val="west"/> + <comp lib="1" loc="(190,670)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(190,370)" name="XOR Gate"> + <comp lib="4" loc="(730,400)" name="ROM"> + <a name="addrWidth" val="3"/> + <a name="dataWidth" val="6"/> + <a name="contents">addr/data: 3 6 +8 3b 4 0 2 38 7 12 +</a> + </comp> + <comp lib="1" loc="(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="(340,100)" name="XNOR Gate"> + <comp lib="1" loc="(240,580)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(280,290)" name="OR Gate"> + <comp lib="1" loc="(190,130)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(130,210)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a1"/> + <comp lib="0" loc="(500,470)" name="Pin"> + <a name="tristate" val="false"/> </comp> - <comp lib="1" loc="(310,420)" name="OR Gate"> - <a name="facing" val="west"/> + <comp lib="1" loc="(340,280)" name="XNOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(190,100)" name="XOR Gate"> + <comp lib="1" loc="(270,590)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(280,200)" name="OR Gate"> + <comp lib="1" loc="(300,330)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(730,400)" name="Splitter"> - <a name="facing" val="north"/> - <a name="fanout" val="6"/> - <a name="incoming" val="6"/> - <a name="appear" val="right"/> - </comp> - <comp lib="1" loc="(330,400)" name="AND Gate"> + <comp lib="1" loc="(250,460)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(340,460)" name="XNOR Gate"> + <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="(310,780)" name="OR Gate"> + <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(240,310)" name="AND Gate"> + <comp lib="0" loc="(130,90)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b0"/> + </comp> + <comp lib="0" loc="(710,130)" 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"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(300,270)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="1" loc="(250,640)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(340,190)" name="XNOR Gate"> + <comp lib="1" loc="(250,280)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(300,630)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="0" loc="(390,460)" name="Tunnel"> + <a name="label" val="o4"/> + </comp> + <comp lib="0" loc="(390,370)" name="Tunnel"> + <a name="label" val="o3"/> + </comp> + <comp lib="1" loc="(300,780)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(670,290)" name="Tunnel"> - <a name="label" val="o5"/> - </comp> - <comp lib="0" loc="(340,70)" name="Tunnel"> + <comp lib="1" loc="(300,270)" name="OR Gate"> <a name="facing" val="south"/> - <a name="label" val="FC"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(250,190)" name="NOR Gate"> + <comp lib="1" loc="(270,500)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(560,210)" name="Tunnel"> + <comp lib="0" loc="(130,750)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b7"/> + <a name="label" val="a7"/> </comp> - <comp lib="0" loc="(710,130)" name="Pin"> + <comp lib="1" loc="(190,400)" name="XOR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="1" loc="(830,280)" name="OR Gate"> + <a name="size" val="70"/> + <a name="inputs" val="8"/> + </comp> + <comp lib="6" loc="(611,272)" name="Text"> + <a name="text" val="Output"/> + </comp> + <comp lib="6" loc="(488,363)" name="Text"> + <a name="text" val="OPCODE"/> + </comp> + <comp lib="0" loc="(670,310)" name="Tunnel"> + <a name="label" val="o7"/> + </comp> + <comp lib="0" loc="(500,380)" name="Pin"> + <a name="width" val="3"/> + <a name="tristate" val="false"/> + </comp> + <comp lib="0" loc="(580,130)" name="Pin"> <a name="facing" val="west"/> <a name="width" val="8"/> <a name="tristate" val="false"/> </comp> - <comp lib="0" loc="(750,380)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="!B"/> + <comp lib="0" loc="(130,540)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b5"/> </comp> - <comp lib="4" loc="(730,400)" name="ROM"> - <a name="addrWidth" val="3"/> - <a name="dataWidth" val="6"/> - <a name="contents">addr/data: 3 6 -8 3b 4 0 2 38 7 12 -</a> + <comp lib="0" loc="(690,140)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a0"/> </comp> - <comp lib="0" loc="(130,480)" name="Tunnel"> + <comp lib="0" loc="(560,210)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a4"/> + <a name="label" val="b7"/> </comp> - <comp lib="2" loc="(310,870)" name="Multiplexer"> - <a name="facing" val="south"/> - <a name="selloc" val="tr"/> - <a name="enable" val="false"/> + <comp lib="0" loc="(670,300)" name="Tunnel"> + <a name="label" val="o6"/> </comp> - <comp lib="1" loc="(340,280)" name="XNOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(560,180)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b4"/> </comp> - <comp lib="1" loc="(240,490)" name="AND Gate"> + <comp lib="0" loc="(780,380)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="CI"/> + </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="(220,70)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="OR"/> - </comp> - <comp lib="1" loc="(270,230)" name="AND Gate"> + <comp lib="1" loc="(330,670)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="6" loc="(481,532)" name="Text"> - <a name="text" val="AUX OP"/> - </comp> - <comp lib="1" loc="(190,670)" name="XOR 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="(130,720)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b7"/> + <comp lib="6" loc="(472,453)" name="Text"> + <a name="text" val="COMPARE ENABLE"/> </comp> - <comp lib="1" loc="(300,180)" name="OR Gate"> + <comp lib="0" loc="(180,70)" name="Tunnel"> <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="label" val="!B"/> </comp> - <comp lib="1" loc="(240,670)" name="AND Gate"> - <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="(710,130)" name="Splitter"> + <comp lib="1" loc="(310,240)" name="OR Gate"> <a name="facing" val="west"/> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> - </comp> - <comp lib="1" loc="(300,150)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(330,760)" name="AND Gate"> + <comp lib="0" loc="(640,440)" name="Constant"/> + <comp lib="1" loc="(190,640)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(130,630)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b6"/> + <comp lib="0" loc="(710,500)" name="Splitter"> + <a name="facing" val="west"/> + <a name="fanout" val="3"/> + <a name="incoming" val="3"/> </comp> - <comp lib="1" loc="(280,470)" name="OR Gate"> + <comp lib="1" loc="(190,490)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(500,470)" name="Pin"> - <a name="tristate" val="false"/> - </comp> - <comp lib="0" loc="(140,70)" name="Tunnel"> + <comp lib="1" loc="(300,180)" name="OR Gate"> <a name="facing" val="south"/> - <a name="label" val="!A"/> - </comp> - <comp lib="1" loc="(330,130)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="6" loc="(612,164)" name="Text"> - <a name="text" val="Input B"/> - </comp> - <comp lib="0" loc="(560,160)" name="Tunnel"> + <comp lib="0" loc="(690,190)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b2"/> + <a name="label" val="a5"/> </comp> - <comp lib="0" loc="(560,200)" name="Tunnel"> + <comp lib="0" loc="(730,400)" name="Splitter"> + <a name="facing" val="north"/> + <a name="fanout" val="6"/> + <a name="incoming" val="6"/> + <a name="appear" val="right"/> + </comp> + <comp lib="0" loc="(130,180)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b6"/> + <a name="label" val="b1"/> </comp> - <comp lib="1" loc="(340,370)" name="XNOR Gate"> + <comp lib="1" loc="(310,690)" name="OR Gate"> + <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(240,220)" name="AND Gate"> + <comp lib="1" loc="(300,720)" name="OR Gate"> + <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(300,330)" name="AND Gate"> + <comp lib="1" loc="(300,810)" name="OR Gate"> + <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(310,690)" name="OR Gate"> - <a name="facing" val="west"/> + <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="6" loc="(340,904)" name="Text"> - <a name="text" val="FLAG"/> - </comp> - <comp lib="0" loc="(390,100)" name="Tunnel"> - <a name="label" val="o0"/> + <comp lib="0" loc="(710,320)" name="Splitter"> + <a name="fanout" val="8"/> + <a name="incoming" val="8"/> </comp> - <comp lib="1" loc="(310,510)" name="OR Gate"> - <a name="facing" val="west"/> + <comp lib="1" loc="(240,130)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(130,180)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b1"/> + <comp lib="6" loc="(481,532)" name="Text"> + <a name="text" val="AUX OP"/> </comp> - <comp lib="0" loc="(690,200)" name="Tunnel"> + <comp lib="0" loc="(690,160)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a6"/> + <a name="label" val="a2"/> </comp> - <comp lib="0" loc="(650,320)" name="Splitter"> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> + <comp lib="0" loc="(390,730)" name="Tunnel"> + <a name="label" val="o7"/> </comp> - <comp lib="1" loc="(250,730)" name="NOR Gate"> + <comp lib="1" loc="(330,580)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="6" loc="(880,461)" name="Text"> - <a name="text" val="OPCODES: 000: OR, 001: AND, 010: XOR, 011: ADD, 100: CIN, 101: NAND, 110: XNOR, 111: SUB"/> + <comp lib="0" loc="(390,100)" name="Tunnel"> + <a name="label" val="o0"/> </comp> - <comp lib="1" loc="(280,740)" name="OR 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="(270,410)" name="AND Gate"> + <comp lib="1" loc="(330,310)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(330,670)" name="AND Gate"> + <comp lib="1" loc="(190,100)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(240,760)" name="AND Gate"> + <comp lib="1" loc="(340,370)" name="XNOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(560,170)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b3"/> + <comp lib="0" loc="(770,380)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="CC"/> </comp> - <comp lib="1" loc="(190,550)" name="XOR Gate"> + <comp lib="1" loc="(280,650)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(670,300)" name="Tunnel"> - <a name="label" val="o6"/> + <comp lib="0" loc="(140,70)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="!A"/> </comp> - <comp lib="1" loc="(190,280)" 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="0" loc="(690,190)" name="Tunnel"> + <comp lib="1" loc="(340,460)" name="XNOR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="0" loc="(710,130)" name="Pin"> + <a name="facing" val="west"/> + <a name="width" val="8"/> + <a name="tristate" val="false"/> + </comp> + <comp lib="0" loc="(690,210)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a5"/> + <a name="label" val="a7"/> </comp> - <comp lib="1" loc="(240,580)" name="AND Gate"> + <comp lib="1" loc="(280,110)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(390,550)" name="Tunnel"> - <a name="label" val="o5"/> - </comp> - <comp lib="1" loc="(250,100)" name="NOR Gate"> + <comp lib="1" loc="(340,190)" name="XNOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="6" loc="(488,363)" name="Text"> - <a name="text" val="OPCODE"/> + <comp lib="0" loc="(390,640)" name="Tunnel"> + <a name="label" val="o6"/> </comp> - <comp lib="0" loc="(130,540)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b5"/> - </comp> - <comp lib="0" loc="(310,890)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> - <a name="tristate" val="false"/> - <a name="labelloc" val="east"/> + <comp lib="1" loc="(250,550)" name="NOR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(710,320)" name="Splitter"> + <comp lib="0" loc="(580,130)" 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"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="1" loc="(300,720)" name="OR Gate"> + <comp lib="2" loc="(310,870)" name="Multiplexer"> <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="selloc" val="tr"/> + <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(190,580)" name="XOR 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="1" loc="(240,400)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(750,380)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="!B"/> </comp> - <comp lib="0" loc="(560,150)" name="Tunnel"> + <comp lib="0" loc="(670,280)" name="Tunnel"> + <a name="label" val="o4"/> + </comp> + <comp lib="0" loc="(560,140)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b1"/> + <a name="label" val="b0"/> </comp> - <comp lib="0" loc="(710,500)" name="Splitter"> - <a name="facing" val="west"/> - <a name="fanout" val="3"/> - <a name="incoming" val="3"/> + <comp lib="0" loc="(130,210)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a1"/> </comp> - <comp lib="1" loc="(270,140)" name="AND Gate"> + <comp lib="1" loc="(190,220)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(190,130)" name="XOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(790,380)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="FC"/> </comp> - <comp lib="0" loc="(130,390)" name="Tunnel"> + <comp lib="0" loc="(130,450)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a3"/> - </comp> - <comp lib="0" loc="(390,280)" name="Tunnel"> - <a name="label" val="o2"/> + <a name="label" val="b4"/> </comp> <comp lib="0" loc="(670,270)" name="Tunnel"> <a name="label" val="o3"/> @@ -1290,39 +1303,29 @@ <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(760,380)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="OR"/> + <comp lib="0" loc="(130,360)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b3"/> </comp> - <comp lib="1" loc="(340,550)" name="XNOR Gate"> + <comp lib="1" loc="(300,150)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="6" loc="(472,453)" name="Text"> - <a name="text" val="COMPARE ENABLE"/> - </comp> - <comp lib="0" loc="(670,240)" name="Tunnel"> - <a name="label" val="o0"/> - </comp> - <comp lib="1" loc="(300,540)" name="OR Gate"> - <a name="facing" val="south"/> + <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="6" loc="(746,165)" name="Text"> - <a name="text" val="Input A"/> - </comp> - <comp lib="1" loc="(190,220)" name="XOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(650,320)" name="Pin"> + <a name="output" val="true"/> + <a name="width" val="8"/> + <a name="labelloc" val="east"/> </comp> - <comp lib="1" loc="(190,400)" name="XOR Gate"> + <comp lib="1" loc="(330,490)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - </comp> - <comp lib="0" loc="(130,360)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b3"/> + <a name="negate1" val="true"/> </comp> </circuit> <circuit name="GPR"> @@ -1405,113 +1408,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="(100,70)" name="Constant"> + <comp lib="1" loc="(290,230)" 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="value" val="0x0"/> + <a name="tristate" val="false"/> </comp> <comp lib="4" loc="(230,170)" name="Register"/> - <comp lib="1" loc="(230,260)" name="Controlled Buffer"> + <comp lib="1" loc="(250,230)" name="Controlled Buffer"> <a name="facing" val="south"/> <a name="width" val="8"/> </comp> - <comp lib="4" loc="(190,170)" name="Register"/> - <comp lib="0" loc="(240,180)" name="Constant"/> - <comp lib="2" loc="(160,80)" name="Decoder"> - <a name="facing" val="south"/> - <a name="select" val="2"/> - <a name="enable" val="false"/> + <comp lib="0" loc="(100,70)" name="Constant"> + <a name="width" val="2"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="0" loc="(150,340)" name="Pin"> + <a name="width" val="2"/> + <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="tristate" val="false"/> </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="(210,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="0" loc="(140,130)" name="Pin"> + <comp lib="0" loc="(140,260)" 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="0" loc="(200,180)" name="Constant"/> + <comp lib="4" loc="(270,170)" name="Register"/> <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="(290,260)" name="Controlled Buffer"> - <a name="facing" val="west"/> - <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="(100,90)" name="Pin"> - <a name="width" val="2"/> - <a name="tristate" val="false"/> + <comp lib="0" loc="(200,180)" name="Constant"/> + <comp lib="2" loc="(160,80)" name="Decoder"> + <a name="facing" val="south"/> + <a name="select" val="2"/> + <a name="enable" val="false"/> </comp> <comp lib="2" loc="(130,80)" name="Multiplexer"> <a name="selloc" val="tr"/> <a name="width" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(240,340)" name="Pin"> - <a name="facing" val="west"/> - <a name="width" val="2"/> - <a name="tristate" val="false"/> - </comp> - <comp lib="0" loc="(310,230)" name="Constant"> - <a name="facing" val="west"/> - <a name="width" val="8"/> - <a name="value" val="0x0"/> - </comp> <comp lib="1" loc="(190,260)" name="Controlled Buffer"> <a name="facing" val="south"/> <a name="width" val="8"/> </comp> - <comp lib="1" loc="(290,230)" name="Controlled Buffer"> - <a name="facing" val="west"/> - <a name="width" val="8"/> + <comp lib="0" loc="(110,60)" name="Pin"> + <a name="facing" val="south"/> + <a name="tristate" val="false"/> </comp> - <comp lib="0" loc="(140,260)" name="Pin"> + <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="1" loc="(250,230)" name="Controlled Buffer"> + <comp lib="0" loc="(310,230)" name="Constant"> + <a name="facing" val="west"/> + <a name="width" val="8"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="1" loc="(210,230)" name="Controlled Buffer"> <a name="facing" val="south"/> <a name="width" val="8"/> </comp> - <comp lib="1" loc="(170,230)" name="Controlled Buffer"> + <comp lib="0" loc="(160,180)" name="Constant"/> + <comp lib="1" loc="(230,260)" name="Controlled Buffer"> <a name="facing" val="south"/> <a name="width" val="8"/> </comp> + <comp lib="4" loc="(190,170)" name="Register"/> + <comp lib="0" loc="(130,200)" name="Pin"> + <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"> - <a name="width" val="2"/> + <comp lib="1" loc="(290,260)" 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"/> <a name="tristate" val="false"/> </comp> - <comp lib="1" loc="(270,260)" name="Controlled Buffer"> + <comp lib="1" loc="(170,230)" name="Controlled Buffer"> <a name="facing" val="south"/> <a name="width" val="8"/> </comp> - <comp lib="0" loc="(160,180)" name="Constant"/> - <comp lib="0" loc="(110,60)" name="Pin"> + <comp lib="1" loc="(270,260)" name="Controlled Buffer"> <a name="facing" val="south"/> - <a name="tristate" val="false"/> + <a name="width" val="8"/> </comp> - <comp lib="4" loc="(270,170)" name="Register"/> + <comp lib="0" loc="(240,180)" name="Constant"/> </circuit> <circuit name="ISD"> <a name="circuit" val="ISD"/> @@ -1533,14 +1536,14 @@ <circ-port height="10" pin="880,1610" width="10" x="105" y="45"/> <circ-port height="10" pin="920,1610" width="10" x="135" y="45"/> <circ-port height="10" pin="1050,1460" width="10" x="75" y="105"/> - <circ-port height="10" pin="710,1840" width="10" x="45" y="75"/> - <circ-port height="8" pin="670,1840" width="8" x="56" y="46"/> + <circ-port height="10" pin="770,1870" width="10" x="45" y="75"/> + <circ-port height="8" pin="750,1890" width="8" x="56" y="46"/> <circ-port height="8" pin="90,1640" width="8" x="46" y="106"/> <circ-port height="10" pin="330,1680" width="10" x="55" y="105"/> <circ-port height="8" pin="440,1690" width="8" x="46" y="86"/> <circ-port height="10" pin="570,1690" width="10" x="145" y="65"/> - <circ-port height="10" pin="1260,1520" width="10" x="75" y="45"/> - <circ-port height="10" pin="1260,1490" width="10" x="45" y="45"/> + <circ-port height="10" pin="1250,1480" width="10" x="75" y="45"/> + <circ-port height="10" pin="1250,1370" width="10" x="45" y="45"/> <circ-port height="10" pin="440,1870" width="10" x="145" y="85"/> <circ-anchor facing="east" height="6" width="6" x="47" y="57"/> </appear> @@ -1563,8 +1566,8 @@ <wire from="(530,1750)" to="(660,1750)"/> <wire from="(650,60)" to="(650,570)"/> <wire from="(920,1240)" to="(920,1290)"/> - <wire from="(1120,1550)" to="(1140,1550)"/> <wire from="(840,520)" to="(840,570)"/> + <wire from="(1150,1580)" to="(1170,1580)"/> <wire from="(880,880)" to="(880,930)"/> <wire from="(510,1100)" to="(630,1100)"/> <wire from="(510,1280)" to="(510,1290)"/> @@ -1572,7 +1575,6 @@ <wire from="(890,60)" to="(890,70)"/> <wire from="(210,730)" to="(270,730)"/> <wire from="(230,440)" to="(280,440)"/> - <wire from="(720,1680)" to="(720,1750)"/> <wire from="(170,1410)" to="(280,1410)"/> <wire from="(930,1540)" to="(1030,1540)"/> <wire from="(180,500)" to="(180,590)"/> @@ -1594,15 +1596,16 @@ <wire from="(470,1370)" to="(470,1380)"/> <wire from="(350,290)" to="(350,300)"/> <wire from="(910,1010)" to="(1010,1010)"/> - <wire from="(730,780)" to="(730,1380)"/> + <wire from="(710,1700)" to="(750,1700)"/> <wire from="(1180,1760)" to="(1180,1770)"/> + <wire from="(200,1290)" to="(200,1380)"/> <wire from="(180,950)" to="(180,1040)"/> <wire from="(220,990)" to="(220,1080)"/> - <wire from="(200,1290)" to="(200,1380)"/> <wire from="(230,260)" to="(270,260)"/> <wire from="(190,940)" to="(280,940)"/> <wire from="(850,1110)" to="(850,1150)"/> <wire from="(940,1520)" to="(940,1560)"/> + <wire from="(440,1140)" to="(450,1140)"/> <wire from="(920,340)" to="(930,340)"/> <wire from="(100,250)" to="(100,1780)"/> <wire from="(880,300)" to="(890,300)"/> @@ -1614,11 +1617,9 @@ <wire from="(890,960)" to="(890,970)"/> <wire from="(850,600)" to="(850,610)"/> <wire from="(230,1340)" to="(280,1340)"/> - <wire from="(450,420)" to="(450,1580)"/> <wire from="(190,1540)" to="(190,1560)"/> <wire from="(190,130)" to="(190,220)"/> <wire from="(530,1750)" to="(530,1830)"/> - <wire from="(1150,1540)" to="(1150,1550)"/> <wire from="(230,170)" to="(230,260)"/> <wire from="(230,1580)" to="(230,1610)"/> <wire from="(210,370)" to="(250,370)"/> @@ -1636,6 +1637,7 @@ <wire from="(880,750)" to="(890,750)"/> <wire from="(150,1690)" to="(150,1810)"/> <wire from="(670,1190)" to="(670,1200)"/> + <wire from="(680,1840)" to="(680,1850)"/> <wire from="(550,110)" to="(550,120)"/> <wire from="(850,1050)" to="(850,1060)"/> <wire from="(440,1680)" to="(490,1680)"/> @@ -1649,7 +1651,9 @@ <wire from="(190,580)" to="(190,670)"/> <wire from="(940,820)" to="(940,840)"/> <wire from="(530,150)" to="(530,300)"/> + <wire from="(670,1700)" to="(670,1810)"/> <wire from="(550,110)" to="(1080,110)"/> + <wire from="(730,1750)" to="(1140,1750)"/> <wire from="(80,80)" to="(90,80)"/> <wire from="(920,1240)" to="(930,1240)"/> <wire from="(330,920)" to="(590,920)"/> @@ -1665,17 +1669,15 @@ <wire from="(270,1510)" to="(520,1510)"/> <wire from="(590,920)" to="(590,930)"/> <wire from="(800,1380)" to="(800,1580)"/> - <wire from="(670,1700)" to="(670,1840)"/> <wire from="(220,1260)" to="(280,1260)"/> - <wire from="(1210,1540)" to="(1210,1560)"/> <wire from="(330,1190)" to="(510,1190)"/> <wire from="(590,1010)" to="(630,1010)"/> <wire from="(670,1100)" to="(1030,1100)"/> <wire from="(870,650)" to="(910,650)"/> <wire from="(170,690)" to="(170,780)"/> + <wire from="(210,730)" to="(210,820)"/> <wire from="(870,560)" to="(870,580)"/> <wire from="(190,1030)" to="(190,1120)"/> - <wire from="(210,730)" to="(210,820)"/> <wire from="(860,550)" to="(860,570)"/> <wire from="(910,920)" to="(910,940)"/> <wire from="(910,1560)" to="(910,1580)"/> @@ -1683,19 +1685,17 @@ <wire from="(230,1070)" to="(230,1160)"/> <wire from="(510,290)" to="(550,290)"/> <wire from="(210,1690)" to="(210,1790)"/> + <wire from="(720,1370)" to="(1250,1370)"/> <wire from="(930,300)" to="(930,340)"/> <wire from="(770,960)" to="(770,1380)"/> <wire from="(330,1620)" to="(330,1660)"/> <wire from="(420,1830)" to="(430,1830)"/> <wire from="(810,870)" to="(810,1380)"/> - <wire from="(510,1370)" to="(1220,1370)"/> - <wire from="(1110,1540)" to="(1140,1540)"/> <wire from="(170,1580)" to="(180,1580)"/> <wire from="(840,970)" to="(850,970)"/> <wire from="(880,1330)" to="(890,1330)"/> <wire from="(840,1290)" to="(850,1290)"/> <wire from="(920,610)" to="(920,660)"/> - <wire from="(1130,1570)" to="(1150,1570)"/> <wire from="(520,330)" to="(530,330)"/> <wire from="(880,250)" to="(880,300)"/> <wire from="(600,1050)" to="(610,1050)"/> @@ -1705,8 +1705,8 @@ <wire from="(200,1380)" to="(250,1380)"/> <wire from="(170,780)" to="(280,780)"/> <wire from="(830,650)" to="(830,670)"/> - <wire from="(170,1140)" to="(170,1230)"/> <wire from="(210,1180)" to="(210,1270)"/> + <wire from="(170,1140)" to="(170,1230)"/> <wire from="(240,250)" to="(240,340)"/> <wire from="(870,1010)" to="(870,1030)"/> <wire from="(200,210)" to="(200,300)"/> @@ -1727,6 +1727,7 @@ <wire from="(110,50)" to="(120,50)"/> <wire from="(210,1180)" to="(280,1180)"/> <wire from="(800,1380)" to="(810,1380)"/> + <wire from="(790,1690)" to="(800,1690)"/> <wire from="(920,1060)" to="(920,1110)"/> <wire from="(760,60)" to="(770,60)"/> <wire from="(840,340)" to="(840,390)"/> @@ -1735,6 +1736,7 @@ <wire from="(380,1670)" to="(380,1810)"/> <wire from="(1140,1500)" to="(1180,1500)"/> <wire from="(430,380)" to="(430,390)"/> + <wire from="(730,780)" to="(730,1680)"/> <wire from="(170,1230)" to="(280,1230)"/> <wire from="(790,830)" to="(830,830)"/> <wire from="(180,320)" to="(180,410)"/> @@ -1760,14 +1762,12 @@ <wire from="(190,1300)" to="(250,1300)"/> <wire from="(230,710)" to="(280,710)"/> <wire from="(200,1640)" to="(250,1640)"/> - <wire from="(1110,1510)" to="(1110,1540)"/> <wire from="(200,1110)" to="(200,1200)"/> <wire from="(180,770)" to="(180,860)"/> <wire from="(220,810)" to="(220,900)"/> <wire from="(230,80)" to="(270,80)"/> <wire from="(970,560)" to="(1080,560)"/> <wire from="(240,1150)" to="(240,1240)"/> - <wire from="(1100,1580)" to="(1150,1580)"/> <wire from="(890,1290)" to="(890,1330)"/> <wire from="(230,1420)" to="(1200,1420)"/> <wire from="(570,330)" to="(570,390)"/> @@ -1782,27 +1782,26 @@ <wire from="(620,1400)" to="(620,1600)"/> <wire from="(230,1160)" to="(280,1160)"/> <wire from="(1040,1730)" to="(1140,1730)"/> - <wire from="(180,1220)" to="(180,1310)"/> <wire from="(220,1260)" to="(220,1350)"/> - <wire from="(780,1690)" to="(780,1840)"/> + <wire from="(180,1220)" to="(180,1310)"/> <wire from="(700,1780)" to="(1190,1780)"/> <wire from="(290,1450)" to="(830,1450)"/> <wire from="(90,80)" to="(120,80)"/> - <wire from="(720,1680)" to="(740,1680)"/> <wire from="(1030,1100)" to="(1030,1540)"/> <wire from="(510,1280)" to="(990,1280)"/> + <wire from="(730,1680)" to="(760,1680)"/> + <wire from="(1080,1540)" to="(1080,1790)"/> <wire from="(1210,1740)" to="(1210,1800)"/> <wire from="(170,240)" to="(250,240)"/> <wire from="(530,420)" to="(530,480)"/> <wire from="(920,610)" to="(930,610)"/> - <wire from="(340,1790)" to="(1110,1790)"/> <wire from="(840,210)" to="(850,210)"/> <wire from="(490,60)" to="(490,120)"/> <wire from="(880,250)" to="(890,250)"/> <wire from="(630,650)" to="(630,660)"/> <wire from="(180,70)" to="(180,140)"/> <wire from="(850,870)" to="(850,880)"/> - <wire from="(1100,1530)" to="(1140,1530)"/> + <wire from="(1120,1550)" to="(1160,1550)"/> <wire from="(200,300)" to="(250,300)"/> <wire from="(1010,1010)" to="(1010,1650)"/> <wire from="(910,830)" to="(1080,830)"/> @@ -1866,13 +1865,13 @@ <wire from="(860,820)" to="(860,840)"/> <wire from="(270,1550)" to="(560,1550)"/> <wire from="(240,610)" to="(280,610)"/> + <wire from="(1080,1540)" to="(1160,1540)"/> <wire from="(410,1430)" to="(440,1430)"/> <wire from="(180,950)" to="(270,950)"/> <wire from="(890,210)" to="(890,250)"/> - <wire from="(1220,1370)" to="(1220,1490)"/> - <wire from="(1180,1560)" to="(1210,1560)"/> + <wire from="(720,1370)" to="(720,1850)"/> + <wire from="(1220,1500)" to="(1220,1560)"/> <wire from="(180,1540)" to="(190,1540)"/> - <wire from="(1200,1480)" to="(1200,1520)"/> <wire from="(840,1240)" to="(850,1240)"/> <wire from="(920,880)" to="(920,930)"/> <wire from="(840,160)" to="(840,210)"/> @@ -1908,7 +1907,6 @@ <wire from="(910,560)" to="(970,560)"/> <wire from="(230,530)" to="(280,530)"/> <wire from="(370,330)" to="(370,480)"/> - <wire from="(720,1750)" to="(1140,1750)"/> <wire from="(200,930)" to="(200,1020)"/> <wire from="(180,590)" to="(180,680)"/> <wire from="(220,630)" to="(220,720)"/> @@ -1917,7 +1915,6 @@ <wire from="(220,540)" to="(250,540)"/> <wire from="(850,750)" to="(850,790)"/> <wire from="(890,1110)" to="(890,1150)"/> - <wire from="(720,1380)" to="(720,1680)"/> <wire from="(1200,1420)" to="(1200,1480)"/> <wire from="(400,420)" to="(410,420)"/> <wire from="(360,60)" to="(370,60)"/> @@ -1925,16 +1922,18 @@ <wire from="(1050,1460)" to="(1050,1560)"/> <wire from="(200,1500)" to="(210,1500)"/> <wire from="(920,300)" to="(930,300)"/> + <wire from="(660,1840)" to="(660,1890)"/> <wire from="(200,930)" to="(270,930)"/> <wire from="(680,60)" to="(690,60)"/> - <wire from="(720,1380)" to="(730,1380)"/> <wire from="(840,1060)" to="(840,1110)"/> <wire from="(710,740)" to="(710,750)"/> <wire from="(930,960)" to="(930,970)"/> <wire from="(890,600)" to="(890,610)"/> <wire from="(170,1550)" to="(230,1550)"/> + <wire from="(1130,1570)" to="(1170,1570)"/> <wire from="(240,1630)" to="(290,1630)"/> <wire from="(230,980)" to="(280,980)"/> + <wire from="(430,1100)" to="(430,1110)"/> <wire from="(170,70)" to="(170,150)"/> <wire from="(220,1080)" to="(220,1170)"/> <wire from="(180,1040)" to="(180,1130)"/> @@ -1961,6 +1960,7 @@ <wire from="(230,260)" to="(230,350)"/> <wire from="(690,1230)" to="(690,1380)"/> <wire from="(570,150)" to="(570,300)"/> + <wire from="(1200,1480)" to="(1210,1480)"/> <wire from="(100,1780)" to="(250,1780)"/> <wire from="(170,510)" to="(250,510)"/> <wire from="(190,850)" to="(270,850)"/> @@ -1971,7 +1971,6 @@ <wire from="(330,560)" to="(590,560)"/> <wire from="(840,160)" to="(850,160)"/> <wire from="(840,480)" to="(850,480)"/> - <wire from="(770,1690)" to="(780,1690)"/> <wire from="(880,520)" to="(890,520)"/> <wire from="(490,330)" to="(490,390)"/> <wire from="(640,600)" to="(650,600)"/> @@ -1986,6 +1985,7 @@ <wire from="(230,710)" to="(230,800)"/> <wire from="(190,670)" to="(190,760)"/> <wire from="(900,550)" to="(900,570)"/> + <wire from="(330,1100)" to="(430,1100)"/> <wire from="(910,560)" to="(910,580)"/> <wire from="(940,910)" to="(940,930)"/> <wire from="(250,1690)" to="(250,1780)"/> @@ -2021,6 +2021,7 @@ <wire from="(180,770)" to="(270,770)"/> <wire from="(930,390)" to="(930,430)"/> <wire from="(590,920)" to="(750,920)"/> + <wire from="(660,1890)" to="(750,1890)"/> <wire from="(480,60)" to="(490,60)"/> <wire from="(800,60)" to="(810,60)"/> <wire from="(840,1060)" to="(850,1060)"/> @@ -2044,6 +2045,7 @@ <wire from="(850,120)" to="(850,160)"/> <wire from="(180,1220)" to="(270,1220)"/> <wire from="(890,480)" to="(890,520)"/> + <wire from="(510,1370)" to="(720,1370)"/> <wire from="(480,510)" to="(490,510)"/> <wire from="(100,70)" to="(100,250)"/> <wire from="(210,1270)" to="(280,1270)"/> @@ -2064,6 +2066,7 @@ <wire from="(220,360)" to="(250,360)"/> <wire from="(930,1290)" to="(930,1330)"/> <wire from="(370,510)" to="(370,1440)"/> + <wire from="(770,1870)" to="(800,1870)"/> <wire from="(410,420)" to="(410,1430)"/> <wire from="(610,60)" to="(610,570)"/> <wire from="(180,410)" to="(250,410)"/> @@ -2095,6 +2098,7 @@ <wire from="(360,330)" to="(370,330)"/> <wire from="(530,60)" to="(530,120)"/> <wire from="(570,420)" to="(570,480)"/> + <wire from="(430,1100)" to="(510,1100)"/> <wire from="(920,250)" to="(930,250)"/> <wire from="(240,1690)" to="(240,1750)"/> <wire from="(880,210)" to="(890,210)"/> @@ -2112,7 +2116,6 @@ <wire from="(230,80)" to="(230,170)"/> <wire from="(210,280)" to="(250,280)"/> <wire from="(660,1380)" to="(690,1380)"/> - <wire from="(710,1840)" to="(780,1840)"/> <wire from="(170,330)" to="(250,330)"/> <wire from="(920,700)" to="(930,700)"/> <wire from="(250,1780)" to="(700,1780)"/> @@ -2124,6 +2127,7 @@ <wire from="(850,960)" to="(850,970)"/> <wire from="(890,1380)" to="(890,1510)"/> <wire from="(200,390)" to="(250,390)"/> + <wire from="(1080,1510)" to="(1080,1540)"/> <wire from="(870,1490)" to="(870,1580)"/> <wire from="(170,150)" to="(170,240)"/> <wire from="(910,920)" to="(1080,920)"/> @@ -2131,7 +2135,6 @@ <wire from="(190,490)" to="(190,580)"/> <wire from="(210,190)" to="(210,280)"/> <wire from="(490,510)" to="(490,1380)"/> - <wire from="(1100,1530)" to="(1100,1580)"/> <wire from="(920,1150)" to="(930,1150)"/> <wire from="(840,430)" to="(850,430)"/> <wire from="(880,790)" to="(890,790)"/> @@ -2142,7 +2145,6 @@ <wire from="(920,70)" to="(920,120)"/> <wire from="(140,70)" to="(140,1800)"/> <wire from="(550,470)" to="(550,480)"/> - <wire from="(330,1100)" to="(510,1100)"/> <wire from="(120,40)" to="(120,50)"/> <wire from="(510,110)" to="(510,120)"/> <wire from="(990,1280)" to="(990,1730)"/> @@ -2160,7 +2162,6 @@ <wire from="(180,590)" to="(270,590)"/> <wire from="(930,210)" to="(930,250)"/> <wire from="(550,470)" to="(1080,470)"/> - <wire from="(710,1700)" to="(730,1700)"/> <wire from="(140,1800)" to="(1120,1800)"/> <wire from="(330,830)" to="(790,830)"/> <wire from="(880,1560)" to="(890,1560)"/> @@ -2179,8 +2180,8 @@ <wire from="(830,650)" to="(870,650)"/> <wire from="(870,1010)" to="(910,1010)"/> <wire from="(830,560)" to="(830,580)"/> - <wire from="(870,920)" to="(870,940)"/> <wire from="(190,1390)" to="(190,1480)"/> + <wire from="(870,920)" to="(870,940)"/> <wire from="(170,1050)" to="(170,1140)"/> <wire from="(210,1090)" to="(210,1180)"/> <wire from="(240,160)" to="(240,250)"/> @@ -2199,7 +2200,6 @@ <wire from="(840,250)" to="(840,300)"/> <wire from="(880,610)" to="(880,660)"/> <wire from="(210,460)" to="(270,460)"/> - <wire from="(1220,1490)" to="(1260,1490)"/> <wire from="(430,290)" to="(430,300)"/> <wire from="(300,1760)" to="(300,1770)"/> <wire from="(170,1140)" to="(280,1140)"/> @@ -2215,7 +2215,6 @@ <wire from="(890,750)" to="(890,790)"/> <wire from="(930,1110)" to="(930,1150)"/> <wire from="(1120,1550)" to="(1120,1800)"/> - <wire from="(1110,1540)" to="(1110,1790)"/> <wire from="(400,60)" to="(410,60)"/> <wire from="(440,420)" to="(450,420)"/> <wire from="(180,230)" to="(250,230)"/> @@ -2234,12 +2233,15 @@ <wire from="(220,720)" to="(220,810)"/> <wire from="(200,1020)" to="(200,1110)"/> <wire from="(930,1560)" to="(930,1580)"/> + <wire from="(340,1790)" to="(1080,1790)"/> <wire from="(300,1570)" to="(300,1600)"/> <wire from="(240,1060)" to="(240,1150)"/> <wire from="(220,630)" to="(250,630)"/> <wire from="(890,1200)" to="(890,1240)"/> + <wire from="(1080,1510)" to="(1090,1510)"/> <wire from="(330,1730)" to="(990,1730)"/> <wire from="(610,600)" to="(610,660)"/> + <wire from="(450,420)" to="(450,1110)"/> <wire from="(920,390)" to="(930,390)"/> <wire from="(730,60)" to="(730,750)"/> <wire from="(920,70)" to="(930,70)"/> @@ -2252,14 +2254,17 @@ <wire from="(250,370)" to="(250,380)"/> <wire from="(230,1070)" to="(280,1070)"/> <wire from="(430,1830)" to="(430,1840)"/> + <wire from="(730,1680)" to="(730,1750)"/> <wire from="(670,1190)" to="(1050,1190)"/> <wire from="(350,470)" to="(350,480)"/> <wire from="(90,1640)" to="(200,1640)"/> + <wire from="(680,1850)" to="(720,1850)"/> <wire from="(220,1170)" to="(220,1260)"/> <wire from="(180,1130)" to="(180,1220)"/> <wire from="(210,100)" to="(250,100)"/> <wire from="(560,1380)" to="(560,1550)"/> <wire from="(850,1290)" to="(850,1330)"/> + <wire from="(1240,1480)" to="(1250,1480)"/> <wire from="(240,1750)" to="(260,1750)"/> <wire from="(170,150)" to="(250,150)"/> <wire from="(530,330)" to="(530,390)"/> @@ -2286,6 +2291,7 @@ <wire from="(490,420)" to="(490,480)"/> <wire from="(880,610)" to="(890,610)"/> <wire from="(640,690)" to="(650,690)"/> + <wire from="(1200,1560)" to="(1220,1560)"/> <wire from="(630,1010)" to="(630,1020)"/> <wire from="(550,290)" to="(550,300)"/> <wire from="(590,650)" to="(590,660)"/> @@ -2299,6 +2305,7 @@ <wire from="(900,640)" to="(900,660)"/> <wire from="(910,650)" to="(910,670)"/> <wire from="(940,1000)" to="(940,1020)"/> + <wire from="(1150,1530)" to="(1150,1580)"/> <wire from="(550,290)" to="(1080,290)"/> <wire from="(520,1410)" to="(520,1510)"/> <wire from="(80,250)" to="(100,250)"/> @@ -2335,454 +2342,546 @@ <wire from="(300,1570)" to="(970,1570)"/> <wire from="(200,70)" to="(200,120)"/> <wire from="(480,150)" to="(490,150)"/> - <wire from="(1230,1520)" to="(1260,1520)"/> <wire from="(1120,1800)" to="(1210,1800)"/> <wire from="(930,1560)" to="(940,1560)"/> <wire from="(880,1510)" to="(890,1510)"/> + <wire from="(800,1690)" to="(800,1870)"/> <wire from="(840,1150)" to="(850,1150)"/> <wire from="(920,790)" to="(920,840)"/> <wire from="(840,70)" to="(840,120)"/> <wire from="(520,510)" to="(530,510)"/> <wire from="(880,430)" to="(880,480)"/> - <comp lib="1" loc="(520,150)" name="OR Gate"> + <wire from="(450,1140)" to="(450,1580)"/> + <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="0" loc="(860,820)" name="Constant"> + <comp lib="0" loc="(280,320)" name="Constant"/> + <comp lib="1" loc="(760,960)" name="OR Gate"> <a name="facing" val="south"/> - <a name="width" val="2"/> - </comp> - <comp lib="0" loc="(160,1670)" name="Constant"> - <a name="width" val="8"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(640,1050)" name="OR Gate"> + <comp lib="0" loc="(890,60)" name="Constant"> <a name="facing" val="south"/> + <a name="width" val="2"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="1" loc="(670,1810)" name="AND Gate"> + <a name="facing" val="north"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(280,390)" name="Constant"/> - <comp lib="2" loc="(850,960)" name="Multiplexer"> + <comp lib="2" loc="(930,1050)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(200,1500)" name="Splitter"> - <a name="facing" val="north"/> - <a name="appear" val="center"/> + <comp lib="1" loc="(290,1610)" name="OR Gate"> + <a name="width" val="8"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(800,60)" name="Constant"> + <comp lib="0" loc="(480,60)" name="Constant"> <a name="facing" val="south"/> <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(900,910)" 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="(930,60)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(520,1140)" name="OR Gate"> + <comp lib="0" loc="(560,60)" name="Constant"> <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(280,1200)" name="Constant"/> - <comp lib="0" loc="(440,1870)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> - <a name="label" val="MEMORY READ SELECT"/> - <a name="labelloc" val="east"/> + <comp lib="1" loc="(330,380)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="ADD"/> + <a name="negate0" val="true"/> </comp> - <comp lib="1" loc="(920,1610)" name="OR Gate"> + <comp lib="0" loc="(280,220)" name="Constant"/> + <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="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,240)" name="Constant"/> - <comp lib="1" loc="(680,1140)" name="OR Gate"> + <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="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="4" loc="(710,1700)" name="Register"> - <a name="width" val="1"/> - <a name="trigger" val="falling"/> + <comp lib="0" loc="(520,60)" name="Constant"> + <a name="facing" val="south"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(280,1360)" name="Constant"/> - <comp lib="1" loc="(330,110)" name="AND Gate"> + <comp lib="1" loc="(330,290)" name="AND Gate"> <a name="inputs" val="8"/> - <a name="label" val="OR"/> - <a name="negate0" val="true"/> + <a name="label" val="NAND"/> <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(560,420)" name="OR Gate"> + <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="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="(160,1670)" name="Constant"> + <a name="width" val="8"/> + </comp> + <comp lib="2" loc="(930,600)" name="Multiplexer"> <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="width" val="2"/> + <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(280,640)" name="Constant"/> - <comp lib="0" loc="(280,660)" name="Constant"/> - <comp lib="1" loc="(1170,1740)" name="OR Gate"> + <comp lib="1" loc="(520,420)" name="OR Gate"> + <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="2" loc="(930,960)" name="Multiplexer"> + <comp lib="1" loc="(330,1370)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="CMP"/> + </comp> + <comp lib="0" loc="(900,640)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(480,420)" name="OR Gate"> + <comp lib="1" loc="(520,150)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> + <comp lib="2" loc="(160,50)" name="Multiplexer"> + <a name="width" val="8"/> + <a name="enable" val="false"/> + </comp> + <comp lib="0" loc="(280,670)" name="Constant"/> + <comp lib="0" loc="(80,250)" name="Pin"> + <a name="tristate" val="false"/> + <a name="label" val="RST"/> + </comp> + <comp lib="0" loc="(620,1600)" name="Pin"> + <a name="facing" val="north"/> + <a name="output" val="true"/> + <a name="width" val="2"/> + <a name="label" val="GPR MUX"/> + <a name="labelloc" val="south"/> + </comp> <comp lib="0" loc="(940,820)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> <a name="value" val="0x0"/> </comp> - <comp lib="2" loc="(520,1670)" name="Multiplexer"> - <a name="selloc" val="tr"/> - <a name="width" val="8"/> - <a name="enable" val="false"/> - </comp> - <comp lib="1" loc="(330,200)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="SCO"/> - <a name="negate0" val="true"/> - <a name="negate1" val="true"/> - <a name="negate2" val="true"/> - <a name="negate3" val="true"/> + <comp lib="0" loc="(770,1870)" name="Pin"> + <a name="output" val="true"/> + <a name="label" val="BRANCH"/> </comp> - <comp lib="1" loc="(560,330)" name="OR Gate"> + <comp lib="1" loc="(680,1140)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(330,1190)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="SB"/> - <a name="negate2" val="true"/> - <a name="negate6" val="true"/> - </comp> - <comp lib="0" loc="(280,490)" 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,210)" name="Constant"/> - <comp lib="1" loc="(520,1230)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="0" loc="(1250,1480)" name="Pin"> + <a name="facing" val="west"/> + <a name="output" val="true"/> + <a name="width" val="4"/> + <a name="label" val="Compare OP"/> + <a name="labelloc" val="east"/> + </comp> + <comp lib="1" loc="(300,1740)" name="OR Gate"> + <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(400,60)" name="Constant"> - <a name="facing" val="south"/> - <a name="value" val="0x0"/> + <comp lib="0" loc="(750,1890)" name="Pin"> + <a name="facing" val="west"/> + <a name="tristate" val="false"/> + <a name="label" val="JMP FLAG"/> + <a name="labelloc" val="east"/> </comp> - <comp lib="0" loc="(280,1350)" name="Constant"/> - <comp lib="0" loc="(220,1610)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="4"/> - <a name="value" val="0x0"/> + <comp lib="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="(860,910)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="value" val="0x0"/> + <comp lib="0" loc="(1050,1460)" name="Pin"> + <a name="facing" val="north"/> + <a name="output" val="true"/> + <a name="label" val="Write Enable"/> + <a name="labelloc" val="east"/> </comp> - <comp lib="2" loc="(930,690)" name="Multiplexer"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="enable" val="false"/> + <comp lib="0" loc="(440,1870)" name="Pin"> + <a name="facing" val="north"/> + <a name="output" val="true"/> + <a name="label" val="MEMORY READ SELECT"/> + <a name="labelloc" val="east"/> </comp> - <comp lib="2" loc="(930,600)" 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="(280,410)" name="Constant"/> + <comp lib="0" loc="(280,150)" name="Constant"/> + <comp lib="1" loc="(520,510)" 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="(520,1410)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(280,150)" name="Constant"/> - <comp lib="0" loc="(360,60)" name="Constant"> - <a name="facing" val="south"/> - <a name="value" val="0x0"/> + <comp lib="0" loc="(280,420)" name="Constant"/> + <comp lib="0" loc="(280,390)" name="Constant"/> + <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="4" loc="(1230,1520)" name="Register"> - <a name="width" val="4"/> - <a name="trigger" val="falling"/> + <comp lib="0" loc="(180,1540)" name="Splitter"> + <a name="facing" val="north"/> + <a name="appear" val="center"/> </comp> - <comp lib="0" loc="(280,1300)" 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,300)" name="Constant"/> + <comp lib="1" loc="(330,1280)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="SP"/> + <a name="negate6" val="true"/> </comp> - <comp lib="1" loc="(520,420)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="1" loc="(330,200)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="SCO"/> + <a name="negate0" val="true"/> + <a name="negate1" val="true"/> + <a name="negate2" val="true"/> + <a name="negate3" val="true"/> </comp> - <comp lib="0" loc="(280,1380)" name="Constant"/> - <comp lib="1" loc="(360,330)" name="OR Gate"> + <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="1" loc="(360,510)" name="OR Gate"> + <comp lib="2" loc="(910,1560)" name="Multiplexer"> <a name="facing" val="south"/> + <a name="selloc" val="tr"/> + <a name="width" val="2"/> + <a name="enable" val="false"/> + </comp> + <comp lib="0" loc="(280,1390)" name="Constant"/> + <comp lib="0" loc="(280,1200)" name="Constant"/> + <comp lib="0" loc="(280,500)" name="Constant"/> + <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="(280,310)" name="Constant"/> + <comp lib="0" loc="(280,330)" 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="(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="1" loc="(600,1050)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(680,60)" name="Constant"> + <comp lib="2" loc="(890,960)" name="Multiplexer"> <a name="facing" val="south"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="0" loc="(280,90)" name="Constant"/> - <comp lib="0" loc="(530,1830)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> - <a name="label" val="Address MUX"/> - <a name="labelloc" val="south"/> + <a name="width" val="2"/> + <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(290,1450)" name="Multiplexer"> + <comp lib="0" loc="(280,130)" name="Constant"/> + <comp lib="0" loc="(280,1290)" name="Constant"/> + <comp lib="2" loc="(850,870)" name="Multiplexer"> + <a name="facing" val="south"/> <a name="width" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(800,1580)" name="Pin"> + <comp lib="0" loc="(920,1610)" name="Pin"> <a name="facing" val="north"/> <a name="output" val="true"/> - <a name="label" val="PUSH"/> + <a name="width" val="2"/> + <a name="label" val="C (W)"/> <a name="labelloc" val="south"/> </comp> - <comp lib="0" loc="(900,640)" name="Constant"> + <comp lib="0" loc="(280,540)" 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="(940,1000)" name="Constant"> + <comp lib="6" loc="(233,1834)" name="Text"> + <a name="text" val="This input defines the range of MMIO --&gt;"/> + </comp> + <comp lib="0" loc="(940,640)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="value" val="0x3"/> </comp> - <comp lib="0" loc="(280,670)" name="Constant"/> - <comp lib="1" loc="(760,960)" name="OR Gate"> + <comp lib="0" loc="(360,60)" name="Constant"> <a name="facing" val="south"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="1" loc="(790,1690)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="2" loc="(890,600)" name="Multiplexer"> + <comp lib="0" loc="(680,60)" name="Constant"> <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="enable" val="false"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(280,140)" name="Constant"/> - <comp lib="0" loc="(280,1290)" name="Constant"/> - <comp lib="1" loc="(330,1280)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="SP"/> - <a name="negate6" val="true"/> + <comp lib="4" loc="(1240,1480)" name="Register"> + <a name="width" val="4"/> + <a name="trigger" val="falling"/> </comp> - <comp lib="0" loc="(280,220)" name="Constant"/> - <comp lib="0" loc="(220,1460)" name="Splitter"> - <a name="facing" val="north"/> - <a name="appear" val="center"/> + <comp lib="2" loc="(230,1670)" name="Multiplexer"> + <a name="width" val="8"/> + <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(600,960)" name="OR Gate"> + <comp lib="1" loc="(480,150)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(1040,1590)" name="OR Gate"> + <comp lib="2" loc="(890,1050)" name="Multiplexer"> <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="width" val="2"/> + <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(280,1390)" name="Constant"/> - <comp lib="0" loc="(600,60)" name="Constant"> + <comp lib="0" loc="(280,90)" name="Constant"/> + <comp lib="0" loc="(220,1610)" name="Constant"> <a name="facing" val="south"/> + <a name="width" val="4"/> <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(280,100)" 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="1" loc="(330,380)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="ADD"/> - <a name="negate0" val="true"/> + <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="1" loc="(480,150)" name="OR Gate"> + <comp lib="1" loc="(400,420)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(560,60)" name="Constant"> + <comp lib="1" loc="(680,1230)" 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="(940,550)" 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="4" loc="(110,50)" name="Register"> + <a name="trigger" val="falling"/> + </comp> + <comp lib="1" loc="(560,330)" name="OR Gate"> <a name="facing" val="south"/> - <a name="width" val="2"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="3" loc="(200,1680)" name="Adder"/> + <comp lib="1" loc="(330,1190)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="SB"/> + <a name="negate2" val="true"/> + <a name="negate6" val="true"/> </comp> <comp lib="2" loc="(850,600)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(940,910)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - </comp> - <comp lib="0" loc="(570,1690)" name="Pin"> + <comp lib="0" loc="(760,1580)" name="Pin"> <a name="facing" val="north"/> <a name="output" val="true"/> - <a name="width" val="8"/> - <a name="label" val="IMM VALUE"/> + <a name="label" val="POP"/> <a name="labelloc" val="south"/> </comp> + <comp lib="1" loc="(330,650)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="LUI"/> + <a name="negate7" val="true"/> + </comp> + <comp lib="0" loc="(130,60)" name="Constant"> + <a name="width" val="8"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="0" loc="(280,1380)" name="Constant"/> <comp lib="0" loc="(380,1830)" name="Constant"> <a name="width" val="8"/> <a name="value" val="0xf0"/> </comp> - <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="1" loc="(400,420)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(220,1460)" name="Splitter"> + <a name="facing" val="north"/> + <a name="appear" val="center"/> </comp> - <comp lib="2" loc="(850,1050)" name="Multiplexer"> + <comp lib="0" loc="(900,820)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="enable" val="false"/> - </comp> - <comp lib="1" loc="(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="(480,60)" name="Constant"> - <a name="facing" val="south"/> <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(280,630)" name="Constant"/> - <comp lib="0" loc="(850,60)" name="Constant"> + <comp lib="2" loc="(930,690)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="value" val="0x0"/> + <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(520,330)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(280,510)" name="Constant"/> + <comp lib="2" loc="(320,1620)" name="Multiplexer"> + <a name="selloc" val="tr"/> + <a name="width" val="8"/> + <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(850,690)" name="Multiplexer"> + <comp lib="0" loc="(280,240)" name="Constant"/> + <comp lib="0" loc="(1250,1370)" name="Pin"> + <a name="facing" val="west"/> + <a name="output" val="true"/> + <a name="label" val="Compare Enable"/> + <a name="labelloc" val="east"/> + </comp> + <comp lib="2" loc="(890,600)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(520,60)" name="Constant"> + <comp lib="0" loc="(860,1000)" name="Constant"> <a name="facing" val="south"/> + <a name="width" val="2"/> <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(330,470)" name="AND Gate"> + <comp lib="1" loc="(330,740)" name="AND Gate"> <a name="inputs" val="8"/> - <a name="label" val="CIN"/> - <a name="negate0" val="true"/> + <a name="label" val="JMP"/> <a name="negate2" val="true"/> <a name="negate3" val="true"/> + <a name="negate4" val="true"/> + <a name="negate5" val="true"/> + <a name="negate6" val="true"/> </comp> - <comp lib="0" loc="(280,570)" 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="0" loc="(280,420)" name="Constant"/> <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="(710,1840)" name="Pin"> - <a name="output" val="true"/> - <a name="label" val="BRANCH"/> - <a name="labelloc" val="east"/> + <comp lib="0" loc="(720,60)" name="Constant"> + <a name="facing" val="south"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(280,410)" name="Constant"/> - <comp lib="2" loc="(890,690)" name="Multiplexer"> + <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="(260,1440)" name="Constant"> + <a name="width" val="2"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="0" loc="(900,1000)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="enable" val="false"/> + <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(330,1010)" name="AND Gate"> + <comp lib="1" loc="(330,830)" name="AND Gate"> <a name="inputs" val="8"/> - <a name="label" val="PCR"/> + <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="(240,1580)" name="Constant"> + <comp lib="0" loc="(940,1000)" name="Constant"> <a name="facing" val="south"/> - <a name="width" val="4"/> - <a name="value" val="0x0"/> + <a name="width" val="2"/> + <a name="value" val="0x3"/> </comp> - <comp lib="1" loc="(560,510)" name="OR Gate"> + <comp lib="1" loc="(520,1140)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(770,1690)" name="AND Gate"> + <comp lib="0" loc="(280,120)" name="Constant"/> + <comp lib="1" loc="(640,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="(890,960)" name="Multiplexer"> - <a name="facing" val="south"/> + <comp lib="0" loc="(280,580)" name="Constant"/> + <comp lib="0" loc="(280,270)" name="Constant"/> + <comp lib="2" loc="(290,1450)" name="Multiplexer"> <a name="width" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(330,1680)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> - <a name="width" val="8"/> - <a name="label" val="MEM POINTER"/> - <a name="labelloc" val="south"/> - </comp> - <comp lib="0" loc="(280,280)" name="Constant"/> - <comp lib="0" loc="(670,1840)" name="Pin"> - <a name="tristate" val="false"/> - <a name="label" val="JMP FLAG"/> - </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="(860,550)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(440,60)" name="Constant"> - <a name="facing" val="south"/> - <a name="value" val="0x0"/> + <comp lib="0" loc="(280,1210)" name="Constant"/> + <comp lib="1" loc="(1200,1560)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="4"/> + <a name="negate0" val="true"/> + <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(680,1230)" name="OR Gate"> + <comp lib="0" loc="(280,480)" name="Constant"/> + <comp lib="0" loc="(280,490)" name="Constant"/> + <comp lib="0" loc="(280,280)" name="Constant"/> + <comp lib="1" loc="(640,600)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> @@ -2791,119 +2890,133 @@ <a name="facing" val="south"/> <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(900,1000)" name="Constant"> + <comp lib="0" loc="(80,50)" name="Pin"> + <a name="width" val="8"/> + <a name="tristate" val="false"/> + <a name="label" val="DATA"/> + <a name="labelloc" val="north"/> + </comp> + <comp lib="0" loc="(640,60)" name="Constant"> <a name="facing" val="south"/> - <a name="width" val="2"/> <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(280,500)" name="Constant"/> - <comp lib="1" loc="(440,1870)" name="AND Gate"> + <comp lib="0" loc="(280,1350)" name="Constant"/> + <comp lib="0" loc="(330,1680)" name="Pin"> + <a name="facing" val="north"/> + <a name="output" val="true"/> + <a name="width" val="8"/> + <a name="label" val="MEM POINTER"/> + <a name="labelloc" val="south"/> + </comp> + <comp lib="1" loc="(330,470)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="CIN"/> + <a name="negate0" val="true"/> + <a name="negate2" val="true"/> + <a name="negate3" val="true"/> + </comp> + <comp lib="0" loc="(80,80)" name="Pin"> + <a name="tristate" val="false"/> + <a name="label" val="CLK"/> + </comp> + <comp lib="0" loc="(530,1830)" 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="(860,820)" name="Constant"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + </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> - <comp lib="1" loc="(600,600)" name="OR Gate"> + <comp lib="0" loc="(940,910)" name="Constant"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + </comp> + <comp lib="1" loc="(480,420)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(520,1320)" name="OR Gate"> + <comp lib="1" loc="(560,510)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="2" loc="(290,1530)" name="Multiplexer"> - <a name="width" val="2"/> - <a name="enable" val="false"/> - </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 lib="1" loc="(1090,1510)" name="AND Gate"> + <a name="facing" val="west"/> + <a name="label" val="ptrinc"/> </comp> - <comp lib="0" loc="(720,60)" name="Constant"> + <comp lib="2" loc="(930,870)" name="Multiplexer"> <a name="facing" val="south"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="2" loc="(230,1670)" name="Multiplexer"> - <a name="width" val="8"/> + <a name="width" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(930,60)" name="Constant"> + <comp lib="1" loc="(640,1140)" name="OR Gate"> <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="value" val="0x0"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(280,1110)" name="Constant"/> - <comp lib="3" loc="(200,1680)" name="Adder"/> - <comp lib="0" loc="(860,1000)" name="Constant"> + <comp lib="1" loc="(560,150)" 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="1" loc="(480,1410)" name="OR Gate"> + <comp lib="0" loc="(280,640)" name="Constant"/> + <comp lib="1" loc="(480,330)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(280,550)" name="Constant"/> - <comp lib="2" loc="(910,1560)" name="Multiplexer"> + <comp lib="1" loc="(520,1230)" name="OR Gate"> <a name="facing" val="south"/> - <a name="selloc" val="tr"/> - <a name="width" val="2"/> - <a name="enable" val="false"/> - </comp> - <comp lib="0" loc="(280,270)" name="Constant"/> - <comp lib="0" loc="(840,1610)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> - <a name="width" val="2"/> - <a name="label" val="A (R)"/> - <a name="labelloc" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(520,510)" name="OR Gate"> + <comp lib="1" loc="(440,1870)" name="AND Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(1260,1490)" name="Pin"> - <a name="facing" val="west"/> - <a name="output" val="true"/> - <a name="label" val="Compare Enable"/> - <a name="labelloc" val="east"/> - </comp> - <comp lib="0" loc="(280,310)" name="Constant"/> - <comp lib="0" loc="(130,60)" 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> + <comp lib="0" loc="(260,1480)" name="Constant"> + <a name="width" val="2"/> <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(1180,1560)" name="AND Gate"> + <comp lib="1" loc="(920,1610)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="width" val="2"/> <a name="size" val="30"/> - <a name="inputs" val="4"/> - <a name="negate0" val="true"/> - <a name="negate1" val="true"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(1260,1520)" name="Pin"> - <a name="facing" val="west"/> - <a name="output" val="true"/> - <a name="width" val="4"/> - <a name="label" val="Compare OP"/> - <a name="labelloc" val="east"/> + <comp lib="0" loc="(860,910)" name="Constant"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(280,1210)" name="Constant"/> - <comp lib="1" loc="(440,420)" 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="(880,1610)" name="OR Gate"> + <comp lib="0" loc="(280,630)" name="Constant"/> + <comp lib="1" loc="(360,330)" name="OR Gate"> <a name="facing" val="south"/> - <a name="width" val="2"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(250,1600)" name="Splitter"> + <comp lib="0" loc="(280,1110)" name="Constant"/> + <comp lib="0" loc="(240,1630)" name="Splitter"> <a name="facing" val="north"/> <a name="incoming" val="8"/> <a name="bit1" val="0"/> @@ -2914,315 +3027,221 @@ <a name="bit6" val="1"/> <a name="bit7" val="1"/> </comp> - <comp lib="1" loc="(280,370)" name="OR Gate"> - <a name="size" val="30"/> - <a name="inputs" 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="1" loc="(300,1740)" name="OR Gate"> - <a name="facing" val="west"/> + <comp lib="0" loc="(280,1300)" name="Constant"/> + <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> - <comp lib="0" loc="(890,60)" name="Constant"> + <comp lib="2" loc="(850,1050)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="0" loc="(440,1610)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> - <a name="width" val="3"/> - <a name="label" val="ALU OP"/> - <a name="labelloc" val="south"/> - </comp> - <comp lib="1" loc="(330,650)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="LUI"/> - <a name="negate7" val="true"/> - </comp> - <comp lib="0" loc="(280,300)" name="Constant"/> - <comp lib="1" loc="(330,920)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="POP"/> - <a name="negate2" val="true"/> - <a name="negate3" val="true"/> - <a name="negate4" val="true"/> - <a name="negate6" val="true"/> - </comp> - <comp lib="1" loc="(330,1370)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="CMP"/> + <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(480,510)" name="OR Gate"> + <comp lib="0" loc="(280,550)" name="Constant"/> + <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="(900,820)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="0" loc="(260,1440)" name="Constant"> - <a name="width" val="2"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="1" loc="(640,600)" name="OR Gate"> + <comp lib="1" loc="(1040,1590)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(600,690)" name="OR Gate"> + <comp lib="0" loc="(280,660)" name="Constant"/> + <comp lib="0" loc="(600,60)" name="Constant"> <a name="facing" val="south"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="1" loc="(280,370)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="6" loc="(233,1834)" name="Text"> - <a name="text" val="This input defines the range of MMIO --&gt;"/> - </comp> - <comp lib="0" loc="(80,250)" name="Pin"> - <a name="tristate" val="false"/> - <a name="label" val="RST"/> + <comp lib="0" loc="(280,360)" name="Constant"/> + <comp lib="0" loc="(280,1360)" name="Constant"/> + <comp lib="2" loc="(290,1530)" name="Multiplexer"> + <a name="width" val="2"/> + <a name="enable" val="false"/> </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="4" loc="(1200,1740)" name="Register"> + <a name="width" val="1"/> + <a name="trigger" val="falling"/> </comp> - <comp lib="1" loc="(640,1140)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="3" loc="(420,1820)" name="Comparator"> + <a name="mode" val="unsigned"/> </comp> - <comp lib="0" loc="(900,550)" name="Constant"> + <comp lib="0" loc="(440,60)" name="Constant"> <a name="facing" val="south"/> - <a name="width" val="2"/> <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(1200,1480)" name="Splitter"> - <a name="facing" val="west"/> - <a name="fanout" val="4"/> - <a name="incoming" val="4"/> - </comp> - <comp lib="0" loc="(180,1580)" name="Splitter"> + <comp lib="0" loc="(800,1580)" name="Pin"> <a name="facing" val="north"/> - <a name="incoming" val="4"/> - <a name="appear" val="right"/> - <a name="bit1" val="0"/> - <a name="bit2" val="1"/> - <a name="bit3" val="1"/> + <a name="output" val="true"/> + <a name="label" val="PUSH"/> + <a name="labelloc" val="south"/> </comp> - <comp lib="0" loc="(280,130)" name="Constant"/> - <comp lib="0" loc="(760,1580)" name="Pin"> + <comp lib="0" loc="(440,1610)" name="Pin"> <a name="facing" val="north"/> <a name="output" val="true"/> - <a name="label" val="POP"/> + <a name="width" val="3"/> + <a name="label" val="ALU OP"/> <a name="labelloc" val="south"/> </comp> - <comp lib="0" loc="(280,1120)" name="Constant"/> - <comp lib="1" loc="(330,1100)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="LB"/> - <a name="negate3" val="true"/> - <a name="negate6" val="true"/> - </comp> - <comp lib="1" loc="(330,290)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="NAND"/> - <a name="negate1" val="true"/> - </comp> - <comp lib="0" loc="(280,510)" name="Constant"/> - <comp lib="3" loc="(420,1820)" name="Comparator"> - <a name="mode" val="unsigned"/> + <comp lib="0" loc="(280,400)" name="Constant"/> + <comp lib="1" loc="(440,1140)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(80,80)" name="Pin"> - <a name="tristate" val="false"/> - <a name="label" val="CLK"/> + <comp lib="0" loc="(850,60)" name="Constant"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + <a name="value" val="0x0"/> </comp> <comp lib="0" loc="(260,1520)" name="Constant"> <a name="width" val="2"/> <a name="value" val="0x0"/> </comp> - <comp lib="2" loc="(850,870)" name="Multiplexer"> + <comp lib="0" loc="(940,550)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="enable" val="false"/> </comp> - <comp lib="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="2" loc="(290,1490)" name="Multiplexer"> + <a name="width" val="2"/> + <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(800,870)" name="OR Gate"> + <comp lib="1" loc="(520,330)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(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 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="(180,1540)" name="Splitter"> + <comp lib="0" loc="(280,1120)" name="Constant"/> + <comp lib="0" loc="(200,1500)" name="Splitter"> <a name="facing" val="north"/> <a name="appear" val="center"/> </comp> - <comp lib="0" loc="(280,360)" name="Constant"/> - <comp lib="0" loc="(280,330)" name="Constant"/> - <comp lib="2" loc="(930,870)" name="Multiplexer"> - <a name="facing" val="south"/> + <comp lib="0" loc="(280,140)" name="Constant"/> + <comp lib="0" loc="(840,1610)" name="Pin"> + <a name="facing" val="north"/> + <a name="output" val="true"/> <a name="width" val="2"/> - <a name="enable" val="false"/> - </comp> - <comp lib="4" loc="(110,50)" name="Register"> - <a name="trigger" val="falling"/> - </comp> - <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="label" val="A (R)"/> <a name="labelloc" val="south"/> </comp> - <comp lib="1" loc="(840,1610)" name="OR Gate"> + <comp lib="0" loc="(280,570)" name="Constant"/> + <comp lib="2" loc="(890,870)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="2" loc="(160,50)" name="Multiplexer"> - <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(280,120)" name="Constant"/> - <comp lib="1" loc="(720,780)" name="OR Gate"> + <comp lib="1" loc="(440,420)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(940,640)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - </comp> - <comp lib="0" loc="(1050,1460)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> - <a name="label" val="Write Enable"/> - <a name="labelloc" val="east"/> - </comp> - <comp lib="4" loc="(1200,1740)" name="Register"> + <comp lib="4" loc="(710,1700)" name="Register"> <a name="width" val="1"/> <a name="trigger" val="falling"/> </comp> + <comp lib="2" loc="(850,960)" name="Multiplexer"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + <a name="enable" val="false"/> + </comp> <comp lib="0" loc="(280,230)" name="Constant"/> - <comp lib="0" loc="(260,1480)" name="Constant"> - <a name="width" val="2"/> + <comp lib="0" loc="(800,60)" name="Constant"> + <a name="facing" val="south"/> <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(330,560)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="LLI"/> - <a name="negate6" val="true"/> - <a name="negate7" val="true"/> - </comp> - <comp lib="0" loc="(860,640)" name="Constant"> + <comp lib="0" loc="(240,1580)" name="Constant"> <a name="facing" val="south"/> - <a name="width" val="2"/> + <a name="width" val="4"/> <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(1110,1510)" name="AND Gate"> + <comp lib="4" loc="(260,1670)" name="Register"/> + <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="(620,1400)" name="Splitter"> - <a name="facing" val="north"/> - <a name="appear" val="center"/> + <comp lib="1" loc="(560,420)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="4" loc="(260,1670)" name="Register"/> - <comp lib="2" loc="(290,1490)" name="Multiplexer"> - <a name="width" val="2"/> + <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="0" loc="(280,540)" name="Constant"/> - <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 lib="0" loc="(1200,1480)" name="Splitter"> + <a name="facing" val="west"/> + <a name="fanout" val="4"/> + <a name="incoming" val="4"/> </comp> - <comp lib="0" loc="(280,580)" name="Constant"/> - <comp lib="0" loc="(280,320)" name="Constant"/> - <comp lib="1" loc="(440,330)" name="OR Gate"> + <comp lib="1" loc="(360,510)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(640,60)" name="Constant"> - <a name="facing" val="south"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="1" loc="(330,740)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="JMP"/> - <a name="negate2" val="true"/> - <a name="negate3" val="true"/> - <a name="negate4" val="true"/> - <a name="negate5" val="true"/> - <a name="negate6" val="true"/> - </comp> - <comp lib="0" loc="(280,400)" name="Constant"/> - <comp lib="0" loc="(280,480)" name="Constant"/> - <comp lib="0" loc="(240,1630)" name="Splitter"> - <a name="facing" val="north"/> - <a name="incoming" val="8"/> - <a name="bit1" val="0"/> - <a name="bit2" val="0"/> - <a name="bit3" val="0"/> - <a name="bit4" val="1"/> - <a name="bit5" val="1"/> - <a name="bit6" val="1"/> - <a name="bit7" val="1"/> - </comp> - <comp lib="1" loc="(480,330)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="1" loc="(1170,1740)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="2" loc="(890,1050)" name="Multiplexer"> + <comp lib="2" loc="(890,690)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(890,870)" name="Multiplexer"> + <comp lib="0" loc="(860,640)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="enable" val="false"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(230,1580)" name="Splitter"> + <comp lib="0" loc="(620,1400)" 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"/> + <a name="appear" val="center"/> </comp> - <comp lib="0" loc="(620,1600)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> + <comp lib="1" loc="(330,920)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="POP"/> + <a name="negate2" val="true"/> + <a name="negate3" val="true"/> + <a name="negate4" val="true"/> + <a name="negate6" val="true"/> + </comp> + <comp lib="2" loc="(930,960)" name="Multiplexer"> + <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="label" val="GPR MUX"/> - <a name="labelloc" val="south"/> + <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(290,1610)" name="OR Gate"> - <a name="width" val="8"/> + <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="(400,60)" name="Constant"> + <a name="facing" val="south"/> + <a name="value" val="0x0"/> + </comp> </circuit> <circuit name="STK"> <a name="circuit" val="STK"/> @@ -3734,86 +3753,75 @@ <wire from="(750,260)" to="(760,260)"/> <wire from="(760,270)" to="(770,270)"/> <wire from="(1250,270)" to="(1270,270)"/> - <comp lib="4" loc="(2450,270)" name="Register"/> - <comp lib="4" loc="(1130,270)" name="Register"/> - <comp lib="2" loc="(2180,260)" name="Multiplexer"> + <comp lib="4" loc="(3440,270)" name="Register"/> + <comp lib="2" loc="(1630,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(3390,260)" name="Multiplexer"> + <comp lib="2" loc="(1960,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(2290,260)" name="Multiplexer"> + <comp lib="4" loc="(3660,270)" name="Register"/> + <comp lib="4" loc="(2560,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="(1410,260)" name="Multiplexer"> + <comp lib="2" loc="(200,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 lib="4" loc="(1570,270)" name="Register"/> + <comp lib="4" loc="(2230,270)" name="Register"/> + <comp lib="2" loc="(2290,260)" name="Multiplexer"> + <a name="width" val="8"/> + <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(3000,270)" name="Register"/> - <comp lib="2" loc="(1520,260)" name="Multiplexer"> + <comp lib="4" loc="(690,270)" name="Register"/> + <comp lib="4" loc="(3550,270)" name="Register"/> + <comp lib="2" loc="(1300,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(2010,270)" name="Register"/> - <comp lib="4" loc="(3220,270)" name="Register"/> - <comp lib="4" loc="(800,270)" name="Register"/> - <comp lib="4" loc="(1350,270)" name="Register"/> - <comp lib="2" loc="(1740,260)" name="Multiplexer"> + <comp lib="2" loc="(2510,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(1240,270)" name="Register"/> - <comp lib="2" loc="(2070,260)" name="Multiplexer"> + <comp lib="2" loc="(3060,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> + <comp lib="4" loc="(1130,270)" name="Register"/> + <comp lib="4" loc="(360,270)" name="Register"/> <comp lib="0" loc="(150,270)" name="Pin"> <a name="width" val="8"/> <a name="tristate" val="false"/> </comp> - <comp lib="1" loc="(130,340)" name="OR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="2" loc="(420,260)" name="Multiplexer"> + <comp lib="2" loc="(750,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(2950,260)" name="Multiplexer"> + <comp lib="2" loc="(970,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(1080,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="4" loc="(250,270)" name="Register"/> - <comp lib="4" loc="(580,270)" name="Register"/> - <comp lib="0" loc="(150,220)" name="Pin"> - <a name="output" val="true"/> + <comp lib="4" loc="(2890,270)" name="Register"/> + <comp lib="2" loc="(3500,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="2" loc="(2400,260)" name="Multiplexer"> + <comp lib="2" loc="(1740,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(150,300)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="4" loc="(2340,270)" name="Register"/> <comp lib="4" loc="(1460,270)" name="Register"/> - <comp lib="4" loc="(470,270)" name="Register"/> - <comp lib="4" loc="(2230,270)" name="Register"/> - <comp lib="2" loc="(640,260)" name="Multiplexer"> + <comp lib="2" loc="(1520,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> @@ -3821,114 +3829,125 @@ <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(2670,270)" name="Register"/> - <comp lib="4" loc="(2780,270)" name="Register"/> - <comp lib="4" loc="(3440,270)" name="Register"/> - <comp lib="4" loc="(910,270)" name="Register"/> - <comp lib="2" loc="(1850,260)" name="Multiplexer"> + <comp lib="2" loc="(640,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="(3390,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(1020,270)" name="Register"/> - <comp lib="2" loc="(1630,260)" name="Multiplexer"> + <comp lib="4" loc="(1900,270)" name="Register"/> + <comp lib="2" loc="(530,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(1570,270)" name="Register"/> - <comp lib="2" loc="(3060,260)" name="Multiplexer"> + <comp lib="4" loc="(1790,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="(3550,270)" name="Register"/> - <comp lib="4" loc="(1900,270)" name="Register"/> - <comp lib="4" loc="(1680,270)" name="Register"/> - <comp lib="2" loc="(750,260)" name="Multiplexer"> + <comp lib="4" loc="(3220,270)" name="Register"/> + <comp lib="4" loc="(250,270)" name="Register"/> + <comp lib="4" loc="(3000,270)" name="Register"/> + <comp lib="4" loc="(1020,270)" name="Register"/> + <comp lib="2" loc="(1190,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(310,260)" name="Multiplexer"> + <comp lib="2" loc="(3280,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(2620,260)" name="Multiplexer"> - <a name="width" val="8"/> - <a name="enable" val="false"/> + <comp lib="4" loc="(470,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="(530,260)" name="Multiplexer"> + <comp lib="4" loc="(2780,270)" name="Register"/> + <comp lib="2" loc="(2730,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(1190,260)" name="Multiplexer"> + <comp lib="4" loc="(2340,270)" name="Register"/> + <comp lib="0" loc="(150,220)" name="Pin"> + <a name="output" val="true"/> <a name="width" val="8"/> - <a name="enable" val="false"/> - </comp> - <comp lib="0" loc="(90,360)" name="Pin"> <a name="tristate" val="false"/> + <a name="labelloc" val="east"/> </comp> - <comp lib="2" loc="(3170,260)" name="Multiplexer"> + <comp lib="2" loc="(1850,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(3610,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="(1300,260)" name="Multiplexer"> + <comp lib="4" loc="(800,270)" name="Register"/> + <comp lib="2" loc="(420,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(2730,260)" name="Multiplexer"> + <comp lib="4" loc="(580,270)" name="Register"/> + <comp lib="4" loc="(2010,270)" name="Register"/> + <comp lib="4" loc="(2450,270)" name="Register"/> + <comp lib="2" loc="(1410,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="4" loc="(2890,270)" name="Register"/> - <comp lib="4" loc="(3660,270)" name="Register"/> - <comp lib="4" loc="(2120,270)" name="Register"/> - <comp lib="0" loc="(3670,220)" name="Constant"> - <a name="facing" val="west"/> + <comp lib="2" loc="(2840,260)" name="Multiplexer"> <a name="width" val="8"/> - <a name="value" val="0x0"/> + <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(2840,260)" name="Multiplexer"> + <comp lib="4" loc="(1350,270)" name="Register"/> + <comp lib="2" loc="(1080,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(690,270)" name="Register"/> - <comp lib="4" loc="(2560,270)" name="Register"/> - <comp lib="2" loc="(200,260)" name="Multiplexer"> + <comp lib="2" loc="(2180,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(3280,260)" name="Multiplexer"> + <comp lib="2" loc="(3170,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(970,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="4" loc="(1240,270)" name="Register"/> + <comp lib="4" loc="(3110,270)" name="Register"/> + <comp lib="0" loc="(90,360)" name="Pin"> + <a name="tristate" val="false"/> + </comp> + <comp lib="0" loc="(90,290)" name="Pin"> + <a name="tristate" val="false"/> + </comp> + <comp lib="2" loc="(310,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(360,270)" name="Register"/> - <comp lib="4" loc="(1790,270)" name="Register"/> <comp lib="0" loc="(90,330)" name="Pin"> <a name="tristate" val="false"/> </comp> - <comp lib="4" loc="(3110,270)" name="Register"/> - <comp lib="4" loc="(3330,270)" name="Register"/> - <comp lib="2" loc="(3500,260)" name="Multiplexer"> + <comp lib="1" loc="(130,340)" name="OR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="2" loc="(2620,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(1960,260)" name="Multiplexer"> + <comp lib="4" loc="(2120,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="(3330,270)" name="Register"/> + <comp lib="4" loc="(2670,270)" name="Register"/> + <comp lib="4" loc="(910,270)" name="Register"/> </circuit> <circuit name="PC"> <a name="circuit" val="PC"/> @@ -3974,9 +3993,11 @@ <comp lib="6" loc="(79,355)" name="Text"> <a name="text" val="Jump Enable"/> </comp> - <comp lib="0" loc="(140,320)" name="Pin"> + <comp lib="0" loc="(270,360)" name="Pin"> + <a name="facing" val="west"/> + <a name="output" val="true"/> <a name="width" val="8"/> - <a name="tristate" val="false"/> + <a name="labelloc" val="east"/> </comp> <comp lib="0" loc="(360,360)" name="Pin"> <a name="facing" val="west"/> @@ -3984,35 +4005,33 @@ <a name="width" val="8"/> <a name="labelloc" val="east"/> </comp> - <comp lib="2" loc="(220,310)" name="Multiplexer"> - <a name="width" val="8"/> - <a name="enable" val="false"/> - </comp> - <comp lib="1" loc="(200,380)" name="NOT Gate"/> - <comp lib="6" loc="(101,297)" name="Text"> - <a name="text" val="Jump Address"/> - </comp> - <comp lib="0" loc="(140,430)" name="Pin"> + <comp lib="0" loc="(140,400)" name="Pin"> <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="(140,320)" name="Pin"> <a name="width" val="8"/> - <a name="labelloc" val="east"/> + <a name="tristate" val="false"/> </comp> - <comp lib="0" loc="(290,330)" name="Constant"> - <a name="width" val="8"/> + <comp lib="3" loc="(330,320)" name="Adder"/> + <comp lib="4" loc="(260,310)" name="Register"> + <a name="trigger" val="falling"/> </comp> <comp lib="0" loc="(140,380)" name="Pin"> <a name="tristate" val="false"/> </comp> - <comp lib="3" loc="(330,320)" name="Adder"/> - <comp lib="0" loc="(140,400)" name="Pin"> + <comp lib="1" loc="(200,380)" name="NOT Gate"/> + <comp lib="2" loc="(220,310)" name="Multiplexer"> + <a name="width" val="8"/> + <a name="enable" val="false"/> + </comp> + <comp lib="0" loc="(140,430)" name="Pin"> <a name="tristate" val="false"/> </comp> - <comp lib="4" loc="(260,310)" name="Register"> - <a name="trigger" val="falling"/> + <comp lib="0" loc="(290,330)" name="Constant"> + <a name="width" val="8"/> + </comp> + <comp lib="6" loc="(101,297)" name="Text"> + <a name="text" val="Jump Address"/> </comp> </circuit> <circuit name="ExampleConfigurationROM"> @@ -4022,142 +4041,198 @@ <a name="clabelfont" val="SansSerif plain 12"/> <wire from="(550,350)" to="(550,360)"/> <wire from="(550,470)" to="(550,480)"/> - <wire from="(280,500)" to="(280,630)"/> - <wire from="(310,490)" to="(310,630)"/> + <wire from="(580,660)" to="(580,670)"/> <wire from="(510,350)" to="(510,360)"/> <wire from="(510,470)" to="(510,480)"/> <wire from="(430,310)" to="(430,330)"/> <wire from="(430,430)" to="(430,450)"/> - <wire from="(340,430)" to="(340,640)"/> + <wire from="(420,570)" to="(530,570)"/> + <wire from="(420,610)" to="(530,610)"/> + <wire from="(580,700)" to="(580,740)"/> <wire from="(340,310)" to="(430,310)"/> <wire from="(340,430)" to="(430,430)"/> <wire from="(680,150)" to="(680,260)"/> - <wire from="(350,450)" to="(350,610)"/> + <wire from="(540,650)" to="(560,650)"/> + <wire from="(540,690)" to="(560,690)"/> <wire from="(350,210)" to="(380,210)"/> - <wire from="(340,640)" to="(370,640)"/> <wire from="(350,330)" to="(380,330)"/> <wire from="(350,450)" to="(380,450)"/> + <wire from="(340,920)" to="(370,920)"/> + <wire from="(350,690)" to="(380,690)"/> <wire from="(430,510)" to="(580,510)"/> <wire from="(430,390)" to="(580,390)"/> + <wire from="(280,740)" to="(280,910)"/> + <wire from="(430,710)" to="(430,750)"/> <wire from="(420,340)" to="(430,340)"/> <wire from="(420,460)" to="(430,460)"/> <wire from="(420,220)" to="(430,220)"/> + <wire from="(420,700)" to="(430,700)"/> + <wire from="(430,710)" to="(440,710)"/> + <wire from="(310,730)" to="(310,910)"/> + <wire from="(340,430)" to="(340,670)"/> + <wire from="(280,740)" to="(550,740)"/> <wire from="(220,150)" to="(360,150)"/> - <wire from="(360,520)" to="(360,580)"/> + <wire from="(310,730)" to="(440,730)"/> + <wire from="(700,700)" to="(710,700)"/> + <wire from="(340,670)" to="(340,920)"/> + <wire from="(430,750)" to="(680,750)"/> + <wire from="(480,720)" to="(540,720)"/> <wire from="(360,150)" to="(360,280)"/> <wire from="(280,260)" to="(460,260)"/> <wire from="(280,380)" to="(460,380)"/> <wire from="(280,500)" to="(460,500)"/> + <wire from="(350,690)" to="(350,890)"/> + <wire from="(470,640)" to="(470,650)"/> + <wire from="(550,670)" to="(550,740)"/> <wire from="(350,160)" to="(350,170)"/> <wire from="(650,190)" to="(690,190)"/> + <wire from="(400,650)" to="(400,670)"/> + <wire from="(420,620)" to="(530,620)"/> + <wire from="(420,580)" to="(530,580)"/> <wire from="(460,230)" to="(460,260)"/> <wire from="(460,350)" to="(460,380)"/> <wire from="(460,470)" to="(460,500)"/> <wire from="(340,190)" to="(440,190)"/> + <wire from="(360,760)" to="(360,860)"/> <wire from="(470,150)" to="(680,150)"/> <wire from="(420,140)" to="(440,140)"/> + <wire from="(550,740)" to="(580,740)"/> <wire from="(310,250)" to="(450,250)"/> <wire from="(310,370)" to="(450,370)"/> <wire from="(310,490)" to="(450,490)"/> <wire from="(430,160)" to="(440,160)"/> <wire from="(500,190)" to="(510,190)"/> + <wire from="(470,720)" to="(480,720)"/> + <wire from="(280,500)" to="(280,740)"/> + <wire from="(310,490)" to="(310,730)"/> <wire from="(480,330)" to="(480,380)"/> <wire from="(480,450)" to="(480,500)"/> + <wire from="(350,450)" to="(350,690)"/> <wire from="(430,160)" to="(430,220)"/> <wire from="(500,190)" to="(500,250)"/> <wire from="(350,180)" to="(480,180)"/> <wire from="(220,170)" to="(350,170)"/> <wire from="(360,280)" to="(360,400)"/> <wire from="(360,400)" to="(360,520)"/> + <wire from="(550,640)" to="(560,640)"/> <wire from="(690,270)" to="(690,280)"/> + <wire from="(340,670)" to="(400,670)"/> + <wire from="(710,690)" to="(710,700)"/> + <wire from="(520,660)" to="(570,660)"/> + <wire from="(520,700)" to="(570,700)"/> <wire from="(220,230)" to="(280,230)"/> + <wire from="(420,640)" to="(470,640)"/> <wire from="(330,230)" to="(380,230)"/> <wire from="(330,350)" to="(380,350)"/> <wire from="(330,470)" to="(380,470)"/> + <wire from="(330,710)" to="(380,710)"/> <wire from="(350,170)" to="(350,180)"/> <wire from="(450,230)" to="(450,250)"/> <wire from="(450,350)" to="(450,370)"/> <wire from="(450,470)" to="(450,490)"/> + <wire from="(420,590)" to="(530,590)"/> + <wire from="(420,630)" to="(530,630)"/> <wire from="(220,210)" to="(310,210)"/> <wire from="(520,360)" to="(550,360)"/> <wire from="(520,480)" to="(550,480)"/> + <wire from="(550,670)" to="(580,670)"/> <wire from="(310,210)" to="(310,250)"/> + <wire from="(470,650)" to="(470,690)"/> <wire from="(430,330)" to="(440,330)"/> <wire from="(430,450)" to="(440,450)"/> <wire from="(470,210)" to="(480,210)"/> <wire from="(470,330)" to="(480,330)"/> <wire from="(470,450)" to="(480,450)"/> - <wire from="(360,580)" to="(370,580)"/> + <wire from="(470,650)" to="(480,650)"/> + <wire from="(360,860)" to="(370,860)"/> <wire from="(690,190)" to="(690,250)"/> <wire from="(340,310)" to="(340,430)"/> <wire from="(340,190)" to="(340,310)"/> <wire from="(220,190)" to="(340,190)"/> + <wire from="(430,700)" to="(430,710)"/> + <wire from="(480,710)" to="(480,720)"/> <wire from="(440,190)" to="(440,210)"/> <wire from="(480,190)" to="(480,210)"/> + <wire from="(420,600)" to="(530,600)"/> + <wire from="(540,690)" to="(540,720)"/> <wire from="(280,230)" to="(280,260)"/> <wire from="(350,180)" to="(350,210)"/> <wire from="(360,520)" to="(590,520)"/> <wire from="(360,400)" to="(590,400)"/> + <wire from="(540,650)" to="(540,690)"/> <wire from="(350,160)" to="(380,160)"/> - <wire from="(350,610)" to="(370,610)"/> + <wire from="(350,890)" to="(370,890)"/> <wire from="(480,380)" to="(500,380)"/> <wire from="(480,500)" to="(500,500)"/> + <wire from="(470,690)" to="(490,690)"/> + <wire from="(480,670)" to="(480,710)"/> <wire from="(430,340)" to="(440,340)"/> <wire from="(430,460)" to="(440,460)"/> <wire from="(430,220)" to="(440,220)"/> <wire from="(500,250)" to="(510,250)"/> + <wire from="(480,670)" to="(490,670)"/> + <wire from="(480,710)" to="(490,710)"/> <wire from="(360,280)" to="(690,280)"/> + <wire from="(360,760)" to="(690,760)"/> <wire from="(430,340)" to="(430,390)"/> <wire from="(430,460)" to="(430,510)"/> <wire from="(220,130)" to="(230,130)"/> + <wire from="(360,520)" to="(360,760)"/> <wire from="(280,380)" to="(280,500)"/> <wire from="(310,370)" to="(310,490)"/> <wire from="(280,260)" to="(280,380)"/> <wire from="(310,250)" to="(310,370)"/> + <wire from="(690,720)" to="(700,720)"/> <wire from="(350,330)" to="(350,450)"/> <wire from="(350,210)" to="(350,330)"/> - <comp lib="5" loc="(510,350)" name="Hex Digit Display"/> - <comp lib="5" loc="(550,470)" name="Hex Digit Display"/> - <comp lib="0" loc="(590,500)" name="Pin"> - <a name="facing" val="south"/> + <comp lib="0" loc="(330,350)" name="Constant"> <a name="width" val="8"/> - <a name="tristate" val="false"/> - </comp> - <comp lib="0" loc="(370,640)" name="Probe"> - <a name="facing" val="west"/> - <a name="label" val="Output"/> - <a name="labelloc" val="east"/> + <a name="value" val="0xfe"/> </comp> - <comp loc="(220,130)" name="MCU"/> - <comp lib="0" loc="(280,630)" name="Pin"> + <comp lib="0" loc="(310,910)" name="Clock"> <a name="facing" val="north"/> - <a name="tristate" val="false"/> </comp> - <comp lib="4" loc="(650,190)" name="ROM"> - <a name="addrWidth" val="16"/> - <a name="contents">addr/data: 16 8 -3 43 84 3f 7f 9f 7 43 -c4 3 67 bb ba 93 48 93 -8c a3 c4 a3 bb db 83 c -83 18 -</a> + <comp lib="0" loc="(370,860)" name="Probe"> + <a name="facing" val="west"/> + <a name="label" val="Input"/> + <a name="labelloc" val="east"/> </comp> + <comp lib="5" loc="(510,350)" name="Hex Digit Display"/> <comp lib="0" loc="(380,140)" name="Constant"> <a name="width" val="8"/> <a name="value" val="0xf0"/> </comp> - <comp lib="1" loc="(470,150)" name="OR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(500,190)" 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="0" loc="(330,350)" name="Constant"> + <comp lib="3" loc="(420,220)" name="Comparator"> + <a name="mode" val="unsigned"/> + </comp> + <comp lib="1" loc="(690,270)" name="Controlled Buffer"> + <a name="facing" val="south"/> <a name="width" val="8"/> - <a name="value" val="0xfe"/> </comp> - <comp lib="3" loc="(420,460)" name="Comparator"> - <a name="mode" val="unsigned"/> + <comp lib="1" loc="(470,720)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="4" loc="(470,450)" name="Register"/> <comp lib="0" loc="(500,500)" name="Splitter"> <a name="facing" val="north"/> <a name="incoming" val="8"/> @@ -4170,96 +4245,154 @@ c4 3 67 bb ba 93 48 93 <a name="bit6" val="1"/> <a name="bit7" val="1"/> </comp> + <comp lib="5" loc="(550,350)" name="Hex Digit Display"/> <comp lib="0" loc="(230,130)" name="Constant"> <a name="facing" val="west"/> </comp> - <comp lib="0" loc="(370,610)" name="Probe"> + <comp lib="0" loc="(330,710)" name="Constant"> + <a name="width" val="8"/> + <a name="value" val="0xfc"/> + </comp> + <comp lib="1" loc="(590,400)" name="Controlled Buffer"> + <a name="facing" val="south"/> + <a name="width" val="8"/> + </comp> + <comp lib="0" loc="(370,890)" name="Probe"> <a name="facing" val="west"/> <a name="label" val="Address"/> <a name="labelloc" val="east"/> </comp> - <comp lib="1" loc="(590,520)" name="Controlled Buffer"> + <comp lib="0" loc="(590,380)" name="Pin"> <a name="facing" val="south"/> <a name="width" val="8"/> + <a name="tristate" val="false"/> </comp> - <comp lib="3" loc="(420,220)" name="Comparator"> + <comp lib="0" loc="(500,380)" name="Splitter"> + <a name="facing" val="north"/> + <a name="incoming" val="8"/> + <a name="appear" val="right"/> + <a name="bit1" val="0"/> + <a name="bit2" val="0"/> + <a name="bit3" val="0"/> + <a name="bit4" val="1"/> + <a name="bit5" val="1"/> + <a name="bit6" val="1"/> + <a name="bit7" val="1"/> + </comp> + <comp lib="3" loc="(420,150)" name="Comparator"> <a name="mode" val="unsigned"/> </comp> <comp lib="0" loc="(330,470)" name="Constant"> <a name="width" val="8"/> <a name="value" val="0xfd"/> </comp> - <comp lib="0" loc="(310,630)" name="Clock"> - <a name="facing" val="north"/> + <comp lib="4" loc="(470,210)" name="Register"/> + <comp lib="3" loc="(420,340)" name="Comparator"> + <a name="mode" val="unsigned"/> </comp> - <comp lib="3" loc="(420,150)" name="Comparator"> + <comp lib="1" loc="(470,150)" name="OR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="4" loc="(470,330)" name="Register"/> + <comp lib="0" loc="(400,650)" name="Splitter"> + <a name="fanout" val="8"/> + <a name="incoming" val="8"/> + </comp> + <comp lib="4" loc="(650,190)" name="ROM"> + <a name="addrWidth" val="16"/> + <a name="contents">addr/data: 16 8 +30 3 4b c4 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 +2d 83 4 3 4b f7 83 4 +3f 7f f6 83 4 3 4b 9f +a7 93 33 7f 9f ab a3 52 +f7 83 0 83 2f +</a> + </comp> + <comp lib="3" loc="(420,700)" name="Comparator"> <a name="mode" val="unsigned"/> </comp> - <comp lib="0" loc="(590,380)" name="Pin"> + <comp lib="1" loc="(690,720)" name="NOT Gate"> <a name="facing" val="south"/> - <a name="width" val="8"/> - <a name="tristate" val="false"/> + <a name="size" val="20"/> + </comp> + <comp lib="5" loc="(560,690)" name="Keyboard"> + <a name="trigger" val="falling"/> + </comp> + <comp lib="5" loc="(560,650)" name="TTY"> + <a name="cols" val="80"/> + <a name="trigger" val="falling"/> + </comp> + <comp lib="0" loc="(700,700)" name="Splitter"> + <a name="facing" val="south"/> + <a name="fanout" val="7"/> + <a name="incoming" val="7"/> + </comp> + <comp lib="0" loc="(550,640)" 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="5" loc="(510,470)" name="Hex Digit Display"/> - <comp lib="4" loc="(470,330)" name="Register"/> - <comp lib="0" loc="(330,230)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0xff"/> + <comp lib="1" loc="(520,660)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + <a name="negate0" val="true"/> </comp> - <comp lib="1" loc="(690,270)" name="Controlled Buffer"> + <comp lib="1" loc="(520,700)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="1" loc="(590,520)" name="Controlled Buffer"> <a name="facing" val="south"/> <a name="width" val="8"/> </comp> - <comp lib="1" loc="(590,400)" name="Controlled Buffer"> + <comp lib="4" loc="(470,450)" name="Register"/> + <comp lib="0" loc="(280,910)" name="Pin"> + <a name="facing" val="north"/> + <a name="tristate" val="false"/> + </comp> + <comp lib="1" loc="(690,760)" name="Controlled Buffer"> <a name="facing" val="south"/> <a name="width" val="8"/> </comp> - <comp lib="3" loc="(420,340)" name="Comparator"> - <a name="mode" val="unsigned"/> + <comp lib="0" loc="(690,740)" name="Splitter"> + <a name="facing" val="north"/> + <a name="fanout" val="8"/> + <a name="incoming" val="8"/> + <a name="appear" val="right"/> </comp> - <comp lib="4" loc="(470,210)" name="Register"/> - <comp lib="0" loc="(510,250)" name="Probe"> + <comp lib="0" loc="(330,230)" name="Constant"> + <a name="width" val="8"/> + <a name="value" val="0xff"/> + </comp> + <comp lib="5" loc="(550,470)" name="Hex Digit Display"/> + <comp lib="0" loc="(370,920)" name="Probe"> <a name="facing" val="west"/> - <a name="label" val="Real Address"/> + <a name="label" val="Output"/> <a name="labelloc" val="east"/> </comp> - <comp lib="0" loc="(500,380)" name="Splitter"> - <a name="facing" val="north"/> - <a name="incoming" val="8"/> - <a name="appear" val="right"/> - <a name="bit1" val="0"/> - <a name="bit2" val="0"/> - <a name="bit3" val="0"/> - <a name="bit4" val="1"/> - <a name="bit5" val="1"/> - <a name="bit6" val="1"/> - <a name="bit7" val="1"/> + <comp lib="3" loc="(420,460)" name="Comparator"> + <a name="mode" val="unsigned"/> </comp> - <comp lib="0" loc="(370,580)" name="Probe"> + <comp lib="0" loc="(510,250)" name="Probe"> <a name="facing" val="west"/> - <a name="label" val="Input"/> + <a name="label" val="Real Address"/> <a name="labelloc" val="east"/> </comp> - <comp lib="0" loc="(500,190)" name="Splitter"> + <comp lib="0" loc="(590,500)" name="Pin"> + <a name="facing" val="south"/> + <a name="width" val="8"/> + <a name="tristate" val="false"/> + </comp> + <comp loc="(220,130)" name="MCU"/> + <comp lib="0" loc="(710,690)" name="Probe"> <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"/> + <a name="radix" val="10unsigned"/> </comp> - <comp lib="5" loc="(550,350)" name="Hex Digit Display"/> </circuit> </project> diff --git a/ExamplePrograms/README.md b/ExamplePrograms/README.md @@ -1,5 +1,7 @@ # Example guide for TISC Assembly Code -> "tac" +TODO: Implement some kind of variables / defines + ### Structure Each assembly line must start with either a comment, @@ -46,19 +48,19 @@ Program Counter Read - get the program counters current address pcr -Set Comparsion Operation - compare for `A > B` +Set Comparsion Operation - `cmp` instruction will compare for `A > B` sco_gthan -Set Comparison Operation - compare for `A + B > 255` +Set Comparison Operation - `cmp` instruction will compare for `A + B > 255` sco_oflow -Set Comparison Operation - compare for `A & B == 0` +Set Comparison Operation - `cmp` instruction will compare for `A & B == 0` sco_andeq -Set Comparison Operation - compare for `A ^ B == 0` +Set Comparison Operation - `cmp` instruction will compare for `A ^ B == 0` sco_xoreq @@ -68,16 +70,16 @@ Increment memory pointer (set with the `sp` instruction) by `1` ## 1 Arguement Instructions -Load immediate to GRC. This is a macro for successive lli and lui instructions +Load immediate to `GRC`. This is a macro for successive lli and lui instructions li A<0-255> -Load Lower Immediate to GRC, Least Significant 4 bits of a byte 'nibble' +Load Lower Immediate to `GRC`, Least Significant 4 bits of a byte 'nibble' lli A<0-15> -Load Upper Immediate to GRC, Most Significant 4 bits of a byte 'nibble' -> Note: This operation ORs the contents of GRC. May be of use. (hint: sign) +Load Upper Immediate to `GRC`, Most Significant 4 bits of a byte 'nibble' +> Note: This operation ORs the contents of `GRC`. (you may find this useful) lui A<0-15> @@ -118,6 +120,7 @@ Logical OR the contents of `A` and `B`, store the result in `C` or A<GR> B<GR> C<GR> Logical NAND the contents of `A` and `B`, store the result in `C` +> NOTE: Considering using this instruction spot for a generic 'do operation' from the currently configured operations that are set by the `sco_*` functions nand A<GR> B<GR> C<GR> diff --git a/ExamplePrograms/test_compare.tac b/ExamplePrograms/test_compare.tac @@ -1,4 +1,5 @@ # This program tests the compare modes set by sco_* +# If we end up jumping to the loop tag, we've failed the test start: li 255 mov GRA GRB sco_xoreq @@ -13,5 +14,12 @@ next1: sco_andeq cmp GRA GRB jmp next2 jmp loop -next2: jmp start -loop: jmp loop- \ No newline at end of file +next2: sco_gthan + cmp GRA GRB + jmp next3 + jmp loop +next3: sco_oflow + cin GRA GRA + cmp GRA GRB +loop: jmp loop + jmp start+ \ No newline at end of file diff --git a/ExamplePrograms/typing_test.tac b/ExamplePrograms/typing_test.tac @@ -0,0 +1,45 @@ +# This program reads the input from the 'keyboard' component and records in a +# buffer until the user presses the return key, at that point it dumps the +# buffer. The buffer will step back when the backspace key is pressed. +setup: sco_xoreq + li 32 + mov GRA GRC +poll: li 252 + sp GRA + li 128 +p_loop: lb GRB + cmp GRB GRA + jmp p_loop +buffer: sb GRB + sb GRA + li 8 + cmp GRA GRB + jmp bcksp + sp GRC + sb GRB + cin GRC GRC + li 112 + cmp GRA GRC + jmp setup + li 10 + cmp GRB GRA + jmp output + jmp poll +bcksp: li 32 + cmp GRA GRC + jmp poll + li 255 + add GRA GRC GRC + jmp poll +output: li 32 +o_loop: sp GRA + lb GRB + push + li 252 + sp GRA + sb GRB + pop + cin GRA GRA + cmp GRA GRC + jmp setup + jmp o_loop diff --git a/README.md b/README.md @@ -7,7 +7,7 @@ an assembler to program the simulated implementation in [Logisim](http://www.cbu ## Want to play with it too? -To compile the assembler, run tisc.c through GCC: +To compile the assembler, I reccomend using GCC: gcc tisc.c @@ -15,4 +15,6 @@ To start Logisim with the provided .jar file: java -jar CPU/logisim.jar CPU/CPU.circ +Otherwise, if you already have logisim installed on your computer I reccomend using that version instead. I have the .jar file packaged to make the project more portable + I recommend getting familiar with Logisim if you'd like to play with this circuit until there are more sophisticated peripherals available in the Logisim implementation