tisc

tiny instruction set computer
Log | Files | Refs | README

commit 38ccb1ce2b22e77b55d1e45d4457a964fb4a2910
parent 8cca4420017e7704fb7d02cfc88b341f936804c9
Author: Paul Longtine <paul@nanner.co>
Date:   Sun, 19 Jun 2022 21:23:54 -0400

TISCv2.0 Revised immediate system to support loading multiple bytes

Elaborated the tisc assembler to support easier debugging

Diffstat:
MCPU/CPU.circ | 3650+++++++++++++++++++++++++++++++++++++++----------------------------------------
MExamplePrograms/README.md | 21++++++++++++---------
MExamplePrograms/fibb_test.tac | 4++--
AExamplePrograms/terminal_test.tac | 101+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MExamplePrograms/typing_test.tac | 10+++++-----
MINSTRUCTION_SET | 3++-
MREADME.md | 38+++++++++++++++++++++++++++++++-------
DScreenshots/tiscv1_4.png | 0
DScreenshots/tiscv1_4_example.png | 0
AScreenshots/tiscv2_0.png | 0
AScreenshots/tiscv2_0_example.png | 0
Mtisc.c | 274++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------
12 files changed, 2207 insertions(+), 1894 deletions(-)

diff --git a/CPU/CPU.circ b/CPU/CPU.circ @@ -76,7 +76,7 @@ <path d="M53,12 Q57,22 61,12" fill="none" stroke="#808080" stroke-width="2"/> <rect fill="none" height="161" stroke="#000000" stroke-width="2" width="120" x="40" y="11"/> <rect fill="#707070" height="160" stroke="#000000" width="119" x="40" y="10"/> - <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="86" y="159">tisc v1.4</text> + <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="86" y="159">tisc v2.0</text> <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="152" y="43">IO ENABLE</text> <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="152" y="85">INPUT</text> <text fill="#fafafa" font-family="Dialog" font-size="10" text-anchor="end" x="153" y="124">ADDRESS</text> @@ -99,6 +99,7 @@ <wire from="(340,40)" to="(340,180)"/> <wire from="(230,150)" to="(230,160)"/> <wire from="(460,340)" to="(510,340)"/> + <wire from="(310,150)" to="(310,160)"/> <wire from="(480,200)" to="(480,220)"/> <wire from="(170,210)" to="(170,230)"/> <wire from="(220,130)" to="(220,220)"/> @@ -196,16 +197,29 @@ <wire from="(210,110)" to="(210,230)"/> <wire from="(260,250)" to="(460,250)"/> <wire from="(330,190)" to="(400,190)"/> - <comp loc="(160,210)" name="PC"/> - <comp lib="0" loc="(450,380)" name="Pin"> + <comp loc="(260,130)" name="ALU"/> + <comp lib="6" loc="(290,239)" name="Text"/> + <comp loc="(230,170)" name="ISD"/> + <comp loc="(280,150)" name="GPR"/> + <comp lib="0" loc="(510,320)" name="Pin"> <a name="facing" val="west"/> - <a name="output" val="true"/> - <a name="width" val="8"/> <a name="tristate" val="false"/> <a name="pull" val="down"/> - <a name="label" val="OUT"/> + <a name="label" val="IO ENABLE"/> + <a name="labelloc" val="east"/> + </comp> + <comp lib="0" loc="(510,300)" name="Pin"> + <a name="facing" val="west"/> + <a name="output" val="true"/> + <a name="label" val="IO ACTIVE"/> <a name="labelloc" val="east"/> </comp> + <comp lib="1" loc="(430,230)" name="AND Gate"> + <a name="facing" val="west"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + <a name="negate0" val="true"/> + </comp> <comp lib="0" loc="(510,440)" name="Pin"> <a name="facing" val="west"/> <a name="tristate" val="false"/> @@ -213,91 +227,78 @@ <a name="label" val="RST"/> <a name="labelloc" val="east"/> </comp> - <comp lib="2" loc="(400,210)" name="Multiplexer"> - <a name="facing" val="north"/> - <a name="selloc" val="tr"/> - <a name="width" val="8"/> - <a name="enable" val="false"/> - </comp> - <comp lib="0" loc="(290,340)" name="Constant"> - <a name="facing" val="north"/> + <comp lib="0" loc="(510,340)" name="Pin"> + <a name="facing" val="west"/> + <a name="output" val="true"/> + <a name="label" val="WRITE ACTIVE"/> + <a name="labelloc" val="east"/> </comp> - <comp lib="0" loc="(450,400)" name="Pin"> + <comp lib="0" loc="(450,380)" name="Pin"> <a name="facing" val="west"/> <a name="output" val="true"/> <a name="width" val="8"/> <a name="tristate" val="false"/> <a name="pull" val="down"/> - <a name="label" val="ADDR"/> + <a name="label" val="OUT"/> <a name="labelloc" val="east"/> </comp> - <comp loc="(280,150)" name="GPR"/> - <comp loc="(230,170)" name="ISD"/> - <comp loc="(200,90)" name="STK"/> - <comp lib="4" loc="(380,300)" name="RAM"> - <a name="bus" val="separate"/> + <comp lib="0" loc="(510,420)" name="Pin"> + <a name="facing" val="west"/> + <a name="tristate" val="false"/> + <a name="pull" val="down"/> + <a name="label" val="CLK"/> + <a name="labelloc" val="east"/> </comp> - <comp lib="2" loc="(290,80)" name="Multiplexer"> - <a name="select" val="2"/> + <comp lib="2" loc="(400,210)" name="Multiplexer"> + <a name="facing" val="north"/> + <a name="selloc" val="tr"/> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> + <comp loc="(200,90)" name="STK"/> + <comp loc="(160,210)" name="PC"/> <comp lib="2" loc="(170,280)" name="Multiplexer"> <a name="facing" val="south"/> <a name="selloc" val="tr"/> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(430,230)" name="AND Gate"> - <a name="facing" val="west"/> + <comp lib="1" loc="(310,340)" name="AND Gate"> + <a name="facing" val="north"/> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate0" val="true"/> </comp> - <comp lib="0" loc="(510,420)" name="Pin"> + <comp lib="0" loc="(450,360)" name="Pin"> <a name="facing" val="west"/> + <a name="width" val="8"/> <a name="tristate" val="false"/> <a name="pull" val="down"/> - <a name="label" val="CLK"/> - <a name="labelloc" val="east"/> - </comp> - <comp lib="0" loc="(510,300)" name="Pin"> - <a name="facing" val="west"/> - <a name="output" val="true"/> - <a name="label" val="IO ACTIVE"/> + <a name="label" val="IN"/> <a name="labelloc" val="east"/> </comp> - <comp lib="1" loc="(310,340)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="0" loc="(510,340)" name="Pin"> + <comp lib="0" loc="(450,400)" name="Pin"> <a name="facing" val="west"/> <a name="output" val="true"/> - <a name="label" val="WRITE ACTIVE"/> - <a name="labelloc" val="east"/> - </comp> - <comp loc="(260,130)" name="ALU"/> - <comp lib="0" loc="(450,360)" name="Pin"> - <a name="facing" val="west"/> <a name="width" val="8"/> <a name="tristate" val="false"/> <a name="pull" val="down"/> - <a name="label" val="IN"/> + <a name="label" val="ADDR"/> <a name="labelloc" val="east"/> </comp> + <comp lib="4" loc="(380,300)" name="RAM"> + <a name="bus" val="separate"/> + </comp> + <comp lib="0" loc="(290,340)" name="Constant"> + <a name="facing" val="north"/> + </comp> <comp lib="6" loc="(303,244)" name="Text"> - <a name="text" val="TISCv1.3"/> + <a name="text" val="TISCv2.0"/> <a name="font" val="Dialog plain 14"/> </comp> - <comp lib="6" loc="(290,239)" name="Text"/> - <comp lib="0" loc="(510,320)" name="Pin"> - <a name="facing" val="west"/> - <a name="tristate" val="false"/> - <a name="pull" val="down"/> - <a name="label" val="IO ENABLE"/> - <a name="labelloc" val="east"/> + <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"> @@ -668,495 +669,556 @@ <wire from="(770,200)" to="(780,200)"/> <wire from="(530,280)" to="(540,280)"/> <wire from="(870,100)" to="(870,150)"/> - <comp lib="2" loc="(820,90)" name="Multiplexer"> - <a name="width" val="8"/> - <a name="enable" val="false"/> + <comp lib="0" loc="(390,280)" name="Tunnel"> + <a name="label" val="o2"/> </comp> - <comp lib="1" loc="(190,550)" name="XOR Gate"> + <comp lib="1" loc="(340,370)" name="XNOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(340,550)" name="XNOR Gate"> + <comp lib="1" loc="(310,420)" name="OR Gate"> + <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(390,640)" name="Tunnel"> - <a name="label" val="o6"/> + <comp lib="6" loc="(617,355)" name="Text"> + <a name="text" val="Opcodes"/> </comp> - <comp lib="0" loc="(670,270)" name="Tunnel"> - <a name="label" val="o3"/> + <comp lib="0" loc="(550,60)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b1"/> </comp> - <comp lib="1" loc="(190,280)" name="XOR Gate"> + <comp lib="1" loc="(190,130)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(270,320)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - <a name="negate1" val="true"/> + <comp lib="3" loc="(930,160)" name="Shifter"> + <a name="shift" val="lr"/> </comp> - <comp lib="1" loc="(270,770)" 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="(740,380)" 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="(190,220)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(300,780)" name="AND Gate"> + <comp lib="1" loc="(300,690)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(830,280)" name="OR Gate"> - <a name="size" val="70"/> - <a name="inputs" val="8"/> - </comp> - <comp lib="1" loc="(190,640)" name="XOR Gate"> + <comp lib="1" loc="(250,730)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(190,760)" name="XOR Gate"> + <comp lib="1" loc="(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="(780,100)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="width" val="8"/> - <a name="label" val="A"/> + <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="(300,450)" name="OR Gate"> + <comp lib="1" loc="(300,630)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="2" loc="(810,190)" name="Multiplexer"> - <a name="width" val="8"/> - <a name="enable" val="false"/> + <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="(300,270)" name="OR Gate"> + <comp lib="6" loc="(472,443)" name="Text"> + <a name="text" val="ALU STATE"/> + </comp> + <comp lib="0" loc="(790,380)" name="Tunnel"> <a name="facing" val="south"/> + <a name="label" val="FC"/> + </comp> + <comp lib="1" loc="(250,640)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(280,110)" name="OR 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="(330,850)" name="Constant"> + <comp lib="0" loc="(760,380)" name="Tunnel"> <a name="facing" val="south"/> - <a name="value" val="0x0"/> + <a name="label" val="OR"/> </comp> - <comp lib="1" loc="(270,230)" name="AND Gate"> + <comp lib="1" loc="(190,580)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(550,20)" name="Tunnel"> + <comp lib="0" loc="(550,50)" name="Tunnel"> <a name="facing" val="east"/> - <a name="width" val="8"/> - <a name="label" val="B"/> - </comp> - <comp lib="0" loc="(790,80)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="0" loc="(670,280)" name="Tunnel"> - <a name="label" val="o4"/> + <a name="label" val="b0"/> </comp> - <comp lib="1" loc="(300,330)" name="AND Gate"> + <comp lib="1" loc="(300,720)" name="OR Gate"> + <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(340,100)" name="XNOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(710,470)" name="Splitter"> + <a name="facing" val="west"/> + <a name="fanout" val="3"/> + <a name="incoming" val="3"/> </comp> - <comp lib="1" loc="(280,650)" 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="4" loc="(670,550)" name="ROM"> - <a name="addrWidth" val="4"/> - <a name="dataWidth" val="7"/> - <a name="contents">addr/data: 4 7 -3 7 9 a 6 4 30 50 -</a> + <comp lib="3" loc="(1060,80)" name="Comparator"> + <a name="width" val="4"/> </comp> - <comp lib="0" loc="(650,320)" name="Splitter"> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> + <comp lib="6" loc="(880,461)" name="Text"> + <a name="text" val="OPCODES: 000: OR, 001: AND, 010: XOR, 011: ADD, 100: CIN, 101: NAND, 110: XNOR, 111: SUB"/> </comp> - <comp lib="0" loc="(750,380)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="!B"/> + <comp lib="1" loc="(190,670)" name="XOR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(130,390)" name="Tunnel"> + <comp lib="0" loc="(680,120)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a3"/> + <a name="label" val="a7"/> </comp> - <comp lib="0" loc="(130,750)" name="Tunnel"> + <comp lib="0" loc="(130,300)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a7"/> + <a name="label" val="a2"/> </comp> - <comp lib="1" loc="(240,490)" name="AND Gate"> + <comp lib="1" loc="(340,190)" name="XNOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(340,850)" name="Constant"> + <comp lib="0" loc="(180,70)" name="Tunnel"> <a name="facing" val="south"/> - <a name="value" val="0x0"/> + <a name="label" val="!B"/> </comp> - <comp lib="1" loc="(240,580)" name="AND Gate"> + <comp lib="1" loc="(300,600)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(300,420)" name="AND Gate"> + <comp lib="1" loc="(190,550)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(570,40)" name="Pin"> + <comp lib="1" loc="(310,690)" name="OR Gate"> <a name="facing" val="west"/> - <a name="width" val="8"/> - <a name="tristate" val="false"/> - </comp> - <comp lib="1" loc="(250,280)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(550,80)" name="Tunnel"> + <comp lib="4" loc="(670,550)" name="ROM"> + <a name="addrWidth" val="4"/> + <a name="dataWidth" val="7"/> + <a name="contents">addr/data: 4 7 +3 7 9 a 6 4 30 50 +</a> + </comp> + <comp lib="0" loc="(130,210)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b3"/> + <a name="label" val="a1"/> </comp> - <comp lib="1" loc="(750,490)" name="OR Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(850,150)" name="Splitter"> + <a name="facing" val="west"/> + <a name="fanout" val="3"/> + <a name="incoming" val="3"/> + <a name="appear" val="right"/> </comp> - <comp lib="1" loc="(270,140)" name="AND Gate"> + <comp lib="6" loc="(736,75)" name="Text"> + <a name="text" val="Input A"/> + </comp> + <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="0" loc="(130,120)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a0"/> </comp> - <comp lib="0" loc="(680,60)" name="Tunnel"> + <comp lib="0" loc="(130,720)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a1"/> + <a name="label" val="b7"/> </comp> - <comp lib="1" loc="(280,200)" 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="1" loc="(340,730)" name="XNOR Gate"> + <comp lib="0" loc="(340,70)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="FC"/> + </comp> + <comp lib="1" loc="(270,770)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(390,460)" name="Tunnel"> - <a name="label" val="o4"/> + <comp lib="0" loc="(640,440)" name="Constant"/> + <comp lib="0" loc="(710,520)" name="Splitter"> + <a name="facing" val="west"/> + <a name="appear" val="center"/> </comp> - <comp lib="1" loc="(240,670)" name="AND Gate"> + <comp lib="1" loc="(190,280)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(240,220)" name="AND Gate"> + <comp lib="1" loc="(240,130)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(550,60)" name="Tunnel"> + <comp lib="0" loc="(550,120)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b1"/> + <a name="label" val="b7"/> </comp> - <comp lib="0" loc="(700,40)" name="Pin"> - <a name="facing" val="west"/> - <a name="width" val="8"/> - <a name="tristate" val="false"/> + <comp lib="0" loc="(710,320)" name="Splitter"> + <a name="fanout" val="8"/> + <a name="incoming" val="8"/> </comp> - <comp lib="0" loc="(780,180)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0x0"/> + <comp lib="0" loc="(680,110)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a6"/> </comp> - <comp lib="1" loc="(270,590)" name="AND Gate"> + <comp lib="1" loc="(300,360)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="3" loc="(1000,90)" name="BitAdder"/> + <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="(680,90)" name="Tunnel"> + <comp lib="1" loc="(190,190)" 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> + <comp lib="0" loc="(390,640)" name="Tunnel"> + <a name="label" val="o6"/> + </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> + <comp lib="0" loc="(130,630)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a4"/> + <a name="label" val="b6"/> </comp> - <comp lib="0" loc="(390,370)" name="Tunnel"> + <comp lib="0" loc="(670,270)" name="Tunnel"> <a name="label" val="o3"/> </comp> - <comp lib="0" loc="(680,120)" name="Tunnel"> + <comp lib="0" loc="(130,660)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a7"/> + <a name="label" val="a6"/> </comp> - <comp lib="0" loc="(340,70)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="FC"/> + <comp lib="0" loc="(390,190)" name="Tunnel"> + <a name="label" val="o1"/> </comp> - <comp lib="0" loc="(850,150)" name="Splitter"> - <a name="facing" val="west"/> - <a name="fanout" val="3"/> - <a name="incoming" val="3"/> - <a name="appear" val="right"/> + <comp lib="1" loc="(190,640)" name="XOR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(300,720)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="0" loc="(130,570)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a5"/> + </comp> + <comp lib="1" loc="(310,330)" name="OR Gate"> + <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="6" loc="(481,532)" name="Text"> - <a name="text" val="DYN OP"/> + <comp lib="0" loc="(130,90)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b0"/> </comp> - <comp lib="0" loc="(780,380)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="CI"/> + <comp lib="0" loc="(680,60)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a1"/> </comp> - <comp lib="1" loc="(250,460)" name="NOR 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="(640,440)" name="Constant"/> - <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="(190,460)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(330,490)" name="AND Gate"> + <comp lib="0" loc="(130,180)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b1"/> + </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,400)" name="AND Gate"> + <comp lib="1" loc="(270,230)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="6" loc="(602,74)" name="Text"> - <a name="text" val="Input B"/> + <comp lib="0" loc="(130,540)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b5"/> </comp> - <comp lib="1" loc="(190,100)" name="XOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(670,310)" name="Tunnel"> + <a name="label" val="o7"/> </comp> - <comp lib="1" loc="(250,550)" name="NOR Gate"> + <comp lib="2" loc="(320,890)" name="Multiplexer"> + <a name="facing" val="south"/> + <a name="selloc" val="tr"/> + <a name="select" val="2"/> + <a name="enable" val="false"/> + </comp> + <comp lib="1" loc="(340,550)" name="XNOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(250,100)" name="NOR Gate"> + <comp lib="1" loc="(240,220)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(760,380)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="OR"/> + <comp lib="0" loc="(780,180)" name="Constant"> + <a name="width" val="8"/> + <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(340,190)" name="XNOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(670,550)" name="Splitter"> + <a name="fanout" val="7"/> + <a name="incoming" val="7"/> </comp> - <comp lib="0" loc="(390,730)" name="Tunnel"> - <a name="label" val="o7"/> + <comp lib="0" loc="(650,320)" name="Splitter"> + <a name="fanout" val="8"/> + <a name="incoming" val="8"/> </comp> - <comp lib="1" loc="(310,240)" name="OR Gate"> - <a name="facing" val="west"/> + <comp lib="1" loc="(280,560)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(530,280)" name="Pin"> - <a name="output" val="true"/> - <a name="width" val="8"/> - <a name="labelloc" val="east"/> + <comp lib="0" loc="(490,460)" name="Pin"> + <a name="tristate" val="false"/> </comp> - <comp lib="1" loc="(250,370)" name="NOR Gate"> + <comp lib="1" loc="(280,470)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="6" loc="(736,75)" name="Text"> - <a name="text" val="Input A"/> + <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,400)" name="XOR 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="0" loc="(130,450)" name="Tunnel"> + <comp lib="0" loc="(130,480)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b4"/> + <a name="label" val="a4"/> </comp> - <comp lib="0" loc="(680,50)" name="Tunnel"> + <comp lib="0" loc="(680,80)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a0"/> + <a name="label" val="a3"/> </comp> - <comp lib="1" loc="(300,240)" name="AND Gate"> + <comp lib="1" loc="(190,400)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(570,40)" name="Splitter"> - <a name="facing" val="west"/> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> + <comp lib="0" loc="(670,300)" name="Tunnel"> + <a name="label" val="o6"/> </comp> - <comp lib="1" loc="(270,410)" name="AND Gate"> + <comp lib="1" loc="(340,640)" name="XNOR 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="(190,760)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(700,40)" name="Splitter"> - <a name="facing" val="west"/> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> + <comp lib="0" loc="(670,280)" name="Tunnel"> + <a name="label" val="o4"/> </comp> - <comp lib="1" loc="(190,670)" name="XOR Gate"> + <comp lib="0" loc="(300,70)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="CI"/> + </comp> + <comp lib="1" loc="(280,200)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(670,240)" name="Tunnel"> - <a name="label" val="o0"/> - </comp> - <comp lib="0" loc="(130,300)" name="Tunnel"> + <comp lib="0" loc="(130,270)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a2"/> + <a name="label" val="b2"/> </comp> - <comp lib="1" loc="(300,180)" name="OR Gate"> + <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="6" loc="(617,355)" name="Text"> - <a name="text" val="Opcodes"/> - </comp> - <comp lib="6" loc="(498,373)" name="Text"> - <a name="text" val="STATIC OPCODE"/> + <comp lib="1" loc="(300,420)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(390,280)" name="Tunnel"> - <a name="label" val="o2"/> + <comp lib="2" loc="(570,400)" name="Multiplexer"> + <a name="width" val="3"/> + <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(710,320)" name="Splitter"> + <comp lib="6" loc="(476,260)" name="Text"> + <a name="text" val="Output"/> + </comp> + <comp lib="0" loc="(700,40)" name="Pin"> + <a name="facing" val="west"/> + <a name="width" val="8"/> + <a name="tristate" val="false"/> + </comp> + <comp lib="0" loc="(550,80)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b3"/> + </comp> + <comp lib="1" loc="(300,270)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="1" loc="(190,220)" name="XOR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="0" loc="(390,730)" name="Tunnel"> + <a name="label" val="o7"/> + </comp> + <comp lib="0" loc="(570,40)" name="Splitter"> + <a name="facing" val="west"/> <a name="fanout" val="8"/> <a name="incoming" val="8"/> </comp> - <comp lib="3" loc="(1060,80)" name="Comparator"> - <a name="width" val="4"/> + <comp lib="1" loc="(280,380)" name="OR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(500,550)" name="Pin"> - <a name="width" val="4"/> - <a name="tristate" val="false"/> + <comp lib="0" loc="(670,290)" name="Tunnel"> + <a name="label" val="o5"/> </comp> - <comp lib="1" loc="(270,500)" name="AND Gate"> + <comp lib="1" loc="(310,780)" name="OR Gate"> + <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(340,280)" name="XNOR Gate"> + <comp lib="1" loc="(270,590)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(260,70)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="CC"/> + <comp lib="0" loc="(500,550)" name="Pin"> + <a name="width" val="4"/> + <a name="tristate" val="false"/> </comp> - <comp lib="0" loc="(300,70)" name="Tunnel"> + <comp lib="0" loc="(140,70)" name="Tunnel"> <a name="facing" val="south"/> - <a name="label" val="CI"/> - </comp> - <comp lib="3" loc="(930,160)" name="Shifter"> - <a name="shift" val="lr"/> + <a name="label" val="!A"/> </comp> - <comp lib="0" loc="(680,100)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a5"/> + <comp lib="6" loc="(481,532)" name="Text"> + <a name="text" val="DYN OP"/> </comp> - <comp lib="1" loc="(300,540)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="1" loc="(250,100)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(130,210)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a1"/> + <comp lib="2" loc="(1010,210)" name="Multiplexer"> + <a name="facing" val="south"/> + <a name="width" val="8"/> + <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(190,370)" name="XOR Gate"> + <comp lib="1" loc="(750,490)" name="OR Gate"> + <a name="facing" val="north"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(670,310)" name="Tunnel"> - <a name="label" val="o7"/> - </comp> - <comp lib="1" loc="(300,600)" name="AND Gate"> + <comp lib="1" loc="(280,740)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(340,370)" name="XNOR Gate"> + <comp lib="1" loc="(190,730)" name="XOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(270,680)" name="AND Gate"> + <comp lib="1" loc="(240,670)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(330,310)" name="AND Gate"> + <comp lib="3" loc="(930,70)" name="BitAdder"/> + <comp lib="0" loc="(130,450)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b4"/> + </comp> + <comp lib="0" loc="(680,50)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="a0"/> + </comp> + <comp lib="1" loc="(310,510)" 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="(240,400)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(550,120)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b7"/> - </comp> - <comp lib="1" loc="(340,460)" name="XNOR Gate"> + <comp lib="1" loc="(330,400)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(550,70)" name="Tunnel"> + <comp lib="0" loc="(680,100)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b2"/> + <a name="label" val="a5"/> </comp> - <comp lib="0" loc="(680,20)" name="Tunnel"> + <comp lib="0" loc="(550,20)" name="Tunnel"> <a name="facing" val="east"/> <a name="width" val="8"/> - <a name="label" val="A"/> + <a name="label" val="B"/> </comp> - <comp lib="0" loc="(130,720)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b7"/> + <comp lib="1" loc="(240,310)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(330,760)" name="AND Gate"> + <comp lib="1" loc="(240,490)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="1" loc="(330,220)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="6" loc="(476,260)" name="Text"> - <a name="text" val="Output"/> + <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="(670,300)" name="Tunnel"> - <a name="label" val="o6"/> + <comp lib="0" loc="(740,380)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="!A"/> </comp> - <comp lib="1" loc="(300,360)" name="OR Gate"> + <comp lib="1" loc="(250,280)" name="NOR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="0" loc="(340,850)" name="Constant"> <a name="facing" val="south"/> + <a name="value" val="0x0"/> + </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,190)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> @@ -1164,121 +1226,127 @@ <a name="fanout" val="8"/> <a name="incoming" val="8"/> </comp> - <comp lib="0" loc="(130,180)" name="Tunnel"> + <comp lib="0" loc="(130,360)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b1"/> + <a name="label" val="b3"/> </comp> - <comp lib="1" loc="(310,330)" name="OR Gate"> - <a name="facing" val="west"/> + <comp lib="0" loc="(220,70)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="OR"/> + </comp> + <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,510)" name="AND Gate"> + <comp lib="1" loc="(330,490)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="2" loc="(570,400)" name="Multiplexer"> - <a name="width" val="3"/> - <a name="enable" val="false"/> + <comp lib="6" loc="(355,906)" name="Text"> + <a name="text" val="FLAG"/> </comp> - <comp lib="0" loc="(670,550)" name="Splitter"> - <a name="fanout" val="7"/> - <a name="incoming" val="7"/> + <comp lib="0" loc="(670,250)" name="Tunnel"> + <a name="label" val="o1"/> </comp> - <comp lib="2" loc="(1010,210)" name="Multiplexer"> - <a name="facing" val="south"/> - <a name="width" val="8"/> - <a name="enable" val="false"/> + <comp lib="0" loc="(700,40)" name="Splitter"> + <a name="facing" val="west"/> + <a name="fanout" val="8"/> + <a name="incoming" val="8"/> </comp> - <comp lib="2" loc="(320,890)" name="Multiplexer"> + <comp lib="1" loc="(300,330)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + <a name="negate1" val="true"/> + </comp> + <comp lib="1" loc="(250,550)" name="NOR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="0" loc="(780,380)" name="Tunnel"> <a name="facing" val="south"/> - <a name="selloc" val="tr"/> - <a name="select" val="2"/> - <a name="enable" val="false"/> + <a name="label" val="CI"/> </comp> <comp lib="0" loc="(680,70)" name="Tunnel"> <a name="facing" val="east"/> <a name="label" val="a2"/> </comp> - <comp lib="0" loc="(140,70)" name="Tunnel"> + <comp lib="0" loc="(770,200)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="width" val="8"/> + <a name="label" val="B"/> + </comp> + <comp lib="1" loc="(300,540)" name="OR Gate"> <a name="facing" val="south"/> - <a name="label" val="!A"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(280,560)" name="OR Gate"> + <comp lib="3" loc="(930,110)" name="Shifter"/> + <comp lib="1" loc="(560,300)" name="AND Gate"> + <a name="facing" val="north"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(310,150)" name="OR Gate"> - <a name="facing" val="west"/> + <comp lib="1" loc="(330,310)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(130,270)" name="Tunnel"> + <comp lib="0" loc="(550,100)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b2"/> + <a name="label" val="b5"/> </comp> - <comp lib="0" loc="(670,250)" name="Tunnel"> - <a name="label" val="o1"/> + <comp lib="0" loc="(390,370)" name="Tunnel"> + <a name="label" val="o3"/> </comp> - <comp lib="1" loc="(300,630)" name="OR Gate"> - <a name="facing" val="south"/> + <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="(280,290)" name="OR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(770,380)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="CC"/> </comp> - <comp lib="1" loc="(190,460)" name="XOR Gate"> + <comp lib="1" loc="(240,580)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="3" loc="(930,70)" name="BitAdder"/> - <comp lib="0" loc="(130,570)" name="Tunnel"> + <comp lib="0" loc="(670,260)" name="Tunnel"> + <a name="label" val="o2"/> + </comp> + <comp lib="0" loc="(680,90)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a5"/> + <a name="label" val="a4"/> </comp> - <comp lib="0" loc="(710,520)" name="Splitter"> - <a name="facing" val="west"/> - <a name="appear" val="center"/> + <comp lib="0" loc="(390,100)" name="Tunnel"> + <a name="label" val="o0"/> </comp> - <comp lib="1" loc="(190,310)" name="XOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="0" loc="(130,540)" name="Tunnel"> + <comp lib="0" loc="(130,750)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b5"/> - </comp> - <comp lib="0" loc="(670,290)" name="Tunnel"> - <a name="label" val="o5"/> + <a name="label" val="a7"/> </comp> - <comp lib="1" loc="(240,130)" name="AND Gate"> + <comp lib="1" loc="(340,460)" name="XNOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="6" loc="(472,443)" name="Text"> - <a name="text" val="ALU STATE"/> + <comp lib="1" loc="(270,320)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(180,70)" name="Tunnel"> + <comp lib="0" loc="(330,850)" name="Constant"> <a name="facing" val="south"/> - <a name="label" val="!B"/> + <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(310,510)" name="OR Gate"> + <comp lib="1" loc="(310,150)" name="OR Gate"> <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(390,100)" name="Tunnel"> - <a name="label" val="o0"/> - </comp> - <comp lib="0" loc="(390,550)" name="Tunnel"> - <a name="label" val="o5"/> - </comp> - <comp lib="1" loc="(190,580)" name="XOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(550,110)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b6"/> </comp> <comp lib="0" loc="(320,890)" name="Pin"> <a name="facing" val="north"/> @@ -1286,39 +1354,53 @@ <a name="tristate" val="false"/> <a name="labelloc" val="east"/> </comp> - <comp lib="6" loc="(880,461)" name="Text"> - <a name="text" val="OPCODES: 000: OR, 001: AND, 010: XOR, 011: ADD, 100: CIN, 101: NAND, 110: XNOR, 111: SUB"/> + <comp lib="0" loc="(550,70)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="label" val="b2"/> </comp> - <comp lib="1" loc="(190,730)" name="XOR Gate"> + <comp lib="1" loc="(340,730)" name="XNOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(550,100)" name="Tunnel"> + <comp lib="2" loc="(810,190)" name="Multiplexer"> + <a name="width" val="8"/> + <a name="enable" val="false"/> + </comp> + <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="1" loc="(250,190)" name="NOR Gate"> + <comp lib="1" loc="(310,240)" name="OR Gate"> + <a name="facing" val="west"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(330,670)" name="AND Gate"> + <comp lib="1" loc="(830,280)" name="OR Gate"> + <a name="size" val="70"/> + <a name="inputs" val="8"/> + </comp> + <comp lib="0" loc="(670,240)" name="Tunnel"> + <a name="label" val="o0"/> + </comp> + <comp lib="1" loc="(270,410)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(190,190)" name="XOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(530,280)" name="Pin"> + <a name="output" val="true"/> + <a name="width" val="8"/> + <a name="labelloc" val="east"/> </comp> - <comp lib="0" loc="(130,360)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b3"/> + <comp lib="6" loc="(498,373)" name="Text"> + <a name="text" val="STATIC OPCODE"/> </comp> - <comp lib="0" loc="(550,90)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b4"/> + <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="3" loc="(930,110)" name="Shifter"/> <comp lib="4" loc="(730,400)" name="ROM"> <a name="addrWidth" val="3"/> <a name="dataWidth" val="6"/> @@ -1326,172 +1408,91 @@ 8 3b 4 0 2 38 7 12 </a> </comp> - <comp lib="0" loc="(730,400)" name="Splitter"> - <a name="facing" val="north"/> - <a name="fanout" val="6"/> - <a name="incoming" val="6"/> - <a name="appear" val="right"/> - </comp> - <comp lib="0" loc="(510,390)" name="Pin"> - <a name="width" val="3"/> - <a name="tristate" val="false"/> - </comp> - <comp lib="3" loc="(1000,90)" name="BitAdder"/> - <comp lib="1" loc="(240,310)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="1" loc="(280,380)" name="OR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="1" loc="(310,420)" name="OR Gate"> - <a name="facing" val="west"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="2" loc="(540,280)" name="Multiplexer"> - <a name="facing" val="west"/> - <a name="width" val="8"/> - <a name="enable" val="false"/> - </comp> - <comp lib="1" loc="(300,150)" name="AND Gate"> + <comp lib="1" loc="(300,780)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(250,640)" name="NOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="1" loc="(310,600)" name="OR Gate"> - <a name="facing" val="west"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="1" loc="(310,780)" name="OR Gate"> - <a name="facing" val="west"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="0" loc="(710,470)" name="Splitter"> - <a name="facing" val="west"/> - <a name="fanout" val="3"/> - <a name="incoming" val="3"/> + <comp lib="0" loc="(680,20)" name="Tunnel"> + <a name="facing" val="east"/> + <a name="width" val="8"/> + <a name="label" val="A"/> </comp> - <comp lib="0" loc="(670,260)" name="Tunnel"> - <a name="label" val="o2"/> + <comp lib="0" loc="(750,380)" name="Tunnel"> + <a name="facing" val="south"/> + <a name="label" val="!B"/> </comp> - <comp lib="1" loc="(330,580)" name="AND Gate"> + <comp lib="1" loc="(300,510)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="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="(560,300)" name="AND Gate"> - <a name="facing" val="north"/> + <comp lib="1" loc="(250,460)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(680,80)" name="Tunnel"> + <comp lib="0" loc="(780,100)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a3"/> - </comp> - <comp lib="0" loc="(220,70)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="OR"/> - </comp> - <comp lib="0" loc="(770,380)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="CC"/> - </comp> - <comp lib="1" loc="(300,690)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - <a name="negate1" val="true"/> + <a name="width" val="8"/> + <a name="label" val="A"/> </comp> - <comp lib="0" loc="(680,110)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a6"/> + <comp lib="0" loc="(390,550)" name="Tunnel"> + <a name="label" val="o5"/> </comp> - <comp lib="0" loc="(770,200)" name="Tunnel"> - <a name="facing" val="east"/> + <comp lib="2" loc="(540,280)" name="Multiplexer"> + <a name="facing" val="west"/> <a name="width" val="8"/> - <a name="label" val="B"/> + <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(280,740)" name="OR Gate"> + <comp lib="1" loc="(250,370)" name="NOR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(130,480)" name="Tunnel"> + <comp lib="0" loc="(550,90)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="a4"/> - </comp> - <comp lib="6" loc="(355,906)" name="Text"> - <a name="text" val="FLAG"/> - </comp> - <comp lib="1" loc="(250,730)" name="NOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="label" val="b4"/> </comp> - <comp lib="0" loc="(550,110)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b6"/> + <comp lib="0" loc="(510,390)" name="Pin"> + <a name="width" val="3"/> + <a name="tristate" val="false"/> </comp> - <comp lib="0" loc="(130,630)" name="Tunnel"> + <comp lib="0" loc="(130,390)" name="Tunnel"> <a name="facing" val="east"/> - <a name="label" val="b6"/> + <a name="label" val="a3"/> </comp> - <comp lib="0" loc="(130,660)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="a6"/> + <comp lib="0" loc="(790,80)" name="Constant"> + <a name="width" val="8"/> + <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(330,130)" name="AND Gate"> + <comp lib="1" loc="(330,580)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(550,50)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b0"/> - </comp> - <comp lib="0" loc="(130,90)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="b0"/> + <comp lib="2" loc="(820,90)" name="Multiplexer"> + <a name="width" val="8"/> + <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(330,220)" name="AND Gate"> + <comp lib="1" loc="(280,650)" name="OR 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="6" loc="(602,74)" name="Text"> + <a name="text" val="Input B"/> </comp> - <comp lib="1" loc="(340,640)" name="XNOR 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="(790,380)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="FC"/> - </comp> - <comp lib="1" loc="(280,470)" name="OR Gate"> + <comp lib="1" loc="(240,760)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(490,460)" name="Pin"> + <comp lib="0" loc="(570,40)" name="Pin"> + <a name="facing" val="west"/> + <a name="width" val="8"/> <a name="tristate" val="false"/> </comp> - <comp lib="1" loc="(190,130)" name="XOR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> </circuit> <circuit name="GPR"> <a name="circuit" val="GPR"/> @@ -1501,52 +1502,61 @@ <appear> <rect fill="none" height="30" stroke="#000000" stroke-width="2" width="49" x="50" y="70"/> <text font-family="SansSerif" font-size="12" text-anchor="middle" x="74" y="89">GPR</text> - <circ-port height="8" pin="100,90" width="8" x="86" y="96"/> <circ-port height="8" pin="140,130" width="8" x="86" y="66"/> <circ-port height="10" pin="140,230" width="10" x="45" y="75"/> <circ-port height="10" pin="140,260" width="10" x="45" y="85"/> - <circ-port height="8" pin="150,340" width="8" x="56" y="96"/> - <circ-port height="8" pin="240,340" width="8" x="66" y="96"/> - <circ-port height="8" pin="110,60" width="8" x="56" y="66"/> + <circ-port height="8" pin="140,340" width="8" x="56" y="96"/> + <circ-port height="8" pin="250,340" width="8" x="66" y="96"/> + <circ-port height="8" pin="250,120" width="8" x="56" y="66"/> <circ-port height="8" pin="130,200" width="8" x="96" y="86"/> + <circ-port height="8" pin="350,280" width="8" x="76" y="96"/> + <circ-port height="8" pin="130,80" width="8" x="86" y="96"/> <circ-anchor facing="east" height="6" width="6" x="47" y="97"/> </appear> + <wire from="(170,120)" to="(170,190)"/> <wire from="(220,250)" to="(220,320)"/> + <wire from="(220,110)" to="(220,180)"/> <wire from="(210,120)" to="(210,190)"/> + <wire from="(250,120)" to="(250,190)"/> <wire from="(140,260)" to="(190,260)"/> - <wire from="(180,100)" to="(180,120)"/> <wire from="(180,300)" to="(180,320)"/> - <wire from="(170,100)" to="(170,190)"/> <wire from="(160,130)" to="(200,130)"/> <wire from="(270,210)" to="(270,240)"/> + <wire from="(280,240)" to="(280,270)"/> + <wire from="(170,120)" to="(210,120)"/> <wire from="(200,130)" to="(240,130)"/> <wire from="(230,260)" to="(270,260)"/> <wire from="(190,260)" to="(230,260)"/> + <wire from="(350,250)" to="(350,280)"/> + <wire from="(210,120)" to="(250,120)"/> <wire from="(170,290)" to="(170,320)"/> <wire from="(190,210)" to="(190,240)"/> <wire from="(230,210)" to="(230,240)"/> <wire from="(180,280)" to="(210,280)"/> <wire from="(170,290)" to="(200,290)"/> - <wire from="(180,120)" to="(210,120)"/> + <wire from="(190,110)" to="(220,110)"/> + <wire from="(360,240)" to="(390,240)"/> <wire from="(270,260)" to="(290,260)"/> <wire from="(190,170)" to="(190,210)"/> <wire from="(230,170)" to="(230,210)"/> <wire from="(270,170)" to="(270,210)"/> <wire from="(140,130)" to="(160,130)"/> <wire from="(150,270)" to="(150,320)"/> - <wire from="(280,220)" to="(280,270)"/> + <wire from="(360,220)" to="(370,220)"/> + <wire from="(140,340)" to="(150,340)"/> + <wire from="(240,340)" to="(250,340)"/> <wire from="(150,270)" to="(280,270)"/> + <wire from="(150,110)" to="(150,180)"/> <wire from="(200,220)" to="(200,290)"/> <wire from="(180,300)" to="(240,300)"/> - <wire from="(190,110)" to="(250,110)"/> <wire from="(180,190)" to="(180,200)"/> <wire from="(190,100)" to="(190,110)"/> + <wire from="(170,100)" to="(170,110)"/> <wire from="(220,190)" to="(220,200)"/> <wire from="(200,310)" to="(200,320)"/> <wire from="(130,200)" to="(180,200)"/> - <wire from="(240,130)" to="(290,130)"/> <wire from="(260,190)" to="(260,200)"/> - <wire from="(250,110)" to="(250,190)"/> + <wire from="(180,100)" to="(180,180)"/> <wire from="(240,220)" to="(240,300)"/> <wire from="(180,200)" to="(220,200)"/> <wire from="(170,230)" to="(210,230)"/> @@ -1560,125 +1570,138 @@ <wire from="(140,230)" to="(170,230)"/> <wire from="(230,280)" to="(260,280)"/> <wire from="(160,220)" to="(160,320)"/> - <wire from="(280,220)" to="(300,220)"/> + <wire from="(310,230)" to="(330,230)"/> + <wire from="(280,240)" to="(300,240)"/> + <wire from="(240,130)" to="(390,130)"/> <wire from="(160,130)" to="(160,170)"/> <wire from="(200,130)" to="(200,170)"/> <wire from="(230,280)" to="(230,320)"/> <wire from="(240,130)" to="(240,170)"/> <wire from="(210,280)" to="(210,320)"/> + <wire from="(390,130)" to="(390,240)"/> + <wire from="(300,270)" to="(300,310)"/> <wire from="(170,210)" to="(190,210)"/> + <wire from="(180,180)" to="(200,180)"/> + <wire from="(150,110)" to="(170,110)"/> <wire from="(250,210)" to="(270,210)"/> <wire from="(210,210)" to="(230,210)"/> + <wire from="(220,180)" to="(240,180)"/> <wire from="(260,250)" to="(270,250)"/> <wire from="(180,250)" to="(190,250)"/> + <wire from="(150,180)" to="(160,180)"/> <wire from="(220,250)" to="(230,250)"/> - <wire from="(300,250)" to="(300,310)"/> - <comp lib="0" loc="(140,260)" name="Pin"> - <a name="output" val="true"/> - <a name="width" val="8"/> - <a name="labelloc" val="east"/> - </comp> - <comp lib="1" loc="(230,260)" name="Controlled Buffer"> + <comp lib="4" loc="(190,170)" name="Register"/> + <comp lib="0" loc="(250,120)" name="Pin"> <a name="facing" val="south"/> - <a name="width" val="8"/> + <a name="tristate" val="false"/> </comp> - <comp lib="1" loc="(250,230)" name="Controlled Buffer"> - <a name="facing" val="south"/> + <comp lib="0" loc="(310,260)" name="Constant"> + <a name="facing" val="west"/> <a name="width" val="8"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(130,200)" name="Pin"> + <comp lib="4" loc="(270,170)" name="Register"/> + <comp lib="0" loc="(140,130)" name="Pin"> + <a name="width" val="8"/> <a name="tristate" val="false"/> + <a name="label" val="Input"/> </comp> - <comp lib="2" loc="(130,80)" name="Multiplexer"> - <a name="selloc" val="tr"/> - <a name="width" val="2"/> - <a name="enable" val="false"/> + <comp lib="0" loc="(350,280)" name="Pin"> + <a name="facing" val="north"/> + <a name="tristate" val="false"/> + <a name="label" val="Forward Input A"/> + <a name="labelloc" val="east"/> </comp> - <comp lib="0" loc="(200,180)" name="Constant"/> - <comp lib="1" loc="(170,230)" name="Controlled Buffer"> + <comp lib="1" loc="(230,260)" name="Controlled Buffer"> <a name="facing" val="south"/> <a name="width" val="8"/> </comp> - <comp lib="4" loc="(270,170)" name="Register"/> - <comp lib="0" loc="(140,130)" name="Pin"> - <a name="width" val="8"/> + <comp lib="0" loc="(130,200)" name="Pin"> <a name="tristate" val="false"/> </comp> - <comp lib="0" loc="(240,340)" name="Pin"> - <a name="facing" val="west"/> + <comp lib="1" loc="(190,260)" name="Controlled Buffer"> + <a name="facing" val="south"/> + <a name="width" val="8"/> + </comp> + <comp lib="0" loc="(140,340)" name="Pin"> <a name="width" val="2"/> <a name="tristate" val="false"/> + <a name="label" val="Read A"/> </comp> - <comp lib="2" loc="(150,340)" name="Decoder"> + <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="(270,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="0" loc="(160,180)" name="Constant"/> - <comp lib="0" loc="(150,340)" name="Pin"> + <comp lib="0" loc="(250,340)" name="Pin"> + <a name="facing" val="west"/> <a name="width" val="2"/> <a name="tristate" val="false"/> + <a name="label" val="Read B"/> + <a name="labelloc" val="east"/> </comp> - <comp lib="4" loc="(190,170)" name="Register"/> - <comp lib="4" loc="(230,170)" name="Register"/> - <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="0" loc="(310,230)" name="Constant"> + <comp lib="1" loc="(290,260)" name="Controlled Buffer"> <a name="facing" val="west"/> <a name="width" val="8"/> - <a name="value" val="0x0"/> + <a name="control" val="left"/> + </comp> + <comp lib="1" loc="(170,230)" name="Controlled Buffer"> + <a name="facing" val="south"/> + <a name="width" val="8"/> </comp> <comp lib="1" loc="(290,230)" name="Controlled Buffer"> <a name="facing" val="west"/> <a name="width" val="8"/> + <a name="control" val="left"/> </comp> - <comp lib="0" loc="(240,180)" name="Constant"/> - <comp lib="0" loc="(100,70)" name="Constant"> - <a name="width" val="2"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="0" loc="(100,90)" name="Pin"> - <a name="width" val="2"/> - <a name="tristate" val="false"/> + <comp lib="0" loc="(140,260)" name="Pin"> + <a name="output" val="true"/> + <a name="width" val="8"/> + <a name="label" val="Read B"/> </comp> - <comp lib="1" loc="(210,230)" name="Controlled Buffer"> - <a name="facing" val="south"/> + <comp lib="0" loc="(370,220)" name="Constant"> + <a name="facing" val="west"/> <a name="width" val="8"/> + <a name="value" val="0x0"/> </comp> - <comp lib="2" loc="(160,80)" name="Decoder"> + <comp lib="1" loc="(210,230)" name="Controlled Buffer"> <a name="facing" val="south"/> - <a name="select" val="2"/> - <a name="enable" val="false"/> - </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="(310,260)" name="Constant"> + <comp lib="2" loc="(330,230)" name="Multiplexer"> <a name="facing" val="west"/> <a name="width" val="8"/> - <a name="value" val="0x0"/> + <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(240,340)" name="Decoder"> + <comp lib="4" loc="(230,170)" name="Register"/> + <comp lib="2" loc="(150,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="(190,260)" name="Controlled Buffer"> - <a name="facing" val="south"/> - <a name="width" val="8"/> + <comp lib="0" loc="(130,80)" name="Pin"> + <a name="width" val="2"/> + <a name="tristate" val="false"/> + <a name="label" val="Write"/> </comp> - <comp lib="1" loc="(290,260)" name="Controlled Buffer"> - <a name="facing" val="west"/> + <comp lib="0" loc="(140,230)" name="Pin"> + <a name="output" val="true"/> <a name="width" val="8"/> + <a name="label" val="Read A"/> + </comp> + <comp lib="2" loc="(160,80)" name="Decoder"> + <a name="facing" val="south"/> + <a name="select" val="2"/> + <a name="enable" val="false"/> </comp> </circuit> <circuit name="ISD"> @@ -1690,9 +1713,9 @@ <rect fill="none" height="61" stroke="#000000" stroke-width="2" width="100" x="50" y="50"/> <text font-family="SansSerif" font-size="12" text-anchor="middle" x="99" y="84">ISD</text> <circ-port height="8" pin="80,50" width="8" x="146" y="76"/> - <circ-port height="8" pin="80,80" width="8" x="66" y="106"/> - <circ-port height="8" pin="80,250" width="8" x="146" y="96"/> - <circ-port height="10" pin="440,1610" width="10" x="65" y="45"/> + <circ-port height="8" pin="50,150" width="8" x="66" y="106"/> + <circ-port height="8" pin="50,250" width="8" x="146" y="96"/> + <circ-port height="10" pin="440,1620" width="10" x="65" y="45"/> <circ-port height="10" pin="620,1610" width="10" x="85" y="45"/> <circ-port height="10" pin="530,1880" width="10" x="45" y="95"/> <circ-port height="10" pin="760,1580" width="10" x="45" y="65"/> @@ -1700,102 +1723,126 @@ <circ-port height="10" pin="840,1610" width="10" x="115" y="45"/> <circ-port height="10" pin="880,1610" width="10" x="105" y="45"/> <circ-port height="10" pin="920,1610" width="10" x="135" y="45"/> - <circ-port height="10" pin="1110,1190" width="10" x="75" y="105"/> + <circ-port height="10" pin="1160,1190" width="10" x="75" y="105"/> <circ-port height="10" pin="780,1880" width="10" x="45" y="75"/> <circ-port height="8" pin="660,1880" width="8" x="56" y="46"/> <circ-port height="8" pin="90,1640" width="8" x="46" y="106"/> <circ-port height="10" pin="330,1680" width="10" x="55" y="105"/> <circ-port height="8" pin="440,1690" width="8" x="46" y="86"/> - <circ-port height="10" pin="570,1690" width="10" x="145" y="65"/> + <circ-port height="10" pin="530,1690" width="10" x="145" y="65"/> <circ-port height="10" pin="1190,1480" width="10" x="75" y="45"/> - <circ-port height="10" pin="1110,1360" width="10" x="45" y="45"/> + <circ-port height="10" pin="1160,1360" width="10" x="45" y="45"/> <circ-port height="10" pin="440,1880" width="10" x="145" y="85"/> <circ-port height="10" pin="830,1890" width="10" x="145" y="55"/> + <circ-port height="10" pin="1340,800" width="10" x="125" y="45"/> <circ-anchor facing="east" height="6" width="6" x="47" y="57"/> </appear> + <wire from="(610,600)" to="(610,930)"/> <wire from="(190,580)" to="(250,580)"/> <wire from="(1090,1500)" to="(1130,1500)"/> <wire from="(720,1370)" to="(1040,1370)"/> + <wire from="(450,1140)" to="(450,1600)"/> <wire from="(470,470)" to="(470,480)"/> <wire from="(170,960)" to="(280,960)"/> <wire from="(210,1360)" to="(210,1440)"/> <wire from="(830,920)" to="(870,920)"/> <wire from="(830,830)" to="(830,850)"/> - <wire from="(1180,1500)" to="(1180,1510)"/> <wire from="(170,1320)" to="(170,1410)"/> <wire from="(200,390)" to="(200,480)"/> <wire from="(240,430)" to="(240,520)"/> <wire from="(220,90)" to="(220,180)"/> <wire from="(150,1720)" to="(380,1720)"/> <wire from="(240,970)" to="(280,970)"/> + <wire from="(120,120)" to="(120,150)"/> <wire from="(240,340)" to="(270,340)"/> + <wire from="(200,1580)" to="(230,1580)"/> <wire from="(850,210)" to="(850,250)"/> + <wire from="(1200,680)" to="(1210,680)"/> <wire from="(180,1310)" to="(270,1310)"/> <wire from="(1090,1530)" to="(1100,1530)"/> <wire from="(200,1020)" to="(280,1020)"/> + <wire from="(1130,910)" to="(1160,910)"/> <wire from="(450,60)" to="(450,300)"/> <wire from="(530,1750)" to="(660,1750)"/> <wire from="(650,60)" to="(650,570)"/> <wire from="(920,1240)" to="(920,1290)"/> <wire from="(840,520)" to="(840,570)"/> + <wire from="(960,820)" to="(1040,820)"/> <wire from="(880,880)" to="(880,930)"/> <wire from="(510,1100)" to="(630,1100)"/> <wire from="(510,1280)" to="(510,1290)"/> <wire from="(610,1050)" to="(610,1380)"/> + <wire from="(1080,890)" to="(1080,910)"/> <wire from="(890,60)" to="(890,70)"/> <wire from="(210,730)" to="(270,730)"/> + <wire from="(1250,740)" to="(1250,760)"/> + <wire from="(1180,1500)" to="(1180,1590)"/> + <wire from="(1220,710)" to="(1220,740)"/> <wire from="(230,440)" to="(280,440)"/> <wire from="(170,1410)" to="(280,1410)"/> + <wire from="(1310,670)" to="(1310,740)"/> <wire from="(680,1860)" to="(720,1860)"/> - <wire from="(1120,1770)" to="(1310,1770)"/> + <wire from="(70,120)" to="(70,650)"/> <wire from="(180,500)" to="(180,590)"/> <wire from="(200,840)" to="(200,930)"/> <wire from="(220,540)" to="(220,630)"/> <wire from="(240,880)" to="(240,970)"/> <wire from="(510,1190)" to="(670,1190)"/> <wire from="(340,1750)" to="(340,1790)"/> + <wire from="(1090,680)" to="(1120,680)"/> <wire from="(570,60)" to="(570,120)"/> <wire from="(690,1140)" to="(690,1200)"/> <wire from="(920,210)" to="(930,210)"/> <wire from="(180,500)" to="(250,500)"/> + <wire from="(760,690)" to="(770,690)"/> <wire from="(840,970)" to="(840,1020)"/> <wire from="(880,1330)" to="(880,1380)"/> <wire from="(930,870)" to="(930,880)"/> + <wire from="(1080,700)" to="(1080,720)"/> + <wire from="(1320,620)" to="(1320,650)"/> <wire from="(230,890)" to="(280,890)"/> <wire from="(470,1370)" to="(470,1380)"/> <wire from="(350,290)" to="(350,300)"/> - <wire from="(910,1010)" to="(1010,1010)"/> + <wire from="(820,800)" to="(1110,800)"/> <wire from="(200,1290)" to="(200,1380)"/> <wire from="(180,950)" to="(180,1040)"/> <wire from="(220,990)" to="(220,1080)"/> + <wire from="(1080,720)" to="(1390,720)"/> <wire from="(230,260)" to="(270,260)"/> <wire from="(150,1690)" to="(150,1720)"/> + <wire from="(990,840)" to="(990,1690)"/> <wire from="(190,940)" to="(280,940)"/> <wire from="(850,1110)" to="(850,1150)"/> <wire from="(940,1520)" to="(940,1560)"/> + <wire from="(1380,680)" to="(1380,730)"/> <wire from="(1030,1540)" to="(1030,1790)"/> <wire from="(440,1140)" to="(450,1140)"/> <wire from="(920,340)" to="(930,340)"/> <wire from="(100,250)" to="(100,1780)"/> <wire from="(880,300)" to="(890,300)"/> <wire from="(970,560)" to="(970,1570)"/> - <wire from="(720,780)" to="(730,780)"/> <wire from="(260,1670)" to="(330,1670)"/> <wire from="(800,1700)" to="(800,1750)"/> <wire from="(640,60)" to="(650,60)"/> <wire from="(930,1380)" to="(930,1520)"/> <wire from="(890,960)" to="(890,970)"/> <wire from="(850,600)" to="(850,610)"/> - <wire from="(1070,1550)" to="(1110,1550)"/> <wire from="(340,1790)" to="(1030,1790)"/> + <wire from="(190,1540)" to="(190,1550)"/> <wire from="(230,1340)" to="(280,1340)"/> - <wire from="(190,1540)" to="(190,1560)"/> + <wire from="(150,1580)" to="(200,1580)"/> + <wire from="(1010,640)" to="(1200,640)"/> + <wire from="(830,670)" to="(870,670)"/> + <wire from="(1200,630)" to="(1200,640)"/> <wire from="(190,130)" to="(190,220)"/> <wire from="(230,170)" to="(230,260)"/> <wire from="(230,1580)" to="(230,1610)"/> - <wire from="(1320,1510)" to="(1320,1780)"/> <wire from="(210,370)" to="(250,370)"/> + <wire from="(1310,740)" to="(1310,750)"/> + <wire from="(810,670)" to="(830,670)"/> + <wire from="(870,1690)" to="(890,1690)"/> <wire from="(220,1350)" to="(250,1350)"/> + <wire from="(800,780)" to="(960,780)"/> <wire from="(170,420)" to="(250,420)"/> <wire from="(190,760)" to="(270,760)"/> <wire from="(290,1760)" to="(300,1760)"/> @@ -1807,15 +1854,15 @@ <wire from="(880,430)" to="(890,430)"/> <wire from="(180,1400)" to="(180,1520)"/> <wire from="(880,750)" to="(890,750)"/> + <wire from="(520,1670)" to="(530,1670)"/> <wire from="(670,1190)" to="(670,1200)"/> <wire from="(550,110)" to="(550,120)"/> + <wire from="(370,1600)" to="(430,1600)"/> <wire from="(850,1050)" to="(850,1060)"/> - <wire from="(1070,1360)" to="(1110,1360)"/> <wire from="(440,1680)" to="(490,1680)"/> <wire from="(530,1750)" to="(530,1880)"/> <wire from="(200,480)" to="(250,480)"/> <wire from="(220,180)" to="(270,180)"/> - <wire from="(440,1600)" to="(440,1610)"/> <wire from="(590,560)" to="(630,560)"/> <wire from="(170,240)" to="(170,330)"/> <wire from="(210,280)" to="(210,370)"/> @@ -1823,9 +1870,12 @@ <wire from="(190,580)" to="(190,670)"/> <wire from="(940,820)" to="(940,840)"/> <wire from="(530,150)" to="(530,300)"/> + <wire from="(1130,620)" to="(1130,860)"/> + <wire from="(510,1280)" to="(980,1280)"/> <wire from="(1030,1350)" to="(1040,1350)"/> + <wire from="(1330,570)" to="(1330,620)"/> + <wire from="(1010,1590)" to="(1010,1780)"/> <wire from="(670,1700)" to="(670,1820)"/> - <wire from="(80,80)" to="(90,80)"/> <wire from="(920,1240)" to="(930,1240)"/> <wire from="(330,920)" to="(590,920)"/> <wire from="(190,1540)" to="(260,1540)"/> @@ -1837,16 +1887,13 @@ <wire from="(190,70)" to="(190,130)"/> <wire from="(660,1750)" to="(800,1750)"/> <wire from="(600,600)" to="(610,600)"/> - <wire from="(330,740)" to="(710,740)"/> <wire from="(270,1510)" to="(520,1510)"/> <wire from="(590,920)" to="(590,930)"/> <wire from="(800,1380)" to="(800,1580)"/> <wire from="(220,1260)" to="(280,1260)"/> <wire from="(330,1190)" to="(510,1190)"/> <wire from="(1090,1510)" to="(1130,1510)"/> - <wire from="(420,650)" to="(590,650)"/> <wire from="(590,1010)" to="(630,1010)"/> - <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)"/> @@ -1858,13 +1905,10 @@ <wire from="(230,1070)" to="(230,1160)"/> <wire from="(510,290)" to="(550,290)"/> <wire from="(210,1690)" to="(210,1790)"/> - <wire from="(1030,1540)" to="(1110,1540)"/> <wire from="(930,300)" to="(930,340)"/> - <wire from="(770,960)" to="(770,1380)"/> + <wire from="(1130,620)" to="(1140,620)"/> <wire from="(330,1620)" to="(330,1660)"/> - <wire from="(1170,1500)" to="(1170,1560)"/> <wire from="(420,1830)" to="(430,1830)"/> - <wire from="(440,590)" to="(1090,590)"/> <wire from="(810,870)" to="(810,1380)"/> <wire from="(380,1670)" to="(380,1720)"/> <wire from="(840,970)" to="(850,970)"/> @@ -1875,29 +1919,33 @@ <wire from="(880,250)" to="(880,300)"/> <wire from="(600,1050)" to="(610,1050)"/> <wire from="(210,1500)" to="(210,1560)"/> + <wire from="(1370,550)" to="(1370,570)"/> <wire from="(830,1750)" to="(950,1750)"/> <wire from="(190,400)" to="(250,400)"/> <wire from="(470,290)" to="(470,300)"/> <wire from="(200,1380)" to="(250,1380)"/> <wire from="(170,780)" to="(280,780)"/> - <wire from="(830,650)" to="(830,670)"/> + <wire from="(1160,1490)" to="(1160,1560)"/> + <wire from="(1170,540)" to="(1170,610)"/> <wire from="(210,1180)" to="(210,1270)"/> <wire from="(240,250)" to="(240,340)"/> <wire from="(170,1140)" to="(170,1230)"/> <wire from="(870,1010)" to="(870,1030)"/> - <wire from="(200,210)" to="(200,300)"/> <wire from="(860,1000)" to="(860,1020)"/> - <wire from="(120,80)" to="(120,1770)"/> + <wire from="(1070,890)" to="(1070,900)"/> <wire from="(240,790)" to="(280,790)"/> - <wire from="(570,1670)" to="(570,1690)"/> <wire from="(470,380)" to="(510,380)"/> <wire from="(240,160)" to="(270,160)"/> + <wire from="(1360,660)" to="(1370,660)"/> + <wire from="(1320,620)" to="(1330,620)"/> <wire from="(180,1130)" to="(270,1130)"/> <wire from="(890,390)" to="(890,430)"/> <wire from="(330,1660)" to="(490,1660)"/> <wire from="(930,750)" to="(930,790)"/> - <wire from="(1050,620)" to="(1310,620)"/> + <wire from="(960,780)" to="(960,820)"/> + <wire from="(1170,540)" to="(1240,540)"/> <wire from="(440,60)" to="(450,60)"/> + <wire from="(1080,810)" to="(1240,810)"/> <wire from="(480,420)" to="(490,420)"/> <wire from="(200,840)" to="(280,840)"/> <wire from="(150,1690)" to="(160,1690)"/> @@ -1905,13 +1953,14 @@ <wire from="(210,1180)" to="(280,1180)"/> <wire from="(800,1380)" to="(810,1380)"/> <wire from="(800,1700)" to="(810,1700)"/> - <wire from="(730,780)" to="(730,1660)"/> <wire from="(920,1060)" to="(920,1110)"/> - <wire from="(760,60)" to="(770,60)"/> + <wire from="(1170,1500)" to="(1170,1610)"/> <wire from="(840,340)" to="(840,390)"/> <wire from="(880,700)" to="(880,750)"/> + <wire from="(1020,730)" to="(1070,730)"/> <wire from="(510,1100)" to="(510,1110)"/> <wire from="(430,380)" to="(430,390)"/> + <wire from="(1070,700)" to="(1070,730)"/> <wire from="(170,1230)" to="(280,1230)"/> <wire from="(790,830)" to="(830,830)"/> <wire from="(180,320)" to="(180,410)"/> @@ -1923,9 +1972,8 @@ <wire from="(220,270)" to="(250,270)"/> <wire from="(850,480)" to="(850,520)"/> <wire from="(930,1200)" to="(930,1240)"/> - <wire from="(1150,1420)" to="(1150,1480)"/> + <wire from="(1080,830)" to="(1090,830)"/> <wire from="(250,1600)" to="(260,1600)"/> - <wire from="(650,600)" to="(650,660)"/> <wire from="(180,320)" to="(250,320)"/> <wire from="(800,870)" to="(810,870)"/> <wire from="(670,1700)" to="(680,1700)"/> @@ -1933,44 +1981,55 @@ <wire from="(880,1150)" to="(880,1200)"/> <wire from="(840,790)" to="(840,840)"/> <wire from="(930,690)" to="(930,700)"/> + <wire from="(1190,630)" to="(1190,650)"/> <wire from="(210,1000)" to="(270,1000)"/> <wire from="(190,1300)" to="(250,1300)"/> + <wire from="(770,920)" to="(830,920)"/> + <wire from="(1050,650)" to="(1150,650)"/> <wire from="(230,710)" to="(280,710)"/> <wire from="(200,1640)" to="(250,1640)"/> <wire from="(820,1860)" to="(820,1890)"/> + <wire from="(120,150)" to="(120,1770)"/> + <wire from="(1050,680)" to="(1050,750)"/> <wire from="(200,1110)" to="(200,1200)"/> <wire from="(180,770)" to="(180,860)"/> <wire from="(220,810)" to="(220,900)"/> <wire from="(230,80)" to="(270,80)"/> <wire from="(240,1150)" to="(240,1240)"/> + <wire from="(1070,1550)" to="(1120,1550)"/> + <wire from="(1010,640)" to="(1010,720)"/> <wire from="(890,1290)" to="(890,1330)"/> - <wire from="(1180,1510)" to="(1320,1510)"/> - <wire from="(1120,1580)" to="(1120,1770)"/> + <wire from="(1150,710)" to="(1160,710)"/> <wire from="(570,330)" to="(570,390)"/> <wire from="(350,290)" to="(430,290)"/> <wire from="(370,60)" to="(370,300)"/> <wire from="(650,1050)" to="(650,1110)"/> + <wire from="(630,650)" to="(760,650)"/> <wire from="(920,160)" to="(930,160)"/> <wire from="(920,480)" to="(930,480)"/> + <wire from="(1310,540)" to="(1330,540)"/> + <wire from="(800,680)" to="(810,680)"/> <wire from="(880,120)" to="(890,120)"/> - <wire from="(760,960)" to="(770,960)"/> + <wire from="(1180,730)" to="(1200,730)"/> <wire from="(840,1240)" to="(840,1290)"/> <wire from="(680,1850)" to="(680,1860)"/> <wire from="(230,1160)" to="(280,1160)"/> <wire from="(620,1400)" to="(620,1610)"/> <wire from="(220,1260)" to="(220,1350)"/> <wire from="(180,1220)" to="(180,1310)"/> + <wire from="(1280,530)" to="(1280,540)"/> + <wire from="(760,650)" to="(760,670)"/> <wire from="(290,1450)" to="(830,1450)"/> - <wire from="(90,80)" to="(120,80)"/> <wire from="(1150,1480)" to="(1160,1480)"/> - <wire from="(510,1280)" to="(990,1280)"/> <wire from="(690,1770)" to="(850,1770)"/> <wire from="(700,1780)" to="(860,1780)"/> <wire from="(800,1750)" to="(830,1750)"/> + <wire from="(1020,1610)" to="(1020,1770)"/> <wire from="(170,240)" to="(250,240)"/> <wire from="(780,1690)" to="(780,1880)"/> <wire from="(530,420)" to="(530,480)"/> <wire from="(920,610)" to="(930,610)"/> + <wire from="(1310,670)" to="(1330,670)"/> <wire from="(840,210)" to="(850,210)"/> <wire from="(490,60)" to="(490,120)"/> <wire from="(880,250)" to="(890,250)"/> @@ -1978,57 +2037,58 @@ <wire from="(430,1810)" to="(810,1810)"/> <wire from="(180,70)" to="(180,140)"/> <wire from="(1030,380)" to="(1030,1350)"/> + <wire from="(1410,660)" to="(1410,740)"/> <wire from="(850,870)" to="(850,880)"/> <wire from="(1090,1520)" to="(1130,1520)"/> <wire from="(860,1710)" to="(860,1780)"/> + <wire from="(90,110)" to="(90,120)"/> <wire from="(200,300)" to="(250,300)"/> - <wire from="(1010,1010)" to="(1010,1650)"/> + <wire from="(1240,810)" to="(1240,880)"/> <wire from="(190,400)" to="(190,490)"/> <wire from="(230,440)" to="(230,530)"/> <wire from="(210,100)" to="(210,190)"/> - <wire from="(940,640)" to="(940,660)"/> <wire from="(210,640)" to="(250,640)"/> <wire from="(950,1540)" to="(950,1750)"/> <wire from="(180,680)" to="(280,680)"/> + <wire from="(1110,1570)" to="(1120,1570)"/> <wire from="(620,1380)" to="(650,1380)"/> - <wire from="(770,60)" to="(770,930)"/> - <wire from="(630,650)" to="(830,650)"/> + <wire from="(160,1570)" to="(180,1570)"/> + <wire from="(200,1500)" to="(200,1550)"/> + <wire from="(1270,750)" to="(1300,750)"/> <wire from="(330,1750)" to="(340,1750)"/> + <wire from="(1030,1540)" to="(1120,1540)"/> <wire from="(920,1060)" to="(930,1060)"/> <wire from="(920,1380)" to="(930,1380)"/> <wire from="(840,340)" to="(850,340)"/> - <wire from="(860,1780)" to="(1320,1780)"/> <wire from="(880,700)" to="(890,700)"/> <wire from="(680,1140)" to="(690,1140)"/> - <wire from="(1070,560)" to="(1090,560)"/> <wire from="(560,60)" to="(570,60)"/> - <wire from="(200,1500)" to="(200,1560)"/> <wire from="(630,1100)" to="(630,1110)"/> <wire from="(550,380)" to="(550,390)"/> + <wire from="(1070,730)" to="(1180,730)"/> + <wire from="(1090,750)" to="(1200,750)"/> + <wire from="(1200,710)" to="(1200,730)"/> <wire from="(220,1080)" to="(280,1080)"/> <wire from="(220,450)" to="(270,450)"/> <wire from="(440,1870)" to="(440,1880)"/> - <wire from="(1320,610)" to="(1320,1510)"/> <wire from="(170,510)" to="(170,600)"/> <wire from="(210,550)" to="(210,640)"/> <wire from="(190,850)" to="(190,940)"/> <wire from="(230,890)" to="(230,980)"/> <wire from="(450,1750)" to="(450,1840)"/> <wire from="(510,110)" to="(550,110)"/> - <wire from="(330,650)" to="(420,650)"/> <wire from="(930,120)" to="(930,160)"/> + <wire from="(1050,680)" to="(1060,680)"/> <wire from="(520,150)" to="(530,150)"/> <wire from="(330,1370)" to="(470,1370)"/> <wire from="(530,1320)" to="(530,1380)"/> <wire from="(930,1520)" to="(940,1520)"/> - <wire from="(610,690)" to="(610,930)"/> <wire from="(880,1150)" to="(890,1150)"/> <wire from="(840,790)" to="(850,790)"/> <wire from="(840,1110)" to="(850,1110)"/> <wire from="(920,430)" to="(920,480)"/> <wire from="(560,510)" to="(570,510)"/> <wire from="(880,70)" to="(880,120)"/> - <wire from="(440,590)" to="(440,660)"/> <wire from="(850,1380)" to="(850,1580)"/> <wire from="(190,220)" to="(250,220)"/> <wire from="(470,110)" to="(470,120)"/> @@ -2046,16 +2106,22 @@ <wire from="(860,820)" to="(860,840)"/> <wire from="(270,1550)" to="(560,1550)"/> <wire from="(240,610)" to="(280,610)"/> + <wire from="(1200,730)" to="(1380,730)"/> + <wire from="(1150,1430)" to="(1150,1480)"/> <wire from="(720,1370)" to="(720,1860)"/> - <wire from="(410,1430)" to="(440,1430)"/> + <wire from="(1170,610)" to="(1180,610)"/> <wire from="(180,950)" to="(270,950)"/> <wire from="(890,210)" to="(890,250)"/> + <wire from="(70,650)" to="(290,650)"/> <wire from="(180,1540)" to="(190,1540)"/> + <wire from="(640,600)" to="(640,660)"/> <wire from="(840,1240)" to="(850,1240)"/> <wire from="(920,880)" to="(920,930)"/> <wire from="(840,160)" to="(840,210)"/> + <wire from="(910,1690)" to="(990,1690)"/> <wire from="(880,520)" to="(880,570)"/> <wire from="(930,60)" to="(930,70)"/> + <wire from="(1130,580)" to="(1130,600)"/> <wire from="(190,670)" to="(250,670)"/> <wire from="(250,1620)" to="(250,1640)"/> <wire from="(170,1050)" to="(280,1050)"/> @@ -2084,9 +2150,11 @@ <wire from="(210,820)" to="(270,820)"/> <wire from="(190,1120)" to="(250,1120)"/> <wire from="(910,560)" to="(970,560)"/> + <wire from="(140,1800)" to="(900,1800)"/> <wire from="(230,530)" to="(280,530)"/> <wire from="(370,330)" to="(370,480)"/> <wire from="(800,1660)" to="(800,1680)"/> + <wire from="(1210,790)" to="(1210,800)"/> <wire from="(200,930)" to="(200,1020)"/> <wire from="(180,590)" to="(180,680)"/> <wire from="(220,630)" to="(220,720)"/> @@ -2095,36 +2163,44 @@ <wire from="(220,540)" to="(250,540)"/> <wire from="(850,750)" to="(850,790)"/> <wire from="(890,1110)" to="(890,1150)"/> + <wire from="(1300,750)" to="(1300,870)"/> <wire from="(400,420)" to="(410,420)"/> <wire from="(850,1710)" to="(850,1770)"/> <wire from="(360,60)" to="(370,60)"/> <wire from="(320,1620)" to="(330,1620)"/> + <wire from="(330,740)" to="(730,740)"/> <wire from="(200,1500)" to="(210,1500)"/> <wire from="(920,300)" to="(930,300)"/> <wire from="(200,930)" to="(270,930)"/> <wire from="(680,60)" to="(690,60)"/> <wire from="(840,1060)" to="(840,1110)"/> - <wire from="(850,1770)" to="(1120,1770)"/> - <wire from="(710,740)" to="(710,750)"/> <wire from="(930,960)" to="(930,970)"/> <wire from="(890,600)" to="(890,610)"/> + <wire from="(1020,900)" to="(1020,1610)"/> <wire from="(240,1630)" to="(290,1630)"/> <wire from="(230,980)" to="(280,980)"/> <wire from="(430,1100)" to="(430,1110)"/> + <wire from="(290,640)" to="(290,650)"/> + <wire from="(1000,1010)" to="(1000,1650)"/> <wire from="(170,70)" to="(170,150)"/> + <wire from="(870,670)" to="(910,670)"/> <wire from="(220,1080)" to="(220,1170)"/> <wire from="(180,1040)" to="(180,1130)"/> <wire from="(890,1560)" to="(890,1580)"/> + <wire from="(1220,610)" to="(1220,660)"/> + <wire from="(1360,550)" to="(1370,550)"/> + <wire from="(1170,680)" to="(1180,680)"/> <wire from="(190,1030)" to="(280,1030)"/> <wire from="(850,1200)" to="(850,1240)"/> <wire from="(200,1380)" to="(200,1480)"/> <wire from="(330,470)" to="(350,470)"/> <wire from="(570,510)" to="(570,1380)"/> - <wire from="(160,1580)" to="(180,1580)"/> <wire from="(360,510)" to="(370,510)"/> <wire from="(610,960)" to="(610,1020)"/> + <wire from="(1010,910)" to="(1080,910)"/> <wire from="(920,430)" to="(930,430)"/> <wire from="(920,750)" to="(930,750)"/> + <wire from="(1020,1610)" to="(1170,1610)"/> <wire from="(880,70)" to="(890,70)"/> <wire from="(880,390)" to="(890,390)"/> <wire from="(890,1050)" to="(890,1060)"/> @@ -2133,15 +2209,16 @@ <wire from="(200,120)" to="(250,120)"/> <wire from="(120,1770)" to="(300,1770)"/> <wire from="(1030,1510)" to="(1030,1540)"/> - <wire from="(1060,580)" to="(1060,610)"/> <wire from="(200,1640)" to="(200,1660)"/> <wire from="(190,220)" to="(190,310)"/> <wire from="(230,260)" to="(230,350)"/> <wire from="(690,1230)" to="(690,1380)"/> <wire from="(570,150)" to="(570,300)"/> + <wire from="(1260,900)" to="(1270,900)"/> <wire from="(100,1780)" to="(250,1780)"/> <wire from="(170,510)" to="(250,510)"/> <wire from="(190,850)" to="(270,850)"/> + <wire from="(1010,720)" to="(1080,720)"/> <wire from="(450,1750)" to="(530,1750)"/> <wire from="(920,880)" to="(930,880)"/> <wire from="(920,1200)" to="(930,1200)"/> @@ -2152,11 +2229,12 @@ <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)"/> + <wire from="(1320,520)" to="(1320,560)"/> <wire from="(590,560)" to="(590,570)"/> + <wire from="(500,1650)" to="(1000,1650)"/> <wire from="(200,570)" to="(250,570)"/> - <wire from="(440,1430)" to="(440,1580)"/> - <wire from="(590,650)" to="(630,650)"/> + <wire from="(330,650)" to="(630,650)"/> + <wire from="(1110,800)" to="(1110,1570)"/> <wire from="(170,330)" to="(170,420)"/> <wire from="(210,370)" to="(210,460)"/> <wire from="(230,710)" to="(230,800)"/> @@ -2165,32 +2243,34 @@ <wire from="(330,1100)" to="(430,1100)"/> <wire from="(910,560)" to="(910,580)"/> <wire from="(940,910)" to="(940,930)"/> + <wire from="(670,1190)" to="(1160,1190)"/> <wire from="(250,1690)" to="(250,1780)"/> <wire from="(730,1660)" to="(730,1680)"/> + <wire from="(1020,730)" to="(1020,900)"/> + <wire from="(1210,800)" to="(1340,800)"/> + <wire from="(1010,720)" to="(1010,910)"/> <wire from="(250,1620)" to="(260,1620)"/> <wire from="(530,1140)" to="(530,1200)"/> - <wire from="(870,1800)" to="(1070,1800)"/> <wire from="(920,1330)" to="(930,1330)"/> <wire from="(330,1010)" to="(590,1010)"/> <wire from="(880,970)" to="(890,970)"/> <wire from="(840,610)" to="(850,610)"/> <wire from="(480,1410)" to="(480,1470)"/> <wire from="(880,1290)" to="(890,1290)"/> - <wire from="(450,730)" to="(450,1110)"/> <wire from="(920,250)" to="(920,300)"/> <wire from="(640,1050)" to="(650,1050)"/> <wire from="(560,330)" to="(570,330)"/> - <wire from="(600,690)" to="(610,690)"/> + <wire from="(1220,660)" to="(1240,660)"/> + <wire from="(770,920)" to="(770,1380)"/> + <wire from="(820,660)" to="(820,800)"/> <wire from="(590,1010)" to="(590,1020)"/> <wire from="(330,1280)" to="(510,1280)"/> <wire from="(510,290)" to="(510,300)"/> <wire from="(220,720)" to="(270,720)"/> <wire from="(430,1810)" to="(430,1830)"/> <wire from="(170,780)" to="(170,870)"/> - <wire from="(870,650)" to="(870,670)"/> <wire from="(190,1120)" to="(190,1210)"/> <wire from="(210,820)" to="(210,910)"/> - <wire from="(860,640)" to="(860,660)"/> <wire from="(910,1010)" to="(910,1030)"/> <wire from="(900,1000)" to="(900,1020)"/> <wire from="(210,1360)" to="(250,1360)"/> @@ -2198,12 +2278,16 @@ <wire from="(510,380)" to="(550,380)"/> <wire from="(180,1400)" to="(280,1400)"/> <wire from="(1100,200)" to="(1100,1530)"/> + <wire from="(1040,820)" to="(1040,870)"/> + <wire from="(1400,660)" to="(1410,660)"/> <wire from="(180,770)" to="(270,770)"/> <wire from="(930,390)" to="(930,430)"/> - <wire from="(590,920)" to="(750,920)"/> + <wire from="(1320,780)" to="(1320,840)"/> + <wire from="(1130,910)" to="(1130,970)"/> <wire from="(480,60)" to="(490,60)"/> <wire from="(730,1660)" to="(800,1660)"/> - <wire from="(800,60)" to="(810,60)"/> + <wire from="(1230,790)" to="(1260,790)"/> + <wire from="(1120,680)" to="(1150,680)"/> <wire from="(840,1060)" to="(850,1060)"/> <wire from="(840,1380)" to="(850,1380)"/> <wire from="(920,700)" to="(920,750)"/> @@ -2214,7 +2298,7 @@ <wire from="(470,380)" to="(470,390)"/> <wire from="(220,1170)" to="(270,1170)"/> <wire from="(170,870)" to="(280,870)"/> - <wire from="(420,650)" to="(420,670)"/> + <wire from="(730,740)" to="(730,1660)"/> <wire from="(830,830)" to="(870,830)"/> <wire from="(660,1850)" to="(660,1880)"/> <wire from="(170,1230)" to="(170,1320)"/> @@ -2227,23 +2311,27 @@ <wire from="(850,120)" to="(850,160)"/> <wire from="(180,1220)" to="(270,1220)"/> <wire from="(890,480)" to="(890,520)"/> + <wire from="(1280,670)" to="(1290,670)"/> <wire from="(510,1370)" to="(720,1370)"/> <wire from="(550,380)" to="(1030,380)"/> <wire from="(1070,1550)" to="(1070,1800)"/> <wire from="(480,510)" to="(490,510)"/> <wire from="(100,70)" to="(100,250)"/> <wire from="(210,1270)" to="(280,1270)"/> + <wire from="(50,150)" to="(120,150)"/> <wire from="(330,200)" to="(1100,200)"/> + <wire from="(1270,860)" to="(1270,900)"/> <wire from="(920,1150)" to="(920,1200)"/> <wire from="(840,430)" to="(840,480)"/> <wire from="(880,790)" to="(880,840)"/> <wire from="(510,1190)" to="(510,1200)"/> - <wire from="(370,1440)" to="(430,1440)"/> <wire from="(790,830)" to="(790,840)"/> + <wire from="(1010,1590)" to="(1180,1590)"/> <wire from="(810,1810)" to="(810,1820)"/> <wire from="(230,350)" to="(280,350)"/> <wire from="(170,1320)" to="(280,1320)"/> <wire from="(180,410)" to="(180,500)"/> + <wire from="(900,1800)" to="(1070,1800)"/> <wire from="(220,450)" to="(220,540)"/> <wire from="(200,750)" to="(200,840)"/> <wire from="(240,1330)" to="(280,1330)"/> @@ -2252,26 +2340,29 @@ <wire from="(220,360)" to="(250,360)"/> <wire from="(930,1290)" to="(930,1330)"/> <wire from="(1030,1510)" to="(1040,1510)"/> - <wire from="(370,510)" to="(370,1440)"/> - <wire from="(410,420)" to="(410,1430)"/> - <wire from="(970,560)" to="(1040,560)"/> + <wire from="(860,1780)" to="(1010,1780)"/> + <wire from="(1120,520)" to="(1320,520)"/> <wire from="(610,60)" to="(610,570)"/> <wire from="(180,410)" to="(250,410)"/> <wire from="(200,750)" to="(270,750)"/> + <wire from="(990,840)" to="(1320,840)"/> <wire from="(210,1790)" to="(340,1790)"/> <wire from="(920,120)" to="(930,120)"/> - <wire from="(1100,1570)" to="(1120,1570)"/> + <wire from="(1040,870)" to="(1060,870)"/> <wire from="(520,1320)" to="(530,1320)"/> <wire from="(880,1240)" to="(880,1290)"/> <wire from="(840,880)" to="(840,930)"/> - <wire from="(810,60)" to="(810,840)"/> - <wire from="(750,920)" to="(750,930)"/> <wire from="(850,60)" to="(850,70)"/> + <wire from="(1180,710)" to="(1180,730)"/> <wire from="(210,1090)" to="(270,1090)"/> <wire from="(190,1390)" to="(250,1390)"/> <wire from="(250,100)" to="(250,110)"/> + <wire from="(1230,760)" to="(1230,790)"/> <wire from="(230,800)" to="(280,800)"/> + <wire from="(1110,800)" to="(1210,800)"/> + <wire from="(1150,680)" to="(1150,710)"/> <wire from="(690,60)" to="(690,1110)"/> + <wire from="(760,650)" to="(1050,650)"/> <wire from="(220,70)" to="(220,90)"/> <wire from="(200,1200)" to="(200,1290)"/> <wire from="(180,860)" to="(180,950)"/> @@ -2279,66 +2370,73 @@ <wire from="(230,170)" to="(270,170)"/> <wire from="(240,1240)" to="(240,1330)"/> <wire from="(470,1370)" to="(510,1370)"/> - <wire from="(450,420)" to="(450,700)"/> - <wire from="(160,1420)" to="(1150,1420)"/> + <wire from="(1320,650)" to="(1330,650)"/> <wire from="(330,290)" to="(350,290)"/> + <wire from="(150,1420)" to="(1130,1420)"/> <wire from="(330,110)" to="(470,110)"/> - <wire from="(440,730)" to="(450,730)"/> <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="(1050,580)" to="(1050,620)"/> <wire from="(880,210)" to="(890,210)"/> <wire from="(840,1330)" to="(840,1380)"/> <wire from="(330,380)" to="(390,380)"/> + <wire from="(820,800)" to="(820,810)"/> <wire from="(890,870)" to="(890,880)"/> <wire from="(230,1250)" to="(280,1250)"/> - <wire from="(500,1650)" to="(1010,1650)"/> - <wire from="(90,70)" to="(90,80)"/> <wire from="(330,1670)" to="(380,1670)"/> <wire from="(410,60)" to="(410,390)"/> <wire from="(350,470)" to="(470,470)"/> + <wire from="(800,780)" to="(800,800)"/> <wire from="(180,1310)" to="(180,1400)"/> <wire from="(220,1350)" to="(220,1440)"/> <wire from="(230,80)" to="(230,170)"/> <wire from="(210,280)" to="(250,280)"/> + <wire from="(1040,820)" to="(1050,820)"/> <wire from="(660,1380)" to="(690,1380)"/> + <wire from="(330,1730)" to="(980,1730)"/> + <wire from="(1120,520)" to="(1120,680)"/> <wire from="(170,330)" to="(250,330)"/> <wire from="(920,700)" to="(930,700)"/> <wire from="(250,1780)" to="(700,1780)"/> <wire from="(840,300)" to="(850,300)"/> <wire from="(880,340)" to="(890,340)"/> - <wire from="(1150,1560)" to="(1170,1560)"/> <wire from="(600,60)" to="(610,60)"/> <wire from="(670,1100)" to="(670,1110)"/> - <wire from="(520,1670)" to="(570,1670)"/> + <wire from="(1090,750)" to="(1090,830)"/> <wire from="(850,960)" to="(850,970)"/> + <wire from="(370,510)" to="(370,1600)"/> <wire from="(890,1380)" to="(890,1510)"/> + <wire from="(1330,570)" to="(1370,570)"/> <wire from="(200,390)" to="(250,390)"/> - <wire from="(1090,560)" to="(1090,590)"/> + <wire from="(1130,970)" to="(1130,1420)"/> + <wire from="(410,420)" to="(410,1590)"/> <wire from="(870,1490)" to="(870,1580)"/> <wire from="(170,150)" to="(170,240)"/> <wire from="(230,530)" to="(230,620)"/> <wire from="(190,490)" to="(190,580)"/> <wire from="(210,190)" to="(210,280)"/> + <wire from="(650,660)" to="(820,660)"/> <wire from="(490,510)" to="(490,1380)"/> + <wire from="(1100,1530)" to="(1100,1580)"/> <wire from="(920,1150)" to="(930,1150)"/> - <wire from="(1100,1530)" to="(1100,1570)"/> + <wire from="(1280,810)" to="(1280,980)"/> <wire from="(840,430)" to="(850,430)"/> <wire from="(880,790)" to="(890,790)"/> - <wire from="(840,750)" to="(850,750)"/> <wire from="(880,1110)" to="(890,1110)"/> + <wire from="(840,750)" to="(850,750)"/> <wire from="(680,1230)" to="(690,1230)"/> + <wire from="(760,670)" to="(770,670)"/> <wire from="(560,150)" to="(570,150)"/> <wire from="(920,70)" to="(920,120)"/> + <wire from="(1090,870)" to="(1300,870)"/> <wire from="(140,70)" to="(140,1800)"/> <wire from="(550,470)" to="(550,480)"/> <wire from="(120,40)" to="(120,50)"/> <wire from="(510,110)" to="(510,120)"/> - <wire from="(990,1280)" to="(990,1730)"/> + <wire from="(1050,650)" to="(1050,680)"/> <wire from="(830,1450)" to="(830,1580)"/> <wire from="(490,150)" to="(490,300)"/> <wire from="(870,560)" to="(910,560)"/> @@ -2349,11 +2447,12 @@ <wire from="(910,830)" to="(910,850)"/> <wire from="(900,820)" to="(900,840)"/> <wire from="(240,250)" to="(280,250)"/> - <wire from="(160,1420)" to="(160,1580)"/> + <wire from="(1200,980)" to="(1280,980)"/> + <wire from="(1210,610)" to="(1220,610)"/> <wire from="(180,590)" to="(270,590)"/> <wire from="(930,210)" to="(930,250)"/> <wire from="(710,1700)" to="(730,1700)"/> - <wire from="(1310,620)" to="(1310,1770)"/> + <wire from="(1010,910)" to="(1010,1590)"/> <wire from="(330,830)" to="(790,830)"/> <wire from="(880,1560)" to="(890,1560)"/> <wire from="(650,1140)" to="(650,1380)"/> @@ -2361,15 +2460,15 @@ <wire from="(840,880)" to="(850,880)"/> <wire from="(840,1200)" to="(850,1200)"/> <wire from="(920,520)" to="(920,570)"/> + <wire from="(1200,910)" to="(1220,910)"/> + <wire from="(1220,610)" to="(1240,610)"/> <wire from="(600,960)" to="(610,960)"/> <wire from="(880,160)" to="(880,210)"/> <wire from="(650,690)" to="(650,1020)"/> - <wire from="(670,1190)" to="(1110,1190)"/> <wire from="(760,1380)" to="(760,1580)"/> <wire from="(190,310)" to="(250,310)"/> <wire from="(200,1290)" to="(250,1290)"/> <wire from="(220,990)" to="(270,990)"/> - <wire from="(830,650)" to="(870,650)"/> <wire from="(870,1010)" to="(910,1010)"/> <wire from="(830,560)" to="(830,580)"/> <wire from="(190,1390)" to="(190,1480)"/> @@ -2377,9 +2476,9 @@ <wire from="(170,1050)" to="(170,1140)"/> <wire from="(210,1090)" to="(210,1180)"/> <wire from="(240,160)" to="(240,250)"/> - <wire from="(200,120)" to="(200,210)"/> <wire from="(860,910)" to="(860,930)"/> <wire from="(240,700)" to="(280,700)"/> + <wire from="(1330,740)" to="(1330,750)"/> <wire from="(470,290)" to="(510,290)"/> <wire from="(240,70)" to="(270,70)"/> <wire from="(180,1040)" to="(270,1040)"/> @@ -2390,6 +2489,7 @@ <wire from="(920,970)" to="(920,1020)"/> <wire from="(840,250)" to="(840,300)"/> <wire from="(880,610)" to="(880,660)"/> + <wire from="(810,670)" to="(810,680)"/> <wire from="(210,460)" to="(270,460)"/> <wire from="(430,290)" to="(430,300)"/> <wire from="(300,1760)" to="(300,1770)"/> @@ -2400,25 +2500,29 @@ <wire from="(240,610)" to="(240,700)"/> <wire from="(220,270)" to="(220,360)"/> <wire from="(240,1150)" to="(280,1150)"/> + <wire from="(530,1670)" to="(530,1690)"/> <wire from="(210,70)" to="(210,100)"/> <wire from="(430,380)" to="(470,380)"/> + <wire from="(160,1430)" to="(1150,1430)"/> <wire from="(930,1540)" to="(950,1540)"/> <wire from="(850,390)" to="(850,430)"/> <wire from="(890,750)" to="(890,790)"/> + <wire from="(1280,620)" to="(1290,620)"/> <wire from="(930,1110)" to="(930,1150)"/> <wire from="(400,60)" to="(410,60)"/> <wire from="(440,420)" to="(450,420)"/> + <wire from="(1130,580)" to="(1290,580)"/> + <wire from="(200,120)" to="(200,300)"/> <wire from="(180,230)" to="(250,230)"/> <wire from="(760,1380)" to="(770,1380)"/> - <wire from="(720,60)" to="(730,60)"/> <wire from="(520,1140)" to="(530,1140)"/> - <wire from="(840,700)" to="(840,750)"/> <wire from="(880,1060)" to="(880,1110)"/> + <wire from="(840,700)" to="(840,750)"/> <wire from="(930,600)" to="(930,610)"/> <wire from="(190,1210)" to="(250,1210)"/> <wire from="(210,910)" to="(270,910)"/> <wire from="(1090,1490)" to="(1130,1490)"/> - <wire from="(430,1440)" to="(430,1580)"/> + <wire from="(80,70)" to="(80,80)"/> <wire from="(390,380)" to="(390,390)"/> <wire from="(230,620)" to="(280,620)"/> <wire from="(180,680)" to="(180,770)"/> @@ -2427,35 +2531,41 @@ <wire from="(930,1560)" to="(930,1580)"/> <wire from="(300,1570)" to="(300,1600)"/> <wire from="(240,1060)" to="(240,1150)"/> + <wire from="(900,1720)" to="(900,1800)"/> + <wire from="(650,640)" to="(650,660)"/> <wire from="(220,630)" to="(250,630)"/> - <wire from="(870,1690)" to="(870,1800)"/> <wire from="(890,1200)" to="(890,1240)"/> - <wire from="(330,1730)" to="(990,1730)"/> - <wire from="(610,600)" to="(610,660)"/> + <wire from="(1130,600)" to="(1140,600)"/> + <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)"/> - <wire from="(750,920)" to="(830,920)"/> <wire from="(820,1890)" to="(830,1890)"/> <wire from="(880,1510)" to="(880,1560)"/> <wire from="(840,1150)" to="(840,1200)"/> <wire from="(300,1770)" to="(690,1770)"/> + <wire from="(1020,900)" to="(1070,900)"/> <wire from="(930,1050)" to="(930,1060)"/> + <wire from="(590,920)" to="(770,920)"/> + <wire from="(1150,630)" to="(1150,650)"/> <wire from="(890,690)" to="(890,700)"/> <wire from="(250,370)" to="(250,380)"/> <wire from="(230,1070)" to="(280,1070)"/> + <wire from="(1240,810)" to="(1280,810)"/> <wire from="(430,1830)" to="(430,1840)"/> + <wire from="(50,250)" to="(100,250)"/> <wire from="(350,470)" to="(350,480)"/> <wire from="(90,1640)" to="(200,1640)"/> <wire from="(220,1170)" to="(220,1260)"/> <wire from="(180,1130)" to="(180,1220)"/> <wire from="(210,100)" to="(250,100)"/> <wire from="(560,1380)" to="(560,1550)"/> + <wire from="(410,1590)" to="(440,1590)"/> <wire from="(850,1290)" to="(850,1330)"/> + <wire from="(1130,860)" to="(1270,860)"/> <wire from="(240,1750)" to="(260,1750)"/> - <wire from="(1060,610)" to="(1320,610)"/> <wire from="(170,150)" to="(250,150)"/> <wire from="(530,330)" to="(530,390)"/> + <wire from="(1070,1360)" to="(1160,1360)"/> <wire from="(120,40)" to="(130,40)"/> <wire from="(920,520)" to="(930,520)"/> <wire from="(840,120)" to="(850,120)"/> @@ -2463,13 +2573,20 @@ <wire from="(880,160)" to="(890,160)"/> <wire from="(880,480)" to="(890,480)"/> <wire from="(630,560)" to="(630,570)"/> - <wire from="(200,210)" to="(250,210)"/> + <wire from="(1050,750)" to="(1090,750)"/> + <wire from="(980,1280)" to="(980,1730)"/> <wire from="(210,1500)" to="(260,1500)"/> + <wire from="(160,1430)" to="(160,1570)"/> + <wire from="(760,780)" to="(800,780)"/> <wire from="(190,310)" to="(190,400)"/> <wire from="(230,350)" to="(230,440)"/> <wire from="(940,550)" to="(940,570)"/> <wire from="(210,550)" to="(250,550)"/> + <wire from="(290,640)" to="(650,640)"/> + <wire from="(150,1420)" to="(150,1580)"/> + <wire from="(90,120)" to="(120,120)"/> <wire from="(920,1490)" to="(920,1530)"/> + <wire from="(910,1010)" to="(1000,1010)"/> <wire from="(270,1470)" to="(480,1470)"/> <wire from="(630,560)" to="(830,560)"/> <wire from="(920,970)" to="(930,970)"/> @@ -2477,29 +2594,34 @@ <wire from="(840,250)" to="(850,250)"/> <wire from="(490,420)" to="(490,480)"/> <wire from="(880,610)" to="(890,610)"/> + <wire from="(1290,580)" to="(1290,620)"/> <wire from="(640,690)" to="(650,690)"/> + <wire from="(1390,680)" to="(1390,720)"/> <wire from="(630,1010)" to="(630,1020)"/> <wire from="(550,290)" to="(550,300)"/> - <wire from="(590,650)" to="(590,660)"/> <wire from="(200,660)" to="(250,660)"/> <wire from="(330,1670)" to="(330,1680)"/> + <wire from="(760,690)" to="(760,780)"/> <wire from="(630,1100)" to="(670,1100)"/> + <wire from="(1250,740)" to="(1310,740)"/> <wire from="(170,420)" to="(170,510)"/> <wire from="(190,760)" to="(190,850)"/> <wire from="(230,800)" to="(230,890)"/> <wire from="(210,460)" to="(210,550)"/> - <wire from="(900,640)" to="(900,660)"/> - <wire from="(910,650)" to="(910,670)"/> <wire from="(940,1000)" to="(940,1020)"/> + <wire from="(850,1770)" to="(1020,1770)"/> + <wire from="(1220,760)" to="(1230,760)"/> <wire from="(520,1410)" to="(520,1510)"/> - <wire from="(80,250)" to="(100,250)"/> + <wire from="(1220,740)" to="(1250,740)"/> <wire from="(520,60)" to="(530,60)"/> <wire from="(630,1010)" to="(830,1010)"/> + <wire from="(1100,1580)" to="(1130,1580)"/> + <wire from="(1130,970)" to="(1160,970)"/> <wire from="(530,1230)" to="(530,1290)"/> <wire from="(700,1720)" to="(700,1780)"/> - <wire from="(840,700)" to="(850,700)"/> <wire from="(880,1060)" to="(890,1060)"/> <wire from="(880,1380)" to="(890,1380)"/> + <wire from="(840,700)" to="(850,700)"/> <wire from="(640,1140)" to="(650,1140)"/> <wire from="(920,340)" to="(920,390)"/> <wire from="(560,420)" to="(570,420)"/> @@ -2508,9 +2630,11 @@ <wire from="(220,810)" to="(270,810)"/> <wire from="(200,1110)" to="(250,1110)"/> <wire from="(510,380)" to="(510,390)"/> + <wire from="(440,1590)" to="(440,1600)"/> <wire from="(530,510)" to="(530,1110)"/> <wire from="(870,830)" to="(910,830)"/> <wire from="(170,870)" to="(170,960)"/> + <wire from="(1200,750)" to="(1200,760)"/> <wire from="(210,910)" to="(210,1000)"/> <wire from="(190,1210)" to="(190,1300)"/> <wire from="(240,520)" to="(280,520)"/> @@ -2519,13 +2643,14 @@ <wire from="(230,1250)" to="(230,1340)"/> <wire from="(470,110)" to="(510,110)"/> <wire from="(510,470)" to="(550,470)"/> + <wire from="(1330,740)" to="(1410,740)"/> <wire from="(180,860)" to="(270,860)"/> <wire from="(890,120)" to="(890,160)"/> - <wire from="(140,1800)" to="(870,1800)"/> <wire from="(930,480)" to="(930,520)"/> <wire from="(300,1570)" to="(970,1570)"/> <wire from="(200,70)" to="(200,120)"/> <wire from="(480,150)" to="(490,150)"/> + <wire from="(80,70)" to="(90,70)"/> <wire from="(930,1560)" to="(940,1560)"/> <wire from="(880,1510)" to="(890,1510)"/> <wire from="(840,1150)" to="(850,1150)"/> @@ -2534,785 +2659,683 @@ <wire from="(840,70)" to="(840,120)"/> <wire from="(520,510)" to="(530,510)"/> <wire from="(880,430)" to="(880,480)"/> - <wire from="(450,1140)" to="(450,1580)"/> - <comp lib="2" loc="(850,960)" name="Multiplexer"> + <comp lib="0" loc="(160,1670)" name="Constant"> + <a name="width" val="8"/> + </comp> + <comp lib="2" loc="(890,690)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> + <a name="disabled" val="0"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(860,640)" name="Constant"> + <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="1" loc="(800,870)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(760,1580)" name="Pin"> + <a name="facing" val="north"/> + <a name="output" val="true"/> + <a name="label" val="POP"/> + <a name="labelloc" val="south"/> </comp> - <comp lib="1" loc="(760,960)" name="OR Gate"> + <comp lib="1" loc="(480,1410)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(520,1320)" name="OR Gate"> + <comp lib="1" loc="(640,1050)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(440,730)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <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="(850,60)" name="Constant"> + <comp lib="0" loc="(860,910)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> <a name="value" val="0x0"/> </comp> - <comp lib="2" loc="(890,960)" name="Multiplexer"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="enable" val="false"/> - </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="1" loc="(330,470)" name="AND Gate"> + <comp lib="1" loc="(330,1010)" name="AND Gate"> <a name="inputs" val="8"/> - <a name="label" val="CIN"/> - <a name="negate0" val="true"/> + <a name="label" val="PCR"/> <a name="negate2" val="true"/> <a name="negate3" val="true"/> + <a name="negate6" val="true"/> </comp> - <comp lib="0" loc="(280,240)" name="Constant"/> - <comp lib="1" loc="(330,110)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="OR"/> - <a name="negate0" val="true"/> - <a name="negate1" val="true"/> + <comp lib="1" loc="(640,1140)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(1190,1480)" name="Pin"> - <a name="facing" val="west"/> - <a name="output" val="true"/> + <comp lib="3" loc="(1200,980)" name="Comparator"> <a name="width" val="4"/> - <a name="label" val="Dynamic OP"/> - <a name="labelloc" val="east"/> </comp> - <comp lib="1" loc="(840,1610)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="0" loc="(280,570)" name="Constant"/> + <comp lib="0" loc="(260,1520)" name="Constant"> <a name="width" val="2"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="1" loc="(800,680)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(760,1580)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> - <a name="label" val="POP"/> - <a name="labelloc" val="south"/> - </comp> - <comp lib="0" loc="(520,60)" name="Constant"> - <a name="facing" val="south"/> + <comp lib="0" loc="(280,230)" name="Constant"/> + <comp lib="0" loc="(280,390)" name="Constant"/> + <comp lib="0" loc="(260,1480)" name="Constant"> + <a name="width" val="2"/> <a name="value" val="0x0"/> </comp> + <comp lib="0" loc="(280,420)" name="Constant"/> <comp lib="1" loc="(400,420)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="2" loc="(850,870)" name="Multiplexer"> - <a name="facing" val="south"/> - <a name="width" val="2"/> + <comp lib="0" loc="(280,220)" name="Constant"/> + <comp lib="2" loc="(320,1620)" name="Multiplexer"> + <a name="selloc" val="tr"/> + <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(1190,1480)" name="Register"> - <a name="width" val="4"/> - <a name="trigger" val="falling"/> - </comp> - <comp lib="0" loc="(280,1200)" name="Constant"/> - <comp lib="0" loc="(280,540)" name="Constant"/> - <comp lib="2" loc="(930,1050)" name="Multiplexer"> + <comp lib="2" loc="(930,690)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> + <a name="disabled" val="0"/> <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(330,830)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="PUSH"/> - <a name="negate2" val="true"/> - <a name="negate3" val="true"/> - <a name="negate5" val="true"/> - <a name="negate6" val="true"/> - </comp> - <comp lib="0" loc="(780,1880)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> - <a name="label" val="BRANCH"/> - <a name="labelloc" val="south"/> - </comp> - <comp lib="0" loc="(280,1290)" name="Constant"/> - <comp lib="1" loc="(1150,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="(520,1230)" name="OR Gate"> + <comp lib="1" loc="(600,1050)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(260,1520)" name="Constant"> - <a name="width" val="2"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="0" loc="(280,1120)" name="Constant"/> - <comp lib="0" loc="(860,910)" name="Constant"> + <comp lib="0" loc="(940,550)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(660,1880)" name="Pin"> + <comp lib="0" loc="(620,1400)" name="Splitter"> <a name="facing" val="north"/> - <a name="tristate" val="false"/> - <a name="label" val="JMP FLAG"/> - <a name="labelloc" val="south"/> + <a name="appear" val="center"/> </comp> - <comp lib="0" loc="(940,550)" name="Constant"> + <comp lib="0" loc="(1220,890)" name="Constant"> + <a name="width" val="5"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="2" loc="(930,960)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> + <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(280,360)" name="Constant"/> - <comp lib="0" loc="(900,820)" name="Constant"> + <comp lib="0" loc="(280,280)" name="Constant"/> + <comp lib="0" loc="(280,1120)" name="Constant"/> + <comp lib="2" loc="(850,960)" 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="(600,600)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(50,250)" name="Pin"> + <a name="tristate" val="false"/> + <a name="label" val="RST"/> </comp> - <comp lib="0" loc="(280,670)" name="Constant"/> - <comp lib="0" loc="(440,60)" name="Constant"> - <a name="facing" val="south"/> + <comp lib="0" loc="(1240,560)" name="Constant"> + <a name="width" val="5"/> <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(280,410)" name="Constant"/> - <comp lib="1" loc="(330,380)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="DYN"/> - <a name="negate0" val="true"/> - </comp> - <comp lib="1" loc="(640,1050)" name="OR Gate"> + <comp lib="1" loc="(600,960)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(480,60)" name="Constant"> - <a name="facing" val="south"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="2" loc="(910,1560)" name="Multiplexer"> + <comp lib="0" loc="(940,910)" name="Constant"> <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="(360,60)" name="Constant"> - <a name="facing" val="south"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="2" loc="(890,870)" name="Multiplexer"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="enable" val="false"/> - </comp> - <comp lib="0" loc="(160,1670)" name="Constant"> - <a name="width" val="8"/> + <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="(520,420)" name="OR Gate"> + <comp lib="1" loc="(820,1860)" name="AND Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate0" val="true"/> </comp> - <comp lib="1" loc="(560,330)" name="OR Gate"> + <comp lib="1" loc="(440,330)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(560,510)" name="OR Gate"> + <comp lib="1" loc="(1040,1510)" name="AND Gate"> + <a name="facing" val="west"/> + <a name="label" val="ptrinc"/> + </comp> + <comp lib="0" loc="(900,550)" name="Constant"> <a name="facing" val="south"/> + <a name="width" val="2"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="2" loc="(160,50)" name="Multiplexer"> + <a name="width" val="8"/> + <a name="enable" val="false"/> + </comp> + <comp lib="1" loc="(1310,540)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(440,1610)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> - <a name="width" val="3"/> - <a name="label" val="ALU OP"/> - <a name="labelloc" val="south"/> - </comp> - <comp lib="0" loc="(280,150)" name="Constant"/> - <comp lib="3" loc="(200,1680)" name="Adder"/> - <comp lib="0" loc="(860,1000)" name="Constant"> + <comp lib="0" loc="(900,910)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(900,1000)" 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="0" loc="(280,280)" name="Constant"/> - <comp lib="0" loc="(280,420)" name="Constant"/> - <comp lib="0" loc="(620,1610)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> + <comp lib="0" loc="(280,120)" name="Constant"/> + <comp lib="0" loc="(560,60)" name="Constant"> + <a name="facing" val="south"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="2" loc="(850,1050)" 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="0" loc="(280,510)" name="Constant"/> - <comp lib="1" loc="(770,1690)" name="AND Gate"> + <comp lib="1" loc="(360,510)" name="OR Gate"> + <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> - </comp> - <comp lib="0" loc="(280,1380)" name="Constant"/> - <comp lib="0" loc="(180,1540)" name="Splitter"> - <a name="facing" val="north"/> - <a name="appear" val="center"/> </comp> <comp lib="0" loc="(280,640)" name="Constant"/> - <comp lib="2" loc="(520,1670)" name="Multiplexer"> - <a name="selloc" val="tr"/> - <a name="width" val="8"/> - <a name="enable" val="false"/> - </comp> - <comp lib="2" loc="(160,50)" name="Multiplexer"> - <a name="width" val="8"/> - <a name="enable" val="false"/> - </comp> - <comp lib="0" loc="(280,1350)" name="Constant"/> - <comp lib="0" loc="(280,490)" name="Constant"/> - <comp lib="0" loc="(80,80)" name="Pin"> - <a name="tristate" val="false"/> - <a name="label" val="CLK"/> - </comp> - <comp lib="2" loc="(290,1530)" name="Multiplexer"> - <a name="width" val="2"/> - <a name="enable" val="false"/> - </comp> - <comp lib="0" loc="(530,1880)" name="Pin"> - <a name="facing" val="north"/> - <a name="output" val="true"/> - <a name="label" val="Address MUX"/> - <a name="labelloc" val="south"/> - </comp> - <comp lib="4" loc="(1070,560)" name="Register"> - <a name="width" val="1"/> - <a name="trigger" val="falling"/> - </comp> - <comp lib="0" loc="(440,1880)" name="Pin"> + <comp lib="1" loc="(670,1820)" name="AND Gate"> <a name="facing" val="north"/> - <a name="output" val="true"/> - <a name="label" val="Memory Select"/> - <a name="labelloc" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(400,60)" name="Constant"> + <comp lib="1" loc="(1320,780)" 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="1" loc="(880,1610)" name="OR Gate"> + <comp lib="1" loc="(1210,790)" name="OR Gate"> <a name="facing" val="south"/> - <a name="width" val="2"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="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="2" loc="(320,1620)" name="Multiplexer"> + <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,740)" name="AND Gate"> + <comp lib="1" loc="(330,560)" 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="label" val="LLI"/> <a name="negate6" val="true"/> - </comp> - <comp lib="0" loc="(1110,1360)" name="Pin"> - <a name="facing" val="west"/> - <a name="output" val="true"/> - <a name="label" val="ALU State"/> - <a name="labelloc" val="east"/> - </comp> - <comp lib="0" loc="(800,60)" name="Constant"> - <a name="facing" val="south"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="2" loc="(930,690)" name="Multiplexer"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="enable" val="false"/> - </comp> - <comp lib="0" loc="(680,60)" name="Constant"> - <a name="facing" val="south"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="0" loc="(280,310)" name="Constant"/> - <comp lib="1" loc="(330,650)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="LUI"/> <a name="negate7" val="true"/> </comp> - <comp lib="0" loc="(280,1390)" name="Constant"/> - <comp lib="0" loc="(940,910)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - </comp> - <comp lib="1" loc="(330,1280)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="SP"/> - <a name="negate6" val="true"/> - </comp> - <comp lib="0" loc="(280,270)" name="Constant"/> - <comp lib="0" loc="(130,60)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="0" loc="(90,1640)" name="Pin"> + <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="ALU OUTPUT"/> + <a name="label" val="PC ADDRESS"/> <a name="labelloc" val="south"/> </comp> + <comp lib="1" loc="(330,470)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="CIN"/> + <a name="negate0" val="true"/> + <a name="negate2" val="true"/> + <a name="negate3" val="true"/> + </comp> <comp lib="2" loc="(850,690)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> + <a name="disabled" val="0"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(280,330)" name="Constant"/> - <comp lib="0" loc="(280,660)" name="Constant"/> - <comp lib="1" loc="(920,1610)" name="OR Gate"> + <comp lib="1" loc="(520,1230)" 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="(330,1680)" name="Pin"> - <a name="facing" val="north"/> + <comp lib="0" loc="(160,50)" name="Splitter"> + <a name="facing" val="south"/> + <a name="fanout" val="8"/> + <a name="incoming" val="8"/> + </comp> + <comp lib="0" loc="(1190,1480)" name="Pin"> + <a name="facing" val="west"/> <a name="output" val="true"/> - <a name="width" val="8"/> - <a name="label" val="MEM POINTER"/> - <a name="labelloc" val="south"/> + <a name="width" val="4"/> + <a name="label" val="Dynamic OP"/> + <a name="labelloc" val="east"/> </comp> - <comp lib="1" loc="(430,700)" name="AND Gate"> - <a name="facing" val="south"/> + <comp lib="3" loc="(1280,550)" name="Comparator"> + <a name="width" val="5"/> + </comp> + <comp lib="1" loc="(1070,1360)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(820,1860)" name="AND Gate"> + <comp lib="0" loc="(280,1390)" name="Constant"/> + <comp lib="0" loc="(280,140)" name="Constant"/> + <comp lib="0" loc="(280,360)" name="Constant"/> + <comp lib="1" loc="(810,840)" name="AND Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate0" val="true"/> </comp> - <comp lib="0" loc="(280,230)" name="Constant"/> - <comp lib="1" loc="(640,600)" name="OR Gate"> + <comp lib="0" loc="(440,1620)" name="Splitter"> + <a name="facing" val="north"/> + <a name="fanout" val="3"/> + <a name="incoming" val="3"/> + <a name="appear" val="center"/> + </comp> + <comp lib="4" loc="(1400,660)" name="Register"> + <a name="width" val="1"/> + </comp> + <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="(600,690)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="1" loc="(770,1690)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate1" val="true"/> </comp> - <comp lib="2" loc="(890,1050)" name="Multiplexer"> + <comp lib="0" loc="(600,60)" name="Constant"> <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="enable" val="false"/> - </comp> - <comp lib="0" loc="(380,1830)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0xf0"/> + <a name="value" val="0x0"/> </comp> - <comp lib="4" loc="(710,1700)" name="Register"> - <a name="width" val="1"/> - <a name="trigger" val="falling"/> + <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> - <comp lib="1" loc="(840,1690)" name="OR Gate"> + <comp lib="1" loc="(520,1320)" name="OR Gate"> + <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="4" loc="(870,1690)" name="Register"> - <a name="width" val="1"/> - <a name="trigger" val="falling"/> + <comp lib="0" loc="(1160,1190)" name="Pin"> + <a name="facing" val="west"/> + <a name="output" val="true"/> + <a name="label" val="Write Enable"/> + <a name="labelloc" val="east"/> </comp> - <comp lib="0" loc="(280,320)" name="Constant"/> + <comp lib="0" loc="(1160,1360)" name="Pin"> + <a name="facing" val="west"/> + <a name="output" val="true"/> + <a name="label" val="ALU State"/> + <a name="labelloc" val="east"/> + </comp> + <comp lib="0" loc="(280,240)" name="Constant"/> <comp lib="1" loc="(680,1140)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(600,60)" name="Constant"> - <a name="facing" val="south"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="1" loc="(330,1100)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="LB"/> - <a name="negate3" val="true"/> - <a name="negate6" val="true"/> + <comp lib="4" loc="(260,1670)" name="Register"/> + <comp lib="1" loc="(1050,820)" name="AND Gate"> + <a name="facing" val="west"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(620,1400)" name="Splitter"> + <comp lib="0" loc="(180,1570)" name="Splitter"> <a name="facing" val="north"/> - <a name="appear" val="center"/> + <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="(570,1690)" name="Pin"> + <comp lib="0" loc="(800,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="PUSH"/> <a name="labelloc" val="south"/> </comp> - <comp lib="1" loc="(440,1870)" name="AND Gate"> - <a name="facing" val="south"/> + <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="1" loc="(640,1140)" name="OR Gate"> + <comp lib="2" loc="(290,1450)" name="Multiplexer"> + <a name="width" val="2"/> + <a name="enable" val="false"/> + </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="(50,150)" name="Pin"> + <a name="tristate" val="false"/> + <a name="label" val="CLK"/> + </comp> + <comp lib="1" loc="(330,380)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="DYN"/> + <a name="negate0" val="true"/> + </comp> + <comp lib="3" loc="(420,1820)" name="Comparator"> + <a name="mode" val="unsigned"/> + </comp> + <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="1" loc="(640,690)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="inputs" val="3"/> </comp> - <comp lib="0" loc="(280,130)" name="Constant"/> - <comp lib="2" loc="(850,1050)" name="Multiplexer"> + <comp lib="1" loc="(330,830)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="PUSH"/> + <a name="negate2" val="true"/> + <a name="negate3" val="true"/> + <a name="negate5" val="true"/> + <a name="negate6" val="true"/> + </comp> + <comp lib="0" loc="(280,510)" name="Constant"/> + <comp lib="1" loc="(1160,1560)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="4"/> + <a name="negate0" val="true"/> + <a name="negate1" val="true"/> + <a name="negate2" val="true"/> + </comp> + <comp lib="0" loc="(680,60)" name="Constant"> <a name="facing" val="south"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="0" loc="(260,1440)" name="Constant"> <a name="width" val="2"/> - <a name="enable" val="false"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(280,1360)" name="Constant"/> - <comp lib="2" loc="(930,960)" name="Multiplexer"> + <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="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="(850,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="1" loc="(280,370)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(480,330)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(620,1610)" name="Pin"> + <a name="facing" val="north"/> + <a name="output" val="true"/> + <a name="width" val="2"/> + <a name="label" val="GPR MUX"/> + <a name="labelloc" val="south"/> </comp> - <comp lib="1" loc="(480,1410)" 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="(230,1670)" name="Multiplexer"> - <a name="width" val="8"/> - <a name="enable" val="false"/> + <comp lib="0" loc="(280,130)" name="Constant"/> + <comp lib="3" loc="(1260,900)" name="Adder"> + <a name="width" val="5"/> + </comp> + <comp lib="0" loc="(440,1880)" name="Pin"> + <a name="facing" val="north"/> + <a name="output" val="true"/> + <a name="label" val="Memory Select"/> + <a name="labelloc" val="south"/> + </comp> + <comp lib="0" loc="(200,1500)" name="Splitter"> + <a name="facing" val="north"/> + <a name="appear" val="center"/> </comp> + <comp lib="0" loc="(280,630)" name="Constant"/> <comp lib="0" loc="(860,820)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> </comp> - <comp lib="0" loc="(160,50)" name="Splitter"> - <a name="facing" val="south"/> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> - </comp> - <comp lib="0" loc="(220,1460)" name="Splitter"> + <comp lib="0" loc="(530,1880)" name="Pin"> <a name="facing" val="north"/> - <a name="appear" val="center"/> + <a name="output" val="true"/> + <a name="label" val="Address MUX"/> + <a name="labelloc" val="south"/> </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 lib="0" loc="(400,60)" name="Constant"> + <a name="facing" val="south"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(80,50)" name="Pin"> - <a name="width" val="8"/> - <a name="tristate" val="false"/> - <a name="label" val="DATA"/> - <a name="labelloc" val="north"/> + <comp lib="1" loc="(330,650)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="LNI/LI"/> + <a name="negate7" val="true"/> </comp> - <comp lib="2" loc="(290,1490)" name="Multiplexer"> - <a name="width" val="2"/> + <comp lib="2" loc="(1170,610)" name="Multiplexer"> + <a name="width" val="5"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(840,1610)" name="Pin"> + <comp lib="0" loc="(280,490)" name="Constant"/> + <comp lib="0" loc="(520,60)" name="Constant"> + <a name="facing" val="south"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="0" loc="(440,1620)" 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="width" val="3"/> + <a name="label" val="ALU OP"/> <a name="labelloc" val="south"/> </comp> - <comp lib="0" loc="(260,1480)" name="Constant"> + <comp lib="0" loc="(280,330)" 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,1360)" name="Constant"/> + <comp lib="2" loc="(230,1670)" name="Multiplexer"> + <a name="width" val="8"/> + <a name="enable" val="false"/> + </comp> + <comp lib="0" loc="(280,270)" name="Constant"/> + <comp lib="2" loc="(930,600)" name="Multiplexer"> + <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="(600,960)" name="OR Gate"> + <comp lib="1" loc="(560,420)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(200,1500)" name="Splitter"> - <a name="facing" val="north"/> - <a name="appear" val="center"/> + <comp lib="0" loc="(380,1830)" name="Constant"> + <a name="width" val="8"/> + <a name="value" val="0xf0"/> </comp> - <comp lib="1" loc="(520,1140)" name="OR Gate"> - <a name="facing" val="south"/> + <comp lib="1" loc="(840,1690)" name="OR Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(440,330)" name="OR Gate"> + <comp lib="2" loc="(290,1530)" name="Multiplexer"> + <a name="width" val="2"/> + <a name="enable" val="false"/> + </comp> + <comp lib="0" loc="(280,1110)" name="Constant"/> + <comp lib="1" loc="(800,870)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(520,1410)" name="OR Gate"> + <comp lib="0" loc="(280,480)" name="Constant"/> + <comp lib="1" loc="(480,150)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(1070,1360)" 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="(220,1610)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="4"/> - <a name="value" val="0x0"/> + <comp lib="4" loc="(1090,680)" name="Register"> + <a name="width" val="1"/> </comp> - <comp lib="0" loc="(280,550)" name="Constant"/> - <comp lib="0" loc="(1110,1190)" name="Pin"> + <comp lib="0" loc="(830,1890)" name="Pin"> <a name="facing" val="west"/> <a name="output" val="true"/> - <a name="label" val="Write Enable"/> + <a name="label" val="External Address Select"/> <a name="labelloc" val="east"/> </comp> - <comp lib="0" loc="(80,250)" name="Pin"> - <a name="tristate" val="false"/> - <a name="label" val="RST"/> - </comp> - <comp lib="0" loc="(240,1630)" name="Splitter"> - <a name="facing" val="north"/> - <a name="incoming" val="8"/> - <a name="bit1" val="0"/> - <a name="bit2" val="0"/> - <a name="bit3" val="0"/> - <a name="bit4" val="1"/> - <a name="bit5" val="1"/> - <a name="bit6" val="1"/> - <a name="bit7" val="1"/> - </comp> - <comp lib="0" loc="(900,550)" 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="0" loc="(280,140)" name="Constant"/> - <comp lib="1" loc="(480,510)" name="OR Gate"> + <comp lib="2" loc="(850,870)" name="Multiplexer"> <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="width" val="2"/> + <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(280,630)" name="Constant"/> - <comp lib="3" loc="(420,1820)" name="Comparator"> - <a name="mode" val="unsigned"/> + <comp lib="0" loc="(1240,630)" name="Constant"> + <a name="width" val="5"/> </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 lib="1" loc="(1210,680)" name="AND Gate"> + <a name="facing" val="north"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> + <comp lib="0" loc="(280,1200)" 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="(240,1580)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="4"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="0" loc="(880,1610)" name="Pin"> + <comp lib="0" loc="(330,1680)" 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="width" val="8"/> + <a name="label" val="MEM POINTER"/> <a name="labelloc" val="south"/> </comp> - <comp lib="0" loc="(860,550)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="0" loc="(280,1210)" name="Constant"/> - <comp lib="0" loc="(900,910)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="value" val="0x0"/> - </comp> - <comp lib="0" loc="(280,300)" name="Constant"/> - <comp lib="1" loc="(440,420)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="0" loc="(280,210)" name="Constant"/> - <comp lib="0" loc="(280,220)" name="Constant"/> - <comp lib="1" loc="(560,150)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="0" loc="(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 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,580)" name="Constant"/> - <comp lib="0" loc="(720,60)" name="Constant"> - <a name="facing" val="south"/> - <a name="value" val="0x0"/> + <comp lib="0" loc="(1150,1480)" name="Splitter"> + <a name="facing" val="west"/> + <a name="fanout" val="4"/> + <a name="incoming" val="4"/> </comp> - <comp lib="1" loc="(720,780)" 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="6" loc="(233,1834)" name="Text"> - <a name="text" val="This input defines the range of MMIO --&gt;"/> - </comp> - <comp lib="1" loc="(330,1190)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="SB"/> - <a name="negate2" val="true"/> - <a name="negate6" val="true"/> - </comp> - <comp lib="1" loc="(480,420)" name="OR Gate"> + <comp lib="2" loc="(890,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="2" loc="(930,870)" name="Multiplexer"> + <comp lib="0" loc="(860,660)" 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,570)" name="Constant"/> - <comp lib="4" loc="(260,1670)" name="Register"/> - <comp lib="1" loc="(300,1740)" name="OR Gate"> - <a name="facing" val="west"/> + <comp lib="1" loc="(1360,660)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(280,480)" name="Constant"/> - <comp lib="1" loc="(330,200)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="SOP"/> - <a name="negate0" val="true"/> - <a name="negate1" val="true"/> - <a name="negate2" val="true"/> - <a name="negate3" val="true"/> - </comp> - <comp lib="1" loc="(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="(640,60)" name="Constant"> + <comp lib="0" loc="(480,60)" name="Constant"> <a name="facing" val="south"/> <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(360,330)" name="OR Gate"> + <comp lib="0" loc="(440,60)" name="Constant"> <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="1" loc="(330,560)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="LLI"/> - <a name="negate6" val="true"/> - <a name="negate7" val="true"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(1150,1480)" name="Splitter"> - <a name="facing" val="west"/> - <a name="fanout" val="4"/> - <a name="incoming" val="4"/> + <comp lib="4" loc="(710,1700)" name="Register"> + <a name="width" val="1"/> + <a name="trigger" val="falling"/> </comp> - <comp lib="1" loc="(670,1820)" name="AND Gate"> + <comp lib="1" loc="(80,80)" name="AND Gate"> <a name="facing" val="north"/> <a name="size" val="30"/> <a name="inputs" val="2"/> + <a name="negate0" val="true"/> </comp> - <comp lib="2" loc="(890,600)" name="Multiplexer"> + <comp lib="2" loc="(890,960)" name="Multiplexer"> <a name="facing" val="south"/> <a name="width" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(280,1300)" name="Constant"/> - <comp lib="1" loc="(560,420)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="1" loc="(280,100)" name="OR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="0" loc="(280,400)" name="Constant"/> - <comp lib="0" loc="(280,120)" name="Constant"/> - <comp lib="1" loc="(520,510)" name="OR Gate"> - <a name="facing" val="south"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="0" loc="(830,1890)" name="Pin"> + <comp lib="0" loc="(1340,800)" name="Pin"> <a name="facing" val="west"/> <a name="output" val="true"/> - <a name="label" val="External Address Select"/> + <a name="tristate" val="false"/> + <a name="label" val="GPR Forward Input"/> <a name="labelloc" val="east"/> </comp> - <comp lib="1" loc="(600,1050)" name="OR Gate"> + <comp lib="0" loc="(1160,990)" name="Constant"> + <a name="width" val="4"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="4" loc="(110,50)" name="Register"> + <a name="trigger" val="falling"/> + </comp> + <comp lib="0" loc="(280,660)" name="Constant"/> + <comp lib="1" loc="(840,1610)" name="OR Gate"> <a name="facing" val="south"/> + <a name="width" val="2"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(180,1580)" name="Splitter"> + <comp lib="2" loc="(890,870)" name="Multiplexer"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + <a name="enable" val="false"/> + </comp> + <comp lib="0" loc="(220,1460)" 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"/> + <a name="appear" val="center"/> </comp> - <comp lib="0" loc="(890,60)" name="Constant"> + <comp lib="0" loc="(900,660)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> <a name="value" val="0x0"/> @@ -3325,85 +3348,89 @@ <a name="negate4" val="true"/> <a name="negate6" val="true"/> </comp> - <comp lib="0" loc="(230,1580)" name="Splitter"> - <a name="facing" val="north"/> - <a name="incoming" val="4"/> - <a name="bit1" val="0"/> - <a name="bit2" val="1"/> - <a name="bit3" val="1"/> - </comp> - <comp lib="0" loc="(940,640)" name="Constant"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - </comp> - <comp lib="2" loc="(930,600)" name="Multiplexer"> - <a name="facing" val="south"/> - <a name="width" val="2"/> - <a name="enable" val="false"/> + <comp lib="3" loc="(1280,670)" name="Comparator"> + <a name="width" val="5"/> </comp> - <comp lib="1" loc="(640,690)" name="OR Gate"> + <comp lib="3" loc="(200,1680)" name="Adder"/> + <comp lib="0" loc="(280,1290)" name="Constant"/> + <comp lib="0" loc="(280,400)" name="Constant"/> + <comp lib="1" loc="(560,150)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(800,1580)" name="Pin"> + <comp lib="0" loc="(280,90)" name="Constant"/> + <comp lib="0" loc="(130,60)" name="Constant"> + <a name="width" val="8"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="0" loc="(530,1690)" name="Pin"> <a name="facing" val="north"/> <a name="output" val="true"/> - <a name="label" val="PUSH"/> + <a name="width" val="8"/> + <a name="label" val="IMM VALUE"/> <a name="labelloc" val="south"/> </comp> - <comp lib="0" loc="(760,60)" name="Constant"> + <comp lib="0" loc="(280,150)" name="Constant"/> + <comp lib="1" loc="(520,1410)" 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="1" loc="(680,1230)" 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="1" loc="(330,1370)" name="AND Gate"> + <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="3" loc="(1280,620)" name="Subtractor"> + <a name="width" val="5"/> + </comp> + <comp lib="1" loc="(330,1100)" name="AND Gate"> <a name="inputs" val="8"/> - <a name="label" val="CMP"/> + <a name="label" val="LB"/> + <a name="negate3" val="true"/> + <a name="negate6" val="true"/> </comp> - <comp lib="0" loc="(940,1000)" name="Constant"> + <comp lib="0" loc="(280,550)" name="Constant"/> + <comp lib="1" loc="(880,1610)" name="OR Gate"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="value" val="0x3"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="2" loc="(890,690)" name="Multiplexer"> + <comp lib="0" loc="(900,1000)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="enable" val="false"/> + <a name="value" val="0x0"/> </comp> - <comp lib="0" loc="(280,500)" name="Constant"/> - <comp lib="1" loc="(520,150)" name="OR Gate"> + <comp lib="0" loc="(280,1380)" name="Constant"/> + <comp lib="1" loc="(680,1230)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(900,640)" name="Constant"> + <comp lib="1" loc="(360,330)" name="OR Gate"> <a name="facing" val="south"/> - <a name="width" val="2"/> - </comp> - <comp lib="1" loc="(330,1010)" name="AND Gate"> - <a name="inputs" val="8"/> - <a name="label" val="PCR"/> - <a name="negate2" val="true"/> - <a name="negate3" val="true"/> - <a name="negate6" val="true"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="2" loc="(850,600)" name="Multiplexer"> + <comp lib="0" loc="(890,60)" name="Constant"> <a name="facing" val="south"/> <a name="width" val="2"/> - <a name="enable" val="false"/> + <a name="value" val="0x0"/> </comp> - <comp lib="1" loc="(520,330)" 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="0" loc="(280,90)" name="Constant"/> - <comp lib="1" loc="(360,510)" name="OR Gate"> + <comp lib="1" loc="(520,510)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> @@ -3413,46 +3440,241 @@ <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="4" loc="(110,50)" name="Register"> - <a name="trigger" val="falling"/> - </comp> - <comp lib="1" loc="(1040,1510)" name="AND Gate"> - <a name="facing" val="west"/> - <a name="label" val="ptrinc"/> - </comp> - <comp lib="0" loc="(440,1690)" name="Pin"> + <comp lib="0" loc="(200,1580)" name="Splitter"> <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"/> + <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,390)" name="Constant"/> - <comp lib="0" loc="(560,60)" name="Constant"> + <comp lib="1" loc="(560,330)" 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="2" loc="(290,1450)" name="Multiplexer"> + <comp lib="0" loc="(280,1350)" name="Constant"/> + <comp lib="0" loc="(280,1300)" name="Constant"/> + <comp lib="0" loc="(360,60)" name="Constant"> + <a name="facing" val="south"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="0" loc="(940,1000)" name="Constant"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + <a name="value" val="0x3"/> + </comp> + <comp lib="0" loc="(280,540)" 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"/> + </comp> + <comp lib="0" loc="(280,410)" name="Constant"/> + <comp lib="1" loc="(1360,550)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + <a name="negate1" val="true"/> + </comp> + <comp lib="1" loc="(1310,670)" name="NOT Gate"> + <a name="size" val="20"/> + </comp> + <comp lib="4" loc="(1090,870)" name="Register"> + <a name="width" val="1"/> + </comp> + <comp lib="0" loc="(660,1880)" name="Pin"> + <a name="facing" val="north"/> + <a name="tristate" val="false"/> + <a name="label" val="JMP FLAG"/> + <a name="labelloc" val="south"/> + </comp> + <comp lib="1" loc="(1170,680)" name="AND Gate"> + <a name="facing" val="north"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="0" loc="(280,1210)" name="Constant"/> + <comp lib="0" loc="(250,1600)" name="Splitter"> + <a name="facing" val="north"/> + <a name="incoming" val="8"/> + <a name="bit1" val="0"/> + <a name="bit2" val="0"/> + <a name="bit3" val="0"/> + <a name="bit4" val="1"/> + <a name="bit5" val="1"/> + <a name="bit6" val="1"/> + <a name="bit7" val="1"/> + </comp> + <comp lib="1" loc="(330,1370)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="CMP"/> + </comp> + <comp lib="1" loc="(480,420)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="4" loc="(1190,1480)" name="Register"> + <a name="width" val="4"/> + <a name="trigger" val="falling"/> + </comp> + <comp lib="1" loc="(520,420)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="4" loc="(1210,610)" name="Register"> + <a name="width" val="5"/> + </comp> + <comp lib="0" loc="(940,660)" name="Constant"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + </comp> + <comp lib="1" loc="(900,1720)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="1" loc="(1190,650)" name="OR Gate"> + <a name="facing" val="north"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="4" loc="(870,1690)" name="Register"> + <a name="width" val="1"/> + <a name="trigger" val="falling"/> + </comp> + <comp lib="0" loc="(280,320)" name="Constant"/> + <comp lib="0" loc="(1240,680)" name="Constant"> + <a name="width" val="5"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="1" loc="(600,600)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="2" loc="(930,1050)" name="Multiplexer"> + <a name="facing" val="south"/> <a name="width" val="2"/> <a name="enable" val="false"/> </comp> - <comp lib="0" loc="(280,1110)" name="Constant"/> - <comp lib="1" loc="(480,150)" name="OR Gate"> + <comp lib="1" loc="(330,1280)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="SP"/> + <a name="negate6" val="true"/> + </comp> + <comp lib="1" loc="(300,1740)" name="OR Gate"> + <a name="facing" val="west"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="0" loc="(220,1610)" name="Constant"> + <a name="facing" val="south"/> + <a name="width" val="4"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="1" loc="(640,600)" name="OR Gate"> <a name="facing" val="south"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(260,1440)" name="Constant"> + <comp lib="1" loc="(480,510)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="0" loc="(1200,910)" name="Bit Extender"> + <a name="in_width" val="4"/> + <a name="out_width" val="5"/> + </comp> + <comp lib="0" loc="(280,580)" name="Constant"/> + <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="(920,1610)" name="Pin"> + <comp lib="0" loc="(280,500)" name="Constant"/> + <comp lib="0" loc="(280,670)" name="Constant"/> + <comp lib="2" loc="(930,870)" name="Multiplexer"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + <a name="enable" val="false"/> + </comp> + <comp lib="0" loc="(880,1610)" name="Pin"> <a name="facing" val="north"/> <a name="output" val="true"/> <a name="width" val="2"/> - <a name="label" val="C (W)"/> + <a name="label" val="B (R)"/> + <a name="labelloc" val="south"/> + </comp> + <comp lib="1" loc="(280,100)" name="OR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="2" loc="(290,1490)" name="Multiplexer"> + <a name="width" val="2"/> + <a name="enable" val="false"/> + </comp> + <comp lib="2" loc="(910,1560)" name="Multiplexer"> + <a name="facing" val="south"/> + <a name="selloc" val="tr"/> + <a name="width" val="2"/> + <a name="enable" val="false"/> + </comp> + <comp lib="0" loc="(280,300)" name="Constant"/> + <comp lib="1" loc="(330,200)" name="AND Gate"> + <a name="inputs" val="8"/> + <a name="label" val="SOP"/> + <a name="negate0" val="true"/> + <a name="negate1" val="true"/> + <a name="negate2" val="true"/> + <a name="negate3" val="true"/> + </comp> + <comp lib="0" loc="(780,1880)" name="Pin"> + <a name="facing" val="north"/> + <a name="output" val="true"/> + <a name="label" val="BRANCH"/> <a name="labelloc" val="south"/> </comp> + <comp lib="0" loc="(930,60)" name="Constant"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="0" loc="(900,820)" name="Constant"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="0" loc="(180,1540)" name="Splitter"> + <a name="facing" val="north"/> + <a name="appear" val="center"/> + </comp> + <comp lib="6" loc="(233,1834)" name="Text"> + <a name="text" val="This input defines the range of MMIO --&gt;"/> + </comp> + <comp lib="1" loc="(1260,790)" name="AND Gate"> + <a name="facing" val="south"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + <a name="negate1" val="true"/> + </comp> + <comp lib="2" loc="(890,1050)" name="Multiplexer"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + <a name="enable" val="false"/> + </comp> + <comp lib="1" loc="(920,1610)" name="OR Gate"> + <a name="facing" val="south"/> + <a name="width" val="2"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="0" loc="(280,210)" name="Constant"/> + <comp lib="0" loc="(280,310)" name="Constant"/> </circuit> <circuit name="STK"> <a name="circuit" val="STK"/> @@ -3464,7 +3686,7 @@ <text font-family="SansSerif" font-size="12" text-anchor="middle" x="63" y="80">STK</text> <circ-port height="10" pin="150,220" width="10" x="55" y="55"/> <circ-port height="8" pin="150,270" width="8" x="76" y="66"/> - <circ-port height="8" pin="90,290" width="8" x="76" y="76"/> + <circ-port height="8" pin="90,300" width="8" x="76" y="76"/> <circ-port height="8" pin="90,330" width="8" x="56" y="86"/> <circ-port height="8" pin="90,360" width="8" x="66" y="86"/> <circ-port height="8" pin="180,320" width="8" x="46" y="76"/> @@ -3485,6 +3707,8 @@ <wire from="(1860,260)" to="(1860,270)"/> <wire from="(2460,220)" to="(2460,270)"/> <wire from="(2230,270)" to="(2240,270)"/> + <wire from="(990,340)" to="(1100,340)"/> + <wire from="(2200,280)" to="(2200,340)"/> <wire from="(2690,250)" to="(2700,250)"/> <wire from="(1040,230)" to="(1250,230)"/> <wire from="(3210,320)" to="(3320,320)"/> @@ -3501,14 +3725,19 @@ <wire from="(700,220)" to="(700,270)"/> <wire from="(930,250)" to="(940,250)"/> <wire from="(2870,300)" to="(2980,300)"/> + <wire from="(440,280)" to="(440,340)"/> + <wire from="(2750,340)" to="(2860,340)"/> <wire from="(3620,260)" to="(3620,270)"/> <wire from="(3040,310)" to="(3150,310)"/> <wire from="(3220,270)" to="(3230,270)"/> <wire from="(1370,220)" to="(1370,250)"/> + <wire from="(1980,340)" to="(2090,340)"/> + <wire from="(3190,280)" to="(3190,340)"/> <wire from="(2100,300)" to="(2210,300)"/> <wire from="(1700,230)" to="(1700,250)"/> <wire from="(1120,290)" to="(1120,320)"/> <wire from="(950,280)" to="(950,310)"/> + <wire from="(220,340)" to="(330,340)"/> <wire from="(510,310)" to="(620,310)"/> <wire from="(340,300)" to="(450,300)"/> <wire from="(680,320)" to="(790,320)"/> @@ -3520,10 +3749,10 @@ <wire from="(3460,230)" to="(3460,250)"/> <wire from="(1460,270)" to="(1470,270)"/> <wire from="(2850,260)" to="(2850,270)"/> + <wire from="(1430,280)" to="(1430,340)"/> <wire from="(1920,250)" to="(1930,250)"/> <wire from="(2270,310)" to="(2380,310)"/> <wire from="(3130,220)" to="(3130,250)"/> - <wire from="(150,300)" to="(230,300)"/> <wire from="(160,250)" to="(170,250)"/> <wire from="(2880,290)" to="(2880,320)"/> <wire from="(2440,320)" to="(2550,320)"/> @@ -3533,6 +3762,7 @@ <wire from="(3200,290)" to="(3200,300)"/> <wire from="(1470,270)" to="(1490,270)"/> <wire from="(670,290)" to="(670,300)"/> + <wire from="(1210,340)" to="(1320,340)"/> <wire from="(1940,280)" to="(1940,310)"/> <wire from="(3020,230)" to="(3230,230)"/> <wire from="(1500,310)" to="(1610,310)"/> @@ -3544,35 +3774,38 @@ <wire from="(320,260)" to="(320,270)"/> <wire from="(2450,270)" to="(2460,270)"/> <wire from="(2080,260)" to="(2080,270)"/> + <wire from="(2420,280)" to="(2420,340)"/> <wire from="(2910,250)" to="(2920,250)"/> <wire from="(2680,220)" to="(2680,270)"/> <wire from="(350,290)" to="(350,320)"/> <wire from="(180,280)" to="(180,310)"/> <wire from="(930,220)" to="(1140,220)"/> <wire from="(3260,310)" to="(3370,310)"/> - <wire from="(90,290)" to="(120,290)"/> <wire from="(3430,320)" to="(3540,320)"/> <wire from="(700,270)" to="(720,270)"/> <wire from="(1150,250)" to="(1160,250)"/> <wire from="(1970,270)" to="(1980,270)"/> <wire from="(1960,260)" to="(1970,260)"/> - <wire from="(110,320)" to="(130,320)"/> <wire from="(2430,290)" to="(2430,300)"/> <wire from="(200,260)" to="(210,260)"/> <wire from="(210,270)" to="(220,270)"/> + <wire from="(660,280)" to="(660,340)"/> <wire from="(1250,230)" to="(1250,270)"/> <wire from="(3090,300)" to="(3200,300)"/> <wire from="(690,270)" to="(700,270)"/> <wire from="(920,220)" to="(920,270)"/> <wire from="(1260,230)" to="(1470,230)"/> <wire from="(2110,290)" to="(2110,320)"/> + <wire from="(2970,340)" to="(3080,340)"/> <wire from="(3440,270)" to="(3450,270)"/> <wire from="(180,320)" to="(240,320)"/> <wire from="(1590,220)" to="(1590,250)"/> <wire from="(1920,230)" to="(1920,250)"/> <wire from="(1340,290)" to="(1340,320)"/> <wire from="(1170,280)" to="(1170,310)"/> + <wire from="(3410,280)" to="(3410,340)"/> <wire from="(1660,290)" to="(1660,300)"/> + <wire from="(440,340)" to="(550,340)"/> <wire from="(160,230)" to="(160,250)"/> <wire from="(2140,250)" to="(2150,250)"/> <wire from="(3450,270)" to="(3470,270)"/> @@ -3585,12 +3818,14 @@ <wire from="(1200,270)" to="(1210,270)"/> <wire from="(3070,260)" to="(3070,270)"/> <wire from="(1190,260)" to="(1200,260)"/> + <wire from="(1650,280)" to="(1650,340)"/> <wire from="(3350,220)" to="(3350,250)"/> <wire from="(1680,270)" to="(1690,270)"/> <wire from="(3100,290)" to="(3100,320)"/> <wire from="(2320,300)" to="(2430,300)"/> <wire from="(2930,280)" to="(2930,310)"/> <wire from="(380,250)" to="(390,250)"/> + <wire from="(2200,340)" to="(2310,340)"/> <wire from="(1690,270)" to="(1710,270)"/> <wire from="(2490,310)" to="(2600,310)"/> <wire from="(3420,290)" to="(3420,300)"/> @@ -3600,9 +3835,10 @@ <wire from="(2680,270)" to="(2700,270)"/> <wire from="(1550,300)" to="(1660,300)"/> <wire from="(890,290)" to="(890,300)"/> + <wire from="(1430,340)" to="(1540,340)"/> <wire from="(1720,310)" to="(1830,310)"/> - <wire from="(110,310)" to="(110,320)"/> <wire from="(1890,320)" to="(2000,320)"/> + <wire from="(2640,280)" to="(2640,340)"/> <wire from="(570,290)" to="(570,320)"/> <wire from="(2190,270)" to="(2200,270)"/> <wire from="(2180,260)" to="(2190,260)"/> @@ -3616,11 +3852,14 @@ <wire from="(1370,250)" to="(1380,250)"/> <wire from="(920,270)" to="(940,270)"/> <wire from="(2650,290)" to="(2650,300)"/> + <wire from="(3190,340)" to="(3300,340)"/> <wire from="(1140,220)" to="(1140,270)"/> + <wire from="(130,340)" to="(220,340)"/> <wire from="(3480,310)" to="(3590,310)"/> <wire from="(2300,260)" to="(2300,270)"/> <wire from="(430,270)" to="(440,270)"/> <wire from="(420,260)" to="(430,260)"/> + <wire from="(880,280)" to="(880,340)"/> <wire from="(1480,230)" to="(1690,230)"/> <wire from="(910,270)" to="(920,270)"/> <wire from="(2330,290)" to="(2330,320)"/> @@ -3634,12 +3873,15 @@ <wire from="(3170,260)" to="(3180,260)"/> <wire from="(1560,290)" to="(1560,320)"/> <wire from="(1390,280)" to="(1390,310)"/> + <wire from="(3630,280)" to="(3630,340)"/> <wire from="(380,230)" to="(380,250)"/> <wire from="(2360,250)" to="(2370,250)"/> <wire from="(1880,290)" to="(1880,300)"/> + <wire from="(660,340)" to="(770,340)"/> <wire from="(950,310)" to="(1060,310)"/> <wire from="(1530,260)" to="(1530,270)"/> <wire from="(780,300)" to="(890,300)"/> + <wire from="(1870,280)" to="(1870,340)"/> <wire from="(1410,260)" to="(1420,260)"/> <wire from="(1420,270)" to="(1430,270)"/> <wire from="(3570,220)" to="(3570,250)"/> @@ -3651,6 +3893,7 @@ <wire from="(1910,270)" to="(1930,270)"/> <wire from="(2540,300)" to="(2650,300)"/> <wire from="(2140,230)" to="(2140,250)"/> + <wire from="(2420,340)" to="(2530,340)"/> <wire from="(2880,320)" to="(2990,320)"/> <wire from="(2710,310)" to="(2820,310)"/> <wire from="(3290,260)" to="(3290,270)"/> @@ -3661,6 +3904,7 @@ <wire from="(3130,220)" to="(3340,220)"/> <wire from="(3350,250)" to="(3360,250)"/> <wire from="(1770,300)" to="(1880,300)"/> + <wire from="(1650,340)" to="(1760,340)"/> <wire from="(1940,310)" to="(2050,310)"/> <wire from="(180,310)" to="(290,310)"/> <wire from="(2400,260)" to="(2410,260)"/> @@ -3668,17 +3912,21 @@ <wire from="(2410,270)" to="(2420,270)"/> <wire from="(620,280)" to="(620,310)"/> <wire from="(350,320)" to="(460,320)"/> + <wire from="(2860,280)" to="(2860,340)"/> <wire from="(1110,290)" to="(1110,300)"/> <wire from="(3460,230)" to="(3670,230)"/> <wire from="(3450,230)" to="(3450,270)"/> <wire from="(3120,220)" to="(3120,270)"/> <wire from="(2890,270)" to="(2900,270)"/> <wire from="(2870,290)" to="(2870,300)"/> + <wire from="(3410,340)" to="(3520,340)"/> <wire from="(1360,220)" to="(1360,270)"/> <wire from="(1130,270)" to="(1140,270)"/> <wire from="(3530,300)" to="(3640,300)"/> <wire from="(2520,260)" to="(2520,270)"/> + <wire from="(1100,280)" to="(1100,340)"/> <wire from="(1590,250)" to="(1600,250)"/> + <wire from="(3630,340)" to="(3670,340)"/> <wire from="(1690,230)" to="(1690,270)"/> <wire from="(2110,320)" to="(2220,320)"/> <wire from="(1700,230)" to="(1910,230)"/> @@ -3704,6 +3952,8 @@ <wire from="(270,220)" to="(270,250)"/> <wire from="(600,230)" to="(600,250)"/> <wire from="(1000,300)" to="(1110,300)"/> + <wire from="(880,340)" to="(990,340)"/> + <wire from="(2090,280)" to="(2090,340)"/> <wire from="(370,270)" to="(390,270)"/> <wire from="(3540,290)" to="(3540,320)"/> <wire from="(3370,280)" to="(3370,310)"/> @@ -3711,7 +3961,9 @@ <wire from="(1640,270)" to="(1650,270)"/> <wire from="(360,270)" to="(370,270)"/> <wire from="(2360,230)" to="(2360,250)"/> + <wire from="(330,280)" to="(330,340)"/> <wire from="(820,250)" to="(830,250)"/> + <wire from="(2640,340)" to="(2750,340)"/> <wire from="(2760,300)" to="(2870,300)"/> <wire from="(3100,320)" to="(3210,320)"/> <wire from="(2930,310)" to="(3040,310)"/> @@ -3721,12 +3973,14 @@ <wire from="(3120,270)" to="(3140,270)"/> <wire from="(980,260)" to="(980,270)"/> <wire from="(1990,300)" to="(2100,300)"/> + <wire from="(1870,340)" to="(1980,340)"/> <wire from="(150,220)" to="(260,220)"/> <wire from="(2630,270)" to="(2640,270)"/> <wire from="(1010,290)" to="(1010,320)"/> <wire from="(2620,260)" to="(2630,260)"/> <wire from="(230,300)" to="(340,300)"/> <wire from="(840,280)" to="(840,310)"/> + <wire from="(3080,280)" to="(3080,340)"/> <wire from="(400,310)" to="(510,310)"/> <wire from="(3640,300)" to="(3670,300)"/> <wire from="(3110,270)" to="(3120,270)"/> @@ -3738,6 +3992,7 @@ <wire from="(1350,270)" to="(1360,270)"/> <wire from="(2740,260)" to="(2740,270)"/> <wire from="(3090,290)" to="(3090,300)"/> + <wire from="(1320,280)" to="(1320,340)"/> <wire from="(1580,220)" to="(1580,270)"/> <wire from="(160,230)" to="(370,230)"/> <wire from="(1810,250)" to="(1820,250)"/> @@ -3747,7 +4002,6 @@ <wire from="(2770,290)" to="(2770,320)"/> <wire from="(1910,230)" to="(1910,270)"/> <wire from="(1590,220)" to="(1800,220)"/> - <wire from="(110,310)" to="(120,310)"/> <wire from="(1360,270)" to="(1380,270)"/> <wire from="(2600,280)" to="(2600,310)"/> <wire from="(870,270)" to="(880,270)"/> @@ -3757,6 +4011,7 @@ <wire from="(2000,290)" to="(2000,320)"/> <wire from="(3620,270)" to="(3630,270)"/> <wire from="(560,290)" to="(560,300)"/> + <wire from="(1100,340)" to="(1210,340)"/> <wire from="(1830,280)" to="(1830,310)"/> <wire from="(1560,320)" to="(1670,320)"/> <wire from="(1390,310)" to="(1500,310)"/> @@ -3768,6 +4023,7 @@ <wire from="(490,220)" to="(490,250)"/> <wire from="(2800,250)" to="(2810,250)"/> <wire from="(240,290)" to="(240,320)"/> + <wire from="(2310,280)" to="(2310,340)"/> <wire from="(3320,320)" to="(3430,320)"/> <wire from="(590,270)" to="(610,270)"/> <wire from="(3590,280)" to="(3590,310)"/> @@ -3775,7 +4031,9 @@ <wire from="(1850,260)" to="(1860,260)"/> <wire from="(1860,270)" to="(1870,270)"/> <wire from="(2580,230)" to="(2580,250)"/> + <wire from="(550,280)" to="(550,340)"/> <wire from="(1040,250)" to="(1050,250)"/> + <wire from="(2860,340)" to="(2970,340)"/> <wire from="(2250,220)" to="(2250,250)"/> <wire from="(3150,310)" to="(3260,310)"/> <wire from="(580,270)" to="(590,270)"/> @@ -3784,10 +4042,13 @@ <wire from="(3560,220)" to="(3560,270)"/> <wire from="(2130,230)" to="(2130,270)"/> <wire from="(1230,290)" to="(1230,320)"/> + <wire from="(2090,340)" to="(2200,340)"/> <wire from="(2140,230)" to="(2350,230)"/> <wire from="(1060,280)" to="(1060,310)"/> + <wire from="(3300,280)" to="(3300,340)"/> <wire from="(100,360)" to="(150,360)"/> <wire from="(450,300)" to="(560,300)"/> + <wire from="(330,340)" to="(440,340)"/> <wire from="(1200,260)" to="(1200,270)"/> <wire from="(620,310)" to="(730,310)"/> <wire from="(1550,290)" to="(1550,300)"/> @@ -3802,6 +4063,7 @@ <wire from="(2030,250)" to="(2040,250)"/> <wire from="(1800,220)" to="(1800,270)"/> <wire from="(380,230)" to="(590,230)"/> + <wire from="(1540,280)" to="(1540,340)"/> <wire from="(370,230)" to="(370,270)"/> <wire from="(270,250)" to="(280,250)"/> <wire from="(2990,290)" to="(2990,320)"/> @@ -3814,6 +4076,7 @@ <wire from="(3310,290)" to="(3310,300)"/> <wire from="(780,290)" to="(780,300)"/> <wire from="(2050,280)" to="(2050,310)"/> + <wire from="(1320,340)" to="(1430,340)"/> <wire from="(1440,300)" to="(1550,300)"/> <wire from="(1780,320)" to="(1890,320)"/> <wire from="(1610,310)" to="(1720,310)"/> @@ -3823,6 +4086,7 @@ <wire from="(710,220)" to="(710,250)"/> <wire from="(460,290)" to="(460,320)"/> <wire from="(290,280)" to="(290,310)"/> + <wire from="(2530,280)" to="(2530,340)"/> <wire from="(1040,230)" to="(1040,250)"/> <wire from="(3020,250)" to="(3030,250)"/> <wire from="(810,270)" to="(830,270)"/> @@ -3837,12 +4101,15 @@ <wire from="(320,270)" to="(330,270)"/> <wire from="(310,260)" to="(320,260)"/> <wire from="(90,360)" to="(100,360)"/> + <wire from="(770,280)" to="(770,340)"/> <wire from="(800,270)" to="(810,270)"/> <wire from="(2470,220)" to="(2470,250)"/> + <wire from="(3080,340)" to="(3190,340)"/> <wire from="(2800,230)" to="(2800,250)"/> <wire from="(2220,290)" to="(2220,320)"/> <wire from="(3550,270)" to="(3560,270)"/> <wire from="(1450,290)" to="(1450,320)"/> + <wire from="(3520,280)" to="(3520,340)"/> <wire from="(2350,230)" to="(2350,270)"/> <wire from="(2360,230)" to="(2570,230)"/> <wire from="(1280,280)" to="(1280,310)"/> @@ -3852,12 +4119,14 @@ <wire from="(3060,260)" to="(3070,260)"/> <wire from="(670,300)" to="(780,300)"/> <wire from="(3560,270)" to="(3580,270)"/> + <wire from="(550,340)" to="(660,340)"/> <wire from="(1010,320)" to="(1120,320)"/> <wire from="(840,310)" to="(950,310)"/> <wire from="(1420,260)" to="(1420,270)"/> <wire from="(590,230)" to="(590,270)"/> <wire from="(1300,260)" to="(1310,260)"/> <wire from="(1310,270)" to="(1320,270)"/> + <wire from="(1760,280)" to="(1760,340)"/> <wire from="(600,230)" to="(810,230)"/> <wire from="(270,220)" to="(480,220)"/> <wire from="(2020,220)" to="(2020,270)"/> @@ -3866,7 +4135,9 @@ <wire from="(2030,220)" to="(2240,220)"/> <wire from="(3040,280)" to="(3040,310)"/> <wire from="(490,250)" to="(500,250)"/> + <wire from="(2310,340)" to="(2420,340)"/> <wire from="(2600,310)" to="(2710,310)"/> + <wire from="(90,300)" to="(230,300)"/> <wire from="(2430,300)" to="(2540,300)"/> <wire from="(260,220)" to="(260,270)"/> <wire from="(90,330)" to="(100,330)"/> @@ -3876,6 +4147,7 @@ <wire from="(3530,290)" to="(3530,300)"/> <wire from="(650,260)" to="(650,270)"/> <wire from="(1000,290)" to="(1000,300)"/> + <wire from="(1540,340)" to="(1650,340)"/> <wire from="(2790,270)" to="(2810,270)"/> <wire from="(3240,250)" to="(3250,250)"/> <wire from="(1260,230)" to="(1260,250)"/> @@ -3888,13 +4160,16 @@ <wire from="(2290,260)" to="(2300,260)"/> <wire from="(680,290)" to="(680,320)"/> <wire from="(2300,270)" to="(2310,270)"/> + <wire from="(2750,280)" to="(2750,340)"/> <wire from="(510,280)" to="(510,310)"/> <wire from="(2780,270)" to="(2790,270)"/> <wire from="(1480,250)" to="(1490,250)"/> + <wire from="(3300,340)" to="(3410,340)"/> <wire from="(3420,300)" to="(3530,300)"/> <wire from="(2760,290)" to="(2760,300)"/> <wire from="(1030,270)" to="(1050,270)"/> <wire from="(2410,260)" to="(2410,270)"/> + <wire from="(990,280)" to="(990,340)"/> <wire from="(2690,220)" to="(2690,250)"/> <wire from="(1020,270)" to="(1030,270)"/> <wire from="(3020,230)" to="(3020,250)"/> @@ -3917,11 +4192,13 @@ <wire from="(1640,260)" to="(1640,270)"/> <wire from="(2470,250)" to="(2480,250)"/> <wire from="(1990,290)" to="(1990,300)"/> + <wire from="(770,340)" to="(880,340)"/> <wire from="(890,300)" to="(1000,300)"/> <wire from="(150,310)" to="(180,310)"/> <wire from="(1530,270)" to="(1540,270)"/> <wire from="(1520,260)" to="(1530,260)"/> <wire from="(820,230)" to="(1030,230)"/> + <wire from="(1980,280)" to="(1980,340)"/> <wire from="(810,230)" to="(810,270)"/> <wire from="(260,270)" to="(280,270)"/> <wire from="(2010,270)" to="(2020,270)"/> @@ -3929,6 +4206,7 @@ <wire from="(3430,290)" to="(3430,320)"/> <wire from="(3260,280)" to="(3260,310)"/> <wire from="(2020,270)" to="(2040,270)"/> + <wire from="(2530,340)" to="(2640,340)"/> <wire from="(480,220)" to="(480,270)"/> <wire from="(250,270)" to="(260,270)"/> <wire from="(2820,310)" to="(2930,310)"/> @@ -3936,26 +4214,30 @@ <wire from="(2650,300)" to="(2760,300)"/> <wire from="(710,250)" to="(720,250)"/> <wire from="(2990,320)" to="(3100,320)"/> + <wire from="(220,280)" to="(220,340)"/> <wire from="(3010,270)" to="(3030,270)"/> <wire from="(3460,250)" to="(3470,250)"/> <wire from="(1480,230)" to="(1480,250)"/> <wire from="(870,260)" to="(870,270)"/> + <wire from="(1760,340)" to="(1870,340)"/> <wire from="(2050,310)" to="(2160,310)"/> <wire from="(1880,300)" to="(1990,300)"/> <wire from="(1150,220)" to="(1150,250)"/> <wire from="(2510,260)" to="(2520,260)"/> <wire from="(2520,270)" to="(2530,270)"/> + <wire from="(2970,280)" to="(2970,340)"/> <wire from="(900,290)" to="(900,320)"/> <wire from="(460,320)" to="(570,320)"/> <wire from="(730,280)" to="(730,310)"/> - <wire from="(130,320)" to="(130,340)"/> <wire from="(290,310)" to="(400,310)"/> <wire from="(1220,290)" to="(1220,300)"/> <wire from="(3000,270)" to="(3010,270)"/> <wire from="(1240,270)" to="(1250,270)"/> <wire from="(3240,230)" to="(3240,250)"/> <wire from="(2980,290)" to="(2980,300)"/> + <wire from="(3520,340)" to="(3630,340)"/> <wire from="(2630,260)" to="(2630,270)"/> + <wire from="(1210,280)" to="(1210,340)"/> <wire from="(1700,250)" to="(1710,250)"/> <wire from="(2910,220)" to="(2910,250)"/> <wire from="(2220,320)" to="(2330,320)"/> @@ -3964,201 +4246,197 @@ <wire from="(750,260)" to="(760,260)"/> <wire from="(760,270)" to="(770,270)"/> <wire from="(1250,270)" to="(1270,270)"/> - <comp lib="2" loc="(200,260)" name="Multiplexer"> + <comp lib="4" loc="(1460,270)" name="Register"/> + <comp lib="2" loc="(420,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(2340,270)" name="Register"/> - <comp lib="4" loc="(2670,270)" name="Register"/> - <comp lib="2" loc="(2510,260)" name="Multiplexer"> + <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="0" loc="(3670,220)" name="Constant"> - <a name="facing" val="west"/> + <comp lib="1" loc="(130,340)" name="OR Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="2" loc="(2510,260)" name="Multiplexer"> <a name="width" val="8"/> - <a name="value" val="0x0"/> + <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(690,270)" name="Register"/> - <comp lib="4" loc="(1460,270)" name="Register"/> - <comp lib="4" loc="(1240,270)" name="Register"/> <comp lib="4" loc="(1570,270)" name="Register"/> <comp lib="4" loc="(470,270)" name="Register"/> - <comp lib="2" loc="(2400,260)" name="Multiplexer"> + <comp lib="2" loc="(1410,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(2070,260)" name="Multiplexer"> + <comp lib="4" loc="(1790,270)" name="Register"/> + <comp lib="2" loc="(3280,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(580,270)" name="Register"/> - <comp lib="2" loc="(3610,260)" name="Multiplexer"> + <comp lib="4" loc="(3550,270)" name="Register"/> + <comp lib="4" loc="(3330,270)" name="Register"/> + <comp lib="4" loc="(3220,270)" name="Register"/> + <comp lib="2" loc="(2950,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="(250,270)" name="Register"/> + <comp lib="4" loc="(2450,270)" name="Register"/> + <comp lib="2" loc="(970,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(3550,270)" name="Register"/> - <comp lib="2" loc="(1190,260)" name="Multiplexer"> + <comp lib="4" loc="(1240,270)" name="Register"/> + <comp lib="4" loc="(360,270)" name="Register"/> + <comp lib="2" loc="(750,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(2780,270)" name="Register"/> - <comp lib="4" loc="(1020,270)" name="Register"/> + <comp lib="4" loc="(3110,270)" name="Register"/> <comp lib="2" loc="(3390,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(800,270)" name="Register"/> - <comp lib="2" loc="(1850,260)" name="Multiplexer"> + <comp lib="4" loc="(2120,270)" name="Register"/> + <comp lib="4" loc="(2780,270)" name="Register"/> + <comp lib="2" loc="(1190,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(2120,270)" name="Register"/> - <comp lib="4" loc="(3220,270)" name="Register"/> - <comp lib="2" loc="(1410,260)" name="Multiplexer"> + <comp lib="2" loc="(2400,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(3110,270)" name="Register"/> - <comp lib="4" loc="(3660,270)" name="Register"/> - <comp lib="2" loc="(310,260)" name="Multiplexer"> + <comp lib="2" loc="(640,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(360,270)" name="Register"/> - <comp lib="0" loc="(90,330)" name="Pin"> - <a name="tristate" val="false"/> - </comp> - <comp lib="0" loc="(90,360)" name="Pin"> - <a name="tristate" val="false"/> - </comp> - <comp lib="2" loc="(2290,260)" name="Multiplexer"> + <comp lib="2" loc="(1520,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(250,270)" name="Register"/> - <comp lib="4" loc="(3330,270)" name="Register"/> - <comp lib="2" loc="(1080,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="(2230,270)" name="Register"/> - <comp lib="4" loc="(2010,270)" name="Register"/> - <comp lib="2" loc="(640,260)" name="Multiplexer"> + <comp lib="2" loc="(530,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="1" loc="(130,340)" name="OR Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(90,300)" name="Pin"> + <a name="tristate" val="false"/> </comp> - <comp lib="2" loc="(420,260)" name="Multiplexer"> + <comp lib="4" loc="(1020,270)" name="Register"/> + <comp lib="4" loc="(800,270)" name="Register"/> + <comp lib="2" loc="(3500,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="2" loc="(530,260)" name="Multiplexer"> + <comp lib="4" loc="(2230,270)" name="Register"/> + <comp lib="4" loc="(2010,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"/> + <a name="tristate" val="false"/> + <a name="labelloc" val="east"/> </comp> - <comp lib="2" loc="(2840,260)" name="Multiplexer"> + <comp lib="2" loc="(860,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(2890,270)" name="Register"/> <comp lib="2" loc="(1960,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(1900,270)" name="Register"/> - <comp lib="2" loc="(750,260)" name="Multiplexer"> + <comp lib="2" loc="(3610,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(1130,270)" name="Register"/> - <comp lib="2" loc="(2180,260)" name="Multiplexer"> + <comp lib="4" loc="(2340,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="(2450,270)" name="Register"/> - <comp lib="2" loc="(2950,260)" name="Multiplexer"> - <a name="width" val="8"/> - <a name="enable" val="false"/> + <comp lib="4" loc="(1130,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"> + <comp lib="4" loc="(1900,270)" name="Register"/> + <comp lib="0" loc="(180,320)" name="Pin"> <a name="tristate" val="false"/> </comp> - <comp lib="2" loc="(970,260)" name="Multiplexer"> + <comp lib="4" loc="(2670,270)" name="Register"/> + <comp lib="4" loc="(2890,270)" name="Register"/> + <comp lib="2" loc="(2620,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(1630,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="(3060,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="(860,260)" name="Multiplexer"> + <comp lib="2" loc="(310,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(1740,260)" name="Multiplexer"> + <comp lib="2" loc="(2070,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(1790,270)" name="Register"/> - <comp lib="0" loc="(150,220)" name="Pin"> - <a name="output" val="true"/> + <comp lib="2" loc="(200,260)" name="Multiplexer"> <a name="width" val="8"/> - <a name="tristate" val="false"/> - <a name="labelloc" val="east"/> - </comp> - <comp lib="0" loc="(180,320)" name="Pin"> - <a name="tristate" val="false"/> + <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(1680,270)" name="Register"/> - <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="4" loc="(3660,270)" name="Register"/> <comp lib="4" loc="(2560,270)" name="Register"/> - <comp lib="4" loc="(910,270)" name="Register"/> - <comp lib="2" loc="(1300,260)" name="Multiplexer"> + <comp lib="2" loc="(2730,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(3170,260)" name="Multiplexer"> + <comp lib="2" loc="(1080,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(3440,270)" name="Register"/> + <comp lib="4" loc="(690,270)" name="Register"/> + <comp lib="4" loc="(910,270)" name="Register"/> <comp lib="0" loc="(150,270)" name="Pin"> <a name="width" val="8"/> <a name="tristate" val="false"/> </comp> - <comp lib="2" loc="(2620,260)" name="Multiplexer"> + <comp lib="4" loc="(1680,270)" name="Register"/> + <comp lib="4" loc="(3000,270)" name="Register"/> + <comp lib="0" loc="(90,330)" name="Pin"> + <a name="tristate" val="false"/> + </comp> + <comp lib="2" loc="(1630,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(1520,260)" name="Multiplexer"> + <comp lib="2" loc="(2840,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="2" loc="(3500,260)" name="Multiplexer"> + <comp lib="4" loc="(580,270)" name="Register"/> + <comp lib="4" loc="(1350,270)" name="Register"/> + <comp lib="4" loc="(3440,270)" name="Register"/> + <comp lib="0" loc="(3670,220)" name="Constant"> + <a name="facing" val="west"/> + <a name="width" val="8"/> + <a name="value" val="0x0"/> + </comp> + <comp lib="2" loc="(1740,260)" name="Multiplexer"> <a name="width" val="8"/> <a name="enable" val="false"/> </comp> - <comp lib="4" loc="(1350,270)" name="Register"/> </circuit> <circuit name="PC"> <a name="circuit" val="PC"/> @@ -4198,52 +4476,52 @@ <wire from="(200,330)" to="(200,350)"/> <wire from="(140,400)" to="(240,400)"/> <wire from="(230,320)" to="(230,380)"/> - <comp lib="2" loc="(220,310)" name="Multiplexer"> - <a name="width" val="8"/> - <a name="enable" val="false"/> - </comp> - <comp lib="4" loc="(260,310)" name="Register"> - <a name="trigger" val="falling"/> + <comp lib="6" loc="(101,297)" name="Text"> + <a name="text" val="Jump Address"/> </comp> - <comp lib="0" loc="(140,320)" name="Pin"> - <a name="width" val="8"/> + <comp lib="0" loc="(140,400)" name="Pin"> <a name="tristate" val="false"/> </comp> + <comp lib="3" loc="(330,320)" name="Adder"/> <comp lib="0" loc="(290,330)" name="Constant"> <a name="width" val="8"/> </comp> - <comp lib="0" loc="(140,430)" name="Pin"> - <a name="tristate" val="false"/> - </comp> - <comp lib="0" loc="(140,400)" name="Pin"> - <a name="tristate" val="false"/> + <comp lib="0" loc="(360,360)" name="Pin"> + <a name="facing" val="west"/> + <a name="output" val="true"/> + <a name="width" val="8"/> + <a name="labelloc" val="east"/> </comp> <comp lib="0" loc="(140,380)" name="Pin"> <a name="tristate" val="false"/> </comp> - <comp lib="1" loc="(200,380)" name="NOT Gate"/> - <comp lib="0" loc="(360,360)" 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="labelloc" val="east"/> </comp> - <comp lib="3" loc="(330,320)" name="Adder"/> - <comp lib="0" loc="(140,350)" name="Pin"> + <comp lib="2" loc="(220,310)" name="Multiplexer"> + <a name="width" val="8"/> + <a name="enable" val="false"/> + </comp> + <comp lib="0" loc="(140,320)" name="Pin"> + <a name="width" val="8"/> + <a name="tristate" val="false"/> + </comp> + <comp lib="0" loc="(140,430)" name="Pin"> <a name="tristate" val="false"/> </comp> <comp lib="6" loc="(79,355)" name="Text"> <a name="text" val="Jump Enable"/> </comp> - <comp lib="6" loc="(101,297)" name="Text"> - <a name="text" val="Jump Address"/> + <comp lib="4" loc="(260,310)" name="Register"> + <a name="trigger" val="falling"/> </comp> - <comp lib="0" loc="(270,360)" name="Pin"> - <a name="facing" val="west"/> - <a name="output" val="true"/> - <a name="width" val="8"/> - <a name="labelloc" val="east"/> + <comp lib="0" loc="(140,350)" name="Pin"> + <a name="tristate" val="false"/> </comp> + <comp lib="1" loc="(200,380)" name="NOT Gate"/> </circuit> <circuit name="ExampleConfigurationROM"> <a name="circuit" val="ExampleConfigurationROM"/> @@ -4470,6 +4748,60 @@ <wire from="(560,710)" to="(570,710)"/> <wire from="(550,380)" to="(560,380)"/> <wire from="(650,80)" to="(660,80)"/> + <comp lib="3" loc="(540,360)" name="Comparator"> + <a name="mode" val="unsigned"/> + </comp> + <comp lib="1" loc="(810,420)" name="Controlled Buffer"> + <a name="facing" val="south"/> + <a name="width" val="8"/> + </comp> + <comp lib="0" loc="(490,920)" name="Probe"> + <a name="facing" val="west"/> + <a name="radix" val="16"/> + <a name="label" val="Output"/> + <a name="labelloc" val="east"/> + <a name="labelfont" val="SansSerif bold 12"/> + </comp> + <comp lib="1" loc="(370,420)" name="OR Gate"> + <a name="facing" val="north"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="3" loc="(540,760)" name="Comparator"> + <a name="mode" val="unsigned"/> + </comp> + <comp lib="1" loc="(860,820)" name="Controlled Buffer"> + <a name="facing" val="south"/> + <a name="width" val="8"/> + </comp> + <comp lib="0" loc="(860,800)" name="Splitter"> + <a name="facing" val="north"/> + <a name="fanout" val="8"/> + <a name="incoming" val="8"/> + <a name="appear" val="right"/> + </comp> + <comp lib="4" loc="(820,60)" name="ROM"> + <a name="addrWidth" val="16"/> + <a name="contents">addr/data: 16 8 +43 20 c4 30 43 fc 9f 43 +80 a7 db 83 9 ab 9b 23 +e7 83 21 bf ab f2 43 70 +f7 83 0 2b db 83 2b 83 +3 43 20 f7 83 3 7 10 +de 83 3 43 20 9f 10 de +53 67 6e 69 70 4 a3 df +83 0 10 7 de df 83 49 +a3 a7 f0 30 db 83 3a 83 +0 57 0 a 67 6e 6f 70 +20 43 fc 9f a3 9b d7 83 +0 83 54 +</a> + </comp> + <comp lib="1" loc="(370,550)" name="OR Gate"> + <a name="facing" val="north"/> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> <comp lib="0" loc="(680,60)" name="Splitter"> <a name="facing" val="west"/> <a name="incoming" val="16"/> @@ -4490,154 +4822,92 @@ <a name="bit14" val="1"/> <a name="bit15" val="1"/> </comp> - <comp lib="1" loc="(860,780)" name="NOT Gate"> - <a name="facing" val="south"/> - <a name="size" val="20"/> + <comp lib="0" loc="(490,890)" name="Probe"> + <a name="facing" val="west"/> + <a name="radix" val="16"/> + <a name="label" val="Address"/> + <a name="labelloc" val="east"/> + <a name="labelfont" val="SansSerif bold 12"/> </comp> - <comp lib="1" loc="(600,770)" name="AND Gate"> + <comp lib="3" loc="(540,20)" name="Comparator"> + <a name="mode" val="unsigned"/> + </comp> + <comp lib="1" loc="(590,510)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> + <comp lib="0" loc="(320,940)" name="Pin"> + <a name="output" val="true"/> + <a name="label" val="IO ENABLE"/> + </comp> <comp lib="6" loc="(330,773)" name="Text"> <a name="text" val="Memory Mapped I/O Port Address"/> <a name="halign" val="right"/> </comp> - <comp lib="3" loc="(540,500)" name="Comparator"> - <a name="mode" val="unsigned"/> - </comp> - <comp lib="5" loc="(700,370)" name="Hex Digit Display"/> - <comp lib="3" loc="(540,360)" name="Comparator"> - <a name="mode" val="unsigned"/> - </comp> - <comp lib="4" loc="(820,60)" name="ROM"> - <a name="addrWidth" val="16"/> - <a name="contents">addr/data: 16 8 -4b c4 30 33 7f 9f 63 a7 -db 83 7 ab 9b 23 e7 83 -1e bf ab f2 5f f7 83 0 -2b db 83 27 83 2 4b f7 -83 2 7 10 de 83 2 4b -9f a7 93 33 7f 9f ab a3 -52 f7 83 0 83 28 -</a> - </comp> - <comp lib="1" loc="(370,260)" name="OR Gate"> - <a name="facing" val="north"/> + <comp lib="1" loc="(640,510)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(690,400)" name="Splitter"> - <a name="facing" val="north"/> - <a name="incoming" val="8"/> - <a name="appear" val="right"/> - <a name="bit1" val="0"/> - <a name="bit2" val="0"/> - <a name="bit3" val="0"/> - <a name="bit4" val="1"/> - <a name="bit5" val="1"/> - <a name="bit6" val="1"/> - <a name="bit7" val="1"/> - </comp> - <comp lib="4" loc="(680,360)" name="Register"/> <comp lib="0" loc="(490,860)" name="Probe"> <a name="facing" val="west"/> + <a name="radix" val="16"/> <a name="label" val="Input"/> <a name="labelloc" val="east"/> <a name="labelfont" val="SansSerif bold 12"/> </comp> - <comp lib="1" loc="(590,20)" name="AND Gate"> + <comp lib="6" loc="(388,63)" name="Text"> + <a name="text" val="Sets the memory-mapped address range"/> + <a name="halign" val="right"/> + </comp> + <comp lib="0" loc="(570,710)" name="Splitter"> + <a name="fanout" val="8"/> + <a name="incoming" val="8"/> + </comp> + <comp lib="1" loc="(640,780)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> - <a name="negate1" val="true"/> </comp> - <comp lib="0" loc="(410,60)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0xfc"/> - </comp> - <comp lib="5" loc="(700,510)" name="Hex Digit Display"/> - <comp lib="6" loc="(329,514)" name="Text"> - <a name="text" val="Memory Mapped I/O Port Address"/> - <a name="halign" val="right"/> - </comp> - <comp lib="0" loc="(860,800)" name="Splitter"> - <a name="facing" val="north"/> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> - <a name="appear" val="right"/> - </comp> - <comp lib="0" loc="(320,940)" name="Pin"> - <a name="output" val="true"/> - <a name="label" val="IO ENABLE"/> - </comp> - <comp lib="1" loc="(860,820)" name="Controlled Buffer"> + <comp lib="4" loc="(680,360)" name="Register"/> + <comp lib="5" loc="(740,370)" name="Hex Digit Display"/> + <comp lib="0" loc="(810,400)" name="Pin"> <a name="facing" val="south"/> <a name="width" val="8"/> + <a name="tristate" val="false"/> </comp> - <comp lib="1" loc="(690,720)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="3"/> - <a name="negate0" val="true"/> - </comp> - <comp lib="1" loc="(690,760)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="3"/> - </comp> - <comp lib="4" loc="(650,80)" name="Register"/> - <comp lib="1" loc="(590,510)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="6" loc="(678,17)" name="Text"> + <a name="text" val="PROGRAM MEMORY"/> + <a name="font" val="SansSerif bold 12"/> + <a name="halign" val="left"/> </comp> - <comp lib="1" loc="(560,710)" name="Controlled Buffer"> - <a name="width" val="8"/> + <comp lib="0" loc="(680,120)" name="Probe"> + <a name="facing" val="west"/> + <a name="label" val="Real Address"/> + <a name="labelloc" val="east"/> </comp> <comp lib="0" loc="(350,510)" name="Constant"> <a name="width" val="8"/> <a name="value" val="0xfd"/> </comp> + <comp lib="3" loc="(540,500)" name="Comparator"> + <a name="mode" val="unsigned"/> + </comp> <comp lib="0" loc="(320,900)" name="Pin"> <a name="output" val="true"/> <a name="label" val="WRITE ACTIVE"/> </comp> - <comp lib="1" loc="(810,560)" name="Controlled Buffer"> - <a name="facing" val="south"/> - <a name="width" val="8"/> - </comp> - <comp lib="0" loc="(320,860)" name="Pin"> - <a name="tristate" val="false"/> - <a name="label" val="RESET"/> - </comp> - <comp lib="1" loc="(810,420)" name="Controlled Buffer"> - <a name="facing" val="south"/> - <a name="width" val="8"/> - </comp> - <comp lib="5" loc="(730,710)" name="TTY"> - <a name="cols" val="80"/> - <a name="trigger" val="falling"/> - </comp> - <comp lib="5" loc="(740,370)" name="Hex Digit Display"/> - <comp lib="6" loc="(656,608)" name="Text"> - <a name="text" val="Output:"/> - <a name="font" val="SansSerif bold 16"/> - <a name="halign" val="left"/> - </comp> - <comp lib="0" loc="(870,760)" name="Splitter"> - <a name="facing" val="south"/> - <a name="fanout" val="7"/> - <a name="incoming" val="7"/> - </comp> - <comp lib="1" loc="(640,370)" name="AND Gate"> + <comp lib="1" loc="(600,90)" name="AND Gate"> <a name="size" val="30"/> - <a name="inputs" val="2"/> + <a name="inputs" val="3"/> </comp> - <comp lib="1" loc="(640,780)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp loc="(220,130)" name="MCU"/> + <comp lib="5" loc="(730,750)" name="Keyboard"> + <a name="buflen" val="80"/> + <a name="trigger" val="falling"/> </comp> - <comp lib="0" loc="(350,370)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0xfe"/> + <comp lib="6" loc="(382,57)" name="Text"> + <a name="halign" val="right"/> </comp> - <comp lib="0" loc="(690,540)" name="Splitter"> + <comp lib="0" loc="(690,400)" name="Splitter"> <a name="facing" val="north"/> <a name="incoming" val="8"/> <a name="appear" val="right"/> @@ -4649,424 +4919,136 @@ db 83 7 ab 9b 23 e7 83 <a name="bit6" val="1"/> <a name="bit7" val="1"/> </comp> - <comp lib="0" loc="(490,890)" name="Probe"> - <a name="facing" val="west"/> - <a name="label" val="Address"/> - <a name="labelloc" val="east"/> - <a name="labelfont" val="SansSerif bold 12"/> - </comp> - <comp lib="0" loc="(320,920)" name="Pin"> - <a name="output" val="true"/> - <a name="label" val="IO ACTIVE"/> - </comp> - <comp lib="3" loc="(540,20)" name="Comparator"> - <a name="mode" val="unsigned"/> - </comp> - <comp lib="6" loc="(330,373)" name="Text"> - <a name="text" val="Memory Mapped I/O Port Address"/> - <a name="halign" val="right"/> - </comp> - <comp lib="4" loc="(680,500)" name="Register"/> - <comp lib="1" loc="(590,370)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="0" loc="(350,770)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0xfc"/> - </comp> - <comp lib="1" loc="(870,140)" name="Controlled Buffer"> - <a name="facing" val="south"/> + <comp lib="0" loc="(430,60)" name="Constant"> <a name="width" val="8"/> - </comp> - <comp lib="1" loc="(600,90)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="3"/> - </comp> - <comp lib="6" loc="(388,63)" name="Text"> - <a name="text" val="Sets the memory-mapped address range"/> - <a name="halign" val="right"/> + <a name="value" val="0xff"/> </comp> <comp lib="3" loc="(540,90)" name="Comparator"> <a name="mode" val="unsigned"/> </comp> - <comp lib="0" loc="(810,540)" name="Pin"> - <a name="facing" val="south"/> - <a name="width" val="8"/> - <a name="tristate" val="false"/> - </comp> - <comp lib="0" loc="(680,120)" name="Probe"> - <a name="facing" val="west"/> - <a name="label" val="Real Address"/> - <a name="labelloc" val="east"/> - </comp> - <comp loc="(220,130)" name="MCU"/> - <comp lib="6" loc="(883,753)" name="Text"> - <a name="text" val=" ← Keyboard"/> - <a name="font" val="SansSerif bold 16"/> - <a name="halign" val="left"/> + <comp lib="1" loc="(640,370)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> </comp> - <comp lib="0" loc="(720,700)" name="Splitter"> - <a name="facing" val="west"/> - <a name="fanout" val="7"/> - <a name="incoming" val="7"/> + <comp lib="0" loc="(690,540)" name="Splitter"> + <a name="facing" val="north"/> + <a name="incoming" val="8"/> <a name="appear" val="right"/> + <a name="bit1" val="0"/> + <a name="bit2" val="0"/> + <a name="bit3" val="0"/> + <a name="bit4" val="1"/> + <a name="bit5" val="1"/> + <a name="bit6" val="1"/> + <a name="bit7" val="1"/> </comp> - <comp lib="5" loc="(740,510)" name="Hex Digit Display"/> - <comp lib="0" loc="(810,400)" name="Pin"> + <comp lib="0" loc="(810,540)" name="Pin"> <a name="facing" val="south"/> <a name="width" val="8"/> <a name="tristate" val="false"/> </comp> - <comp lib="6" loc="(382,57)" name="Text"> + <comp lib="6" loc="(329,514)" name="Text"> + <a name="text" val="Memory Mapped I/O Port Address"/> <a name="halign" val="right"/> </comp> - <comp lib="1" loc="(640,510)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="0" loc="(570,710)" name="Splitter"> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> - </comp> - <comp lib="1" loc="(370,420)" name="OR Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="1" loc="(370,550)" name="OR Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="5" loc="(730,750)" name="Keyboard"> - <a name="buflen" val="80"/> - <a name="trigger" val="falling"/> + <comp lib="0" loc="(320,860)" name="Pin"> + <a name="tristate" val="false"/> + <a name="label" val="RESET"/> </comp> <comp lib="0" loc="(320,880)" name="Clock"> <a name="label" val="CLOCK"/> </comp> - <comp lib="0" loc="(490,920)" name="Probe"> - <a name="facing" val="west"/> - <a name="label" val="Output"/> - <a name="labelloc" val="east"/> - <a name="labelfont" val="SansSerif bold 12"/> - </comp> - <comp lib="6" loc="(678,17)" name="Text"> - <a name="text" val="PROGRAM MEMORY"/> - <a name="font" val="SansSerif bold 12"/> - <a name="halign" val="left"/> - </comp> - <comp lib="0" loc="(430,60)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0xff"/> - </comp> - <comp lib="3" loc="(540,760)" name="Comparator"> - <a name="mode" val="unsigned"/> - </comp> - </circuit> - <circuit name="gridtest"> - <a name="circuit" val="gridtest"/> - <a name="clabel" val=""/> - <a name="clabelup" val="east"/> - <a name="clabelfont" val="SansSerif plain 12"/> - <wire from="(650,530)" to="(650,540)"/> - <wire from="(470,490)" to="(470,880)"/> - <wire from="(820,60)" to="(870,60)"/> - <wire from="(420,540)" to="(420,800)"/> - <wire from="(620,380)" to="(620,390)"/> - <wire from="(600,80)" to="(600,90)"/> - <wire from="(430,390)" to="(620,390)"/> - <wire from="(600,410)" to="(780,410)"/> - <wire from="(220,170)" to="(470,170)"/> - <wire from="(420,400)" to="(420,540)"/> - <wire from="(480,420)" to="(480,560)"/> - <wire from="(480,420)" to="(790,420)"/> - <wire from="(360,280)" to="(360,290)"/> - <wire from="(470,30)" to="(470,50)"/> - <wire from="(430,530)" to="(430,930)"/> - <wire from="(620,100)" to="(620,130)"/> - <wire from="(220,110)" to="(450,110)"/> - <wire from="(450,410)" to="(550,410)"/> - <wire from="(290,800)" to="(290,900)"/> - <wire from="(550,30)" to="(550,70)"/> - <wire from="(550,70)" to="(550,110)"/> - <wire from="(540,90)" to="(560,90)"/> - <wire from="(540,10)" to="(560,10)"/> - <wire from="(470,490)" to="(500,490)"/> - <wire from="(480,560)" to="(480,850)"/> - <wire from="(650,400)" to="(670,400)"/> - <wire from="(460,60)" to="(610,60)"/> - <wire from="(220,210)" to="(430,210)"/> - <wire from="(350,510)" to="(500,510)"/> - <wire from="(430,210)" to="(430,390)"/> - <wire from="(460,470)" to="(600,470)"/> - <wire from="(470,170)" to="(470,350)"/> - <wire from="(410,10)" to="(410,60)"/> - <wire from="(590,20)" to="(850,20)"/> - <wire from="(380,450)" to="(780,450)"/> - <wire from="(850,130)" to="(860,130)"/> - <wire from="(430,100)" to="(500,100)"/> - <wire from="(550,70)" to="(560,70)"/> - <wire from="(640,360)" to="(650,360)"/> - <wire from="(640,80)" to="(650,80)"/> - <wire from="(590,510)" to="(600,510)"/> - <wire from="(600,360)" to="(610,360)"/> - <wire from="(680,370)" to="(680,380)"/> - <wire from="(720,370)" to="(720,380)"/> - <wire from="(620,510)" to="(620,520)"/> - <wire from="(460,330)" to="(460,470)"/> - <wire from="(470,50)" to="(650,50)"/> - <wire from="(220,190)" to="(460,190)"/> - <wire from="(550,520)" to="(550,550)"/> - <wire from="(600,330)" to="(600,360)"/> - <wire from="(650,60)" to="(650,80)"/> - <wire from="(610,60)" to="(610,80)"/> - <wire from="(630,520)" to="(630,540)"/> - <wire from="(600,370)" to="(600,410)"/> - <wire from="(540,500)" to="(560,500)"/> - <wire from="(420,540)" to="(630,540)"/> - <wire from="(380,280)" to="(850,280)"/> - <wire from="(480,850)" to="(490,850)"/> - <wire from="(360,450)" to="(370,450)"/> - <wire from="(360,290)" to="(370,290)"/> - <wire from="(290,800)" to="(420,800)"/> - <wire from="(220,230)" to="(420,230)"/> - <wire from="(670,120)" to="(680,120)"/> - <wire from="(370,130)" to="(370,250)"/> - <wire from="(370,450)" to="(370,570)"/> - <wire from="(550,520)" to="(560,520)"/> - <wire from="(590,80)" to="(600,80)"/> - <wire from="(600,370)" to="(610,370)"/> - <wire from="(600,90)" to="(610,90)"/> - <wire from="(620,520)" to="(620,530)"/> - <wire from="(460,60)" to="(460,190)"/> - <wire from="(430,530)" to="(620,530)"/> - <wire from="(430,130)" to="(620,130)"/> - <wire from="(370,290)" to="(370,420)"/> - <wire from="(640,500)" to="(690,500)"/> - <wire from="(430,390)" to="(430,530)"/> - <wire from="(470,350)" to="(470,490)"/> - <wire from="(450,410)" to="(450,550)"/> - <wire from="(630,520)" to="(690,520)"/> - <wire from="(600,550)" to="(640,550)"/> - <wire from="(480,560)" to="(650,560)"/> - <wire from="(470,50)" to="(470,80)"/> - <wire from="(850,130)" to="(850,280)"/> - <wire from="(450,110)" to="(550,110)"/> - <wire from="(450,550)" to="(550,550)"/> - <wire from="(470,80)" to="(470,170)"/> - <wire from="(850,20)" to="(850,130)"/> - <wire from="(470,350)" to="(500,350)"/> - <wire from="(470,30)" to="(500,30)"/> - <wire from="(450,110)" to="(450,410)"/> - <wire from="(470,880)" to="(490,880)"/> - <wire from="(350,370)" to="(500,370)"/> - <wire from="(280,900)" to="(290,900)"/> - <wire from="(460,330)" to="(600,330)"/> - <wire from="(620,510)" to="(690,510)"/> - <wire from="(370,570)" to="(640,570)"/> - <wire from="(600,500)" to="(610,500)"/> - <wire from="(590,370)" to="(600,370)"/> - <wire from="(220,150)" to="(480,150)"/> - <wire from="(870,140)" to="(870,150)"/> - <wire from="(480,150)" to="(480,420)"/> - <wire from="(460,190)" to="(460,330)"/> - <wire from="(650,530)" to="(690,530)"/> - <wire from="(550,380)" to="(550,410)"/> - <wire from="(430,130)" to="(430,210)"/> - <wire from="(600,470)" to="(600,500)"/> - <wire from="(630,380)" to="(630,400)"/> - <wire from="(640,550)" to="(640,570)"/> - <wire from="(630,100)" to="(630,120)"/> - <wire from="(410,10)" to="(500,10)"/> - <wire from="(600,510)" to="(600,550)"/> - <wire from="(650,360)" to="(650,400)"/> - <wire from="(540,360)" to="(560,360)"/> - <wire from="(780,410)" to="(780,450)"/> - <wire from="(470,80)" to="(500,80)"/> - <wire from="(460,910)" to="(490,910)"/> - <wire from="(690,380)" to="(720,380)"/> - <wire from="(420,400)" to="(630,400)"/> - <wire from="(420,120)" to="(420,230)"/> - <wire from="(420,120)" to="(630,120)"/> - <wire from="(220,130)" to="(370,130)"/> - <wire from="(420,230)" to="(420,400)"/> - <wire from="(430,60)" to="(430,100)"/> - <wire from="(870,60)" to="(870,120)"/> - <wire from="(670,60)" to="(670,120)"/> - <wire from="(670,60)" to="(680,60)"/> - <wire from="(480,150)" to="(870,150)"/> - <wire from="(550,380)" to="(560,380)"/> - <wire from="(600,510)" to="(610,510)"/> - <wire from="(460,470)" to="(460,910)"/> - <comp lib="1" loc="(790,420)" name="Controlled Buffer"> - <a name="facing" val="south"/> - <a name="width" val="8"/> - </comp> - <comp lib="0" loc="(350,510)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0xfd"/> - </comp> - <comp lib="0" loc="(790,400)" name="Pin"> - <a name="facing" val="south"/> - <a name="width" val="8"/> - <a name="tristate" val="false"/> - </comp> - <comp lib="3" loc="(540,360)" name="Comparator"> - <a name="mode" val="unsigned"/> - </comp> - <comp lib="3" loc="(540,500)" name="Comparator"> - <a name="mode" val="unsigned"/> - </comp> - <comp lib="0" loc="(490,910)" name="Probe"> - <a name="facing" val="west"/> - <a name="label" val="Output"/> - <a name="labelloc" val="east"/> - <a name="labelfont" val="SansSerif bold 12"/> + <comp lib="5" loc="(700,370)" name="Hex Digit Display"/> + <comp lib="5" loc="(700,510)" name="Hex Digit Display"/> + <comp lib="4" loc="(680,500)" name="Register"/> + <comp lib="5" loc="(730,710)" name="TTY"> + <a name="cols" val="80"/> + <a name="trigger" val="falling"/> </comp> - <comp lib="1" loc="(650,560)" name="Controlled Buffer"> - <a name="facing" val="south"/> - <a name="width" val="8"/> + <comp lib="1" loc="(690,720)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="3"/> + <a name="negate0" val="true"/> </comp> - <comp lib="5" loc="(680,370)" name="Hex Digit Display"/> - <comp lib="6" loc="(388,63)" name="Text"> - <a name="text" val="Sets the memory-mapped address range"/> - <a name="halign" val="right"/> + <comp lib="6" loc="(656,608)" name="Text"> + <a name="text" val="Output:"/> + <a name="font" val="SansSerif bold 16"/> + <a name="halign" val="left"/> </comp> <comp lib="1" loc="(870,140)" name="Controlled Buffer"> <a name="facing" val="south"/> <a name="width" val="8"/> </comp> - <comp lib="0" loc="(430,60)" name="Constant"> - <a name="width" val="8"/> - <a name="value" val="0xff"/> - </comp> - <comp lib="4" loc="(640,500)" name="Register"/> - <comp lib="0" loc="(490,850)" name="Probe"> - <a name="facing" val="west"/> - <a name="label" val="Input"/> - <a name="labelloc" val="east"/> - <a name="labelfont" val="SansSerif bold 12"/> - </comp> - <comp lib="6" loc="(329,514)" name="Text"> - <a name="text" val="Memory Mapped I/O Port Address"/> - <a name="halign" val="right"/> - </comp> + <comp lib="4" loc="(650,80)" name="Register"/> <comp lib="1" loc="(590,20)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> <a name="negate1" val="true"/> </comp> - <comp lib="1" loc="(370,250)" name="OR Gate"> + <comp lib="0" loc="(320,920)" name="Pin"> + <a name="output" val="true"/> + <a name="label" val="IO ACTIVE"/> + </comp> + <comp lib="1" loc="(370,260)" name="OR Gate"> <a name="facing" val="north"/> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> - <comp lib="1" loc="(590,80)" name="AND Gate"> + <comp lib="1" loc="(590,370)" name="AND Gate"> <a name="size" val="30"/> <a name="inputs" val="2"/> </comp> + <comp lib="5" loc="(740,510)" name="Hex Digit Display"/> <comp lib="6" loc="(330,373)" name="Text"> <a name="text" val="Memory Mapped I/O Port Address"/> <a name="halign" val="right"/> </comp> - <comp lib="0" loc="(680,120)" name="Probe"> - <a name="facing" val="west"/> - <a name="label" val="Real Address"/> - <a name="labelloc" val="east"/> - </comp> - <comp lib="4" loc="(640,360)" name="Register"/> - <comp lib="0" loc="(670,60)" name="Splitter"> - <a name="facing" val="west"/> - <a name="incoming" val="16"/> - <a name="appear" val="center"/> - <a name="bit1" val="0"/> - <a name="bit2" val="0"/> - <a name="bit3" val="0"/> - <a name="bit4" val="0"/> - <a name="bit5" val="0"/> - <a name="bit6" val="0"/> - <a name="bit7" val="0"/> - <a name="bit8" val="1"/> - <a name="bit9" val="1"/> - <a name="bit10" val="1"/> - <a name="bit11" val="1"/> - <a name="bit12" val="1"/> - <a name="bit13" val="1"/> - <a name="bit14" val="1"/> - <a name="bit15" val="1"/> - </comp> - <comp lib="1" loc="(590,510)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="0" loc="(870,760)" name="Splitter"> + <a name="facing" val="south"/> + <a name="fanout" val="7"/> + <a name="incoming" val="7"/> </comp> - <comp lib="0" loc="(350,370)" name="Constant"> + <comp lib="0" loc="(350,770)" name="Constant"> <a name="width" val="8"/> - <a name="value" val="0xfe"/> + <a name="value" val="0xfc"/> </comp> - <comp lib="4" loc="(640,80)" name="Register"/> - <comp loc="(220,130)" name="MCU"/> - <comp lib="0" loc="(670,400)" name="Splitter"> - <a name="facing" val="north"/> - <a name="incoming" val="8"/> + <comp lib="0" loc="(720,700)" name="Splitter"> + <a name="facing" val="west"/> + <a name="fanout" val="7"/> + <a name="incoming" val="7"/> <a name="appear" val="right"/> - <a name="bit1" val="0"/> - <a name="bit2" val="0"/> - <a name="bit3" val="0"/> - <a name="bit4" val="1"/> - <a name="bit5" val="1"/> - <a name="bit6" val="1"/> - <a name="bit7" val="1"/> </comp> - <comp lib="1" loc="(370,420)" name="OR Gate"> - <a name="facing" val="north"/> + <comp lib="1" loc="(690,760)" name="AND Gate"> <a name="size" val="30"/> - <a name="inputs" val="2"/> - </comp> - <comp lib="0" loc="(490,880)" name="Probe"> - <a name="facing" val="west"/> - <a name="label" val="Address"/> - <a name="labelloc" val="east"/> - <a name="labelfont" val="SansSerif bold 12"/> - </comp> - <comp lib="0" loc="(280,900)" name="Pin"> - <a name="facing" val="north"/> - <a name="tristate" val="false"/> - <a name="label" val="RESET"/> + <a name="inputs" val="3"/> </comp> <comp lib="0" loc="(410,60)" name="Constant"> <a name="width" val="8"/> <a name="value" val="0xfc"/> </comp> - <comp lib="3" loc="(540,20)" name="Comparator"> - <a name="mode" val="unsigned"/> + <comp lib="1" loc="(560,710)" name="Controlled Buffer"> + <a name="width" val="8"/> </comp> - <comp lib="1" loc="(590,370)" name="AND Gate"> - <a name="size" val="30"/> - <a name="inputs" val="2"/> + <comp lib="1" loc="(810,560)" name="Controlled Buffer"> + <a name="facing" val="south"/> + <a name="width" val="8"/> </comp> - <comp lib="0" loc="(430,930)" name="Clock"> - <a name="facing" val="north"/> - <a name="label" val="CLOCK"/> - <a name="labelloc" val="east"/> + <comp lib="6" loc="(883,753)" name="Text"> + <a name="text" val=" ← Keyboard"/> + <a name="font" val="SansSerif bold 16"/> + <a name="halign" val="left"/> </comp> - <comp lib="5" loc="(720,370)" name="Hex Digit Display"/> - <comp lib="3" loc="(540,90)" name="Comparator"> - <a name="mode" val="unsigned"/> + <comp lib="0" loc="(350,370)" name="Constant"> + <a name="width" val="8"/> + <a name="value" val="0xfe"/> </comp> - <comp lib="4" loc="(820,60)" name="ROM"> - <a name="addrWidth" val="16"/> - <a name="contents">addr/data: 16 8 -3 4b c4 30 33 7f 9f 3 -63 a7 db 83 9 ab 9b 23 -43 e7 83 23 bf ab f2 3 -5f f7 83 0 2b 43 db 83 -2e 83 3 3 4b f7 83 3 -7 43 10 de 83 3 3 4b -9f a7 93 33 7f 9f ab a3 -52 f7 83 0 83 30 -</a> + <comp lib="1" loc="(600,770)" name="AND Gate"> + <a name="size" val="30"/> + <a name="inputs" val="2"/> + </comp> + <comp lib="1" loc="(860,780)" name="NOT Gate"> + <a name="facing" val="south"/> + <a name="size" val="20"/> </comp> </circuit> </project> diff --git a/ExamplePrograms/README.md b/ExamplePrograms/README.md @@ -20,7 +20,7 @@ Please refer to other examples as reference. ### Argument Legend - * `A,B,C` specifies the positional arguments as types + * `A<type>, B<type> , C<type>` specifies the positional arguments as types * `<GR>` specifies the argument type as a General Register * The following types are accepted: @@ -37,6 +37,8 @@ Please refer to other examples as reference. * Base 16: Prefixed with `0x` * Base 2: Prefixed with `0b` + * `<bytes>` An array of integers within `<0-255>` e.g. `0xff,255,0b11111111` + ## 0 Argument Instructions Do nothing and reset the set operation to ADD @@ -51,7 +53,7 @@ Pop the stack to GRA pop -Program Counter Read - get the program counters current address +Program Counter Read - stores program counter value to `GRC` pcr @@ -101,18 +103,19 @@ Increment memory pointer (set with the `sp` instruction) by `1` ## 1 Argument Instructions -Load immediate to `GRC`. This is a macro for successive lli and lui instructions +Load Lower Immediate to `GRA`, Least Significant 4 bits of a byte - li A<0-255> + lli A<0-15> -Load Lower Immediate to `GRC`, Least Significant 4 bits of a byte +Load Immediate to `GRA`, next byte in program memory is used - lli A<0-15> + li A<0-255> -Load Upper Immediate to `GRC`, Most Significant 4 bits of a byte -> Note: This operation ORs the contents of `GRC`. (you may find this useful) +Load `N` Bytes to `STACK`. `len(<bytes>)` must be > 1 +> Note: This instruction loads a set of bytes on to the stack, in string form +or in byte array form - lui A<0-15> + lni A<bytes> Jumps to particular label unless the flag is set by the `cmp` instruction executed prior to the `jmp` instruction. diff --git a/ExamplePrograms/fibb_test.tac b/ExamplePrograms/fibb_test.tac @@ -1,12 +1,12 @@ # This program computes the classic Fibbonacci sequence ###################### Clear GRA and GRB -start: li 0 +start: lli 0 mov GRA GRB ###################### Set our memory pointer li 254 sp GRA ###################### Set our inital state - li 1 + lli 1 mov GRA GRC ###################### Printout current state loop: sb GRB diff --git a/ExamplePrograms/terminal_test.tac b/ExamplePrograms/terminal_test.tac @@ -0,0 +1,101 @@ +# This program reads the input from the 'keyboard' component and records in a +# buffer until the user presses the return key, at that point it compares the +# buffer with "ping", if the buffer == "ping" then it responds with "pong" +###################### Set up our buffer pointer to live in GRC +setup: li 32 + mov GRA GRC +###################### Set up our polling address +poll: sop_xor + li 252 + sp GRA +###################### Load the bitmask for available data + li 128 +###################### Poll until data is available +p_loop: lb GRB + cmp GRB GRA + jmp p_loop +###################### Handle buffering the data and echo +###################### Echo the byte + sb GRB +###################### Clears the byte out of the buffer in the keyboard + sb GRA +###################### Did we read a backspace character? If so, handle that + lli 8 + cmp GRA GRB + jmp bcksp +###################### Write the byte in the buffer in RAM + sp GRC + sb GRB +###################### Increment the buffer pointer + cin GRC GRC +###################### If we have reached the end of the buffer, restart + li 112 + cmp GRA GRC + jmp setup +###################### If the user pressed the enter key, output the buffer + lli 10 + cmp GRB GRA + jmp cmpr + jmp poll +###################### Handle backspaces +bcksp: li 32 +###################### Are we at the start of the buffer? If so, we can return + cmp GRA GRC + jmp poll +###################### Decrement the buffer pointer + lli 1 + sop_sub + op GRC GRA GRC + jmp poll +###################### Compare the buffer to our commands +cmpr: li 32 + sp GRA +###################### Compute the length of our stored buffer + sop_sub + op GRC GRA GRC +###################### Specify the string we will be comparing, and the length. +###################### This is in reverse order, as the bytes will be pushed to +###################### the stack. The last byte is the first byte out. +###################### The last byte is the length of the string. +# "ping" + lni 0x67,0x6e,0x69,0x70,0x04 +###################### If the length of our string is greater than the buffer, +###################### just exit immediately. + pop + cmp GRC GRA + jmp setup +c_loop: sop_sub +###################### Test if we've reached the end of our comparision buffer. + lli 1 + op GRC GRA GRC + cmp GRC GRA +###################### If we've reached the end and haven't branched out, then +###################### it is a match! + jmp ping +###################### Pop the comparision string and get the buffer byte + pop + lb GRB +###################### Increment our buffer pointer + ptrinc +###################### If the bytes match, continue looping + sop_xor + cmp GRB GRA + jmp c_loop +###################### If the bytes don't match, we quit + jmp setup +###################### Respond to 'ping' with 'pong' +###################### First, load the null-terminated string +# "pong\n\0" +ping: lni 0x00,0x0a,0x67,0x6e,0x6f,0x70 +###################### To test if a byte is null, we compare the byte to itself +###################### with a bitwise AND. + sop_and +###################### Set our output location + li 252 + sp GRA +###################### Print our response string until we've reached the null +p_l: pop + sb GRA + cmp GRA GRA + jmp setup + jmp p_l diff --git a/ExamplePrograms/typing_test.tac b/ExamplePrograms/typing_test.tac @@ -2,14 +2,14 @@ # buffer until the user presses the return key, at that point it dumps the # buffer. ###################### Set up our buffer pointer to live in GRC -setup: lui 32 +setup: li 32 mov GRA GRC ###################### Set up our polling address poll: sop_xor li 252 sp GRA ###################### Load the bitmask for available data - lui 128 + li 128 ###################### Poll until data is available p_loop: lb GRB cmp GRB GRA @@ -29,7 +29,7 @@ p_loop: lb GRB ###################### Increment the buffer pointer cin GRC GRC ###################### If we have reached the end of the buffer, restart - lui 112 + li 112 cmp GRA GRC jmp setup ###################### If the user pressed the enter key, output the buffer @@ -38,7 +38,7 @@ p_loop: lb GRB jmp output jmp poll ###################### Handle backspaces -bcksp: lui 32 +bcksp: li 32 ###################### Are we at the start of the buffer? If so, we can return cmp GRA GRC jmp poll @@ -48,7 +48,7 @@ bcksp: lui 32 op GRC GRA GRC jmp poll ###################### Echo out all the things in the buffer to the TTY -output: lui 32 +output: li 32 o_loop: sp GRA lb GRB push diff --git a/INSTRUCTION_SET b/INSTRUCTION_SET @@ -27,7 +27,8 @@ C B A 01 - NAND ----- C = A nand B C B A 10 - OP ----- C = A (OP) B - perform operation set by SOP_* C B 0010 - CIN ----- C = ++B 00<lo>11 - LLI ----- Load lower immediate to GRA -01<hi>11 - LUI ----- Load upper immediate to GRA +01000011 - LI ----- Load byte immediate to GRA +01<nb>11 - LNI ----- Load <nb> length immediate to stack 10000011 - JMP ----- JMP to address in next program word if flag is false 10010011 - PSH ----- Push GRA to stack 10100011 - POP ----- Pop stack to reg GRA diff --git a/README.md b/README.md @@ -3,33 +3,57 @@ This is a for-fun implementation of a relatively simple micro-architecture, with an assembler to program the simulated implementation in [Logisim](http://www.cburch.com/logisim/). -![TISC v1.4](Screenshots/tiscv1_4.png) +![TISC v2.0](Screenshots/tiscv2_0.png) ## Want to play with it too? The default program loaded in the ExampleConfigurationROM circuit is the -`ExamplePrograms/typing_test.tac` program. The program is an interactive demo +`ExamplePrograms/terminal_test.tac` program. The program is an interactive demo which processes text input from the keyboard component and echoes the text out -to the TTY component. In addition, the program buffers 32 characters and echoes -the buffer once the user inputs a line feed (enter key). +to the TTY component. In addition, the program buffers 32 characters and tests +the buffer once the user inputs a line feed (enter key) against a target string. -![TISC Example configuration](Screenshots/tiscv1_4_example.png) +![TISC Example configuration](Screenshots/tiscv2_0_example.png) ## Compiling the assembler To compile the assembler, I recommend using GCC: - gcc tisc.c -o tisc + $ gcc tisc.c -o tisc ## Using the assembler Once the assembler is compiled, you can assemble TISC assembly code like so: - tisc <input file> <output file> + $ tisc <input file> <output file> If the assembler found no errors in the code, the output file will contain the program that is ready to load into the Logisim circuit. +A successful output will appear like this: + + $ tisc fibb_test.tac out + Assembling tac file: 'fibb_test.tac' + ln# [addr]:label <op> <args> + 002 [0x00]:start lli 0 + 003 [0x01]: mov GRA GRB + 005 [0x02]: li 254 + 006 [0x04]: sp GRA + 008 [0x05]: lli 1 + 009 [0x06]: mov GRA GRC + 011 [0x07]:loop sb GRB + 013 [0x08]: sop_xor + 014 [0x09]: op GRB GRC GRC + 015 [0x0a]: op GRB GRC GRB + 016 [0x0b]: op GRB GRC GRC + 018 [0x0c]: sop_add + 019 [0x0d]: op GRB GRC GRB + 021 [0x0e]: cmp GRB GRC + 022 [0x0f]: jmp loop + 024 [0x11]: sb GRB + 025 [0x12]:end jmp end + Finished assembling tac file: 'fibb_test.tac', program size: 20 bytes + ## Loading a program The provided example application in the circuit ExampleConfigurationROM is a diff --git a/Screenshots/tiscv1_4.png b/Screenshots/tiscv1_4.png Binary files differ. diff --git a/Screenshots/tiscv1_4_example.png b/Screenshots/tiscv1_4_example.png Binary files differ. diff --git a/Screenshots/tiscv2_0.png b/Screenshots/tiscv2_0.png Binary files differ. diff --git a/Screenshots/tiscv2_0_example.png b/Screenshots/tiscv2_0_example.png Binary files differ. diff --git a/tisc.c b/tisc.c @@ -65,6 +65,30 @@ int validins(InstructionDefinition_t *ins, const char *opcode, char *arg[]) return status; } +void add_label(const char* label, int address) +{ + //add label to table 'o' label + strcpy(symbols[validSymbols], label); + addresses[validSymbols] = address; + validSymbols++; +} + +int longest_label() +{ + int i, labelLen = 0; + + for (i = 0; i < validSymbols; i++) + { + int len = strlen(symbols[i]); + if (len > labelLen) + { + labelLen = len; + } + } + + return (labelLen > 5) ? labelLen : 5; +} + int label_address(const char *label) { int i, address = -1; @@ -81,6 +105,20 @@ int label_address(const char *label) return address; } +void update_label(const char* label, int address) +{ + int i; + + for (i = 0; i < validSymbols; i++) + { + if (strncmp(symbols[i], label, strlen(symbols[i])) == 0) + { + addresses[i] = address; + break; + } + } +} + int labelexists(const char *label) { int i, status = 0; @@ -96,7 +134,7 @@ int labelexists(const char *label) return status; } -int process_label(char *label, int address) +int process_label_initial(char *label, int address) { int status = 0; @@ -105,11 +143,30 @@ int process_label(char *label, int address) //duplicate label check if (labelexists(label) == 0) { - //add label to table 'o' label - strcpy(symbols[validSymbols], label); - addresses[validSymbols] = address; - validSymbols++; + add_label(label, address); + + status = 1; + } + } + else + { + status = 1; + } + + return status; +} + +int process_label_final(char *label, int address) +{ + int status = 0; + if (label != NULL) + { + //make sure the label exists + if (labelexists(label) == 1) + { + update_label(label, address); + status = 1; } } @@ -248,7 +305,7 @@ int stringToInteger(char* str) return return_value; } -int assemble_immediate( +int assemble_lli( InstructionDefinition_t *definition, char* arg[3], uint8_t* write_buffer) { @@ -256,19 +313,16 @@ int assemble_immediate( int immediate_value = stringToInteger(arg[0]); - if ((immediate_value & 0x0F) == 0) - { - immediate_value = immediate_value >> 4; - write_buffer[0] = definition->opcode_mask | immediate_value << 2; - - return_value = 1; - } else if ((immediate_value & 0xF0) == 0) { write_buffer[0] = definition->opcode_mask | immediate_value << 2; return_value = 1; - + } + else + { + printf("FATAL: Value provided is invalid: (%i)", immediate_value); + printf("FATAL: Value must not be > 15"); } return return_value; @@ -282,11 +336,72 @@ int assemble_li( int immediate_value = stringToInteger(arg[0]); - if (immediate_value <= 0xFF && immediate_value >= 0) + if (immediate_value < 256 && immediate_value >= 0) + { + write_buffer[0] = definition->opcode_mask; + write_buffer[1] = immediate_value; + + return_value = 1; + } + else + { + printf("FATAL: value provided is invalid %i\n", immediate_value); + printf("FATAL: value must be < 256 && >= 0\n"); + } + + return return_value; +} + +int assemble_lni( + InstructionDefinition_t *definition, + char* arg[3], uint8_t* write_buffer) +{ + int return_value = 0; + + int byte_len = 0; + int bytes[16]; + + char* byte_str = strtok(arg[0], ","); + + while (byte_str != NULL) + { + int value = stringToInteger(byte_str); + + if (value > 255 || value < 0) + { + byte_len = 0; + printf("FATAL: value provided is invalid %i\n", value); + break; + } + + byte_str = strtok(NULL, ","); + bytes[byte_len] = value; + byte_len++; + + if (byte_len > 16) + { + byte_len = 0; + printf("FATAL: byte array has too many elements. length must be <= 16\n"); + break; + } + } + + if (byte_len <= 1) { - write_buffer[0] = 0x03 | (immediate_value & 0x0F) << 2; - write_buffer[1] = 0x43 | ((immediate_value & 0xF0) >> 4) << 2; - + printf("FATAL: must provide byte array length > 1\n"); + } + + if (byte_len > 1) + { + definition->instructionLength = byte_len + 1; + + write_buffer[0] = definition->opcode_mask | (byte_len - 1) << 2; + + for (int i = 1; (i-1) < byte_len; i++) + { + write_buffer[i] = bytes[i - 1]; + } + return_value = 1; } @@ -331,9 +446,9 @@ InstructionDefinition_t definitions[TOT_INSTRUCTIONS] = { "sop_lsh", 0, 1, 0x60, assemble_0arg }, { "sop_rsh", 0, 1, 0x70, assemble_0arg }, { "ptrinc", 0, 1, 0xF0, assemble_0arg }, - { "li", 1, 2, 0x00, assemble_li }, - { "lli", 1, 1, 0x03, assemble_immediate }, - { "lui", 1, 1, 0x43, assemble_immediate }, + { "lli", 1, 1, 0x03, assemble_lli }, + { "lni", 1, 1, 0x43, assemble_lni }, + { "li", 1, 2, 0x43, assemble_li }, { "jmp", 1, 2, 0x83, assemble_jmp }, { "lb", 1, 1, 0x87, assemble_1arg }, { "sb", 1, 1, 0x8B, assemble_1arg }, @@ -411,7 +526,27 @@ int parse(int* line_number, FILE *file, char *line, char **label, char **opcode, return success; } -/* int preprocess -> 1st pass over file, links symbols to address +/* int labelprocess -> 1st pass over file, defines all labels + */ +int labelprocess(int line, int *address, char *label, char *opcode, + char *arg[3]) +{ + + int status = 1; + + if (process_label_initial(label, 0) == 0) + { + printf( + "Error:%i: re-use of existing label '%s'\n", + line, label ); + + status = 0; + } + + return status; +} + +/* int preprocess -> 2nd pass over file, links symbols to address and reports syntax errors, fails if returns -1 */ int preprocess(int line, int *address, char *label, char *opcode, char *arg[3]) @@ -450,31 +585,24 @@ int preprocess(int line, int *address, char *label, char *opcode, status = 0; } - if (status) - { - if (process_label(label, *address) == 0) - { - printf( - "Error:%i: re-use of existing label '%s'\n", - line, label ); - - status = 0; - } - } + process_label_final(label, *address); if (status) { + uint8_t test_buffer[32]; + status = ins->assemble(ins, arg, test_buffer); + *address = *address + ins->instructionLength; } return status; } -/* int process -> 2nd pass over file, instructions are turned into +/* int process -> 3rd pass over file, instructions are turned into machine code with symbols filled in as adresses, fails if returns -1 */ int process(int line, int* address, uint8_t *buffer, char *label, char *opcode, - char *arg[3]) + char *arg[3]) { int status = 0; @@ -493,6 +621,56 @@ int process(int line, int* address, uint8_t *buffer, char *label, char *opcode, return status; } +void print_instruction_header(int label_width) +{ + char* label_str = (char*)malloc(sizeof(char) * (label_width + 1)); + for (int i = 0; i < label_width; i++) + { + label_str[i] = ' '; + } + label_str[label_width] = '\0'; + strncpy(label_str, "label", 5); + + printf("ln# [addr]:%s <op> <args>\n", label_str); +} + +/* void print_instruction -> prints the instruction with some helpful information + about the source line number, the physical address, the label the instruction has, + and the args for that instruction +*/ +void print_instruction(int line, int* address, char *label, char *opcode, char *arg[3], int label_width) +{ + int len = 0; + for (int i = 0; arg[i] != NULL && i < 3; i++) + { + len += strlen(arg[i]) + 1; + } + char* arg_str = ""; + if (len > 0) + { + arg_str = (char*)malloc(sizeof(char) * len); + + for (int i = 0; arg[i] != NULL && i < 3; i++) + { + sprintf(arg_str, "%s%s\t", arg_str, arg[i]); + } + } + + char* label_str = (char*)malloc(sizeof(char) * (label_width + 1)); + for (int i = 0; i < label_width; i++) + { + label_str[i] = ' '; + } + label_str[label_width] = '\0'; + + if (label != NULL) + { + strncpy(label_str, label, strlen(label)); + } + + printf("%03i [0x%02x]:%s %s\t%s\n", line, *address, label_str, opcode, arg_str); +} + int output_file(FILE* output, uint8_t* bytes, int size) { fprintf(output, "v2.0 raw"); @@ -538,6 +716,22 @@ int main(int argc, char *argv[]) printf("Error opening file '%s'\n", output); goto DITCH; } + printf("Assembling tac file: '%s'\n", input); + + while (parse(&line_number, inputf, line, &label, &opcodes, args)) + { + if (labelprocess(line_number, &address, label, opcodes, args) == 0) + { + printf("Labelprocess: Error on line #%i\n", line_number); + + goto CLOSEFILES; + } + } + + address = 0; + line_number = 0; + + rewind(inputf); while (parse(&line_number, inputf, line, &label, &opcodes, args)) { @@ -565,9 +759,15 @@ int main(int argc, char *argv[]) { address = 0; line_number = 0; - + + int label_width = longest_label(); + + print_instruction_header(label_width); + while (parse(&line_number, inputf, line, &label, &opcodes, args)) { + print_instruction(line_number - 1, &address, label, opcodes, args, label_width); + if (process(line_number, &address, w_buffer, label, opcodes, args) == 0) { printf("Process: Error on line #%i\n", line_number); @@ -578,6 +778,8 @@ int main(int argc, char *argv[]) // Output Logisim raw v2.0 format + printf("Finished assembling tac file: '%s', program size: %i byte%s\n", input, full_size, (full_size > 1) ? "s":""); + output_file(outputf, w_buffer, full_size); free(w_buffer);