diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2023-04-10 13:15:59 +0300 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2023-04-10 13:15:59 +0300 |
| commit | f07900a66952edb27114b8bdd68efc397b995796 (patch) | |
| tree | cbb13e08b222cab594332ae11d863e793528799a | |
| parent | a58375eee5d607fbb44620752195eafb9407685e (diff) | |
Add ext system
| -rw-r--r-- | logisim/CPU16.circ | 4344 | ||||
| -rwxr-xr-x | src/assembler.py | 215 | ||||
| -rw-r--r-- | src/assembler_eval.py | 39 | ||||
| -rw-r--r-- | src/assembler_ops.py | 108 | ||||
| -rw-r--r-- | src/ext_std.py | 24 | ||||
| -rw-r--r-- | src/test.atk16 | 2 | ||||
| -rwxr-xr-x | src/ucode.py | 2 |
7 files changed, 205 insertions, 4529 deletions
diff --git a/logisim/CPU16.circ b/logisim/CPU16.circ deleted file mode 100644 index 6f1610b..0000000 --- a/logisim/CPU16.circ +++ /dev/null @@ -1,4344 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<project source="3.8.0" version="1.0"> - This file is intended to be loaded by Logisim-evolution v3.8.0(https://github.com/logisim-evolution/). - - <lib desc="#Wiring" name="0"> - <tool name="Splitter"> - <a name="fanout" val="3"/> - <a name="incoming" val="3"/> - </tool> - <tool name="Pin"> - <a name="appearance" val="classic"/> - </tool> - <tool name="Probe"> - <a name="appearance" val="classic"/> - <a name="facing" val="west"/> - </tool> - <tool name="Tunnel"> - <a name="facing" val="north"/> - </tool> - <tool name="Pull Resistor"> - <a name="facing" val="north"/> - </tool> - <tool name="Power"> - <a name="facing" val="west"/> - </tool> - <tool name="Ground"> - <a name="facing" val="west"/> - </tool> - <tool name="Bit Extender"> - <a name="type" val="input"/> - </tool> - </lib> - <lib desc="#Gates" name="1"> - <tool name="NOT Gate"> - <a name="size" val="20"/> - </tool> - <tool name="AND Gate"> - <a name="inputs" val="3"/> - <a name="size" val="30"/> - </tool> - <tool name="NAND Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - </tool> - <tool name="NOR Gate"> - <a name="inputs" val="3"/> - <a name="size" val="30"/> - </tool> - <tool name="XOR Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - </tool> - <tool name="XNOR Gate"> - <a name="inputs" val="5"/> - </tool> - <tool name="Odd Parity"> - <a name="inputs" val="5"/> - </tool> - <tool name="Even Parity"> - <a name="inputs" val="5"/> - </tool> - </lib> - <lib desc="#Plexers" name="2"> - <tool name="Multiplexer"> - <a name="enable" val="true"/> - </tool> - <tool name="Demultiplexer"> - <a name="enable" val="true"/> - </tool> - <tool name="Decoder"> - <a name="enable" val="false"/> - </tool> - </lib> - <lib desc="#Arithmetic" name="3"/> - <lib desc="#Memory" name="4"> - <tool name="D Flip-Flop"> - <a name="labelfont" val="SansSerif plain 12"/> - </tool> - <tool name="T Flip-Flop"> - <a name="labelfont" val="SansSerif plain 12"/> - </tool> - <tool name="J-K Flip-Flop"> - <a name="labelfont" val="SansSerif plain 12"/> - </tool> - <tool name="S-R Flip-Flop"> - <a name="labelfont" val="SansSerif plain 12"/> - </tool> - <tool name="Register"> - <a name="labelfont" val="SansSerif plain 12"/> - </tool> - <tool name="Counter"> - <a name="labelfont" val="SansSerif plain 12"/> - </tool> - <tool name="Shift Register"> - <a name="labelfont" val="SansSerif plain 12"/> - </tool> - <tool name="Random"> - <a name="labelfont" val="SansSerif plain 12"/> - </tool> - </lib> - <lib desc="#I/O" name="5"> - <tool name="Button"> - <a name="labelcolor" val="#000000"/> - <a name="labelfont" val="SansSerif plain 12"/> - <a name="labelloc" val="center"/> - </tool> - <tool name="LED"> - <a name="labelcolor" val="#000000"/> - <a name="labelfont" val="SansSerif plain 12"/> - <a name="labelloc" val="center"/> - </tool> - <tool name="DotMatrix"> - <a name="offcolor" val="#404040"/> - </tool> - </lib> - <lib desc="#TTL" name="6"/> - <lib desc="#TCL" name="7"/> - <lib desc="#Base" name="8"> - <tool name="Text Tool"> - <a name="font" val="SansSerif plain 12"/> - <a name="halign" val="left"/> - <a name="valign" val="center"/> - </tool> - </lib> - <lib desc="#BFH-Praktika" name="9"/> - <lib desc="#Input/Output-Extra" name="10"/> - <lib desc="#Soc" name="11"/> - <main name="TestBench"/> - <options> - <a name="gateUndefined" val="ignore"/> - <a name="simlimit" val="1000"/> - <a name="simrand" val="0"/> - </options> - <mappings> - <tool lib="8" map="Button2" name="Poke Tool"/> - <tool lib="8" map="Button3" name="Menu Tool"/> - <tool lib="8" map="Ctrl Button1" name="Menu Tool"/> - </mappings> - <toolbar> - <tool lib="8" name="Poke Tool"/> - <tool lib="8" name="Edit Tool"/> - <tool lib="8" name="Wiring Tool"/> - <tool lib="8" name="Text Tool"> - <a name="font" val="SansSerif plain 12"/> - <a name="halign" val="left"/> - <a name="valign" val="center"/> - </tool> - <sep/> - <tool lib="0" name="Pin"/> - <tool lib="0" name="Pin"> - <a name="facing" val="west"/> - <a name="output" val="true"/> - </tool> - <sep/> - <tool lib="1" name="NOT Gate"/> - <tool lib="1" name="AND Gate"/> - <tool lib="1" name="OR Gate"/> - <tool lib="1" name="XOR Gate"/> - <tool lib="1" name="NAND Gate"/> - <tool lib="1" name="NOR Gate"/> - <sep/> - <tool lib="4" name="D Flip-Flop"/> - <tool lib="4" name="Register"/> - </toolbar> - <circuit name="CPU16"> - <a name="appearance" val="logisim_evolution"/> - <a name="circuit" val="CPU16"/> - <a name="circuitnamedboxfixedsize" val="true"/> - <a name="simulationFrequency" val="16.0"/> - <comp lib="0" loc="(100,910)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="IR_C3"/> - <a name="width" val="3"/> - </comp> - <comp lib="0" loc="(100,940)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="IR_B3"/> - <a name="width" val="3"/> - </comp> - <comp lib="0" loc="(1000,550)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="MAR_IE"/> - </comp> - <comp lib="0" loc="(1000,590)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="RESET"/> - </comp> - <comp lib="0" loc="(1010,1210)" name="Tunnel"> - <a name="facing" val="north"/> - <a name="label" val="ALU_OE"/> - </comp> - <comp lib="0" loc="(1030,1120)" name="Probe"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="south"/> - <a name="label" val="ALU_RES"/> - <a name="labelloc" val="north"/> - <a name="radix" val="16"/> - </comp> - <comp lib="0" loc="(1080,570)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="CLK"/> - </comp> - <comp lib="0" loc="(1080,610)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="MEM_IE"/> - </comp> - <comp lib="0" loc="(110,800)" name="Tunnel"> - <a name="facing" val="north"/> - <a name="label" val="RESET"/> - </comp> - <comp lib="0" loc="(110,880)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="IR_D3"/> - <a name="width" val="3"/> - </comp> - <comp lib="0" loc="(110,970)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="IR_A3"/> - <a name="width" val="3"/> - </comp> - <comp lib="0" loc="(1100,1500)" name="Splitter"> - <a name="fanout" val="4"/> - <a name="incoming" val="4"/> - </comp> - <comp lib="0" loc="(1100,1500)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="OPCODE"/> - <a name="width" val="4"/> - </comp> - <comp lib="0" loc="(1110,1410)" name="Splitter"> - <a name="appear" val="right"/> - <a name="fanout" val="3"/> - <a name="incoming" val="3"/> - </comp> - <comp lib="0" loc="(1150,1410)" name="Splitter"> - <a name="facing" val="west"/> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> - </comp> - <comp lib="0" loc="(1170,1200)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="CLK"/> - </comp> - <comp lib="0" loc="(1210,1220)" name="Tunnel"> - <a name="facing" val="north"/> - <a name="label" val="RESET"/> - </comp> - <comp lib="0" loc="(1260,1110)" name="Probe"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(1390,1460)" name="Splitter"> - <a name="appear" val="right"/> - <a name="fanout" val="16"/> - <a name="incoming" val="16"/> - <a name="spacing" val="2"/> - </comp> - <comp lib="0" loc="(140,730)" name="Splitter"> - <a name="fanout" val="16"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(140,900)" name="Splitter"> - <a name="bit1" val="0"/> - <a name="bit10" val="3"/> - <a name="bit11" val="3"/> - <a name="bit2" val="0"/> - <a name="bit3" val="1"/> - <a name="bit4" val="1"/> - <a name="bit5" val="1"/> - <a name="bit6" val="2"/> - <a name="bit7" val="2"/> - <a name="bit8" val="2"/> - <a name="bit9" val="3"/> - <a name="facing" val="west"/> - <a name="fanout" val="4"/> - <a name="incoming" val="12"/> - </comp> - <comp lib="0" loc="(1420,1470)" name="Tunnel"> - <a name="label" val="PC_CO"/> - </comp> - <comp lib="0" loc="(1420,1510)" name="Tunnel"> - <a name="label" val="PC_OE"/> - </comp> - <comp lib="0" loc="(1420,1550)" name="Tunnel"> - <a name="label" val="MEM_IE"/> - </comp> - <comp lib="0" loc="(1420,1590)" name="Tunnel"> - <a name="label" val="R1_IE"/> - </comp> - <comp lib="0" loc="(1420,1630)" name="Tunnel"> - <a name="label" val="R2_IE"/> - </comp> - <comp lib="0" loc="(1420,1670)" name="Tunnel"> - <a name="label" val="IR_IE"/> - </comp> - <comp lib="0" loc="(1420,1710)" name="Tunnel"> - <a name="label" val="L12_OE"/> - </comp> - <comp lib="0" loc="(1420,1750)" name="Tunnel"> - <a name="label" val="HALT"/> - </comp> - <comp lib="0" loc="(150,900)" name="Tunnel"> - <a name="label" val="IR_12"/> - <a name="width" val="12"/> - </comp> - <comp lib="0" loc="(1500,1490)" name="Tunnel"> - <a name="label" val="PC_IE"/> - </comp> - <comp lib="0" loc="(1500,1530)" name="Tunnel"> - <a name="label" val="MAR_IE"/> - </comp> - <comp lib="0" loc="(1500,1570)" name="Tunnel"> - <a name="label" val="MEM_OE"/> - </comp> - <comp lib="0" loc="(1500,1610)" name="Tunnel"> - <a name="label" val="R1_OE"/> - </comp> - <comp lib="0" loc="(1500,1650)" name="Tunnel"> - <a name="label" val="R2_OE"/> - </comp> - <comp lib="0" loc="(1500,1690)" name="Tunnel"> - <a name="label" val="L9_OE"/> - </comp> - <comp lib="0" loc="(1500,1730)" name="Tunnel"> - <a name="label" val="ALU_OE"/> - </comp> - <comp lib="0" loc="(1500,1770)" name="Tunnel"> - <a name="label" val="US_RS"/> - </comp> - <comp lib="0" loc="(160,510)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="IR_B3"/> - <a name="width" val="3"/> - </comp> - <comp lib="0" loc="(180,1430)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="US_RS"/> - </comp> - <comp lib="0" loc="(180,1490)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="CLK"/> - </comp> - <comp lib="0" loc="(190,1240)" name="Splitter"> - <a name="fanout" val="7"/> - <a name="incoming" val="7"/> - </comp> - <comp lib="0" loc="(190,800)" name="Tunnel"> - <a name="label" val="OPCODE"/> - <a name="width" val="4"/> - </comp> - <comp lib="0" loc="(190,840)" name="Tunnel"> - <a name="label" val="OP_PARITY"/> - </comp> - <comp lib="0" loc="(200,730)" name="Splitter"> - <a name="appear" val="right"/> - <a name="facing" val="west"/> - <a name="fanout" val="4"/> - <a name="incoming" val="4"/> - </comp> - <comp lib="0" loc="(210,470)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="IR_C3"/> - <a name="width" val="3"/> - </comp> - <comp lib="0" loc="(210,520)" name="Splitter"> - <a name="facing" val="west"/> - <a name="fanout" val="3"/> - <a name="incoming" val="3"/> - </comp> - <comp lib="0" loc="(220,690)" name="Splitter"> - <a name="appear" val="right"/> - <a name="facing" val="west"/> - <a name="fanout" val="3"/> - <a name="incoming" val="3"/> - </comp> - <comp lib="0" loc="(230,1160)" name="Splitter"> - <a name="facing" val="west"/> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> - </comp> - <comp lib="0" loc="(230,750)" name="Tunnel"> - <a name="label" val="IR_A3"/> - <a name="width" val="3"/> - </comp> - <comp lib="0" loc="(240,1400)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="RESET"/> - </comp> - <comp lib="0" loc="(250,1170)" name="NoConnect"> - <a name="width" val="8"/> - </comp> - <comp lib="0" loc="(260,1290)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="CLK"/> - </comp> - <comp lib="0" loc="(260,130)" name="Tunnel"> - <a name="label" val="RESET"/> - </comp> - <comp lib="0" loc="(260,480)" name="Splitter"> - <a name="facing" val="west"/> - <a name="fanout" val="3"/> - <a name="incoming" val="3"/> - </comp> - <comp lib="0" loc="(270,1150)" name="Splitter"> - <a name="bit1" val="0"/> - <a name="bit10" val="1"/> - <a name="bit11" val="1"/> - <a name="bit12" val="1"/> - <a name="bit13" val="1"/> - <a name="bit14" val="1"/> - <a name="bit15" val="1"/> - <a name="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="facing" val="west"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(270,430)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="IR_D3"/> - <a name="width" val="3"/> - </comp> - <comp lib="0" loc="(290,1000)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="IR_A3"/> - <a name="width" val="3"/> - </comp> - <comp lib="0" loc="(290,1040)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="R2_IE"/> - </comp> - <comp lib="0" loc="(290,1080)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="ALU_OE"/> - </comp> - <comp lib="0" loc="(290,960)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="R1_IE"/> - </comp> - <comp lib="0" loc="(300,1320)" name="Tunnel"> - <a name="facing" val="north"/> - <a name="label" val="RESET"/> - </comp> - <comp lib="0" loc="(300,300)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="PC_CO"/> - </comp> - <comp lib="0" loc="(310,1440)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(310,1460)" name="Power"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(310,1480)" name="Power"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(310,300)" name="Pull Resistor"/> - <comp lib="0" loc="(310,560)" name="Splitter"> - <a name="facing" val="west"/> - <a name="fanout" val="9"/> - <a name="incoming" val="9"/> - </comp> - <comp lib="0" loc="(320,440)" name="Splitter"> - <a name="facing" val="west"/> - <a name="fanout" val="3"/> - <a name="incoming" val="3"/> - </comp> - <comp lib="0" loc="(340,570)" name="Tunnel"> - <a name="facing" val="north"/> - <a name="label" val="IR_L9"/> - <a name="width" val="9"/> - </comp> - <comp lib="0" loc="(350,250)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="PC_IE"/> - </comp> - <comp lib="0" loc="(350,320)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="CLK"/> - </comp> - <comp lib="0" loc="(350,900)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="CLK"/> - </comp> - <comp lib="0" loc="(360,1020)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="R2_OE"/> - </comp> - <comp lib="0" loc="(360,1060)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="IR_B3"/> - <a name="width" val="3"/> - </comp> - <comp lib="0" loc="(360,1100)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="IR_C3"/> - <a name="width" val="3"/> - </comp> - <comp lib="0" loc="(360,260)" name="Pull Resistor"> - <a name="facing" val="north"/> - </comp> - <comp lib="0" loc="(360,940)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="RESET"/> - </comp> - <comp lib="0" loc="(360,980)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="R1_OE"/> - </comp> - <comp lib="0" loc="(380,230)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="RESET"/> - </comp> - <comp lib="0" loc="(390,280)" name="Power"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(430,730)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="IR_L9"/> - <a name="width" val="9"/> - </comp> - <comp lib="0" loc="(430,800)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="IR_12"/> - <a name="width" val="12"/> - </comp> - <comp lib="0" loc="(450,100)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="HALT"/> - </comp> - <comp lib="0" loc="(490,70)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="label" val="CLK"/> - </comp> - <comp lib="0" loc="(500,730)" name="Bit Extender"> - <a name="in_width" val="9"/> - <a name="type" val="zero"/> - </comp> - <comp lib="0" loc="(500,800)" name="Bit Extender"> - <a name="in_width" val="12"/> - <a name="type" val="zero"/> - </comp> - <comp lib="0" loc="(510,130)" name="Pull Resistor"> - <a name="facing" val="north"/> - </comp> - <comp lib="0" loc="(540,750)" name="Tunnel"> - <a name="facing" val="north"/> - <a name="label" val="L9_OE"/> - </comp> - <comp lib="0" loc="(540,820)" name="Tunnel"> - <a name="facing" val="north"/> - <a name="label" val="L12_OE"/> - </comp> - <comp lib="0" loc="(560,130)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="west"/> - <a name="label" val="HALT"/> - <a name="output" val="true"/> - </comp> - <comp lib="0" loc="(570,90)" name="Tunnel"> - <a name="label" val="CLK"/> - </comp> - <comp lib="0" loc="(590,1270)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="IR_D3"/> - <a name="width" val="3"/> - </comp> - <comp lib="0" loc="(60,760)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="IR_IE"/> - </comp> - <comp lib="0" loc="(620,1240)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="OP_PARITY"/> - </comp> - <comp lib="0" loc="(620,300)" name="Tunnel"> - <a name="label" val="PC_OUT"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(640,1040)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="west"/> - <a name="label" val="RA_OUT"/> - <a name="output" val="true"/> - <a name="radix" val="16"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(640,1270)" name="Bit Extender"> - <a name="in_width" val="3"/> - <a name="out_width" val="4"/> - <a name="type" val="input"/> - </comp> - <comp lib="0" loc="(640,360)" name="Tunnel"> - <a name="facing" val="north"/> - <a name="label" val="PC_OE"/> - </comp> - <comp lib="0" loc="(650,1010)" name="Probe"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="west"/> - <a name="label" val="PB"/> - </comp> - <comp lib="0" loc="(650,960)" name="Probe"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="west"/> - <a name="label" val="PA"/> - </comp> - <comp lib="0" loc="(680,1080)" name="Probe"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="west"/> - <a name="label" val="ALU_L"/> - <a name="radix" val="16"/> - </comp> - <comp lib="0" loc="(680,1110)" name="Probe"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="west"/> - <a name="label" val="ALU_R"/> - <a name="radix" val="16"/> - </comp> - <comp lib="0" loc="(70,790)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="CLK"/> - </comp> - <comp lib="0" loc="(750,1500)" name="Splitter"> - <a name="fanout" val="3"/> - <a name="incoming" val="3"/> - </comp> - <comp lib="0" loc="(750,1500)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="IR_A3"/> - <a name="width" val="3"/> - </comp> - <comp lib="0" loc="(770,1490)" name="NoConnect"/> - <comp lib="0" loc="(790,1490)" name="Splitter"> - <a name="appear" val="right"/> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(830,320)" name="Probe"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="south"/> - </comp> - <comp lib="0" loc="(860,1510)" name="Splitter"> - <a name="appear" val="right"/> - <a name="facing" val="west"/> - <a name="fanout" val="4"/> - <a name="incoming" val="4"/> - </comp> - <comp lib="0" loc="(890,340)" name="Pull Resistor"> - <a name="facing" val="north"/> - </comp> - <comp lib="0" loc="(920,340)" name="Probe"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="west"/> - <a name="radix" val="16"/> - </comp> - <comp lib="0" loc="(940,1070)" name="Probe"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="south"/> - <a name="label" val="ALU_FLAGS"/> - </comp> - <comp lib="0" loc="(950,1450)" name="Splitter"> - <a name="appear" val="right"/> - <a name="fanout" val="4"/> - <a name="incoming" val="4"/> - </comp> - <comp lib="0" loc="(990,630)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="MEM_OE"/> - </comp> - <comp lib="1" loc="(1020,1150)" name="Controlled Buffer"> - <a name="width" val="16"/> - </comp> - <comp lib="1" loc="(1050,1450)" name="OR Gate"> - <a name="inputs" val="4"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(240,1430)" name="AND Gate"> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(270,1490)" name="NOT Gate"> - <a name="size" val="20"/> - </comp> - <comp lib="1" loc="(290,1420)" name="OR Gate"> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(550,730)" name="Controlled Buffer"> - <a name="width" val="16"/> - </comp> - <comp lib="1" loc="(550,800)" name="Controlled Buffer"> - <a name="width" val="16"/> - </comp> - <comp lib="1" loc="(560,90)" name="AND Gate"> - <a name="negate1" val="true"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(650,340)" name="Controlled Buffer"> - <a name="width" val="16"/> - </comp> - <comp lib="1" loc="(940,1450)" name="AND Gate"> - <a name="size" val="30"/> - <a name="width" val="4"/> - </comp> - <comp lib="2" loc="(820,1510)" name="Decoder"> - <a name="enable" val="false"/> - <a name="select" val="2"/> - </comp> - <comp lib="4" loc="(1150,1400)" name="ROM"> - <a name="appearance" val="logisim_evolution"/> - <a name="contents">addr/data: 8 16 -c 421 2000 8000 4*0 c 421 2000 -8000 4*0 c 421 2000 8000 4*0 c -421 2000 8000 4*0 c 421 88 120 -8000 0 0 0 c 421 88 120 -8000 0 0 0 c 421 88 210 -8000 0 0 0 c 421 88 210 -8000 0 0 0 c 421 840 8000 -4*0 c 421 840 8000 4*0 c 421 -82 8000 4*0 c 421 82 8000 4*0 -c 421 8000 5*0 c 421 202 8000 -4*0 c 421 8000 5*0 c 421 8000 -5*0 c 421 8000 5*0 c 421 8000 -5*0 c 421 8000 5*0 c 421 8000 -5*0 c 421 8000 5*0 c 421 8000 -5*0 c 421 8000 5*0 c 421 8000 -5*0 c 421 8000 5*0 c 421 8000 -5*0 c 421 8000 5*0 c 421 8000 -5*0 c 421 4000 5*0 c 421 4000 -</a> - <a name="dataWidth" val="16"/> - <a name="label" val="UCODE"/> - <a name="labelvisible" val="true"/> - </comp> - <comp lib="4" loc="(1180,1120)" name="Register"> - <a name="appearance" val="logisim_evolution"/> - <a name="label" val="FR"/> - <a name="showInTab" val="true"/> - <a name="trigger" val="high"/> - <a name="width" val="4"/> - </comp> - <comp lib="4" loc="(310,1410)" name="Counter"> - <a name="appearance" val="logisim_evolution"/> - <a name="label" val="MICROSEQUENCER"/> - <a name="max" val="0x7"/> - <a name="width" val="3"/> - </comp> - <comp lib="4" loc="(390,230)" name="Counter"> - <a name="appearance" val="logisim_evolution"/> - <a name="label" val="PC"/> - <a name="max" val="0xffff"/> - <a name="trigger" val="falling"/> - <a name="width" val="16"/> - </comp> - <comp lib="4" loc="(80,700)" name="Register"> - <a name="appearance" val="logisim_evolution"/> - <a name="label" val="IR"/> - <a name="showInTab" val="true"/> - <a name="trigger" val="high"/> - <a name="width" val="16"/> - </comp> - <comp lib="5" loc="(250,130)" name="Button"> - <a name="labelcolor" val="#000000"/> - <a name="labelfont" val="SansSerif plain 12"/> - <a name="labelloc" val="center"/> - </comp> - <comp lib="5" loc="(280,1290)" name="TTY"> - <a name="trigger" val="falling"/> - </comp> - <comp lib="8" loc="(40,175)" name="Text"> - <a name="font" val="SansSerif plain 12"/> - <a name="halign" val="left"/> - <a name="text" val="MAR_IE enables absolute addressing mode"/> - <a name="valign" val="center"/> - </comp> - <comp lib="8" loc="(900,275)" name="Text"> - <a name="color" val="#ff0003"/> - <a name="text" val="BUS"/> - </comp> - <comp loc="(1300,530)" name="MemoryModule"/> - <comp loc="(580,900)" name="RegBank"/> - <comp loc="(930,1150)" name="ALU"/> - <wire from="(100,910)" to="(110,910)"/> - <wire from="(100,940)" to="(110,940)"/> - <wire from="(1000,1470)" to="(1000,1490)"/> - <wire from="(1000,1470)" to="(1020,1470)"/> - <wire from="(1000,550)" to="(1080,550)"/> - <wire from="(1000,590)" to="(1080,590)"/> - <wire from="(1010,1160)" to="(1010,1200)"/> - <wire from="(1010,1200)" to="(1010,1210)"/> - <wire from="(1010,1200)" to="(1110,1200)"/> - <wire from="(1020,1150)" to="(1080,1150)"/> - <wire from="(1030,1120)" to="(1030,1130)"/> - <wire from="(1050,1450)" to="(1130,1450)"/> - <wire from="(1070,510)" to="(1070,530)"/> - <wire from="(1070,510)" to="(1310,510)"/> - <wire from="(1070,530)" to="(1080,530)"/> - <wire from="(1080,940)" to="(1080,1150)"/> - <wire from="(110,790)" to="(110,800)"/> - <wire from="(110,880)" to="(120,880)"/> - <wire from="(110,910)" to="(110,920)"/> - <wire from="(110,920)" to="(120,920)"/> - <wire from="(110,930)" to="(110,940)"/> - <wire from="(110,930)" to="(120,930)"/> - <wire from="(110,970)" to="(120,970)"/> - <wire from="(1100,1150)" to="(1100,1170)"/> - <wire from="(1100,1150)" to="(1180,1150)"/> - <wire from="(1110,1170)" to="(1110,1200)"/> - <wire from="(1110,1170)" to="(1180,1170)"/> - <wire from="(1120,1460)" to="(1130,1460)"/> - <wire from="(1120,1470)" to="(1130,1470)"/> - <wire from="(1120,1480)" to="(1130,1480)"/> - <wire from="(1120,1490)" to="(1130,1490)"/> - <wire from="(1170,1200)" to="(1180,1200)"/> - <wire from="(1180,1190)" to="(1180,1200)"/> - <wire from="(120,880)" to="(120,910)"/> - <wire from="(120,940)" to="(120,970)"/> - <wire from="(1210,1210)" to="(1210,1220)"/> - <wire from="(1240,1150)" to="(1250,1150)"/> - <wire from="(1250,1110)" to="(1250,1150)"/> - <wire from="(1250,1110)" to="(1260,1110)"/> - <wire from="(1250,1150)" to="(1260,1150)"/> - <wire from="(1260,1150)" to="(1260,1270)"/> - <wire from="(1300,530)" to="(1310,530)"/> - <wire from="(1310,510)" to="(1310,530)"/> - <wire from="(140,900)" to="(150,900)"/> - <wire from="(1410,1470)" to="(1420,1470)"/> - <wire from="(1410,1490)" to="(1500,1490)"/> - <wire from="(1410,1510)" to="(1420,1510)"/> - <wire from="(1410,1530)" to="(1500,1530)"/> - <wire from="(1410,1550)" to="(1420,1550)"/> - <wire from="(1410,1570)" to="(1500,1570)"/> - <wire from="(1410,1590)" to="(1420,1590)"/> - <wire from="(1410,1610)" to="(1500,1610)"/> - <wire from="(1410,1630)" to="(1420,1630)"/> - <wire from="(1410,1650)" to="(1500,1650)"/> - <wire from="(1410,1670)" to="(1420,1670)"/> - <wire from="(1410,1690)" to="(1500,1690)"/> - <wire from="(1410,1710)" to="(1420,1710)"/> - <wire from="(1410,1730)" to="(1500,1730)"/> - <wire from="(1410,1750)" to="(1420,1750)"/> - <wire from="(1410,1770)" to="(1500,1770)"/> - <wire from="(160,510)" to="(210,510)"/> - <wire from="(160,570)" to="(260,570)"/> - <wire from="(160,580)" to="(270,580)"/> - <wire from="(160,590)" to="(280,590)"/> - <wire from="(160,600)" to="(220,600)"/> - <wire from="(160,610)" to="(230,610)"/> - <wire from="(160,620)" to="(240,620)"/> - <wire from="(160,630)" to="(170,630)"/> - <wire from="(160,640)" to="(180,640)"/> - <wire from="(160,650)" to="(190,650)"/> - <wire from="(160,660)" to="(200,660)"/> - <wire from="(160,670)" to="(200,670)"/> - <wire from="(160,680)" to="(200,680)"/> - <wire from="(160,690)" to="(170,690)"/> - <wire from="(160,700)" to="(180,700)"/> - <wire from="(160,710)" to="(180,710)"/> - <wire from="(160,720)" to="(180,720)"/> - <wire from="(170,530)" to="(170,630)"/> - <wire from="(170,530)" to="(190,530)"/> - <wire from="(170,630)" to="(290,630)"/> - <wire from="(170,690)" to="(170,840)"/> - <wire from="(170,690)" to="(180,690)"/> - <wire from="(170,840)" to="(190,840)"/> - <wire from="(180,1430)" to="(190,1430)"/> - <wire from="(180,1490)" to="(250,1490)"/> - <wire from="(180,540)" to="(180,640)"/> - <wire from="(180,540)" to="(190,540)"/> - <wire from="(180,640)" to="(290,640)"/> - <wire from="(190,1240)" to="(190,1270)"/> - <wire from="(190,1270)" to="(270,1270)"/> - <wire from="(190,1420)" to="(190,1430)"/> - <wire from="(190,1420)" to="(210,1420)"/> - <wire from="(190,1440)" to="(190,1460)"/> - <wire from="(190,1440)" to="(210,1440)"/> - <wire from="(190,1460)" to="(280,1460)"/> - <wire from="(190,550)" to="(190,650)"/> - <wire from="(190,650)" to="(290,650)"/> - <wire from="(190,740)" to="(190,800)"/> - <wire from="(190,740)" to="(200,740)"/> - <wire from="(200,730)" to="(200,740)"/> - <wire from="(210,1240)" to="(210,1310)"/> - <wire from="(210,1310)" to="(290,1310)"/> - <wire from="(210,470)" to="(260,470)"/> - <wire from="(210,510)" to="(210,520)"/> - <wire from="(220,490)" to="(220,600)"/> - <wire from="(220,490)" to="(240,490)"/> - <wire from="(220,600)" to="(290,600)"/> - <wire from="(220,690)" to="(220,750)"/> - <wire from="(220,750)" to="(230,750)"/> - <wire from="(230,1160)" to="(250,1160)"/> - <wire from="(230,500)" to="(230,610)"/> - <wire from="(230,500)" to="(240,500)"/> - <wire from="(230,610)" to="(290,610)"/> - <wire from="(240,1400)" to="(250,1400)"/> - <wire from="(240,1430)" to="(260,1430)"/> - <wire from="(240,510)" to="(240,620)"/> - <wire from="(240,620)" to="(290,620)"/> - <wire from="(250,130)" to="(260,130)"/> - <wire from="(250,1400)" to="(250,1410)"/> - <wire from="(250,1410)" to="(260,1410)"/> - <wire from="(260,1290)" to="(280,1290)"/> - <wire from="(260,470)" to="(260,480)"/> - <wire from="(260,520)" to="(260,570)"/> - <wire from="(260,520)" to="(280,520)"/> - <wire from="(260,570)" to="(290,570)"/> - <wire from="(270,1150)" to="(590,1150)"/> - <wire from="(270,1270)" to="(270,1280)"/> - <wire from="(270,1280)" to="(280,1280)"/> - <wire from="(270,1490)" to="(280,1490)"/> - <wire from="(270,430)" to="(320,430)"/> - <wire from="(270,530)" to="(270,580)"/> - <wire from="(270,530)" to="(290,530)"/> - <wire from="(270,580)" to="(290,580)"/> - <wire from="(280,1460)" to="(280,1490)"/> - <wire from="(280,1490)" to="(310,1490)"/> - <wire from="(280,450)" to="(280,520)"/> - <wire from="(280,450)" to="(300,450)"/> - <wire from="(280,540)" to="(280,590)"/> - <wire from="(280,540)" to="(300,540)"/> - <wire from="(280,590)" to="(290,590)"/> - <wire from="(280,880)" to="(280,920)"/> - <wire from="(280,880)" to="(620,880)"/> - <wire from="(280,920)" to="(360,920)"/> - <wire from="(290,1000)" to="(360,1000)"/> - <wire from="(290,1040)" to="(360,1040)"/> - <wire from="(290,1080)" to="(360,1080)"/> - <wire from="(290,1300)" to="(290,1310)"/> - <wire from="(290,1420)" to="(310,1420)"/> - <wire from="(290,460)" to="(290,530)"/> - <wire from="(290,460)" to="(300,460)"/> - <wire from="(290,960)" to="(360,960)"/> - <wire from="(300,1300)" to="(300,1320)"/> - <wire from="(300,300)" to="(310,300)"/> - <wire from="(300,470)" to="(300,540)"/> - <wire from="(310,1420)" to="(310,1430)"/> - <wire from="(310,300)" to="(390,300)"/> - <wire from="(310,560)" to="(340,560)"/> - <wire from="(320,430)" to="(320,440)"/> - <wire from="(340,560)" to="(340,570)"/> - <wire from="(350,250)" to="(360,250)"/> - <wire from="(350,320)" to="(360,320)"/> - <wire from="(350,900)" to="(360,900)"/> - <wire from="(360,250)" to="(360,260)"/> - <wire from="(360,260)" to="(390,260)"/> - <wire from="(360,310)" to="(360,320)"/> - <wire from="(360,310)" to="(390,310)"/> - <wire from="(370,390)" to="(370,680)"/> - <wire from="(370,680)" to="(590,680)"/> - <wire from="(380,230)" to="(380,250)"/> - <wire from="(380,250)" to="(390,250)"/> - <wire from="(430,730)" to="(460,730)"/> - <wire from="(430,800)" to="(460,800)"/> - <wire from="(450,100)" to="(510,100)"/> - <wire from="(490,1520)" to="(510,1520)"/> - <wire from="(490,70)" to="(500,70)"/> - <wire from="(500,70)" to="(500,80)"/> - <wire from="(500,730)" to="(530,730)"/> - <wire from="(500,80)" to="(530,80)"/> - <wire from="(500,800)" to="(530,800)"/> - <wire from="(510,100)" to="(510,130)"/> - <wire from="(510,100)" to="(520,100)"/> - <wire from="(510,130)" to="(560,130)"/> - <wire from="(510,1410)" to="(1110,1410)"/> - <wire from="(510,1410)" to="(510,1520)"/> - <wire from="(540,740)" to="(540,750)"/> - <wire from="(540,810)" to="(540,820)"/> - <wire from="(550,730)" to="(590,730)"/> - <wire from="(550,800)" to="(590,800)"/> - <wire from="(560,90)" to="(570,90)"/> - <wire from="(580,1000)" to="(580,1040)"/> - <wire from="(580,1040)" to="(640,1040)"/> - <wire from="(580,900)" to="(620,900)"/> - <wire from="(580,920)" to="(610,920)"/> - <wire from="(580,940)" to="(600,940)"/> - <wire from="(580,960)" to="(650,960)"/> - <wire from="(580,980)" to="(590,980)"/> - <wire from="(590,1010)" to="(590,1150)"/> - <wire from="(590,1010)" to="(650,1010)"/> - <wire from="(590,1270)" to="(600,1270)"/> - <wire from="(590,340)" to="(600,340)"/> - <wire from="(590,680)" to="(590,730)"/> - <wire from="(590,680)" to="(870,680)"/> - <wire from="(590,730)" to="(590,800)"/> - <wire from="(590,980)" to="(590,1010)"/> - <wire from="(60,760)" to="(70,760)"/> - <wire from="(600,1110)" to="(600,1190)"/> - <wire from="(600,1110)" to="(680,1110)"/> - <wire from="(600,1190)" to="(710,1190)"/> - <wire from="(600,300)" to="(600,340)"/> - <wire from="(600,300)" to="(620,300)"/> - <wire from="(600,340)" to="(630,340)"/> - <wire from="(600,940)" to="(600,1110)"/> - <wire from="(610,1080)" to="(610,1170)"/> - <wire from="(610,1080)" to="(680,1080)"/> - <wire from="(610,1170)" to="(710,1170)"/> - <wire from="(610,920)" to="(610,1080)"/> - <wire from="(620,1240)" to="(620,1250)"/> - <wire from="(620,880)" to="(620,900)"/> - <wire from="(620,900)" to="(870,900)"/> - <wire from="(640,1270)" to="(690,1270)"/> - <wire from="(640,350)" to="(640,360)"/> - <wire from="(650,340)" to="(830,340)"/> - <wire from="(690,1150)" to="(690,1270)"/> - <wire from="(690,1150)" to="(710,1150)"/> - <wire from="(70,750)" to="(70,760)"/> - <wire from="(70,750)" to="(80,750)"/> - <wire from="(70,790)" to="(80,790)"/> - <wire from="(790,1490)" to="(790,1510)"/> - <wire from="(790,1510)" to="(820,1510)"/> - <wire from="(80,340)" to="(390,340)"/> - <wire from="(80,340)" to="(80,390)"/> - <wire from="(80,390)" to="(370,390)"/> - <wire from="(80,390)" to="(80,730)"/> - <wire from="(80,770)" to="(80,790)"/> - <wire from="(830,320)" to="(830,340)"/> - <wire from="(830,340)" to="(870,340)"/> - <wire from="(860,1510)" to="(900,1510)"/> - <wire from="(870,340)" to="(870,530)"/> - <wire from="(870,340)" to="(890,340)"/> - <wire from="(870,530)" to="(1070,530)"/> - <wire from="(870,530)" to="(870,680)"/> - <wire from="(870,680)" to="(870,900)"/> - <wire from="(870,900)" to="(870,940)"/> - <wire from="(870,940)" to="(1080,940)"/> - <wire from="(890,340)" to="(920,340)"/> - <wire from="(900,1270)" to="(1260,1270)"/> - <wire from="(900,1270)" to="(900,1440)"/> - <wire from="(900,1440)" to="(910,1440)"/> - <wire from="(900,1460)" to="(900,1510)"/> - <wire from="(900,1460)" to="(910,1460)"/> - <wire from="(930,1150)" to="(970,1150)"/> - <wire from="(930,1170)" to="(940,1170)"/> - <wire from="(940,1070)" to="(940,1170)"/> - <wire from="(940,1170)" to="(1100,1170)"/> - <wire from="(940,1450)" to="(950,1450)"/> - <wire from="(970,1130)" to="(1030,1130)"/> - <wire from="(970,1130)" to="(970,1150)"/> - <wire from="(970,1150)" to="(1000,1150)"/> - <wire from="(970,1430)" to="(1020,1430)"/> - <wire from="(970,1430)" to="(970,1460)"/> - <wire from="(970,1470)" to="(980,1470)"/> - <wire from="(970,1480)" to="(990,1480)"/> - <wire from="(970,1490)" to="(1000,1490)"/> - <wire from="(980,1440)" to="(1020,1440)"/> - <wire from="(980,1440)" to="(980,1470)"/> - <wire from="(990,1460)" to="(1020,1460)"/> - <wire from="(990,1460)" to="(990,1480)"/> - <wire from="(990,630)" to="(1080,630)"/> - </circuit> - <circuit name="RegBank"> - <a name="appearance" val="logisim_evolution"/> - <a name="circuit" val="RegBank"/> - <a name="circuitnamedboxfixedsize" val="true"/> - <a name="simulationFrequency" val="1.0"/> - <comp lib="0" loc="(1110,490)" name="NoConnect"/> - <comp lib="0" loc="(1150,600)" name="Tunnel"> - <a name="facing" val="north"/> - <a name="label" val="R1_S_RB"/> - <a name="width" val="3"/> - </comp> - <comp lib="0" loc="(1150,650)" name="NoConnect"/> - <comp lib="0" loc="(1170,1020)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="RD_OUT"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(1170,1510)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="RA_OUT"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(1170,570)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="west"/> - <a name="label" val="R1_OE"/> - </comp> - <comp lib="0" loc="(1170,970)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="RB_OUT"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(1180,1160)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="RB_OUT"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(1180,1210)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="RD_OUT"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(1190,760)" name="Tunnel"> - <a name="facing" val="north"/> - <a name="label" val="R2_S_RB"/> - <a name="width" val="3"/> - </comp> - <comp lib="0" loc="(1210,1510)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="west"/> - <a name="label" val="RA_OUT"/> - <a name="output" val="true"/> - <a name="radix" val="16"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(1210,730)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="west"/> - <a name="label" val="R2_OE"/> - </comp> - <comp lib="0" loc="(1240,990)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="RC_OUT"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(1250,1180)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="RC_OUT"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(1260,950)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="RA_OUT"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(1270,1140)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="RA_OUT"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(1280,940)" name="Ground"> - <a name="facing" val="north"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(1290,1130)" name="Ground"> - <a name="facing" val="north"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(1300,1070)" name="Tunnel"> - <a name="facing" val="north"/> - <a name="label" val="R1_S_RB"/> - <a name="width" val="3"/> - </comp> - <comp lib="0" loc="(1310,1260)" name="Tunnel"> - <a name="facing" val="north"/> - <a name="label" val="R2_S_RB"/> - <a name="width" val="3"/> - </comp> - <comp lib="0" loc="(1330,1010)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="west"/> - <a name="label" val="R1_OUT"/> - <a name="output" val="true"/> - <a name="radix" val="16"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(1340,1200)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="west"/> - <a name="label" val="R2_OUT"/> - <a name="output" val="true"/> - <a name="radix" val="16"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(320,1110)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="label" val="R3_S"/> - <a name="width" val="3"/> - </comp> - <comp lib="0" loc="(320,590)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="label" val="R1_S"/> - <a name="width" val="3"/> - </comp> - <comp lib="0" loc="(330,1020)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="south"/> - <a name="label" val="R3_IE"/> - </comp> - <comp lib="0" loc="(330,500)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="south"/> - <a name="label" val="R1_IE"/> - </comp> - <comp lib="0" loc="(330,850)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="label" val="R2_S"/> - <a name="width" val="3"/> - </comp> - <comp lib="0" loc="(340,1130)" name="Tunnel"> - <a name="facing" val="north"/> - <a name="label" val="R3_S_RB"/> - <a name="width" val="3"/> - </comp> - <comp lib="0" loc="(340,320)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="label" val="CLK"/> - </comp> - <comp lib="0" loc="(340,610)" name="Tunnel"> - <a name="facing" val="north"/> - <a name="label" val="R1_S_RB"/> - <a name="width" val="3"/> - </comp> - <comp lib="0" loc="(340,760)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="south"/> - <a name="label" val="R2_IE"/> - </comp> - <comp lib="0" loc="(350,320)" name="Tunnel"> - <a name="label" val="CLK"/> - </comp> - <comp lib="0" loc="(350,870)" name="Tunnel"> - <a name="facing" val="north"/> - <a name="label" val="R2_S_RB"/> - <a name="width" val="3"/> - </comp> - <comp lib="0" loc="(410,1020)" name="NoConnect"/> - <comp lib="0" loc="(410,500)" name="NoConnect"/> - <comp lib="0" loc="(420,760)" name="NoConnect"/> - <comp lib="0" loc="(540,400)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="RST_RB"/> - </comp> - <comp lib="0" loc="(550,400)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="west"/> - <a name="label" val="RESET"/> - </comp> - <comp lib="0" loc="(600,640)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="CLK"/> - </comp> - <comp lib="0" loc="(610,580)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="B_IN"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(610,980)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="CLK"/> - </comp> - <comp lib="0" loc="(620,1380)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="CLK"/> - </comp> - <comp lib="0" loc="(630,920)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="B_IN"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(640,1320)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="B_IN"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(650,640)" name="Tunnel"> - <a name="facing" val="north"/> - <a name="label" val="RST_RB"/> - </comp> - <comp lib="0" loc="(660,980)" name="Tunnel"> - <a name="facing" val="north"/> - <a name="label" val="RST_RB"/> - </comp> - <comp lib="0" loc="(670,1380)" name="Tunnel"> - <a name="facing" val="north"/> - <a name="label" val="RST_RB"/> - </comp> - <comp lib="0" loc="(680,790)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="CLK"/> - </comp> - <comp lib="0" loc="(690,1130)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="CLK"/> - </comp> - <comp lib="0" loc="(700,1520)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="CLK"/> - </comp> - <comp lib="0" loc="(700,550)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="RA_OUT"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(700,730)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="B_IN"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(710,1070)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="B_IN"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(720,1320)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="west"/> - <a name="label" val="PA_OUT"/> - <a name="output" val="true"/> - <a name="radix" val="16"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(720,1460)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="B_IN"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(730,790)" name="Tunnel"> - <a name="facing" val="north"/> - <a name="label" val="RST_RB"/> - </comp> - <comp lib="0" loc="(730,880)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="RC_OUT"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(740,1130)" name="Tunnel"> - <a name="facing" val="north"/> - <a name="label" val="RST_RB"/> - </comp> - <comp lib="0" loc="(750,1520)" name="Tunnel"> - <a name="facing" val="north"/> - <a name="label" val="RST_RB"/> - </comp> - <comp lib="0" loc="(770,550)" name="Tunnel"> - <a name="label" val="B_OUT"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(770,680)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="RB_OUT"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(780,890)" name="Tunnel"> - <a name="label" val="B_OUT"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(800,1460)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="west"/> - <a name="label" val="PB_OUT"/> - <a name="output" val="true"/> - <a name="radix" val="16"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(810,1020)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="RD_OUT"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(830,700)" name="Tunnel"> - <a name="label" val="B_OUT"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(860,1040)" name="Tunnel"> - <a name="label" val="B_OUT"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(930,360)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="B_IN"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(930,390)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="B_OUT"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(950,320)" name="Probe"> - <a name="appearance" val="NewPins"/> - </comp> - <comp lib="0" loc="(980,360)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="west"/> - <a name="label" val="MAIN_BUS_IN"/> - <a name="radix" val="16"/> - <a name="tristate" val="true"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(990,390)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="west"/> - <a name="label" val="MAIN_BUS_OUT"/> - <a name="output" val="true"/> - <a name="radix" val="16"/> - <a name="tristate" val="true"/> - <a name="width" val="16"/> - </comp> - <comp lib="1" loc="(560,620)" name="OR Gate"> - <a name="inputs" val="3"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(570,1340)" name="OR Gate"> - <a name="inputs" val="3"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(580,940)" name="OR Gate"> - <a name="inputs" val="3"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(640,1090)" name="OR Gate"> - <a name="inputs" val="3"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(640,770)" name="OR Gate"> - <a name="inputs" val="3"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(650,1480)" name="OR Gate"> - <a name="inputs" val="3"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(740,580)" name="Controlled Buffer"> - <a name="width" val="16"/> - </comp> - <comp lib="1" loc="(750,920)" name="Controlled Buffer"> - <a name="width" val="16"/> - </comp> - <comp lib="1" loc="(800,600)" name="OR Gate"> - <a name="facing" val="west"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(800,730)" name="Controlled Buffer"> - <a name="width" val="16"/> - </comp> - <comp lib="1" loc="(810,940)" name="OR Gate"> - <a name="facing" val="west"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(820,760)" name="OR Gate"> - <a name="facing" val="west"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(830,1070)" name="Controlled Buffer"> - <a name="width" val="16"/> - </comp> - <comp lib="1" loc="(890,1090)" name="OR Gate"> - <a name="facing" val="west"/> - <a name="size" val="30"/> - </comp> - <comp lib="2" loc="(1150,570)" name="Decoder"> - <a name="facing" val="west"/> - <a name="select" val="3"/> - </comp> - <comp lib="2" loc="(1190,730)" name="Decoder"> - <a name="facing" val="west"/> - <a name="select" val="3"/> - </comp> - <comp lib="2" loc="(1320,1010)" name="Multiplexer"> - <a name="select" val="3"/> - <a name="width" val="16"/> - </comp> - <comp lib="2" loc="(1330,1200)" name="Multiplexer"> - <a name="select" val="3"/> - <a name="width" val="16"/> - </comp> - <comp lib="2" loc="(380,1100)" name="Decoder"> - <a name="select" val="3"/> - </comp> - <comp lib="2" loc="(380,580)" name="Decoder"> - <a name="select" val="3"/> - </comp> - <comp lib="2" loc="(390,840)" name="Decoder"> - <a name="select" val="3"/> - </comp> - <comp lib="4" loc="(620,550)" name="Register"> - <a name="appearance" val="logisim_evolution"/> - <a name="label" val="RA"/> - <a name="showInTab" val="true"/> - <a name="trigger" val="high"/> - <a name="width" val="16"/> - </comp> - <comp lib="4" loc="(630,890)" name="Register"> - <a name="appearance" val="logisim_evolution"/> - <a name="label" val="RC"/> - <a name="showInTab" val="true"/> - <a name="trigger" val="high"/> - <a name="width" val="16"/> - </comp> - <comp lib="4" loc="(640,1290)" name="Register"> - <a name="appearance" val="logisim_evolution"/> - <a name="label" val="PA"/> - <a name="showInTab" val="true"/> - <a name="trigger" val="high"/> - <a name="width" val="16"/> - </comp> - <comp lib="4" loc="(700,700)" name="Register"> - <a name="appearance" val="logisim_evolution"/> - <a name="label" val="RB"/> - <a name="showInTab" val="true"/> - <a name="trigger" val="high"/> - <a name="width" val="16"/> - </comp> - <comp lib="4" loc="(710,1040)" name="Register"> - <a name="appearance" val="logisim_evolution"/> - <a name="label" val="RD"/> - <a name="showInTab" val="true"/> - <a name="trigger" val="high"/> - <a name="width" val="16"/> - </comp> - <comp lib="4" loc="(720,1430)" name="Register"> - <a name="appearance" val="logisim_evolution"/> - <a name="label" val="PB"/> - <a name="showInTab" val="true"/> - <a name="trigger" val="high"/> - <a name="width" val="16"/> - </comp> - <comp lib="8" loc="(1085,1475)" name="Text"> - <a name="font" val="SansSerif plain 12"/> - <a name="halign" val="left"/> - <a name="text" val="for testbench purposes"/> - <a name="valign" val="center"/> - </comp> - <wire from="(1040,530)" to="(1040,1080)"/> - <wire from="(1040,530)" to="(1130,530)"/> - <wire from="(1050,520)" to="(1050,930)"/> - <wire from="(1050,520)" to="(1130,520)"/> - <wire from="(1060,500)" to="(1060,590)"/> - <wire from="(1060,500)" to="(1130,500)"/> - <wire from="(1060,780)" to="(1060,950)"/> - <wire from="(1060,780)" to="(1090,780)"/> - <wire from="(1070,510)" to="(1070,750)"/> - <wire from="(1070,510)" to="(1130,510)"/> - <wire from="(1070,790)" to="(1070,1100)"/> - <wire from="(1070,790)" to="(1100,790)"/> - <wire from="(1080,610)" to="(1080,660)"/> - <wire from="(1080,660)" to="(1170,660)"/> - <wire from="(1080,670)" to="(1080,770)"/> - <wire from="(1080,670)" to="(1170,670)"/> - <wire from="(1090,680)" to="(1090,780)"/> - <wire from="(1090,680)" to="(1170,680)"/> - <wire from="(1100,690)" to="(1100,790)"/> - <wire from="(1100,690)" to="(1170,690)"/> - <wire from="(1110,490)" to="(1130,490)"/> - <wire from="(1150,570)" to="(1150,600)"/> - <wire from="(1150,650)" to="(1170,650)"/> - <wire from="(1160,570)" to="(1170,570)"/> - <wire from="(1170,1020)" to="(1190,1020)"/> - <wire from="(1170,1510)" to="(1210,1510)"/> - <wire from="(1170,970)" to="(1260,970)"/> - <wire from="(1180,1160)" to="(1270,1160)"/> - <wire from="(1180,1210)" to="(1200,1210)"/> - <wire from="(1190,1010)" to="(1190,1020)"/> - <wire from="(1190,1010)" to="(1280,1010)"/> - <wire from="(1190,730)" to="(1190,760)"/> - <wire from="(1200,1200)" to="(1200,1210)"/> - <wire from="(1200,1200)" to="(1290,1200)"/> - <wire from="(1200,730)" to="(1210,730)"/> - <wire from="(1240,990)" to="(1250,990)"/> - <wire from="(1250,1000)" to="(1280,1000)"/> - <wire from="(1250,1180)" to="(1260,1180)"/> - <wire from="(1250,990)" to="(1250,1000)"/> - <wire from="(1260,1180)" to="(1260,1190)"/> - <wire from="(1260,1190)" to="(1290,1190)"/> - <wire from="(1260,950)" to="(1270,950)"/> - <wire from="(1260,970)" to="(1260,990)"/> - <wire from="(1260,990)" to="(1280,990)"/> - <wire from="(1270,1140)" to="(1280,1140)"/> - <wire from="(1270,1160)" to="(1270,1180)"/> - <wire from="(1270,1180)" to="(1290,1180)"/> - <wire from="(1270,950)" to="(1270,980)"/> - <wire from="(1270,980)" to="(1280,980)"/> - <wire from="(1280,1140)" to="(1280,1170)"/> - <wire from="(1280,1170)" to="(1290,1170)"/> - <wire from="(1280,940)" to="(1280,970)"/> - <wire from="(1290,1130)" to="(1290,1160)"/> - <wire from="(1300,1050)" to="(1300,1070)"/> - <wire from="(1310,1240)" to="(1310,1260)"/> - <wire from="(1320,1010)" to="(1330,1010)"/> - <wire from="(1330,1200)" to="(1340,1200)"/> - <wire from="(320,1110)" to="(340,1110)"/> - <wire from="(320,590)" to="(340,590)"/> - <wire from="(330,1020)" to="(330,1100)"/> - <wire from="(330,1100)" to="(370,1100)"/> - <wire from="(330,500)" to="(330,580)"/> - <wire from="(330,580)" to="(370,580)"/> - <wire from="(330,850)" to="(350,850)"/> - <wire from="(340,1110)" to="(340,1130)"/> - <wire from="(340,1110)" to="(380,1110)"/> - <wire from="(340,320)" to="(350,320)"/> - <wire from="(340,590)" to="(340,610)"/> - <wire from="(340,590)" to="(380,590)"/> - <wire from="(340,760)" to="(340,840)"/> - <wire from="(340,840)" to="(380,840)"/> - <wire from="(350,850)" to="(350,870)"/> - <wire from="(350,850)" to="(390,850)"/> - <wire from="(380,1100)" to="(380,1110)"/> - <wire from="(380,580)" to="(380,590)"/> - <wire from="(390,840)" to="(390,850)"/> - <wire from="(400,1020)" to="(410,1020)"/> - <wire from="(400,1030)" to="(490,1030)"/> - <wire from="(400,1040)" to="(500,1040)"/> - <wire from="(400,1050)" to="(510,1050)"/> - <wire from="(400,1060)" to="(600,1060)"/> - <wire from="(400,1070)" to="(490,1070)"/> - <wire from="(400,1080)" to="(420,1080)"/> - <wire from="(400,500)" to="(410,500)"/> - <wire from="(400,510)" to="(520,510)"/> - <wire from="(400,520)" to="(510,520)"/> - <wire from="(400,530)" to="(500,530)"/> - <wire from="(400,540)" to="(480,540)"/> - <wire from="(400,550)" to="(460,550)"/> - <wire from="(400,560)" to="(440,560)"/> - <wire from="(410,760)" to="(420,760)"/> - <wire from="(410,770)" to="(520,770)"/> - <wire from="(410,780)" to="(540,780)"/> - <wire from="(410,790)" to="(490,790)"/> - <wire from="(410,800)" to="(470,800)"/> - <wire from="(410,810)" to="(450,810)"/> - <wire from="(410,820)" to="(430,820)"/> - <wire from="(420,1080)" to="(420,1490)"/> - <wire from="(420,1490)" to="(620,1490)"/> - <wire from="(430,1480)" to="(620,1480)"/> - <wire from="(430,820)" to="(430,1480)"/> - <wire from="(440,1470)" to="(620,1470)"/> - <wire from="(440,560)" to="(440,1470)"/> - <wire from="(450,1340)" to="(540,1340)"/> - <wire from="(450,810)" to="(450,1340)"/> - <wire from="(460,1330)" to="(540,1330)"/> - <wire from="(460,550)" to="(460,1330)"/> - <wire from="(470,1090)" to="(610,1090)"/> - <wire from="(470,800)" to="(470,1090)"/> - <wire from="(480,1080)" to="(610,1080)"/> - <wire from="(480,540)" to="(480,1080)"/> - <wire from="(490,1070)" to="(490,1350)"/> - <wire from="(490,1350)" to="(540,1350)"/> - <wire from="(490,790)" to="(490,940)"/> - <wire from="(490,940)" to="(550,940)"/> - <wire from="(490,950)" to="(490,1030)"/> - <wire from="(490,950)" to="(510,950)"/> - <wire from="(500,530)" to="(500,930)"/> - <wire from="(500,930)" to="(550,930)"/> - <wire from="(500,960)" to="(500,1040)"/> - <wire from="(500,960)" to="(520,960)"/> - <wire from="(510,520)" to="(510,670)"/> - <wire from="(510,670)" to="(600,670)"/> - <wire from="(510,790)" to="(510,950)"/> - <wire from="(510,790)" to="(530,790)"/> - <wire from="(510,970)" to="(510,1050)"/> - <wire from="(510,970)" to="(530,970)"/> - <wire from="(520,510)" to="(520,610)"/> - <wire from="(520,610)" to="(530,610)"/> - <wire from="(520,620)" to="(520,770)"/> - <wire from="(520,620)" to="(530,620)"/> - <wire from="(520,800)" to="(520,960)"/> - <wire from="(520,800)" to="(550,800)"/> - <wire from="(530,630)" to="(530,790)"/> - <wire from="(530,950)" to="(530,970)"/> - <wire from="(530,950)" to="(550,950)"/> - <wire from="(540,400)" to="(550,400)"/> - <wire from="(540,770)" to="(540,780)"/> - <wire from="(540,770)" to="(610,770)"/> - <wire from="(550,780)" to="(550,800)"/> - <wire from="(550,780)" to="(610,780)"/> - <wire from="(560,620)" to="(590,620)"/> - <wire from="(570,1340)" to="(640,1340)"/> - <wire from="(580,940)" to="(630,940)"/> - <wire from="(590,600)" to="(590,620)"/> - <wire from="(590,600)" to="(620,600)"/> - <wire from="(600,1060)" to="(600,1100)"/> - <wire from="(600,1100)" to="(610,1100)"/> - <wire from="(600,640)" to="(610,640)"/> - <wire from="(600,670)" to="(600,760)"/> - <wire from="(600,760)" to="(610,760)"/> - <wire from="(610,580)" to="(620,580)"/> - <wire from="(610,620)" to="(610,640)"/> - <wire from="(610,620)" to="(620,620)"/> - <wire from="(610,980)" to="(620,980)"/> - <wire from="(620,1380)" to="(630,1380)"/> - <wire from="(620,960)" to="(620,980)"/> - <wire from="(620,960)" to="(630,960)"/> - <wire from="(630,1360)" to="(630,1380)"/> - <wire from="(630,1360)" to="(640,1360)"/> - <wire from="(640,1090)" to="(710,1090)"/> - <wire from="(640,770)" to="(670,770)"/> - <wire from="(650,1480)" to="(720,1480)"/> - <wire from="(670,750)" to="(670,770)"/> - <wire from="(670,750)" to="(700,750)"/> - <wire from="(680,580)" to="(700,580)"/> - <wire from="(680,790)" to="(690,790)"/> - <wire from="(690,1130)" to="(700,1130)"/> - <wire from="(690,770)" to="(690,790)"/> - <wire from="(690,770)" to="(700,770)"/> - <wire from="(690,920)" to="(710,920)"/> - <wire from="(700,1110)" to="(700,1130)"/> - <wire from="(700,1110)" to="(710,1110)"/> - <wire from="(700,1320)" to="(720,1320)"/> - <wire from="(700,1520)" to="(710,1520)"/> - <wire from="(700,550)" to="(700,580)"/> - <wire from="(700,580)" to="(720,580)"/> - <wire from="(710,1500)" to="(710,1520)"/> - <wire from="(710,1500)" to="(720,1500)"/> - <wire from="(710,890)" to="(710,920)"/> - <wire from="(710,890)" to="(730,890)"/> - <wire from="(710,920)" to="(730,920)"/> - <wire from="(730,590)" to="(730,600)"/> - <wire from="(730,600)" to="(800,600)"/> - <wire from="(730,880)" to="(730,890)"/> - <wire from="(740,580)" to="(750,580)"/> - <wire from="(740,930)" to="(740,940)"/> - <wire from="(740,940)" to="(810,940)"/> - <wire from="(750,550)" to="(750,580)"/> - <wire from="(750,550)" to="(770,550)"/> - <wire from="(750,920)" to="(760,920)"/> - <wire from="(760,730)" to="(770,730)"/> - <wire from="(760,890)" to="(760,920)"/> - <wire from="(760,890)" to="(780,890)"/> - <wire from="(770,1070)" to="(790,1070)"/> - <wire from="(770,680)" to="(770,730)"/> - <wire from="(770,730)" to="(780,730)"/> - <wire from="(780,1460)" to="(800,1460)"/> - <wire from="(790,1030)" to="(790,1070)"/> - <wire from="(790,1030)" to="(810,1030)"/> - <wire from="(790,1070)" to="(810,1070)"/> - <wire from="(790,740)" to="(790,760)"/> - <wire from="(790,760)" to="(820,760)"/> - <wire from="(800,730)" to="(810,730)"/> - <wire from="(810,1020)" to="(810,1030)"/> - <wire from="(810,700)" to="(810,730)"/> - <wire from="(810,700)" to="(830,700)"/> - <wire from="(820,1080)" to="(820,1090)"/> - <wire from="(820,1090)" to="(890,1090)"/> - <wire from="(830,1070)" to="(840,1070)"/> - <wire from="(830,590)" to="(1060,590)"/> - <wire from="(830,610)" to="(1080,610)"/> - <wire from="(840,1040)" to="(840,1070)"/> - <wire from="(840,1040)" to="(860,1040)"/> - <wire from="(840,930)" to="(1050,930)"/> - <wire from="(840,950)" to="(1060,950)"/> - <wire from="(850,750)" to="(1070,750)"/> - <wire from="(850,770)" to="(1080,770)"/> - <wire from="(920,1080)" to="(1040,1080)"/> - <wire from="(920,1100)" to="(1070,1100)"/> - <wire from="(930,360)" to="(970,360)"/> - <wire from="(930,390)" to="(990,390)"/> - <wire from="(950,320)" to="(970,320)"/> - <wire from="(970,320)" to="(970,360)"/> - <wire from="(970,360)" to="(980,360)"/> - </circuit> - <circuit name="ALU"> - <a name="appearance" val="logisim_evolution"/> - <a name="circuit" val="ALU"/> - <a name="circuitnamedboxfixedsize" val="true"/> - <a name="simulationFrequency" val="1.0"/> - <comp lib="0" loc="(100,450)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="label" val="S"/> - <a name="width" val="4"/> - </comp> - <comp lib="0" loc="(100,880)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="label" val="IN_L"/> - <a name="radix" val="16"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(100,930)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="label" val="IN_R"/> - <a name="radix" val="16"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(1020,890)" name="Tunnel"> - <a name="facing" val="north"/> - <a name="label" val="SIGN_FL"/> - </comp> - <comp lib="0" loc="(1040,1010)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="SIGN_FL"/> - </comp> - <comp lib="0" loc="(1040,980)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="OVR_FL"/> - </comp> - <comp lib="0" loc="(1080,960)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="west"/> - <a name="label" val="FLAGS"/> - <a name="output" val="true"/> - <a name="width" val="4"/> - </comp> - <comp lib="0" loc="(1080,960)" name="Splitter"> - <a name="facing" val="west"/> - <a name="fanout" val="4"/> - <a name="incoming" val="4"/> - </comp> - <comp lib="0" loc="(110,450)" name="Splitter"> - <a name="fanout" val="4"/> - <a name="incoming" val="4"/> - </comp> - <comp lib="0" loc="(1100,840)" name="Tunnel"> - <a name="label" val="ZERO_FL"/> - </comp> - <comp lib="0" loc="(1240,670)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="west"/> - <a name="label" val="RESULT"/> - <a name="output" val="true"/> - <a name="radix" val="16"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(130,570)" name="Tunnel"> - <a name="facing" val="north"/> - <a name="label" val="SHIFT_ALU_OE"/> - </comp> - <comp lib="0" loc="(1310,750)" name="Tunnel"> - <a name="label" val="SHIFT_ALU_OE"/> - </comp> - <comp lib="0" loc="(150,440)" name="Splitter"> - <a name="appear" val="right"/> - <a name="facing" val="west"/> - <a name="fanout" val="3"/> - <a name="incoming" val="3"/> - </comp> - <comp lib="0" loc="(230,520)" name="Splitter"> - <a name="appear" val="right"/> - <a name="fanout" val="3"/> - <a name="incoming" val="3"/> - </comp> - <comp lib="0" loc="(240,1320)" name="Splitter"> - <a name="appear" val="right"/> - <a name="bit1" val="0"/> - <a name="bit10" val="2"/> - <a name="bit11" val="2"/> - <a name="bit12" val="3"/> - <a name="bit13" val="3"/> - <a name="bit14" val="3"/> - <a name="bit15" val="3"/> - <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"/> - <a name="bit8" val="2"/> - <a name="bit9" val="2"/> - <a name="fanout" val="4"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(260,1340)" name="NoConnect"> - <a name="width" val="4"/> - </comp> - <comp lib="0" loc="(260,1350)" name="NoConnect"> - <a name="width" val="4"/> - </comp> - <comp lib="0" loc="(260,1360)" name="NoConnect"> - <a name="width" val="4"/> - </comp> - <comp lib="0" loc="(270,880)" name="Splitter"> - <a name="appear" val="right"/> - <a name="bit1" val="0"/> - <a name="bit10" val="2"/> - <a name="bit11" val="2"/> - <a name="bit12" val="3"/> - <a name="bit13" val="3"/> - <a name="bit14" val="3"/> - <a name="bit15" val="3"/> - <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"/> - <a name="bit8" val="2"/> - <a name="bit9" val="2"/> - <a name="fanout" val="4"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(270,930)" name="Splitter"> - <a name="appear" val="right"/> - <a name="bit1" val="0"/> - <a name="bit10" val="2"/> - <a name="bit11" val="2"/> - <a name="bit12" val="3"/> - <a name="bit13" val="3"/> - <a name="bit14" val="3"/> - <a name="bit15" val="3"/> - <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"/> - <a name="bit8" val="2"/> - <a name="bit9" val="2"/> - <a name="fanout" val="4"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(450,1010)" name="Splitter"> - <a name="appear" val="right"/> - <a name="fanout" val="4"/> - <a name="incoming" val="4"/> - <a name="spacing" val="2"/> - </comp> - <comp lib="0" loc="(450,610)" name="Splitter"> - <a name="appear" val="right"/> - <a name="fanout" val="4"/> - <a name="incoming" val="4"/> - <a name="spacing" val="2"/> - </comp> - <comp lib="0" loc="(480,1000)" name="Splitter"> - <a name="appear" val="right"/> - <a name="fanout" val="4"/> - <a name="incoming" val="4"/> - <a name="spacing" val="2"/> - </comp> - <comp lib="0" loc="(480,600)" name="Splitter"> - <a name="appear" val="right"/> - <a name="fanout" val="4"/> - <a name="incoming" val="4"/> - <a name="spacing" val="2"/> - </comp> - <comp lib="0" loc="(570,1070)" name="Splitter"> - <a name="appear" val="right"/> - <a name="facing" val="west"/> - <a name="fanout" val="4"/> - <a name="incoming" val="4"/> - </comp> - <comp lib="0" loc="(570,670)" name="Splitter"> - <a name="appear" val="right"/> - <a name="facing" val="west"/> - <a name="fanout" val="4"/> - <a name="incoming" val="4"/> - </comp> - <comp lib="0" loc="(580,1070)" name="Probe"> - <a name="appearance" val="classic"/> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(580,670)" name="Probe"> - <a name="appearance" val="classic"/> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(680,1020)" name="Splitter"> - <a name="appear" val="right"/> - <a name="fanout" val="4"/> - <a name="incoming" val="4"/> - <a name="spacing" val="2"/> - </comp> - <comp lib="0" loc="(680,610)" name="Splitter"> - <a name="appear" val="right"/> - <a name="fanout" val="4"/> - <a name="incoming" val="4"/> - <a name="spacing" val="2"/> - </comp> - <comp lib="0" loc="(710,1010)" name="Splitter"> - <a name="appear" val="right"/> - <a name="fanout" val="4"/> - <a name="incoming" val="4"/> - <a name="spacing" val="2"/> - </comp> - <comp lib="0" loc="(710,600)" name="Splitter"> - <a name="appear" val="right"/> - <a name="fanout" val="4"/> - <a name="incoming" val="4"/> - <a name="spacing" val="2"/> - </comp> - <comp lib="0" loc="(800,1080)" name="Splitter"> - <a name="appear" val="right"/> - <a name="facing" val="west"/> - <a name="fanout" val="4"/> - <a name="incoming" val="4"/> - </comp> - <comp lib="0" loc="(800,670)" name="Probe"> - <a name="appearance" val="classic"/> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(800,670)" name="Splitter"> - <a name="appear" val="right"/> - <a name="facing" val="west"/> - <a name="fanout" val="4"/> - <a name="incoming" val="4"/> - </comp> - <comp lib="0" loc="(810,1080)" name="Probe"> - <a name="appearance" val="classic"/> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(890,1090)" name="Tunnel"> - <a name="facing" val="south"/> - <a name="label" val="OVR_FL"/> - </comp> - <comp lib="0" loc="(920,1110)" name="Tunnel"> - <a name="label" val="CARRY_FL"/> - </comp> - <comp lib="0" loc="(920,610)" name="Splitter"> - <a name="appear" val="right"/> - <a name="bit1" val="0"/> - <a name="bit10" val="2"/> - <a name="bit11" val="2"/> - <a name="bit12" val="3"/> - <a name="bit13" val="3"/> - <a name="bit14" val="3"/> - <a name="bit15" val="3"/> - <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"/> - <a name="bit8" val="2"/> - <a name="bit9" val="2"/> - <a name="facing" val="west"/> - <a name="fanout" val="4"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(950,680)" name="Splitter"> - <a name="appear" val="right"/> - <a name="bit1" val="0"/> - <a name="bit10" val="1"/> - <a name="bit11" val="1"/> - <a name="bit12" val="1"/> - <a name="bit13" val="1"/> - <a name="bit14" val="1"/> - <a name="bit15" val="1"/> - <a name="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="incoming" val="16"/> - </comp> - <comp lib="0" loc="(950,990)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="ZERO_FL"/> - </comp> - <comp lib="0" loc="(960,960)" name="Tunnel"> - <a name="facing" val="east"/> - <a name="label" val="CARRY_FL"/> - </comp> - <comp lib="0" loc="(990,690)" name="Splitter"> - <a name="appear" val="right"/> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> - </comp> - <comp lib="0" loc="(990,780)" name="Splitter"> - <a name="appear" val="right"/> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> - </comp> - <comp lib="1" loc="(1080,780)" name="AND Gate"> - <a name="inputs" val="16"/> - <a name="label" val="ZERO"/> - <a name="negate0" val="true"/> - <a name="negate1" val="true"/> - <a name="negate10" val="true"/> - <a name="negate11" val="true"/> - <a name="negate12" val="true"/> - <a name="negate13" val="true"/> - <a name="negate14" val="true"/> - <a name="negate15" val="true"/> - <a name="negate2" val="true"/> - <a name="negate3" val="true"/> - <a name="negate4" val="true"/> - <a name="negate5" val="true"/> - <a name="negate6" val="true"/> - <a name="negate7" val="true"/> - <a name="negate8" val="true"/> - <a name="negate9" val="true"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1190,680)" name="NOT Gate"> - <a name="facing" val="north"/> - </comp> - <comp lib="1" loc="(1200,670)" name="Controlled Buffer"> - <a name="width" val="16"/> - </comp> - <comp lib="1" loc="(1230,700)" name="Controlled Buffer"> - <a name="facing" val="north"/> - <a name="width" val="16"/> - </comp> - <comp lib="1" loc="(360,540)" name="AND Gate"> - <a name="inputs" val="3"/> - <a name="negate1" val="true"/> - <a name="negate2" val="true"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(360,580)" name="AND Gate"> - <a name="inputs" val="3"/> - <a name="negate0" val="true"/> - <a name="negate2" val="true"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(410,550)" name="OR Gate"> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(720,1220)" name="Controlled Buffer"> - <a name="width" val="16"/> - </comp> - <comp lib="1" loc="(720,1340)" name="Controlled Buffer"> - <a name="width" val="16"/> - </comp> - <comp lib="1" loc="(720,1470)" name="Controlled Buffer"> - <a name="width" val="16"/> - </comp> - <comp lib="2" loc="(170,530)" name="Demultiplexer"> - <a name="width" val="3"/> - </comp> - <comp lib="2" loc="(230,1240)" name="Demultiplexer"> - <a name="select" val="3"/> - <a name="width" val="16"/> - </comp> - <comp lib="2" loc="(250,1470)" name="Decoder"> - <a name="enable" val="false"/> - <a name="select" val="3"/> - </comp> - <comp lib="8" loc="(170,465)" name="Text"> - <a name="font" val="SansSerif plain 12"/> - <a name="halign" val="left"/> - <a name="text" val="If S = 0XXX, use 74x382 ALU"/> - <a name="valign" val="center"/> - </comp> - <comp lib="8" loc="(230,1175)" name="Text"> - <a name="font" val="SansSerif plain 12"/> - <a name="halign" val="left"/> - <a name="text" val="If S = 1XXX, do bitshift stuff"/> - <a name="valign" val="center"/> - </comp> - <comp lib="8" loc="(305,495)" name="Text"> - <a name="font" val="SansSerif plain 12"/> - <a name="halign" val="left"/> - <a name="text" val="Carry needs to be forced to 1 when subtracting"/> - <a name="valign" val="center"/> - </comp> - <comp lib="8" loc="(440,1175)" name="Text"> - <a name="font" val="SansSerif plain 12"/> - <a name="halign" val="left"/> - <a name="text" val="Bit shifts are implemented separately here"/> - <a name="valign" val="center"/> - </comp> - <comp loc="(540,1030)" name="IC_74382"/> - <comp loc="(540,630)" name="IC_74382"/> - <comp loc="(670,1220)" name="BitShiftRightLogical"/> - <comp loc="(670,1340)" name="BitShiftRightArithmetic"/> - <comp loc="(670,1470)" name="BitShiftLeftLogical"/> - <comp loc="(770,1040)" name="IC_74382"/> - <comp loc="(770,630)" name="IC_74382"/> - <wire from="(100,450)" to="(110,450)"/> - <wire from="(100,880)" to="(200,880)"/> - <wire from="(100,930)" to="(190,930)"/> - <wire from="(1010,700)" to="(1040,700)"/> - <wire from="(1010,710)" to="(1040,710)"/> - <wire from="(1010,720)" to="(1040,720)"/> - <wire from="(1010,730)" to="(1040,730)"/> - <wire from="(1010,740)" to="(1040,740)"/> - <wire from="(1010,750)" to="(1040,750)"/> - <wire from="(1010,760)" to="(1040,760)"/> - <wire from="(1010,770)" to="(1040,770)"/> - <wire from="(1010,790)" to="(1040,790)"/> - <wire from="(1010,800)" to="(1040,800)"/> - <wire from="(1010,810)" to="(1040,810)"/> - <wire from="(1010,820)" to="(1040,820)"/> - <wire from="(1010,830)" to="(1040,830)"/> - <wire from="(1010,840)" to="(1040,840)"/> - <wire from="(1010,850)" to="(1040,850)"/> - <wire from="(1010,860)" to="(1020,860)"/> - <wire from="(1020,860)" to="(1020,890)"/> - <wire from="(1020,860)" to="(1040,860)"/> - <wire from="(1040,1010)" to="(1060,1010)"/> - <wire from="(1040,980)" to="(1060,980)"/> - <wire from="(1050,960)" to="(1050,970)"/> - <wire from="(1050,970)" to="(1060,970)"/> - <wire from="(1060,1000)" to="(1060,1010)"/> - <wire from="(1080,780)" to="(1090,780)"/> - <wire from="(1090,780)" to="(1090,840)"/> - <wire from="(1090,840)" to="(1100,840)"/> - <wire from="(1190,710)" to="(1190,750)"/> - <wire from="(1190,750)" to="(1270,750)"/> - <wire from="(1200,670)" to="(1230,670)"/> - <wire from="(1230,670)" to="(1230,700)"/> - <wire from="(1230,670)" to="(1240,670)"/> - <wire from="(1230,720)" to="(1230,1220)"/> - <wire from="(1240,710)" to="(1270,710)"/> - <wire from="(1270,710)" to="(1270,750)"/> - <wire from="(1270,750)" to="(1310,750)"/> - <wire from="(130,440)" to="(130,560)"/> - <wire from="(130,560)" to="(130,570)"/> - <wire from="(130,560)" to="(190,560)"/> - <wire from="(150,440)" to="(150,530)"/> - <wire from="(150,530)" to="(170,530)"/> - <wire from="(190,1320)" to="(240,1320)"/> - <wire from="(190,550)" to="(190,560)"/> - <wire from="(190,930)" to="(190,1320)"/> - <wire from="(190,930)" to="(270,930)"/> - <wire from="(200,1240)" to="(230,1240)"/> - <wire from="(200,520)" to="(230,520)"/> - <wire from="(200,540)" to="(210,540)"/> - <wire from="(200,880)" to="(200,1240)"/> - <wire from="(200,880)" to="(270,880)"/> - <wire from="(210,1290)" to="(210,1480)"/> - <wire from="(210,1290)" to="(250,1290)"/> - <wire from="(210,1480)" to="(250,1480)"/> - <wire from="(210,540)" to="(210,1290)"/> - <wire from="(250,1280)" to="(250,1290)"/> - <wire from="(250,1470)" to="(250,1480)"/> - <wire from="(250,530)" to="(280,530)"/> - <wire from="(250,540)" to="(290,540)"/> - <wire from="(250,550)" to="(300,550)"/> - <wire from="(260,1330)" to="(390,1330)"/> - <wire from="(270,1200)" to="(390,1200)"/> - <wire from="(270,1210)" to="(380,1210)"/> - <wire from="(270,1220)" to="(370,1220)"/> - <wire from="(270,1390)" to="(400,1390)"/> - <wire from="(270,1400)" to="(710,1400)"/> - <wire from="(270,1410)" to="(360,1410)"/> - <wire from="(280,530)" to="(280,570)"/> - <wire from="(280,530)" to="(330,530)"/> - <wire from="(280,570)" to="(280,770)"/> - <wire from="(280,570)" to="(320,570)"/> - <wire from="(280,770)" to="(340,770)"/> - <wire from="(290,540)" to="(290,580)"/> - <wire from="(290,540)" to="(320,540)"/> - <wire from="(290,580)" to="(290,760)"/> - <wire from="(290,580)" to="(330,580)"/> - <wire from="(290,760)" to="(330,760)"/> - <wire from="(290,890)" to="(390,890)"/> - <wire from="(290,900)" to="(640,900)"/> - <wire from="(290,910)" to="(380,910)"/> - <wire from="(290,920)" to="(590,920)"/> - <wire from="(290,940)" to="(400,940)"/> - <wire from="(290,950)" to="(630,950)"/> - <wire from="(290,960)" to="(370,960)"/> - <wire from="(290,970)" to="(580,970)"/> - <wire from="(300,550)" to="(300,590)"/> - <wire from="(300,550)" to="(320,550)"/> - <wire from="(300,590)" to="(300,750)"/> - <wire from="(300,590)" to="(320,590)"/> - <wire from="(300,750)" to="(320,750)"/> - <wire from="(320,1110)" to="(510,1110)"/> - <wire from="(320,750)" to="(320,1110)"/> - <wire from="(320,750)" to="(500,750)"/> - <wire from="(330,1100)" to="(510,1100)"/> - <wire from="(330,760)" to="(330,1100)"/> - <wire from="(330,760)" to="(490,760)"/> - <wire from="(340,1090)" to="(510,1090)"/> - <wire from="(340,770)" to="(340,1090)"/> - <wire from="(340,770)" to="(480,770)"/> - <wire from="(360,1410)" to="(360,1530)"/> - <wire from="(360,1530)" to="(710,1530)"/> - <wire from="(360,540)" to="(380,540)"/> - <wire from="(360,580)" to="(370,580)"/> - <wire from="(370,1000)" to="(480,1000)"/> - <wire from="(370,1220)" to="(370,1470)"/> - <wire from="(370,1470)" to="(450,1470)"/> - <wire from="(370,560)" to="(370,580)"/> - <wire from="(370,560)" to="(380,560)"/> - <wire from="(370,960)" to="(370,1000)"/> - <wire from="(380,1010)" to="(450,1010)"/> - <wire from="(380,1210)" to="(380,1340)"/> - <wire from="(380,1340)" to="(450,1340)"/> - <wire from="(380,910)" to="(380,1010)"/> - <wire from="(390,1200)" to="(390,1220)"/> - <wire from="(390,1220)" to="(450,1220)"/> - <wire from="(390,1240)" to="(390,1330)"/> - <wire from="(390,1240)" to="(450,1240)"/> - <wire from="(390,1330)" to="(390,1360)"/> - <wire from="(390,1360)" to="(390,1490)"/> - <wire from="(390,1360)" to="(450,1360)"/> - <wire from="(390,1490)" to="(450,1490)"/> - <wire from="(390,610)" to="(390,890)"/> - <wire from="(390,610)" to="(450,610)"/> - <wire from="(400,1280)" to="(400,1390)"/> - <wire from="(400,1280)" to="(710,1280)"/> - <wire from="(400,600)" to="(400,940)"/> - <wire from="(400,600)" to="(480,600)"/> - <wire from="(410,550)" to="(500,550)"/> - <wire from="(470,1020)" to="(510,1020)"/> - <wire from="(470,1040)" to="(510,1040)"/> - <wire from="(470,1060)" to="(510,1060)"/> - <wire from="(470,1080)" to="(510,1080)"/> - <wire from="(470,620)" to="(510,620)"/> - <wire from="(470,640)" to="(510,640)"/> - <wire from="(470,660)" to="(510,660)"/> - <wire from="(470,680)" to="(510,680)"/> - <wire from="(480,690)" to="(480,770)"/> - <wire from="(480,690)" to="(510,690)"/> - <wire from="(480,770)" to="(670,770)"/> - <wire from="(490,700)" to="(490,760)"/> - <wire from="(490,700)" to="(510,700)"/> - <wire from="(490,760)" to="(660,760)"/> - <wire from="(500,1000)" to="(510,1000)"/> - <wire from="(500,1010)" to="(510,1010)"/> - <wire from="(500,1030)" to="(510,1030)"/> - <wire from="(500,1050)" to="(510,1050)"/> - <wire from="(500,1070)" to="(510,1070)"/> - <wire from="(500,550)" to="(500,600)"/> - <wire from="(500,600)" to="(510,600)"/> - <wire from="(500,610)" to="(510,610)"/> - <wire from="(500,630)" to="(510,630)"/> - <wire from="(500,650)" to="(510,650)"/> - <wire from="(500,670)" to="(510,670)"/> - <wire from="(500,710)" to="(500,750)"/> - <wire from="(500,710)" to="(510,710)"/> - <wire from="(500,750)" to="(650,750)"/> - <wire from="(500,980)" to="(500,1000)"/> - <wire from="(500,980)" to="(780,980)"/> - <wire from="(540,1030)" to="(550,1030)"/> - <wire from="(540,1040)" to="(550,1040)"/> - <wire from="(540,1050)" to="(550,1050)"/> - <wire from="(540,1060)" to="(550,1060)"/> - <wire from="(540,1080)" to="(560,1080)"/> - <wire from="(540,630)" to="(550,630)"/> - <wire from="(540,640)" to="(550,640)"/> - <wire from="(540,650)" to="(550,650)"/> - <wire from="(540,660)" to="(550,660)"/> - <wire from="(540,680)" to="(560,680)"/> - <wire from="(560,1080)" to="(560,1100)"/> - <wire from="(560,1100)" to="(640,1100)"/> - <wire from="(560,680)" to="(560,700)"/> - <wire from="(560,700)" to="(620,700)"/> - <wire from="(570,1070)" to="(580,1070)"/> - <wire from="(570,670)" to="(580,670)"/> - <wire from="(580,1010)" to="(710,1010)"/> - <wire from="(580,1030)" to="(580,1070)"/> - <wire from="(580,1030)" to="(610,1030)"/> - <wire from="(580,570)" to="(580,670)"/> - <wire from="(580,570)" to="(900,570)"/> - <wire from="(580,970)" to="(580,1010)"/> - <wire from="(590,1020)" to="(680,1020)"/> - <wire from="(590,920)" to="(590,1020)"/> - <wire from="(610,960)" to="(610,1030)"/> - <wire from="(610,960)" to="(800,960)"/> - <wire from="(620,590)" to="(620,700)"/> - <wire from="(620,590)" to="(730,590)"/> - <wire from="(630,600)" to="(630,950)"/> - <wire from="(630,600)" to="(710,600)"/> - <wire from="(640,1000)" to="(640,1100)"/> - <wire from="(640,1000)" to="(730,1000)"/> - <wire from="(640,610)" to="(640,900)"/> - <wire from="(640,610)" to="(680,610)"/> - <wire from="(650,1120)" to="(740,1120)"/> - <wire from="(650,750)" to="(650,1120)"/> - <wire from="(650,750)" to="(730,750)"/> - <wire from="(660,1110)" to="(740,1110)"/> - <wire from="(660,760)" to="(660,1110)"/> - <wire from="(660,760)" to="(720,760)"/> - <wire from="(670,1100)" to="(740,1100)"/> - <wire from="(670,1220)" to="(700,1220)"/> - <wire from="(670,1340)" to="(700,1340)"/> - <wire from="(670,1470)" to="(700,1470)"/> - <wire from="(670,770)" to="(670,1100)"/> - <wire from="(670,770)" to="(710,770)"/> - <wire from="(700,1030)" to="(740,1030)"/> - <wire from="(700,1050)" to="(740,1050)"/> - <wire from="(700,1070)" to="(740,1070)"/> - <wire from="(700,1090)" to="(740,1090)"/> - <wire from="(700,620)" to="(740,620)"/> - <wire from="(700,640)" to="(740,640)"/> - <wire from="(700,660)" to="(740,660)"/> - <wire from="(700,680)" to="(740,680)"/> - <wire from="(710,1230)" to="(710,1280)"/> - <wire from="(710,1350)" to="(710,1400)"/> - <wire from="(710,1480)" to="(710,1530)"/> - <wire from="(710,690)" to="(710,770)"/> - <wire from="(710,690)" to="(740,690)"/> - <wire from="(720,1220)" to="(740,1220)"/> - <wire from="(720,1340)" to="(740,1340)"/> - <wire from="(720,1470)" to="(740,1470)"/> - <wire from="(720,700)" to="(720,760)"/> - <wire from="(720,700)" to="(740,700)"/> - <wire from="(730,1000)" to="(730,1010)"/> - <wire from="(730,1010)" to="(740,1010)"/> - <wire from="(730,1020)" to="(740,1020)"/> - <wire from="(730,1040)" to="(740,1040)"/> - <wire from="(730,1060)" to="(740,1060)"/> - <wire from="(730,1080)" to="(740,1080)"/> - <wire from="(730,590)" to="(730,600)"/> - <wire from="(730,600)" to="(740,600)"/> - <wire from="(730,610)" to="(740,610)"/> - <wire from="(730,630)" to="(740,630)"/> - <wire from="(730,650)" to="(740,650)"/> - <wire from="(730,670)" to="(740,670)"/> - <wire from="(730,710)" to="(730,750)"/> - <wire from="(730,710)" to="(740,710)"/> - <wire from="(740,1220)" to="(1230,1220)"/> - <wire from="(740,1220)" to="(740,1340)"/> - <wire from="(740,1340)" to="(740,1470)"/> - <wire from="(770,1040)" to="(780,1040)"/> - <wire from="(770,1050)" to="(780,1050)"/> - <wire from="(770,1060)" to="(780,1060)"/> - <wire from="(770,1070)" to="(780,1070)"/> - <wire from="(770,1080)" to="(790,1080)"/> - <wire from="(770,1090)" to="(780,1090)"/> - <wire from="(770,630)" to="(780,630)"/> - <wire from="(770,640)" to="(780,640)"/> - <wire from="(770,650)" to="(780,650)"/> - <wire from="(770,660)" to="(780,660)"/> - <wire from="(770,680)" to="(780,680)"/> - <wire from="(780,1090)" to="(780,1110)"/> - <wire from="(780,1110)" to="(920,1110)"/> - <wire from="(780,680)" to="(780,980)"/> - <wire from="(790,1080)" to="(790,1100)"/> - <wire from="(790,1100)" to="(890,1100)"/> - <wire from="(800,1080)" to="(810,1080)"/> - <wire from="(800,580)" to="(800,670)"/> - <wire from="(800,580)" to="(900,580)"/> - <wire from="(800,690)" to="(800,960)"/> - <wire from="(800,690)" to="(860,690)"/> - <wire from="(810,700)" to="(810,1080)"/> - <wire from="(810,700)" to="(870,700)"/> - <wire from="(860,590)" to="(860,690)"/> - <wire from="(860,590)" to="(900,590)"/> - <wire from="(870,600)" to="(870,700)"/> - <wire from="(870,600)" to="(900,600)"/> - <wire from="(890,1090)" to="(890,1100)"/> - <wire from="(920,610)" to="(950,610)"/> - <wire from="(950,610)" to="(950,670)"/> - <wire from="(950,670)" to="(1180,670)"/> - <wire from="(950,670)" to="(950,680)"/> - <wire from="(950,990)" to="(1060,990)"/> - <wire from="(960,960)" to="(1050,960)"/> - <wire from="(970,690)" to="(990,690)"/> - <wire from="(970,700)" to="(970,780)"/> - <wire from="(970,780)" to="(990,780)"/> - </circuit> - <circuit name="BitShiftRightLogical"> - <a name="appearance" val="logisim_evolution"/> - <a name="circuit" val="BitShiftRightLogical"/> - <a name="circuitnamedboxfixedsize" val="true"/> - <a name="simulationFrequency" val="1.0"/> - <comp lib="0" loc="(1000,670)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="west"/> - <a name="label" val="RESULT"/> - <a name="output" val="true"/> - <a name="radix" val="16"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(260,410)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="label" val="DATA"/> - <a name="radix" val="16"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(280,760)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="label" val="SHIFT_AMT"/> - <a name="width" val="4"/> - </comp> - <comp lib="0" loc="(280,760)" name="Splitter"> - <a name="fanout" val="4"/> - <a name="incoming" val="4"/> - </comp> - <comp lib="0" loc="(350,410)" name="Splitter"> - <a name="appear" val="right"/> - <a name="fanout" val="16"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(370,580)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(370,590)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(370,600)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(370,610)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(370,620)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(370,630)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(370,640)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(370,650)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(390,660)" name="Splitter"> - <a name="appear" val="right"/> - <a name="facing" val="west"/> - <a name="fanout" val="16"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(520,410)" name="Splitter"> - <a name="appear" val="right"/> - <a name="fanout" val="16"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(540,580)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(540,590)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(540,600)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(540,610)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(560,620)" name="Splitter"> - <a name="appear" val="right"/> - <a name="facing" val="west"/> - <a name="fanout" val="16"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(680,410)" name="Splitter"> - <a name="appear" val="right"/> - <a name="fanout" val="16"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(700,580)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(700,590)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(720,600)" name="Splitter"> - <a name="appear" val="right"/> - <a name="facing" val="west"/> - <a name="fanout" val="16"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(850,400)" name="Splitter"> - <a name="appear" val="right"/> - <a name="fanout" val="16"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(870,570)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(890,580)" name="Splitter"> - <a name="appear" val="right"/> - <a name="facing" val="west"/> - <a name="fanout" val="16"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="2" loc="(470,670)" name="Multiplexer"> - <a name="width" val="16"/> - </comp> - <comp lib="2" loc="(650,670)" name="Multiplexer"> - <a name="width" val="16"/> - </comp> - <comp lib="2" loc="(810,670)" name="Multiplexer"> - <a name="width" val="16"/> - </comp> - <comp lib="2" loc="(980,670)" name="Multiplexer"> - <a name="width" val="16"/> - </comp> - <comp lib="8" loc="(340,390)" name="Text"> - <a name="font" val="SansSerif plain 12"/> - <a name="halign" val="left"/> - <a name="text" val="d >> 8"/> - <a name="valign" val="center"/> - </comp> - <comp lib="8" loc="(510,390)" name="Text"> - <a name="font" val="SansSerif plain 12"/> - <a name="halign" val="left"/> - <a name="text" val="d >> 4"/> - <a name="valign" val="center"/> - </comp> - <comp lib="8" loc="(670,390)" name="Text"> - <a name="font" val="SansSerif plain 12"/> - <a name="halign" val="left"/> - <a name="text" val="d >> 2"/> - <a name="valign" val="center"/> - </comp> - <comp lib="8" loc="(840,380)" name="Text"> - <a name="font" val="SansSerif plain 12"/> - <a name="halign" val="left"/> - <a name="text" val="d >> 1"/> - <a name="valign" val="center"/> - </comp> - <wire from="(260,410)" to="(350,410)"/> - <wire from="(300,720)" to="(960,720)"/> - <wire from="(300,730)" to="(790,730)"/> - <wire from="(300,740)" to="(630,740)"/> - <wire from="(300,750)" to="(450,750)"/> - <wire from="(350,410)" to="(420,410)"/> - <wire from="(390,660)" to="(390,680)"/> - <wire from="(390,680)" to="(440,680)"/> - <wire from="(420,410)" to="(420,660)"/> - <wire from="(420,660)" to="(440,660)"/> - <wire from="(450,690)" to="(450,750)"/> - <wire from="(470,670)" to="(500,670)"/> - <wire from="(500,410)" to="(500,670)"/> - <wire from="(500,410)" to="(520,410)"/> - <wire from="(520,410)" to="(600,410)"/> - <wire from="(560,620)" to="(560,680)"/> - <wire from="(560,680)" to="(620,680)"/> - <wire from="(600,410)" to="(600,660)"/> - <wire from="(600,660)" to="(620,660)"/> - <wire from="(630,690)" to="(630,740)"/> - <wire from="(650,670)" to="(670,670)"/> - <wire from="(670,410)" to="(670,670)"/> - <wire from="(670,410)" to="(680,410)"/> - <wire from="(670,670)" to="(670,680)"/> - <wire from="(680,410)" to="(760,410)"/> - <wire from="(720,600)" to="(720,680)"/> - <wire from="(720,680)" to="(780,680)"/> - <wire from="(760,410)" to="(760,660)"/> - <wire from="(760,660)" to="(780,660)"/> - <wire from="(790,690)" to="(790,730)"/> - <wire from="(810,670)" to="(840,670)"/> - <wire from="(840,400)" to="(840,670)"/> - <wire from="(840,400)" to="(850,400)"/> - <wire from="(840,670)" to="(840,680)"/> - <wire from="(850,400)" to="(920,400)"/> - <wire from="(890,580)" to="(890,680)"/> - <wire from="(890,680)" to="(950,680)"/> - <wire from="(920,400)" to="(920,660)"/> - <wire from="(920,660)" to="(950,660)"/> - <wire from="(960,690)" to="(960,720)"/> - <wire from="(980,670)" to="(1000,670)"/> - </circuit> - <circuit name="BitShiftLeftLogical"> - <a name="appearance" val="logisim_evolution"/> - <a name="circuit" val="BitShiftLeftLogical"/> - <a name="circuitnamedboxfixedsize" val="true"/> - <a name="simulationFrequency" val="1.0"/> - <comp lib="0" loc="(1000,670)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="west"/> - <a name="label" val="RESULT"/> - <a name="output" val="true"/> - <a name="radix" val="16"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(260,410)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="label" val="DATA"/> - <a name="radix" val="16"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(280,760)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="label" val="SHIFT_AMT"/> - <a name="width" val="4"/> - </comp> - <comp lib="0" loc="(280,760)" name="Splitter"> - <a name="fanout" val="4"/> - <a name="incoming" val="4"/> - </comp> - <comp lib="0" loc="(350,500)" name="Splitter"> - <a name="appear" val="right"/> - <a name="fanout" val="16"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(370,430)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(370,440)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(370,450)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(370,460)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(370,470)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(370,480)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(370,490)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(370,500)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(390,590)" name="Splitter"> - <a name="appear" val="right"/> - <a name="facing" val="west"/> - <a name="fanout" val="16"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(520,460)" name="Splitter"> - <a name="appear" val="right"/> - <a name="fanout" val="16"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(540,430)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(540,440)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(540,450)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(540,460)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(560,590)" name="Splitter"> - <a name="appear" val="right"/> - <a name="facing" val="west"/> - <a name="fanout" val="16"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(680,440)" name="Splitter"> - <a name="appear" val="right"/> - <a name="fanout" val="16"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(700,430)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(700,440)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(720,590)" name="Splitter"> - <a name="appear" val="right"/> - <a name="facing" val="west"/> - <a name="fanout" val="16"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(850,420)" name="Splitter"> - <a name="appear" val="right"/> - <a name="fanout" val="16"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(870,420)" name="Ground"> - <a name="facing" val="west"/> - </comp> - <comp lib="0" loc="(890,580)" name="Splitter"> - <a name="appear" val="right"/> - <a name="facing" val="west"/> - <a name="fanout" val="16"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="2" loc="(470,670)" name="Multiplexer"> - <a name="width" val="16"/> - </comp> - <comp lib="2" loc="(650,670)" name="Multiplexer"> - <a name="width" val="16"/> - </comp> - <comp lib="2" loc="(810,670)" name="Multiplexer"> - <a name="width" val="16"/> - </comp> - <comp lib="2" loc="(980,670)" name="Multiplexer"> - <a name="width" val="16"/> - </comp> - <comp lib="8" loc="(340,390)" name="Text"> - <a name="font" val="SansSerif plain 12"/> - <a name="halign" val="left"/> - <a name="text" val="d >> 8"/> - <a name="valign" val="center"/> - </comp> - <comp lib="8" loc="(510,390)" name="Text"> - <a name="font" val="SansSerif plain 12"/> - <a name="halign" val="left"/> - <a name="text" val="d >> 4"/> - <a name="valign" val="center"/> - </comp> - <comp lib="8" loc="(670,390)" name="Text"> - <a name="font" val="SansSerif plain 12"/> - <a name="halign" val="left"/> - <a name="text" val="d >> 2"/> - <a name="valign" val="center"/> - </comp> - <comp lib="8" loc="(840,380)" name="Text"> - <a name="font" val="SansSerif plain 12"/> - <a name="halign" val="left"/> - <a name="text" val="d >> 1"/> - <a name="valign" val="center"/> - </comp> - <wire from="(260,410)" to="(350,410)"/> - <wire from="(300,720)" to="(960,720)"/> - <wire from="(300,730)" to="(790,730)"/> - <wire from="(300,740)" to="(630,740)"/> - <wire from="(300,750)" to="(450,750)"/> - <wire from="(350,410)" to="(350,500)"/> - <wire from="(350,410)" to="(420,410)"/> - <wire from="(390,590)" to="(390,680)"/> - <wire from="(390,680)" to="(440,680)"/> - <wire from="(420,410)" to="(420,660)"/> - <wire from="(420,660)" to="(440,660)"/> - <wire from="(450,690)" to="(450,750)"/> - <wire from="(470,670)" to="(500,670)"/> - <wire from="(500,410)" to="(500,670)"/> - <wire from="(500,410)" to="(520,410)"/> - <wire from="(520,410)" to="(520,460)"/> - <wire from="(520,410)" to="(600,410)"/> - <wire from="(560,590)" to="(560,680)"/> - <wire from="(560,680)" to="(620,680)"/> - <wire from="(600,410)" to="(600,660)"/> - <wire from="(600,660)" to="(620,660)"/> - <wire from="(630,690)" to="(630,740)"/> - <wire from="(650,670)" to="(670,670)"/> - <wire from="(670,410)" to="(670,670)"/> - <wire from="(670,410)" to="(680,410)"/> - <wire from="(670,670)" to="(670,680)"/> - <wire from="(680,410)" to="(680,440)"/> - <wire from="(680,410)" to="(760,410)"/> - <wire from="(720,590)" to="(720,680)"/> - <wire from="(720,680)" to="(780,680)"/> - <wire from="(760,410)" to="(760,660)"/> - <wire from="(760,660)" to="(780,660)"/> - <wire from="(790,690)" to="(790,730)"/> - <wire from="(810,670)" to="(840,670)"/> - <wire from="(840,400)" to="(840,670)"/> - <wire from="(840,400)" to="(850,400)"/> - <wire from="(840,670)" to="(840,680)"/> - <wire from="(850,400)" to="(850,420)"/> - <wire from="(850,400)" to="(920,400)"/> - <wire from="(890,580)" to="(890,680)"/> - <wire from="(890,680)" to="(950,680)"/> - <wire from="(920,400)" to="(920,660)"/> - <wire from="(920,660)" to="(950,660)"/> - <wire from="(960,690)" to="(960,720)"/> - <wire from="(980,670)" to="(1000,670)"/> - </circuit> - <circuit name="BitShiftRightArithmetic"> - <a name="appearance" val="logisim_evolution"/> - <a name="circuit" val="BitShiftRightArithmetic"/> - <a name="circuitnamedboxfixedsize" val="true"/> - <a name="simulationFrequency" val="1.0"/> - <comp lib="0" loc="(1000,670)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="west"/> - <a name="label" val="RESULT"/> - <a name="output" val="true"/> - <a name="radix" val="16"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(260,410)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="label" val="DATA"/> - <a name="radix" val="16"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(280,760)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="label" val="SHIFT_AMT"/> - <a name="width" val="4"/> - </comp> - <comp lib="0" loc="(280,760)" name="Splitter"> - <a name="fanout" val="4"/> - <a name="incoming" val="4"/> - </comp> - <comp lib="0" loc="(350,410)" name="Splitter"> - <a name="appear" val="right"/> - <a name="fanout" val="16"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(390,660)" name="Splitter"> - <a name="appear" val="right"/> - <a name="facing" val="west"/> - <a name="fanout" val="16"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(520,410)" name="Splitter"> - <a name="appear" val="right"/> - <a name="fanout" val="16"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(560,620)" name="Splitter"> - <a name="appear" val="right"/> - <a name="facing" val="west"/> - <a name="fanout" val="16"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(680,410)" name="Splitter"> - <a name="appear" val="right"/> - <a name="fanout" val="16"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(720,600)" name="Splitter"> - <a name="appear" val="right"/> - <a name="facing" val="west"/> - <a name="fanout" val="16"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(850,400)" name="Splitter"> - <a name="appear" val="right"/> - <a name="fanout" val="16"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(890,580)" name="Splitter"> - <a name="appear" val="right"/> - <a name="facing" val="west"/> - <a name="fanout" val="16"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="2" loc="(470,670)" name="Multiplexer"> - <a name="width" val="16"/> - </comp> - <comp lib="2" loc="(650,670)" name="Multiplexer"> - <a name="width" val="16"/> - </comp> - <comp lib="2" loc="(810,670)" name="Multiplexer"> - <a name="width" val="16"/> - </comp> - <comp lib="2" loc="(980,670)" name="Multiplexer"> - <a name="width" val="16"/> - </comp> - <comp lib="8" loc="(340,390)" name="Text"> - <a name="font" val="SansSerif plain 12"/> - <a name="halign" val="left"/> - <a name="text" val="d >> 8"/> - <a name="valign" val="center"/> - </comp> - <comp lib="8" loc="(510,390)" name="Text"> - <a name="font" val="SansSerif plain 12"/> - <a name="halign" val="left"/> - <a name="text" val="d >> 4"/> - <a name="valign" val="center"/> - </comp> - <comp lib="8" loc="(670,390)" name="Text"> - <a name="font" val="SansSerif plain 12"/> - <a name="halign" val="left"/> - <a name="text" val="d >> 2"/> - <a name="valign" val="center"/> - </comp> - <comp lib="8" loc="(840,380)" name="Text"> - <a name="font" val="SansSerif plain 12"/> - <a name="halign" val="left"/> - <a name="text" val="d >> 1"/> - <a name="valign" val="center"/> - </comp> - <wire from="(260,410)" to="(350,410)"/> - <wire from="(300,720)" to="(960,720)"/> - <wire from="(300,730)" to="(790,730)"/> - <wire from="(300,740)" to="(630,740)"/> - <wire from="(300,750)" to="(450,750)"/> - <wire from="(350,410)" to="(420,410)"/> - <wire from="(370,570)" to="(370,580)"/> - <wire from="(370,580)" to="(370,590)"/> - <wire from="(370,590)" to="(370,600)"/> - <wire from="(370,600)" to="(370,610)"/> - <wire from="(370,610)" to="(370,620)"/> - <wire from="(370,620)" to="(370,630)"/> - <wire from="(370,630)" to="(370,640)"/> - <wire from="(370,640)" to="(370,650)"/> - <wire from="(390,660)" to="(390,680)"/> - <wire from="(390,680)" to="(440,680)"/> - <wire from="(420,410)" to="(420,660)"/> - <wire from="(420,660)" to="(440,660)"/> - <wire from="(450,690)" to="(450,750)"/> - <wire from="(470,670)" to="(500,670)"/> - <wire from="(500,410)" to="(500,670)"/> - <wire from="(500,410)" to="(520,410)"/> - <wire from="(520,410)" to="(600,410)"/> - <wire from="(540,570)" to="(540,580)"/> - <wire from="(540,580)" to="(540,590)"/> - <wire from="(540,590)" to="(540,600)"/> - <wire from="(540,600)" to="(540,610)"/> - <wire from="(560,620)" to="(560,680)"/> - <wire from="(560,680)" to="(620,680)"/> - <wire from="(600,410)" to="(600,660)"/> - <wire from="(600,660)" to="(620,660)"/> - <wire from="(630,690)" to="(630,740)"/> - <wire from="(650,670)" to="(670,670)"/> - <wire from="(670,410)" to="(670,670)"/> - <wire from="(670,410)" to="(680,410)"/> - <wire from="(670,670)" to="(670,680)"/> - <wire from="(680,410)" to="(760,410)"/> - <wire from="(700,570)" to="(700,580)"/> - <wire from="(700,580)" to="(700,590)"/> - <wire from="(720,600)" to="(720,680)"/> - <wire from="(720,680)" to="(780,680)"/> - <wire from="(760,410)" to="(760,660)"/> - <wire from="(760,660)" to="(780,660)"/> - <wire from="(790,690)" to="(790,730)"/> - <wire from="(810,670)" to="(840,670)"/> - <wire from="(840,400)" to="(840,670)"/> - <wire from="(840,400)" to="(850,400)"/> - <wire from="(840,670)" to="(840,680)"/> - <wire from="(850,400)" to="(920,400)"/> - <wire from="(870,560)" to="(870,570)"/> - <wire from="(890,580)" to="(890,680)"/> - <wire from="(890,680)" to="(950,680)"/> - <wire from="(920,400)" to="(920,660)"/> - <wire from="(920,660)" to="(950,660)"/> - <wire from="(960,690)" to="(960,720)"/> - <wire from="(980,670)" to="(1000,670)"/> - </circuit> - <circuit name="IC_74382"> - <a name="circuit" val="IC_74382"/> - <a name="circuitnamedboxfixedsize" val="true"/> - <a name="simulationFrequency" val="1.0"/> - <comp lib="0" loc="(1160,650)" name="Pin"> - <a name="appearance" val="classic"/> - <a name="facing" val="west"/> - <a name="label" val="F1"/> - <a name="labelfont" val="SansSerif plain 12"/> - <a name="output" val="true"/> - <a name="tristate" val="true"/> - </comp> - <comp lib="0" loc="(1240,1430)" name="Pin"> - <a name="appearance" val="classic"/> - <a name="label" val="A1"/> - <a name="labelfont" val="SansSerif plain 12"/> - </comp> - <comp lib="0" loc="(1350,1430)" name="Pin"> - <a name="appearance" val="classic"/> - <a name="label" val="B2"/> - <a name="labelfont" val="SansSerif plain 12"/> - </comp> - <comp lib="0" loc="(1620,650)" name="Pin"> - <a name="appearance" val="classic"/> - <a name="facing" val="west"/> - <a name="label" val="F2"/> - <a name="labelfont" val="SansSerif plain 12"/> - <a name="output" val="true"/> - <a name="tristate" val="true"/> - </comp> - <comp lib="0" loc="(1700,1430)" name="Pin"> - <a name="appearance" val="classic"/> - <a name="label" val="A2"/> - <a name="labelfont" val="SansSerif plain 12"/> - </comp> - <comp lib="0" loc="(1810,1430)" name="Pin"> - <a name="appearance" val="classic"/> - <a name="label" val="B3"/> - <a name="labelfont" val="SansSerif plain 12"/> - </comp> - <comp lib="0" loc="(2080,650)" name="Pin"> - <a name="appearance" val="classic"/> - <a name="facing" val="west"/> - <a name="label" val="F3"/> - <a name="labelfont" val="SansSerif plain 12"/> - <a name="output" val="true"/> - <a name="tristate" val="true"/> - </comp> - <comp lib="0" loc="(2160,1430)" name="Pin"> - <a name="appearance" val="classic"/> - <a name="label" val="A3"/> - <a name="labelfont" val="SansSerif plain 12"/> - </comp> - <comp lib="0" loc="(2320,1460)" name="Pin"> - <a name="appearance" val="classic"/> - <a name="label" val="S0"/> - <a name="labelfont" val="SansSerif plain 12"/> - </comp> - <comp lib="0" loc="(2370,650)" name="Pin"> - <a name="appearance" val="classic"/> - <a name="facing" val="west"/> - <a name="label" val="OVR"/> - <a name="labelfont" val="SansSerif plain 12"/> - <a name="output" val="true"/> - <a name="tristate" val="true"/> - </comp> - <comp lib="0" loc="(2420,1460)" name="Pin"> - <a name="appearance" val="classic"/> - <a name="label" val="S1"/> - <a name="labelfont" val="SansSerif plain 12"/> - </comp> - <comp lib="0" loc="(2420,650)" name="Pin"> - <a name="appearance" val="classic"/> - <a name="facing" val="west"/> - <a name="label" val="Cn_4_09724fe9"/> - <a name="labelfont" val="SansSerif plain 12"/> - <a name="output" val="true"/> - <a name="tristate" val="true"/> - </comp> - <comp lib="0" loc="(2520,1460)" name="Pin"> - <a name="appearance" val="classic"/> - <a name="label" val="S2"/> - <a name="labelfont" val="SansSerif plain 12"/> - </comp> - <comp lib="0" loc="(370,1430)" name="Pin"> - <a name="appearance" val="classic"/> - <a name="label" val="Cn"/> - <a name="labelfont" val="SansSerif plain 12"/> - </comp> - <comp lib="0" loc="(430,1430)" name="Pin"> - <a name="appearance" val="classic"/> - <a name="label" val="B0"/> - <a name="labelfont" val="SansSerif plain 12"/> - </comp> - <comp lib="0" loc="(700,650)" name="Pin"> - <a name="appearance" val="classic"/> - <a name="facing" val="west"/> - <a name="label" val="F0"/> - <a name="labelfont" val="SansSerif plain 12"/> - <a name="output" val="true"/> - <a name="tristate" val="true"/> - </comp> - <comp lib="0" loc="(780,1430)" name="Pin"> - <a name="appearance" val="classic"/> - <a name="label" val="A0"/> - <a name="labelfont" val="SansSerif plain 12"/> - </comp> - <comp lib="0" loc="(890,1430)" name="Pin"> - <a name="appearance" val="classic"/> - <a name="label" val="B1"/> - <a name="labelfont" val="SansSerif plain 12"/> - </comp> - <comp lib="1" loc="(1030,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1090,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1100,870)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="3"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1120,1380)" name="NOT Gate"> - <a name="facing" val="north"/> - <a name="size" val="20"/> - </comp> - <comp lib="1" loc="(1120,780)" name="NOR Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1140,870)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="3"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1150,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1160,700)" name="XOR Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1170,1120)" name="NOR Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1210,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1270,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1370,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1400,1380)" name="NOT Gate"> - <a name="facing" val="north"/> - <a name="size" val="20"/> - </comp> - <comp lib="1" loc="(1430,1120)" name="NOR Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="3"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1430,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1490,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1490,870)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1550,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1550,780)" name="NOR Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="3"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1550,870)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1580,1380)" name="NOT Gate"> - <a name="facing" val="north"/> - <a name="size" val="20"/> - </comp> - <comp lib="1" loc="(1600,870)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="3"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1610,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1620,700)" name="XOR Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1630,1120)" name="NOR Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1670,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1730,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1830,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1850,870)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1860,1380)" name="NOT Gate"> - <a name="facing" val="north"/> - <a name="size" val="20"/> - </comp> - <comp lib="1" loc="(1890,1120)" name="NOR Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="3"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1890,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1910,870)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1930,780)" name="NOR Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1950,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(1970,870)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(2010,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(2020,870)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="3"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(2040,1380)" name="NOT Gate"> - <a name="facing" val="north"/> - <a name="size" val="20"/> - </comp> - <comp lib="1" loc="(2070,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(2080,700)" name="XOR Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(2090,1120)" name="NOR Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(2130,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(2170,860)" name="NAND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(2190,1090)" name="NOR Gate"> - <a name="facing" val="west"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(2190,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(2230,870)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(2250,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(2290,870)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(2300,790)" name="NOR Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(2320,1420)" name="NOT Gate"> - <a name="facing" val="north"/> - <a name="size" val="20"/> - </comp> - <comp lib="1" loc="(2330,1140)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(2340,870)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="3"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(2350,1210)" name="NAND Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(2360,1310)" name="NAND Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(2370,710)" name="XOR Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(2380,770)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(2380,870)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(2390,1200)" name="NAND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="3"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(2390,1380)" name="NOT Gate"> - <a name="facing" val="north"/> - <a name="size" val="20"/> - </comp> - <comp lib="1" loc="(2420,1110)" name="NOR Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(2420,1420)" name="NOT Gate"> - <a name="facing" val="north"/> - <a name="size" val="20"/> - </comp> - <comp lib="1" loc="(2420,760)" name="NAND Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(2430,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(2430,860)" name="NAND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(2450,1310)" name="NAND Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(2490,1380)" name="NOT Gate"> - <a name="facing" val="north"/> - <a name="size" val="20"/> - </comp> - <comp lib="1" loc="(2520,1420)" name="NOT Gate"> - <a name="facing" val="north"/> - <a name="size" val="20"/> - </comp> - <comp lib="1" loc="(2540,1380)" name="NOT Gate"> - <a name="facing" val="north"/> - <a name="size" val="20"/> - </comp> - <comp lib="1" loc="(450,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(480,1380)" name="NOT Gate"> - <a name="facing" val="north"/> - <a name="size" val="20"/> - </comp> - <comp lib="1" loc="(510,1120)" name="NOR Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="3"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(510,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(570,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(630,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(660,1380)" name="NOT Gate"> - <a name="facing" val="north"/> - <a name="size" val="20"/> - </comp> - <comp lib="1" loc="(660,780)" name="NAND Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(690,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(700,700)" name="XOR Gate"> - <a name="facing" val="north"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(710,1120)" name="NOR Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(750,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(810,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(910,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(940,1380)" name="NOT Gate"> - <a name="facing" val="north"/> - <a name="size" val="20"/> - </comp> - <comp lib="1" loc="(970,1120)" name="NOR Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="3"/> - <a name="size" val="30"/> - </comp> - <comp lib="1" loc="(970,1200)" name="AND Gate"> - <a name="facing" val="north"/> - <a name="inputs" val="5"/> - <a name="size" val="30"/> - </comp> - <comp lib="8" loc="(2260,635)" name="Text"> - <a name="font" val="SansSerif plain 12"/> - <a name="text" val="P G 74381 "/> - </comp> - <wire from="(1010,1230)" to="(1020,1230)"/> - <wire from="(1020,1230)" to="(1020,1270)"/> - <wire from="(1020,1270)" to="(1140,1270)"/> - <wire from="(1030,1180)" to="(1030,1200)"/> - <wire from="(1030,1230)" to="(1030,1250)"/> - <wire from="(1030,1250)" to="(1100,1250)"/> - <wire from="(1040,1230)" to="(1040,1290)"/> - <wire from="(1040,1290)" to="(1220,1290)"/> - <wire from="(1050,1230)" to="(1050,1310)"/> - <wire from="(1050,1310)" to="(1070,1310)"/> - <wire from="(1070,1230)" to="(1070,1310)"/> - <wire from="(1070,1310)" to="(1120,1310)"/> - <wire from="(1080,1230)" to="(1080,1300)"/> - <wire from="(1080,1300)" to="(1160,1300)"/> - <wire from="(1090,1170)" to="(1090,1200)"/> - <wire from="(1090,1170)" to="(1160,1170)"/> - <wire from="(1090,1230)" to="(1090,1280)"/> - <wire from="(1090,1280)" to="(1260,1280)"/> - <wire from="(1090,900)" to="(1090,910)"/> - <wire from="(1090,910)" to="(1480,910)"/> - <wire from="(1100,1230)" to="(1100,1250)"/> - <wire from="(1100,1250)" to="(1270,1250)"/> - <wire from="(1100,840)" to="(1100,870)"/> - <wire from="(1100,840)" to="(1110,840)"/> - <wire from="(1100,900)" to="(1100,920)"/> - <wire from="(1100,920)" to="(1130,920)"/> - <wire from="(1110,1090)" to="(1150,1090)"/> - <wire from="(1110,1230)" to="(1110,1240)"/> - <wire from="(1110,1240)" to="(1570,1240)"/> - <wire from="(1110,820)" to="(1110,840)"/> - <wire from="(1110,900)" to="(1110,1090)"/> - <wire from="(1120,1310)" to="(1120,1380)"/> - <wire from="(1120,1310)" to="(1230,1310)"/> - <wire from="(1120,1400)" to="(1120,1410)"/> - <wire from="(1120,1410)" to="(1240,1410)"/> - <wire from="(1120,770)" to="(1120,780)"/> - <wire from="(1120,770)" to="(1150,770)"/> - <wire from="(1130,1230)" to="(1140,1230)"/> - <wire from="(1130,820)" to="(1130,840)"/> - <wire from="(1130,840)" to="(1140,840)"/> - <wire from="(1130,900)" to="(1130,920)"/> - <wire from="(1130,920)" to="(1490,920)"/> - <wire from="(1140,1230)" to="(1140,1270)"/> - <wire from="(1140,1270)" to="(1200,1270)"/> - <wire from="(1140,840)" to="(1140,870)"/> - <wire from="(1140,900)" to="(1140,960)"/> - <wire from="(1140,960)" to="(1560,960)"/> - <wire from="(1150,1090)" to="(1510,1090)"/> - <wire from="(1150,1160)" to="(1160,1160)"/> - <wire from="(1150,1180)" to="(1150,1200)"/> - <wire from="(1150,1180)" to="(1170,1180)"/> - <wire from="(1150,1230)" to="(1150,1260)"/> - <wire from="(1150,1260)" to="(1210,1260)"/> - <wire from="(1150,740)" to="(1150,770)"/> - <wire from="(1150,900)" to="(1150,1090)"/> - <wire from="(1160,1160)" to="(1160,1170)"/> - <wire from="(1160,1230)" to="(1160,1300)"/> - <wire from="(1160,650)" to="(1160,700)"/> - <wire from="(1170,1160)" to="(1170,1180)"/> - <wire from="(1170,1230)" to="(1170,1320)"/> - <wire from="(1170,1320)" to="(1240,1320)"/> - <wire from="(1170,740)" to="(1170,970)"/> - <wire from="(1170,970)" to="(1170,1120)"/> - <wire from="(1170,970)" to="(1600,970)"/> - <wire from="(1180,1160)" to="(1180,1180)"/> - <wire from="(1180,1180)" to="(1210,1180)"/> - <wire from="(1190,1160)" to="(1190,1170)"/> - <wire from="(1190,1170)" to="(1270,1170)"/> - <wire from="(1190,1230)" to="(1200,1230)"/> - <wire from="(1200,1230)" to="(1200,1270)"/> - <wire from="(1200,1270)" to="(1390,1270)"/> - <wire from="(1210,1180)" to="(1210,1200)"/> - <wire from="(1210,1230)" to="(1210,1260)"/> - <wire from="(1210,1260)" to="(1380,1260)"/> - <wire from="(1220,1230)" to="(1220,1290)"/> - <wire from="(1220,1290)" to="(1280,1290)"/> - <wire from="(1230,1230)" to="(1230,1310)"/> - <wire from="(1240,1320)" to="(1240,1410)"/> - <wire from="(1240,1320)" to="(1290,1320)"/> - <wire from="(1240,1410)" to="(1240,1430)"/> - <wire from="(1250,1230)" to="(1260,1230)"/> - <wire from="(1260,1230)" to="(1260,1280)"/> - <wire from="(1260,1280)" to="(1410,1280)"/> - <wire from="(1270,1170)" to="(1270,1200)"/> - <wire from="(1270,1230)" to="(1270,1250)"/> - <wire from="(1270,1250)" to="(1430,1250)"/> - <wire from="(1280,1230)" to="(1280,1290)"/> - <wire from="(1290,1230)" to="(1290,1320)"/> - <wire from="(1350,1230)" to="(1360,1230)"/> - <wire from="(1350,1290)" to="(1350,1410)"/> - <wire from="(1350,1290)" to="(1500,1290)"/> - <wire from="(1350,1410)" to="(1350,1430)"/> - <wire from="(1350,1410)" to="(1400,1410)"/> - <wire from="(1360,1230)" to="(1360,1310)"/> - <wire from="(1360,1310)" to="(1510,1310)"/> - <wire from="(1370,1180)" to="(1370,1200)"/> - <wire from="(1370,1180)" to="(1420,1180)"/> - <wire from="(1370,1230)" to="(1370,1300)"/> - <wire from="(1370,1300)" to="(1400,1300)"/> - <wire from="(1380,1230)" to="(1380,1260)"/> - <wire from="(1380,1260)" to="(1420,1260)"/> - <wire from="(1390,1230)" to="(1390,1270)"/> - <wire from="(1390,1270)" to="(1480,1270)"/> - <wire from="(1400,1300)" to="(1400,1380)"/> - <wire from="(1400,1300)" to="(1440,1300)"/> - <wire from="(1400,1400)" to="(1400,1410)"/> - <wire from="(1410,1230)" to="(1410,1280)"/> - <wire from="(1410,1280)" to="(1550,1280)"/> - <wire from="(1420,1160)" to="(1420,1180)"/> - <wire from="(1420,1230)" to="(1420,1260)"/> - <wire from="(1420,1260)" to="(1610,1260)"/> - <wire from="(1430,1160)" to="(1430,1200)"/> - <wire from="(1430,1230)" to="(1430,1250)"/> - <wire from="(1430,1250)" to="(1490,1250)"/> - <wire from="(1430,940)" to="(1430,1120)"/> - <wire from="(1430,940)" to="(1860,940)"/> - <wire from="(1440,1160)" to="(1440,1180)"/> - <wire from="(1440,1180)" to="(1490,1180)"/> - <wire from="(1440,1230)" to="(1440,1300)"/> - <wire from="(1440,1300)" to="(1540,1300)"/> - <wire from="(1450,1230)" to="(1450,1320)"/> - <wire from="(1450,1320)" to="(1630,1320)"/> - <wire from="(1470,1230)" to="(1480,1230)"/> - <wire from="(1470,900)" to="(1480,900)"/> - <wire from="(1480,1230)" to="(1480,1270)"/> - <wire from="(1480,1270)" to="(1600,1270)"/> - <wire from="(1480,900)" to="(1480,910)"/> - <wire from="(1480,910)" to="(1830,910)"/> - <wire from="(1490,1180)" to="(1490,1200)"/> - <wire from="(1490,1230)" to="(1490,1250)"/> - <wire from="(1490,1250)" to="(1560,1250)"/> - <wire from="(1490,840)" to="(1490,870)"/> - <wire from="(1490,840)" to="(1540,840)"/> - <wire from="(1490,900)" to="(1490,920)"/> - <wire from="(1490,920)" to="(1540,920)"/> - <wire from="(1500,1230)" to="(1500,1290)"/> - <wire from="(1500,1290)" to="(1680,1290)"/> - <wire from="(1500,900)" to="(1500,930)"/> - <wire from="(1500,930)" to="(1550,930)"/> - <wire from="(1510,1090)" to="(1570,1090)"/> - <wire from="(1510,1230)" to="(1510,1310)"/> - <wire from="(1510,1310)" to="(1530,1310)"/> - <wire from="(1510,900)" to="(1510,1090)"/> - <wire from="(1530,1230)" to="(1530,1310)"/> - <wire from="(1530,1310)" to="(1580,1310)"/> - <wire from="(1530,900)" to="(1540,900)"/> - <wire from="(1540,1230)" to="(1540,1300)"/> - <wire from="(1540,1300)" to="(1620,1300)"/> - <wire from="(1540,820)" to="(1540,840)"/> - <wire from="(1540,900)" to="(1540,920)"/> - <wire from="(1540,920)" to="(1840,920)"/> - <wire from="(1550,1170)" to="(1550,1200)"/> - <wire from="(1550,1170)" to="(1620,1170)"/> - <wire from="(1550,1230)" to="(1550,1280)"/> - <wire from="(1550,1280)" to="(1720,1280)"/> - <wire from="(1550,770)" to="(1550,780)"/> - <wire from="(1550,770)" to="(1610,770)"/> - <wire from="(1550,820)" to="(1550,870)"/> - <wire from="(1550,900)" to="(1550,930)"/> - <wire from="(1550,930)" to="(1590,930)"/> - <wire from="(1560,1230)" to="(1560,1250)"/> - <wire from="(1560,1250)" to="(1730,1250)"/> - <wire from="(1560,820)" to="(1560,840)"/> - <wire from="(1560,840)" to="(1600,840)"/> - <wire from="(1560,900)" to="(1560,960)"/> - <wire from="(1560,960)" to="(1920,960)"/> - <wire from="(1570,1090)" to="(1610,1090)"/> - <wire from="(1570,1230)" to="(1570,1240)"/> - <wire from="(1570,1240)" to="(2030,1240)"/> - <wire from="(1570,900)" to="(1570,1090)"/> - <wire from="(1580,1310)" to="(1580,1380)"/> - <wire from="(1580,1310)" to="(1690,1310)"/> - <wire from="(1580,1400)" to="(1580,1410)"/> - <wire from="(1580,1410)" to="(1700,1410)"/> - <wire from="(1590,1230)" to="(1600,1230)"/> - <wire from="(1590,900)" to="(1590,930)"/> - <wire from="(1590,930)" to="(1850,930)"/> - <wire from="(1600,1230)" to="(1600,1270)"/> - <wire from="(1600,1270)" to="(1660,1270)"/> - <wire from="(1600,840)" to="(1600,870)"/> - <wire from="(1600,900)" to="(1600,970)"/> - <wire from="(1600,970)" to="(1980,970)"/> - <wire from="(1610,1090)" to="(1870,1090)"/> - <wire from="(1610,1160)" to="(1620,1160)"/> - <wire from="(1610,1180)" to="(1610,1200)"/> - <wire from="(1610,1180)" to="(1630,1180)"/> - <wire from="(1610,1230)" to="(1610,1260)"/> - <wire from="(1610,1260)" to="(1670,1260)"/> - <wire from="(1610,740)" to="(1610,770)"/> - <wire from="(1610,900)" to="(1610,1090)"/> - <wire from="(1620,1160)" to="(1620,1170)"/> - <wire from="(1620,1230)" to="(1620,1300)"/> - <wire from="(1620,650)" to="(1620,700)"/> - <wire from="(1630,1160)" to="(1630,1180)"/> - <wire from="(1630,1230)" to="(1630,1320)"/> - <wire from="(1630,1320)" to="(1700,1320)"/> - <wire from="(1630,740)" to="(1630,980)"/> - <wire from="(1630,980)" to="(1630,1120)"/> - <wire from="(1630,980)" to="(2020,980)"/> - <wire from="(1640,1160)" to="(1640,1180)"/> - <wire from="(1640,1180)" to="(1670,1180)"/> - <wire from="(1650,1160)" to="(1650,1170)"/> - <wire from="(1650,1170)" to="(1730,1170)"/> - <wire from="(1650,1230)" to="(1660,1230)"/> - <wire from="(1660,1230)" to="(1660,1270)"/> - <wire from="(1660,1270)" to="(1850,1270)"/> - <wire from="(1670,1180)" to="(1670,1200)"/> - <wire from="(1670,1230)" to="(1670,1260)"/> - <wire from="(1670,1260)" to="(1840,1260)"/> - <wire from="(1680,1230)" to="(1680,1290)"/> - <wire from="(1680,1290)" to="(1740,1290)"/> - <wire from="(1690,1230)" to="(1690,1310)"/> - <wire from="(1700,1320)" to="(1700,1410)"/> - <wire from="(1700,1320)" to="(1750,1320)"/> - <wire from="(1700,1410)" to="(1700,1430)"/> - <wire from="(1710,1230)" to="(1720,1230)"/> - <wire from="(1720,1230)" to="(1720,1280)"/> - <wire from="(1720,1280)" to="(1870,1280)"/> - <wire from="(1730,1170)" to="(1730,1200)"/> - <wire from="(1730,1230)" to="(1730,1250)"/> - <wire from="(1730,1250)" to="(1890,1250)"/> - <wire from="(1740,1230)" to="(1740,1290)"/> - <wire from="(1750,1230)" to="(1750,1320)"/> - <wire from="(1810,1230)" to="(1820,1230)"/> - <wire from="(1810,1290)" to="(1810,1410)"/> - <wire from="(1810,1290)" to="(1960,1290)"/> - <wire from="(1810,1410)" to="(1810,1430)"/> - <wire from="(1810,1410)" to="(1860,1410)"/> - <wire from="(1820,1230)" to="(1820,1310)"/> - <wire from="(1820,1310)" to="(1970,1310)"/> - <wire from="(1830,1180)" to="(1830,1200)"/> - <wire from="(1830,1180)" to="(1880,1180)"/> - <wire from="(1830,1230)" to="(1830,1300)"/> - <wire from="(1830,1300)" to="(1860,1300)"/> - <wire from="(1830,900)" to="(1830,910)"/> - <wire from="(1830,910)" to="(2410,910)"/> - <wire from="(1840,1230)" to="(1840,1260)"/> - <wire from="(1840,1260)" to="(1880,1260)"/> - <wire from="(1840,900)" to="(1840,920)"/> - <wire from="(1840,920)" to="(1890,920)"/> - <wire from="(1850,1230)" to="(1850,1270)"/> - <wire from="(1850,1270)" to="(1940,1270)"/> - <wire from="(1850,830)" to="(1850,870)"/> - <wire from="(1850,830)" to="(1920,830)"/> - <wire from="(1850,900)" to="(1850,930)"/> - <wire from="(1850,930)" to="(1900,930)"/> - <wire from="(1860,1300)" to="(1860,1380)"/> - <wire from="(1860,1300)" to="(1900,1300)"/> - <wire from="(1860,1400)" to="(1860,1410)"/> - <wire from="(1860,900)" to="(1860,940)"/> - <wire from="(1860,940)" to="(1910,940)"/> - <wire from="(1870,1090)" to="(1930,1090)"/> - <wire from="(1870,1230)" to="(1870,1280)"/> - <wire from="(1870,1280)" to="(2010,1280)"/> - <wire from="(1870,900)" to="(1870,1090)"/> - <wire from="(1880,1160)" to="(1880,1180)"/> - <wire from="(1880,1230)" to="(1880,1260)"/> - <wire from="(1880,1260)" to="(2070,1260)"/> - <wire from="(1890,1160)" to="(1890,1200)"/> - <wire from="(1890,1230)" to="(1890,1250)"/> - <wire from="(1890,1250)" to="(1950,1250)"/> - <wire from="(1890,900)" to="(1890,920)"/> - <wire from="(1890,920)" to="(2160,920)"/> - <wire from="(1890,950)" to="(1890,1120)"/> - <wire from="(1890,950)" to="(2190,950)"/> - <wire from="(1900,1160)" to="(1900,1180)"/> - <wire from="(1900,1180)" to="(1950,1180)"/> - <wire from="(1900,1230)" to="(1900,1300)"/> - <wire from="(1900,1300)" to="(2000,1300)"/> - <wire from="(1900,900)" to="(1900,930)"/> - <wire from="(1900,930)" to="(1960,930)"/> - <wire from="(1910,1230)" to="(1910,1320)"/> - <wire from="(1910,1320)" to="(2090,1320)"/> - <wire from="(1910,820)" to="(1920,820)"/> - <wire from="(1910,840)" to="(1910,870)"/> - <wire from="(1910,840)" to="(1930,840)"/> - <wire from="(1910,900)" to="(1910,940)"/> - <wire from="(1910,940)" to="(1970,940)"/> - <wire from="(1920,820)" to="(1920,830)"/> - <wire from="(1920,900)" to="(1920,960)"/> - <wire from="(1920,960)" to="(2250,960)"/> - <wire from="(1930,1090)" to="(1990,1090)"/> - <wire from="(1930,1230)" to="(1940,1230)"/> - <wire from="(1930,770)" to="(1930,780)"/> - <wire from="(1930,770)" to="(2070,770)"/> - <wire from="(1930,820)" to="(1930,840)"/> - <wire from="(1930,900)" to="(1930,1090)"/> - <wire from="(1940,1230)" to="(1940,1270)"/> - <wire from="(1940,1270)" to="(2060,1270)"/> - <wire from="(1940,820)" to="(1940,840)"/> - <wire from="(1940,840)" to="(1970,840)"/> - <wire from="(1950,1180)" to="(1950,1200)"/> - <wire from="(1950,1230)" to="(1950,1250)"/> - <wire from="(1950,1250)" to="(2020,1250)"/> - <wire from="(1950,820)" to="(1950,830)"/> - <wire from="(1950,830)" to="(2020,830)"/> - <wire from="(1950,900)" to="(1960,900)"/> - <wire from="(1960,1230)" to="(1960,1290)"/> - <wire from="(1960,1290)" to="(2140,1290)"/> - <wire from="(1960,900)" to="(1960,930)"/> - <wire from="(1960,930)" to="(2170,930)"/> - <wire from="(1970,1230)" to="(1970,1310)"/> - <wire from="(1970,1310)" to="(1990,1310)"/> - <wire from="(1970,840)" to="(1970,870)"/> - <wire from="(1970,900)" to="(1970,940)"/> - <wire from="(1970,940)" to="(2010,940)"/> - <wire from="(1980,900)" to="(1980,970)"/> - <wire from="(1980,970)" to="(2310,970)"/> - <wire from="(1990,1090)" to="(2030,1090)"/> - <wire from="(1990,1230)" to="(1990,1310)"/> - <wire from="(1990,1310)" to="(2040,1310)"/> - <wire from="(1990,900)" to="(1990,1090)"/> - <wire from="(2000,1230)" to="(2000,1300)"/> - <wire from="(2000,1300)" to="(2080,1300)"/> - <wire from="(2010,1170)" to="(2010,1200)"/> - <wire from="(2010,1170)" to="(2080,1170)"/> - <wire from="(2010,1230)" to="(2010,1280)"/> - <wire from="(2010,1280)" to="(2180,1280)"/> - <wire from="(2010,900)" to="(2010,940)"/> - <wire from="(2010,940)" to="(2180,940)"/> - <wire from="(2020,1230)" to="(2020,1250)"/> - <wire from="(2020,1250)" to="(2190,1250)"/> - <wire from="(2020,830)" to="(2020,870)"/> - <wire from="(2020,900)" to="(2020,980)"/> - <wire from="(2020,980)" to="(2350,980)"/> - <wire from="(2030,1090)" to="(2190,1090)"/> - <wire from="(2030,1230)" to="(2030,1240)"/> - <wire from="(2030,1240)" to="(2290,1240)"/> - <wire from="(2030,900)" to="(2030,1090)"/> - <wire from="(2040,1310)" to="(2040,1380)"/> - <wire from="(2040,1310)" to="(2150,1310)"/> - <wire from="(2040,1400)" to="(2040,1410)"/> - <wire from="(2040,1410)" to="(2160,1410)"/> - <wire from="(2050,1230)" to="(2060,1230)"/> - <wire from="(2060,1230)" to="(2060,1270)"/> - <wire from="(2060,1270)" to="(2120,1270)"/> - <wire from="(2070,1160)" to="(2080,1160)"/> - <wire from="(2070,1180)" to="(2070,1200)"/> - <wire from="(2070,1180)" to="(2090,1180)"/> - <wire from="(2070,1230)" to="(2070,1260)"/> - <wire from="(2070,1260)" to="(2130,1260)"/> - <wire from="(2070,740)" to="(2070,760)"/> - <wire from="(2070,760)" to="(2070,770)"/> - <wire from="(2070,760)" to="(2360,760)"/> - <wire from="(2080,1160)" to="(2080,1170)"/> - <wire from="(2080,1230)" to="(2080,1300)"/> - <wire from="(2080,650)" to="(2080,700)"/> - <wire from="(2090,1160)" to="(2090,1180)"/> - <wire from="(2090,1230)" to="(2090,1320)"/> - <wire from="(2090,1320)" to="(2160,1320)"/> - <wire from="(2090,740)" to="(2090,990)"/> - <wire from="(2090,990)" to="(2090,1120)"/> - <wire from="(2090,990)" to="(2390,990)"/> - <wire from="(2100,1160)" to="(2100,1180)"/> - <wire from="(2100,1180)" to="(2130,1180)"/> - <wire from="(2110,1160)" to="(2110,1170)"/> - <wire from="(2110,1170)" to="(2190,1170)"/> - <wire from="(2110,1230)" to="(2120,1230)"/> - <wire from="(2120,1230)" to="(2120,1270)"/> - <wire from="(2120,1270)" to="(2450,1270)"/> - <wire from="(2130,1180)" to="(2130,1200)"/> - <wire from="(2130,1230)" to="(2130,1260)"/> - <wire from="(2130,1260)" to="(2310,1260)"/> - <wire from="(2140,1230)" to="(2140,1290)"/> - <wire from="(2140,1290)" to="(2200,1290)"/> - <wire from="(2150,1230)" to="(2150,1310)"/> - <wire from="(2150,900)" to="(2160,900)"/> - <wire from="(2160,1320)" to="(2160,1410)"/> - <wire from="(2160,1320)" to="(2210,1320)"/> - <wire from="(2160,1410)" to="(2160,1430)"/> - <wire from="(2160,900)" to="(2160,920)"/> - <wire from="(2160,920)" to="(2210,920)"/> - <wire from="(2170,1230)" to="(2180,1230)"/> - <wire from="(2170,650)" to="(2170,860)"/> - <wire from="(2170,900)" to="(2170,930)"/> - <wire from="(2170,930)" to="(2220,930)"/> - <wire from="(2180,1230)" to="(2180,1280)"/> - <wire from="(2180,1280)" to="(2360,1280)"/> - <wire from="(2180,900)" to="(2180,940)"/> - <wire from="(2180,940)" to="(2230,940)"/> - <wire from="(2190,1170)" to="(2190,1200)"/> - <wire from="(2190,1230)" to="(2190,1250)"/> - <wire from="(2190,1250)" to="(2300,1250)"/> - <wire from="(2190,900)" to="(2190,950)"/> - <wire from="(2190,950)" to="(2240,950)"/> - <wire from="(2200,1230)" to="(2200,1290)"/> - <wire from="(2210,1230)" to="(2210,1320)"/> - <wire from="(2210,900)" to="(2210,920)"/> - <wire from="(2210,920)" to="(2420,920)"/> - <wire from="(2220,900)" to="(2220,930)"/> - <wire from="(2220,930)" to="(2280,930)"/> - <wire from="(2230,1080)" to="(2460,1080)"/> - <wire from="(2230,1100)" to="(2250,1100)"/> - <wire from="(2230,840)" to="(2230,870)"/> - <wire from="(2230,840)" to="(2290,840)"/> - <wire from="(2230,900)" to="(2230,940)"/> - <wire from="(2230,940)" to="(2290,940)"/> - <wire from="(2240,1230)" to="(2240,1380)"/> - <wire from="(2240,1380)" to="(2320,1380)"/> - <wire from="(2240,900)" to="(2240,950)"/> - <wire from="(2240,950)" to="(2300,950)"/> - <wire from="(2250,1100)" to="(2250,1200)"/> - <wire from="(2250,900)" to="(2250,960)"/> - <wire from="(2260,1230)" to="(2260,1290)"/> - <wire from="(2260,1290)" to="(2420,1290)"/> - <wire from="(2270,900)" to="(2280,900)"/> - <wire from="(2280,830)" to="(2290,830)"/> - <wire from="(2280,900)" to="(2280,930)"/> - <wire from="(2280,930)" to="(2430,930)"/> - <wire from="(2290,1100)" to="(2290,1240)"/> - <wire from="(2290,1100)" to="(2420,1100)"/> - <wire from="(2290,830)" to="(2290,840)"/> - <wire from="(2290,850)" to="(2290,870)"/> - <wire from="(2290,850)" to="(2300,850)"/> - <wire from="(2290,900)" to="(2290,940)"/> - <wire from="(2290,940)" to="(2330,940)"/> - <wire from="(2300,1190)" to="(2300,1250)"/> - <wire from="(2300,1190)" to="(2390,1190)"/> - <wire from="(2300,650)" to="(2300,780)"/> - <wire from="(2300,780)" to="(2300,790)"/> - <wire from="(2300,780)" to="(2340,780)"/> - <wire from="(2300,830)" to="(2300,850)"/> - <wire from="(2300,900)" to="(2300,950)"/> - <wire from="(2300,950)" to="(2340,950)"/> - <wire from="(2310,1200)" to="(2310,1260)"/> - <wire from="(2310,1200)" to="(2350,1200)"/> - <wire from="(2310,830)" to="(2310,850)"/> - <wire from="(2310,850)" to="(2340,850)"/> - <wire from="(2310,900)" to="(2310,970)"/> - <wire from="(2320,1170)" to="(2320,1260)"/> - <wire from="(2320,1260)" to="(2320,1360)"/> - <wire from="(2320,1260)" to="(2340,1260)"/> - <wire from="(2320,1360)" to="(2320,1380)"/> - <wire from="(2320,1360)" to="(2350,1360)"/> - <wire from="(2320,1380)" to="(2320,1410)"/> - <wire from="(2320,1410)" to="(2320,1420)"/> - <wire from="(2320,1410)" to="(2390,1410)"/> - <wire from="(2320,1440)" to="(2320,1460)"/> - <wire from="(2320,830)" to="(2320,840)"/> - <wire from="(2320,840)" to="(2380,840)"/> - <wire from="(2330,1130)" to="(2330,1140)"/> - <wire from="(2330,1130)" to="(2370,1130)"/> - <wire from="(2330,900)" to="(2330,940)"/> - <wire from="(2330,940)" to="(2440,940)"/> - <wire from="(2340,1170)" to="(2340,1180)"/> - <wire from="(2340,1180)" to="(2460,1180)"/> - <wire from="(2340,1250)" to="(2340,1260)"/> - <wire from="(2340,780)" to="(2340,820)"/> - <wire from="(2340,820)" to="(2370,820)"/> - <wire from="(2340,850)" to="(2340,870)"/> - <wire from="(2340,900)" to="(2340,950)"/> - <wire from="(2340,950)" to="(2370,950)"/> - <wire from="(2350,1200)" to="(2350,1210)"/> - <wire from="(2350,1350)" to="(2350,1360)"/> - <wire from="(2350,900)" to="(2350,980)"/> - <wire from="(2360,1250)" to="(2360,1260)"/> - <wire from="(2360,1260)" to="(2390,1260)"/> - <wire from="(2360,1280)" to="(2360,1310)"/> - <wire from="(2360,750)" to="(2360,760)"/> - <wire from="(2370,1130)" to="(2370,1160)"/> - <wire from="(2370,1160)" to="(2410,1160)"/> - <wire from="(2370,1350)" to="(2370,1360)"/> - <wire from="(2370,1360)" to="(2420,1360)"/> - <wire from="(2370,650)" to="(2370,710)"/> - <wire from="(2370,800)" to="(2370,820)"/> - <wire from="(2370,820)" to="(2410,820)"/> - <wire from="(2370,900)" to="(2370,950)"/> - <wire from="(2370,950)" to="(2450,950)"/> - <wire from="(2380,1240)" to="(2380,1310)"/> - <wire from="(2380,1310)" to="(2390,1310)"/> - <wire from="(2380,750)" to="(2380,770)"/> - <wire from="(2380,840)" to="(2380,870)"/> - <wire from="(2390,1190)" to="(2390,1200)"/> - <wire from="(2390,1240)" to="(2390,1260)"/> - <wire from="(2390,1260)" to="(2490,1260)"/> - <wire from="(2390,1310)" to="(2390,1380)"/> - <wire from="(2390,1400)" to="(2390,1410)"/> - <wire from="(2390,800)" to="(2390,830)"/> - <wire from="(2390,830)" to="(2430,830)"/> - <wire from="(2390,900)" to="(2390,990)"/> - <wire from="(2400,1240)" to="(2400,1250)"/> - <wire from="(2400,1250)" to="(2520,1250)"/> - <wire from="(2410,1150)" to="(2410,1160)"/> - <wire from="(2410,800)" to="(2410,820)"/> - <wire from="(2410,900)" to="(2410,910)"/> - <wire from="(2420,1100)" to="(2420,1110)"/> - <wire from="(2420,1230)" to="(2420,1290)"/> - <wire from="(2420,1290)" to="(2420,1360)"/> - <wire from="(2420,1360)" to="(2420,1410)"/> - <wire from="(2420,1360)" to="(2440,1360)"/> - <wire from="(2420,1410)" to="(2420,1420)"/> - <wire from="(2420,1410)" to="(2490,1410)"/> - <wire from="(2420,1440)" to="(2420,1460)"/> - <wire from="(2420,650)" to="(2420,760)"/> - <wire from="(2420,900)" to="(2420,920)"/> - <wire from="(2430,1150)" to="(2430,1200)"/> - <wire from="(2430,800)" to="(2430,830)"/> - <wire from="(2430,830)" to="(2430,860)"/> - <wire from="(2430,900)" to="(2430,930)"/> - <wire from="(2440,1230)" to="(2440,1240)"/> - <wire from="(2440,1240)" to="(2540,1240)"/> - <wire from="(2440,1350)" to="(2440,1360)"/> - <wire from="(2440,900)" to="(2440,940)"/> - <wire from="(2450,1270)" to="(2450,1310)"/> - <wire from="(2450,900)" to="(2450,950)"/> - <wire from="(2460,1080)" to="(2460,1180)"/> - <wire from="(2460,1180)" to="(2540,1180)"/> - <wire from="(2460,1350)" to="(2460,1360)"/> - <wire from="(2460,1360)" to="(2520,1360)"/> - <wire from="(2490,1260)" to="(2490,1380)"/> - <wire from="(2490,1400)" to="(2490,1410)"/> - <wire from="(2520,1250)" to="(2520,1360)"/> - <wire from="(2520,1360)" to="(2520,1410)"/> - <wire from="(2520,1410)" to="(2520,1420)"/> - <wire from="(2520,1410)" to="(2540,1410)"/> - <wire from="(2520,1440)" to="(2520,1460)"/> - <wire from="(2540,1180)" to="(2540,1240)"/> - <wire from="(2540,1240)" to="(2540,1380)"/> - <wire from="(2540,1400)" to="(2540,1410)"/> - <wire from="(370,910)" to="(370,1430)"/> - <wire from="(370,910)" to="(650,910)"/> - <wire from="(430,1230)" to="(440,1230)"/> - <wire from="(430,1290)" to="(430,1410)"/> - <wire from="(430,1290)" to="(580,1290)"/> - <wire from="(430,1410)" to="(430,1430)"/> - <wire from="(430,1410)" to="(480,1410)"/> - <wire from="(440,1230)" to="(440,1310)"/> - <wire from="(440,1310)" to="(590,1310)"/> - <wire from="(450,1180)" to="(450,1200)"/> - <wire from="(450,1180)" to="(500,1180)"/> - <wire from="(450,1230)" to="(450,1300)"/> - <wire from="(450,1300)" to="(480,1300)"/> - <wire from="(460,1230)" to="(460,1260)"/> - <wire from="(460,1260)" to="(500,1260)"/> - <wire from="(470,1230)" to="(470,1270)"/> - <wire from="(470,1270)" to="(560,1270)"/> - <wire from="(480,1300)" to="(480,1380)"/> - <wire from="(480,1300)" to="(520,1300)"/> - <wire from="(480,1400)" to="(480,1410)"/> - <wire from="(490,1230)" to="(490,1280)"/> - <wire from="(490,1280)" to="(630,1280)"/> - <wire from="(500,1160)" to="(500,1180)"/> - <wire from="(500,1230)" to="(500,1260)"/> - <wire from="(500,1260)" to="(690,1260)"/> - <wire from="(510,1160)" to="(510,1200)"/> - <wire from="(510,1230)" to="(510,1250)"/> - <wire from="(510,1250)" to="(570,1250)"/> - <wire from="(510,920)" to="(1100,920)"/> - <wire from="(510,920)" to="(510,1120)"/> - <wire from="(520,1160)" to="(520,1180)"/> - <wire from="(520,1180)" to="(570,1180)"/> - <wire from="(520,1230)" to="(520,1300)"/> - <wire from="(520,1300)" to="(620,1300)"/> - <wire from="(530,1230)" to="(530,1320)"/> - <wire from="(530,1320)" to="(710,1320)"/> - <wire from="(550,1230)" to="(560,1230)"/> - <wire from="(560,1230)" to="(560,1270)"/> - <wire from="(560,1270)" to="(680,1270)"/> - <wire from="(570,1180)" to="(570,1200)"/> - <wire from="(570,1230)" to="(570,1250)"/> - <wire from="(570,1250)" to="(640,1250)"/> - <wire from="(580,1230)" to="(580,1290)"/> - <wire from="(580,1290)" to="(760,1290)"/> - <wire from="(590,1230)" to="(590,1310)"/> - <wire from="(590,1310)" to="(610,1310)"/> - <wire from="(610,1230)" to="(610,1310)"/> - <wire from="(610,1310)" to="(660,1310)"/> - <wire from="(620,1230)" to="(620,1300)"/> - <wire from="(620,1300)" to="(700,1300)"/> - <wire from="(630,1170)" to="(630,1200)"/> - <wire from="(630,1170)" to="(700,1170)"/> - <wire from="(630,1230)" to="(630,1280)"/> - <wire from="(630,1280)" to="(800,1280)"/> - <wire from="(640,1230)" to="(640,1250)"/> - <wire from="(640,1250)" to="(810,1250)"/> - <wire from="(650,1230)" to="(650,1240)"/> - <wire from="(650,1240)" to="(1110,1240)"/> - <wire from="(650,820)" to="(650,910)"/> - <wire from="(650,910)" to="(1090,910)"/> - <wire from="(660,1310)" to="(660,1380)"/> - <wire from="(660,1310)" to="(770,1310)"/> - <wire from="(660,1400)" to="(660,1410)"/> - <wire from="(660,1410)" to="(780,1410)"/> - <wire from="(660,770)" to="(660,780)"/> - <wire from="(660,770)" to="(690,770)"/> - <wire from="(670,1090)" to="(1110,1090)"/> - <wire from="(670,1230)" to="(680,1230)"/> - <wire from="(670,820)" to="(670,1090)"/> - <wire from="(680,1230)" to="(680,1270)"/> - <wire from="(680,1270)" to="(740,1270)"/> - <wire from="(690,1160)" to="(700,1160)"/> - <wire from="(690,1180)" to="(690,1200)"/> - <wire from="(690,1180)" to="(710,1180)"/> - <wire from="(690,1230)" to="(690,1260)"/> - <wire from="(690,1260)" to="(750,1260)"/> - <wire from="(690,740)" to="(690,770)"/> - <wire from="(700,1160)" to="(700,1170)"/> - <wire from="(700,1230)" to="(700,1300)"/> - <wire from="(700,650)" to="(700,700)"/> - <wire from="(710,1160)" to="(710,1180)"/> - <wire from="(710,1230)" to="(710,1320)"/> - <wire from="(710,1320)" to="(780,1320)"/> - <wire from="(710,740)" to="(710,960)"/> - <wire from="(710,960)" to="(1140,960)"/> - <wire from="(710,960)" to="(710,1120)"/> - <wire from="(720,1160)" to="(720,1180)"/> - <wire from="(720,1180)" to="(750,1180)"/> - <wire from="(730,1160)" to="(730,1170)"/> - <wire from="(730,1170)" to="(810,1170)"/> - <wire from="(730,1230)" to="(740,1230)"/> - <wire from="(740,1230)" to="(740,1270)"/> - <wire from="(740,1270)" to="(930,1270)"/> - <wire from="(750,1180)" to="(750,1200)"/> - <wire from="(750,1230)" to="(750,1260)"/> - <wire from="(750,1260)" to="(920,1260)"/> - <wire from="(760,1230)" to="(760,1290)"/> - <wire from="(760,1290)" to="(820,1290)"/> - <wire from="(770,1230)" to="(770,1310)"/> - <wire from="(780,1320)" to="(780,1410)"/> - <wire from="(780,1320)" to="(830,1320)"/> - <wire from="(780,1410)" to="(780,1430)"/> - <wire from="(790,1230)" to="(800,1230)"/> - <wire from="(800,1230)" to="(800,1280)"/> - <wire from="(800,1280)" to="(950,1280)"/> - <wire from="(810,1170)" to="(810,1200)"/> - <wire from="(810,1230)" to="(810,1250)"/> - <wire from="(810,1250)" to="(970,1250)"/> - <wire from="(820,1230)" to="(820,1290)"/> - <wire from="(830,1230)" to="(830,1320)"/> - <wire from="(890,1230)" to="(900,1230)"/> - <wire from="(890,1290)" to="(1040,1290)"/> - <wire from="(890,1290)" to="(890,1410)"/> - <wire from="(890,1410)" to="(890,1430)"/> - <wire from="(890,1410)" to="(940,1410)"/> - <wire from="(900,1230)" to="(900,1310)"/> - <wire from="(900,1310)" to="(1050,1310)"/> - <wire from="(910,1180)" to="(910,1200)"/> - <wire from="(910,1180)" to="(960,1180)"/> - <wire from="(910,1230)" to="(910,1300)"/> - <wire from="(910,1300)" to="(940,1300)"/> - <wire from="(920,1230)" to="(920,1260)"/> - <wire from="(920,1260)" to="(960,1260)"/> - <wire from="(930,1230)" to="(930,1270)"/> - <wire from="(930,1270)" to="(1020,1270)"/> - <wire from="(940,1300)" to="(940,1380)"/> - <wire from="(940,1300)" to="(980,1300)"/> - <wire from="(940,1400)" to="(940,1410)"/> - <wire from="(950,1230)" to="(950,1280)"/> - <wire from="(950,1280)" to="(1090,1280)"/> - <wire from="(960,1160)" to="(960,1180)"/> - <wire from="(960,1230)" to="(960,1260)"/> - <wire from="(960,1260)" to="(1150,1260)"/> - <wire from="(970,1160)" to="(970,1200)"/> - <wire from="(970,1230)" to="(970,1250)"/> - <wire from="(970,1250)" to="(1030,1250)"/> - <wire from="(970,930)" to="(1500,930)"/> - <wire from="(970,930)" to="(970,1120)"/> - <wire from="(980,1160)" to="(980,1180)"/> - <wire from="(980,1180)" to="(1030,1180)"/> - <wire from="(980,1230)" to="(980,1300)"/> - <wire from="(980,1300)" to="(1080,1300)"/> - <wire from="(990,1230)" to="(990,1320)"/> - <wire from="(990,1320)" to="(1170,1320)"/> - </circuit> - <circuit name="TestBench"> - <a name="appearance" val="logisim_evolution"/> - <a name="circuit" val="TestBench"/> - <a name="circuitnamedboxfixedsize" val="true"/> - <a name="simulationFrequency" val="1.0"/> - <comp lib="0" loc="(260,820)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="label" val="TICK"/> - <a name="radix" val="10unsigned"/> - <a name="width" val="8"/> - </comp> - <comp lib="0" loc="(260,820)" name="Splitter"> - <a name="fanout" val="8"/> - <a name="incoming" val="8"/> - </comp> - <comp lib="0" loc="(630,820)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="west"/> - <a name="label" val="HALT"/> - <a name="output" val="true"/> - </comp> - <comp lib="0" loc="(730,840)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="west"/> - <a name="label" val="MEM_OUT"/> - <a name="output" val="true"/> - <a name="radix" val="16"/> - <a name="width" val="16"/> - </comp> - <comp loc="(630,820)" name="CPU16"/> - <wire from="(280,740)" to="(410,740)"/> - <wire from="(410,740)" to="(410,820)"/> - <wire from="(630,840)" to="(730,840)"/> - </circuit> - <circuit name="MemoryModule"> - <a name="appearance" val="logisim_evolution"/> - <a name="circuit" val="MemoryModule"/> - <a name="circuitnamedboxfixedsize" val="true"/> - <a name="simulationFrequency" val="1.0"/> - <comp lib="0" loc="(1160,200)" name="Tunnel"> - <a name="facing" val="north"/> - <a name="label" val="BANK_S"/> - </comp> - <comp lib="0" loc="(1170,570)" name="Tunnel"> - <a name="facing" val="north"/> - <a name="label" val="BANK_S"/> - </comp> - <comp lib="0" loc="(1270,590)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="north"/> - <a name="label" val="MEM_OE"/> - </comp> - <comp lib="0" loc="(1320,560)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="west"/> - <a name="label" val="BUS_OUT"/> - <a name="output" val="true"/> - <a name="radix" val="16"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(510,340)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="label" val="BUS_IN"/> - <a name="radix" val="16"/> - <a name="width" val="16"/> - </comp> - <comp lib="0" loc="(620,390)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="label" val="CLK"/> - </comp> - <comp lib="0" loc="(640,360)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="label" val="MAR_IE"/> - </comp> - <comp lib="0" loc="(670,410)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="facing" val="north"/> - <a name="label" val="RESET"/> - </comp> - <comp lib="0" loc="(700,340)" name="Splitter"> - <a name="fanout" val="16"/> - <a name="incoming" val="16"/> - </comp> - <comp lib="0" loc="(740,330)" name="Splitter"> - <a name="appear" val="right"/> - <a name="facing" val="west"/> - <a name="fanout" val="15"/> - <a name="incoming" val="15"/> - </comp> - <comp lib="0" loc="(760,390)" name="Tunnel"> - <a name="facing" val="north"/> - <a name="label" val="BANK_S"/> - </comp> - <comp lib="0" loc="(830,520)" name="Pin"> - <a name="appearance" val="NewPins"/> - <a name="label" val="MEM_IE"/> - </comp> - <comp lib="0" loc="(860,540)" name="Power"> - <a name="facing" val="west"/> - </comp> - <comp lib="1" loc="(1160,160)" name="NOT Gate"> - <a name="facing" val="north"/> - <a name="size" val="20"/> - </comp> - <comp lib="1" loc="(1170,130)" name="Controlled Buffer"> - <a name="width" val="16"/> - </comp> - <comp lib="1" loc="(1180,560)" name="Controlled Buffer"> - <a name="width" val="16"/> - </comp> - <comp lib="1" loc="(1280,560)" name="Controlled Buffer"> - <a name="width" val="16"/> - </comp> - <comp lib="2" loc="(770,330)" name="Demultiplexer"> - <a name="width" val="15"/> - </comp> - <comp lib="4" loc="(640,310)" name="Register"> - <a name="appearance" val="logisim_evolution"/> - <a name="label" val="MAR"/> - <a name="showInTab" val="true"/> - <a name="trigger" val="high"/> - <a name="width" val="16"/> - </comp> - <comp lib="4" loc="(860,480)" name="RAM"> - <a name="addrWidth" val="15"/> - <a name="appearance" val="logisim_evolution"/> - <a name="dataWidth" val="16"/> - <a name="label" val="MEM_RAM"/> - <a name="labelvisible" val="true"/> - <a name="trigger" val="high"/> - </comp> - <comp lib="4" loc="(860,70)" name="ROM"> - <a name="addrWidth" val="15"/> - <a name="appearance" val="logisim_evolution"/> - <a name="contents">addr/data: 15 16 -4203 5200 8000 420a 4414 29b 4802 2900 -38c0 cb 441e 4812 29a 6500 4202 f000 -4201 f000 -</a> - <a name="dataWidth" val="16"/> - <a name="label" val="MEM_ROM"/> - <a name="labelvisible" val="true"/> - </comp> - <comp lib="8" loc="(540,650)" name="Text"> - <a name="font" val="SansSerif plain 16"/> - <a name="halign" val="left"/> - <a name="text" val="ROM = 0000 - 7FFF"/> - <a name="valign" val="center"/> - </comp> - <comp lib="8" loc="(540,680)" name="Text"> - <a name="font" val="SansSerif plain 16"/> - <a name="halign" val="left"/> - <a name="text" val="RAM = 8000 - FFFF"/> - <a name="valign" val="center"/> - </comp> - <wire from="(1100,130)" to="(1150,130)"/> - <wire from="(1100,560)" to="(1160,560)"/> - <wire from="(1160,140)" to="(1160,160)"/> - <wire from="(1160,180)" to="(1160,200)"/> - <wire from="(1170,130)" to="(1240,130)"/> - <wire from="(1180,560)" to="(1240,560)"/> - <wire from="(1240,130)" to="(1240,560)"/> - <wire from="(1240,560)" to="(1260,560)"/> - <wire from="(1270,570)" to="(1270,590)"/> - <wire from="(1280,560)" to="(1320,560)"/> - <wire from="(510,340)" to="(530,340)"/> - <wire from="(530,340)" to="(530,560)"/> - <wire from="(530,340)" to="(640,340)"/> - <wire from="(530,560)" to="(860,560)"/> - <wire from="(620,390)" to="(630,390)"/> - <wire from="(630,380)" to="(630,390)"/> - <wire from="(630,380)" to="(640,380)"/> - <wire from="(670,400)" to="(670,410)"/> - <wire from="(720,330)" to="(720,380)"/> - <wire from="(720,380)" to="(760,380)"/> - <wire from="(740,330)" to="(770,330)"/> - <wire from="(760,380)" to="(760,390)"/> - <wire from="(760,380)" to="(790,380)"/> - <wire from="(790,350)" to="(790,380)"/> - <wire from="(800,320)" to="(830,320)"/> - <wire from="(800,340)" to="(860,340)"/> - <wire from="(830,520)" to="(840,520)"/> - <wire from="(830,80)" to="(830,320)"/> - <wire from="(830,80)" to="(860,80)"/> - <wire from="(840,520)" to="(840,530)"/> - <wire from="(840,530)" to="(860,530)"/> - <wire from="(860,340)" to="(860,490)"/> - </circuit> -</project> diff --git a/src/assembler.py b/src/assembler.py index 7420a04..3a1d39f 100755 --- a/src/assembler.py +++ b/src/assembler.py @@ -2,6 +2,10 @@ # Assemble ATK16 assembly to bytecode import sys +from typing import Callable +import importlib +from assembler_ops import * +from assembler_eval import * if len(sys.argv) != 3: print("usage: assembler.py <infile> <outfile> # read from file") @@ -43,50 +47,11 @@ def parse(line: str) -> list[str]: result.append(acc) return list(filter(lambda x: len(x) > 0, result)) -def eval_expr(expr: str) -> int: - expr = eval_symbol(expr) - return eval(expr, labels.copy()) # eval as Python expr - -constants: dict[str, str] = { - # Registers - "rz": "0", - "ra": "1", - "rb": "2", - "rc": "3", - "rd": "4", - "rf": "5", - "rg": "6", - # ALU instructions - "al_plus": "0", - "al_minus": "1", - "al_and": "2", - "al_or": "3", - "al_xor": "4", - "al_shift_lr": "5", - "al_shift_ar": "6", - "al_shift_ll": "7", - # ALU flags - "f_carry": "0", - "f_overflow": "1", - "f_zero": "2", - "f_sign": "3", -} - -def eval_symbol(c: str): - if c in labels: - return str(labels[c]) - - if c in constants: - return constants[c] - - return c - -# 1st pass, gather labels, set options +# 1st pass, gather labels, set options, eval operations options: dict[str, str] = { "stack_pointer": "6" # RG } -labels: dict[str, int] = {} address: int = 0 for (lineNo, line) in enumerate(src_lines): @@ -104,6 +69,15 @@ for (lineNo, line) in enumerate(src_lines): opt_name = args[0] opt_value = constants.get(args[1], args[1]) options[opt_name] = opt_value + case "@use": + module_name, ops = args[0].split(":") + ops_split = ops.split(",") + module = importlib.import_module(module_name) + mod_operations: dict[str, Callable[..., list[int]]] = module.operations + for op in mod_operations: + callable = mod_operations[op] + if ops == "*" or op in ops_split: + operations[op] = callable case _: pass @@ -111,98 +85,6 @@ for (lineNo, line) in enumerate(src_lines): # 2nd pass -def make_alr(alu_op: str, left: str, right: str, target: str) -> list[int]: - """ALR 0000 TTTL LLRR RSSS""" - target_e = eval_expr(target) - left_e = eval_expr(left) - right_e = eval_expr(right) - alu_op_e = eval_expr(alu_op) - word = (0b0000 << 12) + \ - (target_e << 9) + \ - (left_e << 6) + \ - (right_e << 3) + \ - alu_op_e - return [word] - -def make_ali(alu_op: str, left: str, imm: str, target: str) -> list[int]: - """ALI 0001 TTTL LLII ISSS""" - target_e = eval_expr(target) - left_e = eval_expr(left) - imm_e = eval_expr(imm) - alu_op_e = eval_expr(alu_op) - word = (0b0001 << 12) + \ - (target_e << 9) + \ - (left_e << 6) + \ - (imm_e << 3) + \ - alu_op_e - return [word] - -def make_ldr(to_reg: str, addr_reg: str) -> list[int]: - """LDR 0010 TTTR RRXX XXXX""" - to_reg_e = eval_expr(to_reg) - addr_reg_e = eval_expr(addr_reg) - word = (0b0010 << 12) + \ - (to_reg_e << 9) + \ - (addr_reg_e << 6) - return [word] - -def make_str(from_reg: str, addr_reg: str) -> list[int]: - """STR 0011 TTTR RRXX XXXX""" - from_reg_e = eval_expr(from_reg) - addr_reg_e = eval_expr(addr_reg) - word = (0b0011 << 12) + \ - (from_reg_e << 9) + \ - (addr_reg_e << 6) - return [word] - -def make_ldi(to_reg: str, imm: str) -> list[int]: - """LDI 0100 TTTI IIII IIII""" - to_reg_e = eval_expr(to_reg) - imm_e = eval_expr(imm) - word = (0b0100 << 12) + \ - (to_reg_e << 9) + \ - imm_e - return [word] - -def make_jpr(addr_reg: str) -> list[int]: - """JPR 0101 XXXR RRXX XXXX""" - addr_reg_e = eval_expr(addr_reg) - word = (0b0101 << 12) + \ - (addr_reg_e << 6) - return [word] - -def make_jpi(address: int, imm: str) -> list[int]: - """JPI 0110 XXXI IIII IIII""" - imm_e = eval_expr(imm) - imm_e = imm_e - address - 1 - word = (0b0110 << 12) + \ - imm_e - return [word] - -def make_br(flag_s: str, addr_reg: str) -> list[int]: - """BR 0111 XFFR RRXX XXXX""" - flag_s_e = eval_expr(flag_s) - addr_reg_e = eval_expr(addr_reg) - word = (0b0111 << 12) + \ - (flag_s_e << 9) + \ - (addr_reg_e << 6) - return [word] - -def make_bri(address: int, flag_s: str, imm: str) -> list[int]: - """BRI 1000 XFFI IIII IIII""" - flag_s_e = eval_expr(flag_s) - imm_e = eval_expr(imm) - imm_e = imm_e - address - 1 - word = (0b1000 << 12) + \ - (flag_s_e << 9) + \ - imm_e - return [word] - -def make_hlt() -> list[int]: - """HLT 1111 XXXX XXXX XXXX""" - word = (0b1111 << 12) - return [word] - # def make_spu(reg: str) -> list[int]: # stack_pointer = options["stack_pointer"] # reg = eval_symbol(reg) @@ -210,7 +92,7 @@ def make_hlt() -> list[int]: # words_str: list[int] = make_str(reg, stack_pointer) # return words_inc + words_str -address = 0 +address: int = 0 nop = bytearray([0b1000_0000, 0]) result = bytearray() # initially one nop @@ -220,59 +102,24 @@ for (lineNo, line) in enumerate(src_lines): line = line.split(";")[0].strip() if line == "": continue keyword, *args = parse(line.lower()) - match keyword: - # Directives - case "@address": - address = eval_expr(args[0]) - continue - case "@label" | "@opt": - continue - # Instructions - case "alr": - words = make_alr(*args) - case "ali": - words = make_ali(*args) - case "ldr": - words = make_ldr(*args) - case "str": - words = make_str(*args) - case "ldi": - words = make_ldi(*args) - case "jpr": - words = make_jpr(*args) - case "jpi": - words = make_jpi(address, *args) - case "br": - words = make_br(*args) - case "bri": - words = make_bri(address, *args) - case "hlt": - words = make_hlt() + if keyword in operations: + words = operations[keyword](address, *args) + else: + match keyword: + # Directives + case "@address": + address = eval_expr(args[0]) + continue + case "@label" | "@opt" | "@use": + continue - # Pseudoinstructions - case "add": - words = make_alr("al_plus", *args) - case "sub": - words = make_alr("al_minus", *args) - case "inc": - words = make_ali("al_plus", args[0], "1", args[0]) - case "dec": - words = make_ali("al_minus", args[0], "1", args[0]) - case "mov": - words = make_ali("al_plus", args[0], "0", args[1]) - # case "csr": - # reg = args[0] - # words_spu = make_spu(reg) - # words = [] - # # todo finish this - - # Default case: evaluate as is (e.g. data word) - case _: - try: - words = [eval_expr(keyword)] - except: - raise Exception(f"Invalid assembly at {infile_path}:{lineNo + 1}\n\n{line}") + # Default case: evaluate as is (e.g. data word) + case _: + try: + words = [eval_expr(keyword)] + except: + raise Exception(f"Invalid assembly at {infile_path}:{lineNo + 1}\n\n{line}") if len(result) < 2 * address + 1: result.extend((2 * address + 1 - len(result)) * nop) diff --git a/src/assembler_eval.py b/src/assembler_eval.py new file mode 100644 index 0000000..3473ab8 --- /dev/null +++ b/src/assembler_eval.py @@ -0,0 +1,39 @@ +constants: dict[str, str] = { + # Registers + "rz": "0", + "ra": "1", + "rb": "2", + "rc": "3", + "rd": "4", + "rf": "5", + "rg": "6", + # ALU instructions + "al_plus": "0", + "al_minus": "1", + "al_and": "2", + "al_or": "3", + "al_xor": "4", + "al_shift_lr": "5", + "al_shift_ar": "6", + "al_shift_ll": "7", + # ALU flags + "f_carry": "0", + "f_overflow": "1", + "f_zero": "2", + "f_sign": "3", +} + +labels: dict[str, int] = {} + +def eval_symbol(c: str) -> str: + if c in labels: + return str(labels[c]) + + if c in constants: + return constants[c] + + return c + +def eval_expr(expr: str) -> int: + expr = eval_symbol(expr) + return eval(expr, labels.copy()) # eval as Python expr diff --git a/src/assembler_ops.py b/src/assembler_ops.py new file mode 100644 index 0000000..538dd78 --- /dev/null +++ b/src/assembler_ops.py @@ -0,0 +1,108 @@ +from typing import Callable +from assembler_eval import * + +def make_alr(address: int, alu_op: str, left: str, right: str, target: str) -> list[int]: + """ALR 0000 TTTL LLRR RSSS""" + target_e = eval_expr(target) + left_e = eval_expr(left) + right_e = eval_expr(right) + alu_op_e = eval_expr(alu_op) + word = (0b0000 << 12) + \ + (target_e << 9) + \ + (left_e << 6) + \ + (right_e << 3) + \ + alu_op_e + return [word] + +def make_ali(address: int, alu_op: str, left: str, imm: str, target: str) -> list[int]: + """ALI 0001 TTTL LLII ISSS""" + target_e = eval_expr(target) + left_e = eval_expr(left) + imm_e = eval_expr(imm) + alu_op_e = eval_expr(alu_op) + word = (0b0001 << 12) + \ + (target_e << 9) + \ + (left_e << 6) + \ + (imm_e << 3) + \ + alu_op_e + return [word] + +def make_ldr(address: int, to_reg: str, addr_reg: str) -> list[int]: + """LDR 0010 TTTR RRXX XXXX""" + to_reg_e = eval_expr(to_reg) + addr_reg_e = eval_expr(addr_reg) + word = (0b0010 << 12) + \ + (to_reg_e << 9) + \ + (addr_reg_e << 6) + return [word] + +def make_str(address: int, from_reg: str, addr_reg: str) -> list[int]: + """STR 0011 TTTR RRXX XXXX""" + from_reg_e = eval_expr(from_reg) + addr_reg_e = eval_expr(addr_reg) + word = (0b0011 << 12) + \ + (from_reg_e << 9) + \ + (addr_reg_e << 6) + return [word] + +def make_ldi(address: int, to_reg: str, imm: str) -> list[int]: + """LDI 0100 TTTI IIII IIII""" + to_reg_e = eval_expr(to_reg) + imm_e = eval_expr(imm) + word = (0b0100 << 12) + \ + (to_reg_e << 9) + \ + imm_e + return [word] + +def make_jpr(address: int, addr_reg: str) -> list[int]: + """JPR 0101 XXXR RRXX XXXX""" + addr_reg_e = eval_expr(addr_reg) + word = (0b0101 << 12) + \ + (addr_reg_e << 6) + return [word] + +def make_jpi(address: int, imm: str) -> list[int]: + """JPI 0110 XXXI IIII IIII""" + imm_e = eval_expr(imm) + imm_e = imm_e - address - 1 + word = (0b0110 << 12) + \ + imm_e + return [word] + +def make_br(address: int, flag_s: str, addr_reg: str) -> list[int]: + """brr 0111 XFFR RRXX XXXX""" + flag_s_e = eval_expr(flag_s) + addr_reg_e = eval_expr(addr_reg) + word = (0b0111 << 12) + \ + (flag_s_e << 9) + \ + (addr_reg_e << 6) + return [word] + +def make_bri(address: int, flag_s: str, imm: str) -> list[int]: + """BRI 1000 XFFI IIII IIII""" + flag_s_e = eval_expr(flag_s) + imm_e = eval_expr(imm) + imm_e = imm_e - address - 1 + word = (0b1000 << 12) + \ + (flag_s_e << 9) + \ + imm_e + return [word] + +def make_hlt(address: int, ) -> list[int]: + """HLT 1111 XXXX XXXX XXXX""" + word = (0b1111 << 12) + return [word] + +operations: dict[str, Callable[..., list[int]]] = { + "alr": make_alr, + "alr": make_alr, + "ali": make_ali, + "ldr": make_ldr, + "str": make_str, + "ldi": make_ldi, + "jpr": make_jpr, + "jpi": make_jpi, + "brr": make_br, + "bri": make_bri, + "hlt": make_hlt, +}
\ No newline at end of file diff --git a/src/ext_std.py b/src/ext_std.py new file mode 100644 index 0000000..017f40a --- /dev/null +++ b/src/ext_std.py @@ -0,0 +1,24 @@ +from assembler_ops import * + +def make_add(address:int, left: str, right: str, target: str) -> list[int]: + return make_alr(address, "al_plus", left, right, target) + +def make_sub(address: int, left: str, right: str, target: str) -> list[int]: + return make_alr(address, "al_minus", left, right, target) + +def make_inc(address: int, reg: str) -> list[int]: + return make_ali(address, "al_plus", reg, "1", reg) + +def make_dec(address: int, reg: str) -> list[int]: + return make_ali(address, "al_minus", reg, "1", reg) + +def make_mov(address: int, from_reg: str, to_reg: str) -> list[int]: + return make_ali(address, "al_plus", from_reg, "0", to_reg) + +operations = { + "add": make_add, + "sub": make_sub, + "inc": make_inc, + "dec": make_dec, + "mov": make_mov, +} diff --git a/src/test.atk16 b/src/test.atk16 index 1a7c773..1507430 100644 --- a/src/test.atk16 +++ b/src/test.atk16 @@ -1,5 +1,7 @@ ; Program: sum two values and store the result in RAM +@use ext_std:* + ; ROM (and program execution) starts at offset 0x0 @address 0x0 jpi program diff --git a/src/ucode.py b/src/ucode.py index a847a35..10dd853 100755 --- a/src/ucode.py +++ b/src/ucode.py @@ -59,7 +59,7 @@ ucode = [ not_branch([*fetch, R1_OE|PC_IE, US_RS, 0, 0, 0, 0]), # JPI 0110 XXXI IIII IIII not_branch([*fetch, IM_M|LI_OE|PC_IE, US_RS, 0, 0, 0, 0]), - # BR 0111 XFFR RRXX XXXX + # BRR 0111 XFFR RRXX XXXX branch([*fetch, US_RS, 0, 0, 0, 0, 0], [*fetch, R1_OE|PC_IE, US_RS, 0, 0, 0, 0]), # BRI 1000 XFFI IIII IIII |
