diff options
| -rw-r--r-- | .gitignore | 4 | ||||
| -rw-r--r-- | .vscode/launch.json | 17 | ||||
| -rw-r--r-- | .vscode/settings.json | 3 | ||||
| -rw-r--r-- | 16bit-cpu.md | 82 | ||||
| -rw-r--r-- | Makefile | 22 | ||||
| -rw-r--r-- | digital/atk16.dig | 1828 | ||||
| -rw-r--r-- | digital/atk16_alu.dig | 2651 | ||||
| -rw-r--r-- | digital/atk16_alu_carryfix.dig | 270 | ||||
| -rw-r--r-- | digital/tests_alu.dig | 26 | ||||
| -rw-r--r-- | logisim/CPU16.circ | 4344 | ||||
| -rwxr-xr-x | src/assembler.py | 263 | ||||
| -rw-r--r-- | src/test.atk16 | 33 | ||||
| -rwxr-xr-x | src/test_alu.py | 48 | ||||
| -rw-r--r-- | src/test_utils.py | 93 | ||||
| -rwxr-xr-x | src/ucode.py | 103 |
15 files changed, 9787 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a660363 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +out/ +*.pdf + +*.pyc
\ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..e60d76b --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,17 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Python: Current File", + "type": "python", + "request": "launch", + "program": "${file}", + "console": "integratedTerminal", + "justMyCode": true, + "args": ["test.atk16", "test.bin"] + } + ] +}
\ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..3516cb9 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "python.formatting.provider": "autopep8" +}
\ No newline at end of file diff --git a/16bit-cpu.md b/16bit-cpu.md new file mode 100644 index 0000000..73b588e --- /dev/null +++ b/16bit-cpu.md @@ -0,0 +1,82 @@ +# 16-bit CPU design doc + +## Features +16-bit data +16-bit address width +16-bit instruction width + +MISC +4-bit opcodes + +instruction format +xxxx xxxx xxxx xxxx - xxxx xxxx xxxx xxxx + +General purpose registers: + + 000: Zero register + 001: RA + 010: RB + 011: RC + 100: RD + +Special registers: MAR (memory address), IR (instruction), FR (flag) + +Serial peripheral ports: + + 101: PA + 110: PB + +for communicating with the outside world. + +Expansion port that connects directly to the main bus + +Addressing mode: indirect absolute (addresses are stored in registers and point to a complete address) + +## Operations + +### Memory operations +Format: [ 4 opcode . 3 rt . 3 rx . 6 unused ] + + ldr [rx] [rt] # load value from memory at address (register value) rx to rt + str [rx] [rt] # store value in rt to memory address (register value) rx + +### Immediate operations +Format: [ 4 opcode . 3 reg . 9 imm ] + + ldi [rt] [imm] # load immediate value imm to rt + +### Nullary operations +Format: [ 4 opcode . 12 unused ] + + hlt # halt + +### Arithmetic and logic operations +Format [ 4 opcode . 3 rt . 3 rl . 3 rr . 3 alu S ] + + alu [rl] [rr] [rt] [S] # compute rl ? rr where ? is the operation defined by + # 0SSS in the ALU, and store result in rt + # see datasheet of 74382 and ALU impl + als [rl] [rr] [rt] [S] # compute rl ? rr where ? is the operation defined by + # 1SSS in the ALU, and store result in rt + # see datasheet of 74382 and ALU impl + +Note: mul, div, gt, lt, eq, neq are implemented as pseudoinstructions in the assembler + +### Jump +Format: [ 4 opcode . 3 rx . 9 unused ] + + jmp [rx] # Jump to address in register rx + +### Branch +Format: [ 4 opcode . 1 unused . 2 flag . 9 addr ] +Branch if flag is set (where flag 0b00 = Z, 0b01 = C, ...) + + br [flag] [addr] + +Flags: +- C = ALU carry bit +- O = ALU overflow bit +- Z = ALU zero bit +- S = ALU sign bit + +Interrupt lines: 1 (IRQ) diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..f3366b0 --- /dev/null +++ b/Makefile @@ -0,0 +1,22 @@ +.PHONY: all + +py = /usr/bin/env python3 +digital_path = $(HOME)/.local/share/Digital/digital.jar + +start-digital: + java -jar $(digital_path) & + +# make assemble asm=src/program.atk16 out=out/program.bin +assemble: + $(py) src/assembler.py $(asm) $(out) + +# make gen-ucode out=out/ucode.bin +gen-ucode: + $(py) src/ucode.py $(out) + +# make test +test: + $(py) src/test_alu.py digital/atk16_alu.dig + +run-single-test: + java -cp $(digital_path) CLI test -verbose -circ $(circ) -tests $(tests) diff --git a/digital/atk16.dig b/digital/atk16.dig new file mode 100644 index 0000000..8c350c2 --- /dev/null +++ b/digital/atk16.dig @@ -0,0 +1,1828 @@ +<?xml version="1.0" encoding="utf-8"?> +<circuit> + <version>2</version> + <attributes/> + <visualElements> + <visualElement> + <elementName>RegisterFile</elementName> + <elementAttributes> + <entry> + <string>AddrBits</string> + <int>3</int> + </entry> + <entry> + <string>Label</string> + <string>Register file</string> + </entry> + <entry> + <string>Bits</string> + <int>16</int> + </entry> + </elementAttributes> + <pos x="-200" y="220"/> + </visualElement> + <visualElement> + <elementName>Register</elementName> + <elementAttributes> + <entry> + <string>Label</string> + <string>MAR</string> + </entry> + <entry> + <string>Bits</string> + <int>16</int> + </entry> + </elementAttributes> + <pos x="400" y="-240"/> + </visualElement> + <visualElement> + <elementName>Register</elementName> + <elementAttributes> + <entry> + <string>Label</string> + <string>IR</string> + </entry> + <entry> + <string>Bits</string> + <int>16</int> + </entry> + </elementAttributes> + <pos x="0" y="-80"/> + </visualElement> + <visualElement> + <elementName>atk16_alu.dig</elementName> + <elementAttributes> + <entry> + <string>Label</string> + <string>ALU</string> + </entry> + <entry> + <string>shapeType</string> + <shapeType>SIMPLE</shapeType> + </entry> + </elementAttributes> + <pos x="40" y="280"/> + </visualElement> + <visualElement> + <elementName>Register</elementName> + <elementAttributes> + <entry> + <string>Label</string> + <string>FR</string> + </entry> + <entry> + <string>Bits</string> + <int>4</int> + </entry> + </elementAttributes> + <pos x="300" y="280"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>FR_IE</string> + </entry> + </elementAttributes> + <pos x="280" y="340"/> + </visualElement> + <visualElement> + <elementName>Driver</elementName> + <elementAttributes> + <entry> + <string>Bits</string> + <int>16</int> + </entry> + </elementAttributes> + <pos x="140" y="-240"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="1"/> + </entry> + <entry> + <string>NetName</string> + <string>PC_OE</string> + </entry> + </elementAttributes> + <pos x="140" y="-260"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>MAR_IE</string> + </entry> + </elementAttributes> + <pos x="380" y="-180"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>IR_IE</string> + </entry> + </elementAttributes> + <pos x="-20" y="-20"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>IR_IE</string> + </entry> + </elementAttributes> + <pos x="-40" y="-200"/> + </visualElement> + <visualElement> + <elementName>Splitter</elementName> + <elementAttributes> + <entry> + <string>Input Splitting</string> + <string>16</string> + </entry> + <entry> + <string>Output Splitting</string> + <string>3,3,3,3,4</string> + </entry> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + </elementAttributes> + <pos x="-100" y="20"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>OPCODE</string> + </entry> + </elementAttributes> + <pos x="-140" y="-60"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>IR0</string> + </entry> + </elementAttributes> + <pos x="-140" y="-40"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>IR1</string> + </entry> + </elementAttributes> + <pos x="-140" y="-20"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>IR2</string> + </entry> + </elementAttributes> + <pos x="-140" y="0"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>IR3</string> + </entry> + </elementAttributes> + <pos x="-140" y="20"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>IR0</string> + </entry> + </elementAttributes> + <pos x="-260" y="300"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>IR1</string> + </entry> + </elementAttributes> + <pos x="-260" y="320"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>IR2</string> + </entry> + </elementAttributes> + <pos x="-260" y="260"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>RW_IE</string> + </entry> + </elementAttributes> + <pos x="-220" y="240"/> + </visualElement> + <visualElement> + <elementName>Splitter</elementName> + <elementAttributes> + <entry> + <string>Input Splitting</string> + <string>3,1</string> + </entry> + <entry> + <string>Output Splitting</string> + <string>4</string> + </entry> + </elementAttributes> + <pos x="0" y="320"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation reference="../../../../visualElement[17]/elementAttributes/entry/rotation"/> + </entry> + <entry> + <string>NetName</string> + <string>IR3</string> + </entry> + </elementAttributes> + <pos x="-20" y="320"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>OP_PARITY</string> + </entry> + </elementAttributes> + <pos x="0" y="340"/> + </visualElement> + <visualElement> + <elementName>RAMAsync</elementName> + <elementAttributes> + <entry> + <string>Label</string> + <string>MEM_RAM</string> + </entry> + <entry> + <string>AddrBits</string> + <int>15</int> + </entry> + <entry> + <string>Bits</string> + <int>16</int> + </entry> + </elementAttributes> + <pos x="640" y="-220"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>MEM_IE</string> + </entry> + </elementAttributes> + <pos x="640" y="-180"/> + </visualElement> + <visualElement> + <elementName>EEPROM</elementName> + <elementAttributes> + <entry> + <string>Label</string> + <string>UCODE</string> + </entry> + <entry> + <string>AddrBits</string> + <int>8</int> + </entry> + <entry> + <string>Bits</string> + <int>16</int> + </entry> + <entry> + <string>isProgramMemory</string> + <boolean>true</boolean> + </entry> + </elementAttributes> + <pos x="620" y="280"/> + </visualElement> + <visualElement> + <elementName>Splitter</elementName> + <elementAttributes> + <entry> + <string>Input Splitting</string> + <string>3,1,4</string> + </entry> + </elementAttributes> + <pos x="540" y="280"/> + </visualElement> + <visualElement> + <elementName>VDD</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="1"/> + </entry> + </elementAttributes> + <pos x="600" y="300"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation reference="../../../../visualElement[13]/elementAttributes/entry/rotation"/> + </entry> + <entry> + <string>NetName</string> + <string>OPCODE</string> + </entry> + </elementAttributes> + <pos x="540" y="320"/> + </visualElement> + <visualElement> + <elementName>Ground</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="1"/> + </entry> + </elementAttributes> + <pos x="600" y="340"/> + </visualElement> + <visualElement> + <elementName>BitSelector</elementName> + <elementAttributes> + <entry> + <string>Selector Bits</string> + <int>2</int> + </entry> + </elementAttributes> + <pos x="400" y="300"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="3"/> + </entry> + <entry> + <string>NetName</string> + <string>IR0</string> + </entry> + </elementAttributes> + <pos x="420" y="360"/> + </visualElement> + <visualElement> + <elementName>Splitter</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="1"/> + </entry> + <entry> + <string>Input Splitting</string> + <string>3</string> + </entry> + <entry> + <string>Output Splitting</string> + <string>2,</string> + </entry> + </elementAttributes> + <pos x="420" y="360"/> + </visualElement> + <visualElement> + <elementName>VDD</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="1"/> + </entry> + </elementAttributes> + <pos x="580" y="360"/> + </visualElement> + <visualElement> + <elementName>Counter</elementName> + <elementAttributes> + <entry> + <string>Label</string> + <string>Microsequencer</string> + </entry> + <entry> + <string>Bits</string> + <int>3</int> + </entry> + </elementAttributes> + <pos x="520" y="100"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>US_RS</string> + </entry> + </elementAttributes> + <pos x="360" y="160"/> + </visualElement> + <visualElement> + <elementName>And</elementName> + <elementAttributes/> + <pos x="380" y="120"/> + </visualElement> + <visualElement> + <elementName>VDD</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="1"/> + </entry> + </elementAttributes> + <pos x="500" y="100"/> + </visualElement> + <visualElement> + <elementName>Not</elementName> + <elementAttributes/> + <pos x="380" y="80"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>IR_L9</string> + </entry> + </elementAttributes> + <pos x="-480" y="20"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>IR_L12</string> + </entry> + </elementAttributes> + <pos x="-480" y="-20"/> + </visualElement> + <visualElement> + <elementName>Splitter</elementName> + <elementAttributes> + <entry> + <string>Input Splitting</string> + <string>16</string> + </entry> + <entry> + <string>Output Splitting</string> + <string>12,</string> + </entry> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + </elementAttributes> + <pos x="-260" y="-20"/> + </visualElement> + <visualElement> + <elementName>Splitter</elementName> + <elementAttributes> + <entry> + <string>Input Splitting</string> + <string>16</string> + </entry> + <entry> + <string>mirror</string> + <boolean>true</boolean> + </entry> + <entry> + <string>Output Splitting</string> + <string>1*16</string> + </entry> + </elementAttributes> + <pos x="700" y="320"/> + </visualElement> + <visualElement> + <elementName>CounterPreset</elementName> + <elementAttributes> + <entry> + <string>Label</string> + <string>PC</string> + </entry> + <entry> + <string>Bits</string> + <int>16</int> + </entry> + <entry> + <string>isProgramCounter</string> + <boolean>true</boolean> + </entry> + </elementAttributes> + <pos x="20" y="-280"/> + </visualElement> + <visualElement> + <elementName>Ground</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="1"/> + </entry> + </elementAttributes> + <pos x="-40" y="-240"/> + </visualElement> + <visualElement> + <elementName>Ground</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation reference="../../../../visualElement[46]/elementAttributes/entry/rotation"/> + </entry> + </elementAttributes> + <pos x="0" y="-180"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>PC_CO</string> + </entry> + </elementAttributes> + <pos x="-40" y="-280"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>PC_CO</string> + </entry> + </elementAttributes> + <pos x="720" y="320"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>PC_IE</string> + </entry> + </elementAttributes> + <pos x="720" y="300"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>PC_OE</string> + </entry> + </elementAttributes> + <pos x="720" y="280"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>MAR_IE</string> + </entry> + </elementAttributes> + <pos x="720" y="260"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>MEM_IE</string> + </entry> + </elementAttributes> + <pos x="720" y="240"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>MEM_OE</string> + </entry> + </elementAttributes> + <pos x="720" y="220"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>RW_IE</string> + </entry> + </elementAttributes> + <pos x="720" y="200"/> + </visualElement> + <visualElement> + <elementName>Driver</elementName> + <elementAttributes> + <entry> + <string>flipSelPos</string> + <boolean>true</boolean> + </entry> + <entry> + <string>Bits</string> + <int>16</int> + </entry> + </elementAttributes> + <pos x="20" y="160"/> + </visualElement> + <visualElement> + <elementName>Driver</elementName> + <elementAttributes> + <entry> + <string>Bits</string> + <int>16</int> + </entry> + <entry> + <string>flipSelPos</string> + <boolean>true</boolean> + </entry> + </elementAttributes> + <pos x="40" y="200"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>R2_OE</string> + </entry> + </elementAttributes> + <pos x="40" y="220"/> + </visualElement> + <visualElement> + <elementName>Driver</elementName> + <elementAttributes> + <entry> + <string>Bits</string> + <int>16</int> + </entry> + </elementAttributes> + <pos x="160" y="280"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="1"/> + </entry> + <entry> + <string>NetName</string> + <string>ALU_OE</string> + </entry> + </elementAttributes> + <pos x="160" y="260"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>R1_OE</string> + </entry> + </elementAttributes> + <pos x="720" y="180"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>R2_OE</string> + </entry> + </elementAttributes> + <pos x="720" y="160"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>IR_IE</string> + </entry> + </elementAttributes> + <pos x="720" y="140"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>R1_OE</string> + </entry> + </elementAttributes> + <pos x="40" y="180"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>IR9_OE</string> + </entry> + </elementAttributes> + <pos x="720" y="120"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>IR12_OE</string> + </entry> + </elementAttributes> + <pos x="720" y="100"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>ALU_OE</string> + </entry> + </elementAttributes> + <pos x="720" y="80"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>HALT</string> + </entry> + </elementAttributes> + <pos x="720" y="40"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>US_RS</string> + </entry> + </elementAttributes> + <pos x="720" y="20"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>FR_IE</string> + </entry> + </elementAttributes> + <pos x="720" y="60"/> + </visualElement> + <visualElement> + <elementName>BitSelector</elementName> + <elementAttributes> + <entry> + <string>Selector Bits</string> + <int>4</int> + </entry> + <entry> + <string>rotation</string> + <rotation rotation="3"/> + </entry> + <entry> + <string>flipSelPos</string> + <boolean>true</boolean> + </entry> + </elementAttributes> + <pos x="120" y="-40"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="3"/> + </entry> + <entry> + <string>NetName</string> + <string>OP_PARITY</string> + </entry> + </elementAttributes> + <pos x="120" y="20"/> + </visualElement> + <visualElement> + <elementName>Const</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>Value</string> + <long>15</long> + </entry> + <entry> + <string>Bits</string> + <int>4</int> + </entry> + </elementAttributes> + <pos x="140" y="-20"/> + </visualElement> + <visualElement> + <elementName>Splitter</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>Input Splitting</string> + <string>16</string> + </entry> + <entry> + <string>Output Splitting</string> + <string>9,</string> + </entry> + </elementAttributes> + <pos x="-280" y="20"/> + </visualElement> + <visualElement> + <elementName>Splitter</elementName> + <elementAttributes> + <entry> + <string>Input Splitting</string> + <string>9,7</string> + </entry> + <entry> + <string>Output Splitting</string> + <string>16</string> + </entry> + </elementAttributes> + <pos x="-460" y="60"/> + </visualElement> + <visualElement> + <elementName>Ground</elementName> + <elementAttributes> + <entry> + <string>Bits</string> + <int>7</int> + </entry> + </elementAttributes> + <pos x="-460" y="100"/> + </visualElement> + <visualElement> + <elementName>Splitter</elementName> + <elementAttributes> + <entry> + <string>Input Splitting</string> + <string>12,4</string> + </entry> + <entry> + <string>Output Splitting</string> + <string>16</string> + </entry> + </elementAttributes> + <pos x="-340" y="60"/> + </visualElement> + <visualElement> + <elementName>Ground</elementName> + <elementAttributes> + <entry> + <string>Bits</string> + <int>4</int> + </entry> + </elementAttributes> + <pos x="-340" y="100"/> + </visualElement> + <visualElement> + <elementName>Driver</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="3"/> + </entry> + <entry> + <string>Bits</string> + <int>16</int> + </entry> + </elementAttributes> + <pos x="-300" y="100"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>IR12_OE</string> + </entry> + </elementAttributes> + <pos x="-280" y="100"/> + </visualElement> + <visualElement> + <elementName>Driver</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="3"/> + </entry> + <entry> + <string>Bits</string> + <int>16</int> + </entry> + <entry> + <string>flipSelPos</string> + <boolean>true</boolean> + </entry> + </elementAttributes> + <pos x="-400" y="140"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>IR9_OE</string> + </entry> + </elementAttributes> + <pos x="-420" y="140"/> + </visualElement> + <visualElement> + <elementName>EEPROM</elementName> + <elementAttributes> + <entry> + <string>Label</string> + <string>MEM_ROM</string> + </entry> + <entry> + <string>AddrBits</string> + <int>15</int> + </entry> + <entry> + <string>Bits</string> + <int>16</int> + </entry> + <entry> + <string>inverterConfig</string> + <inverterConfig> + <string>CS</string> + </inverterConfig> + </entry> + </elementAttributes> + <pos x="640" y="-400"/> + </visualElement> + <visualElement> + <elementName>Splitter</elementName> + <elementAttributes> + <entry> + <string>Input Splitting</string> + <string>16</string> + </entry> + <entry> + <string>Output Splitting</string> + <string>15,1</string> + </entry> + </elementAttributes> + <pos x="480" y="-320"/> + </visualElement> + <visualElement> + <elementName>Demultiplexer</elementName> + <elementAttributes> + <entry> + <string>Bits</string> + <int>15</int> + </entry> + </elementAttributes> + <pos x="520" y="-340"/> + </visualElement> + <visualElement> + <elementName>Ground</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="1"/> + </entry> + </elementAttributes> + <pos x="620" y="-340"/> + </visualElement> + <visualElement> + <elementName>Driver</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="3"/> + </entry> + <entry> + <string>Bits</string> + <int>16</int> + </entry> + </elementAttributes> + <pos x="760" y="-160"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>MEM_OE</string> + </entry> + </elementAttributes> + <pos x="800" y="-160"/> + </visualElement> + <visualElement> + <elementName>Driver</elementName> + <elementAttributes> + <entry> + <string>Bits</string> + <int>16</int> + </entry> + </elementAttributes> + <pos x="740" y="-200"/> + </visualElement> + <visualElement> + <elementName>Clock</elementName> + <elementAttributes> + <entry> + <string>small</string> + <boolean>true</boolean> + </entry> + </elementAttributes> + <pos x="-320" y="-360"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>CLK</string> + </entry> + </elementAttributes> + <pos x="-300" y="-360"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>CLK</string> + </entry> + </elementAttributes> + <pos x="0" y="-60"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>CLK</string> + </entry> + </elementAttributes> + <pos x="400" y="-220"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>CLK</string> + </entry> + </elementAttributes> + <pos x="0" y="-260"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>CLK</string> + </entry> + </elementAttributes> + <pos x="280" y="300"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>CLK</string> + </entry> + </elementAttributes> + <pos x="-220" y="280"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>CLK</string> + </entry> + </elementAttributes> + <pos x="360" y="80"/> + </visualElement> + </visualElements> + <wires> + <wire> + <p1 x="280" y="320"/> + <p2 x="300" y="320"/> + </wire> + <wire> + <p1 x="-260" y="320"/> + <p2 x="-200" y="320"/> + </wire> + <wire> + <p1 x="20" y="320"/> + <p2 x="40" y="320"/> + </wire> + <wire> + <p1 x="-20" y="320"/> + <p2 x="0" y="320"/> + </wire> + <wire> + <p1 x="680" y="320"/> + <p2 x="700" y="320"/> + </wire> + <wire> + <p1 x="-140" y="0"/> + <p2 x="-120" y="0"/> + </wire> + <wire> + <p1 x="0" y="-260"/> + <p2 x="20" y="-260"/> + </wire> + <wire> + <p1 x="600" y="-260"/> + <p2 x="740" y="-260"/> + </wire> + <wire> + <p1 x="-260" y="260"/> + <p2 x="-200" y="260"/> + </wire> + <wire> + <p1 x="380" y="-200"/> + <p2 x="400" y="-200"/> + </wire> + <wire> + <p1 x="480" y="-200"/> + <p2 x="640" y="-200"/> + </wire> + <wire> + <p1 x="-40" y="-200"/> + <p2 x="20" y="-200"/> + </wire> + <wire> + <p1 x="700" y="-200"/> + <p2 x="720" y="-200"/> + </wire> + <wire> + <p1 x="-20" y="200"/> + <p2 x="20" y="200"/> + </wire> + <wire> + <p1 x="60" y="200"/> + <p2 x="200" y="200"/> + </wire> + <wire> + <p1 x="-60" y="-140"/> + <p2 x="-20" y="-140"/> + </wire> + <wire> + <p1 x="480" y="-140"/> + <p2 x="760" y="-140"/> + </wire> + <wire> + <p1 x="200" y="-140"/> + <p2 x="480" y="-140"/> + </wire> + <wire> + <p1 x="-20" y="-140"/> + <p2 x="200" y="-140"/> + </wire> + <wire> + <p1 x="440" y="140"/> + <p2 x="520" y="140"/> + </wire> + <wire> + <p1 x="-60" y="-80"/> + <p2 x="0" y="-80"/> + </wire> + <wire> + <p1 x="580" y="-400"/> + <p2 x="640" y="-400"/> + </wire> + <wire> + <p1 x="420" y="80"/> + <p2 x="440" y="80"/> + </wire> + <wire> + <p1 x="360" y="80"/> + <p2 x="380" y="80"/> + </wire> + <wire> + <p1 x="-140" y="-20"/> + <p2 x="-120" y="-20"/> + </wire> + <wire> + <p1 x="-480" y="-20"/> + <p2 x="-340" y="-20"/> + </wire> + <wire> + <p1 x="-340" y="-20"/> + <p2 x="-280" y="-20"/> + </wire> + <wire> + <p1 x="560" y="-340"/> + <p2 x="580" y="-340"/> + </wire> + <wire> + <p1 x="620" y="-340"/> + <p2 x="640" y="-340"/> + </wire> + <wire> + <p1 x="-140" y="20"/> + <p2 x="-120" y="20"/> + </wire> + <wire> + <p1 x="-480" y="20"/> + <p2 x="-460" y="20"/> + </wire> + <wire> + <p1 x="-280" y="20"/> + <p2 x="-260" y="20"/> + </wire> + <wire> + <p1 x="-460" y="20"/> + <p2 x="-300" y="20"/> + </wire> + <wire> + <p1 x="600" y="340"/> + <p2 x="620" y="340"/> + </wire> + <wire> + <p1 x="80" y="-280"/> + <p2 x="100" y="-280"/> + </wire> + <wire> + <p1 x="-40" y="-280"/> + <p2 x="20" y="-280"/> + </wire> + <wire> + <p1 x="540" y="-280"/> + <p2 x="600" y="-280"/> + </wire> + <wire> + <p1 x="620" y="-280"/> + <p2 x="800" y="-280"/> + </wire> + <wire> + <p1 x="180" y="280"/> + <p2 x="200" y="280"/> + </wire> + <wire> + <p1 x="0" y="280"/> + <p2 x="40" y="280"/> + </wire> + <wire> + <p1 x="-220" y="280"/> + <p2 x="-200" y="280"/> + </wire> + <wire> + <p1 x="560" y="280"/> + <p2 x="620" y="280"/> + </wire> + <wire> + <p1 x="100" y="280"/> + <p2 x="140" y="280"/> + </wire> + <wire> + <p1 x="220" y="280"/> + <p2 x="300" y="280"/> + </wire> + <wire> + <p1 x="-20" y="-220"/> + <p2 x="20" y="-220"/> + </wire> + <wire> + <p1 x="460" y="-220"/> + <p2 x="480" y="-220"/> + </wire> + <wire> + <p1 x="580" y="-220"/> + <p2 x="640" y="-220"/> + </wire> + <wire> + <p1 x="-120" y="220"/> + <p2 x="-40" y="220"/> + </wire> + <wire> + <p1 x="-260" y="220"/> + <p2 x="-200" y="220"/> + </wire> + <wire> + <p1 x="540" y="220"/> + <p2 x="600" y="220"/> + </wire> + <wire> + <p1 x="-40" y="220"/> + <p2 x="0" y="220"/> + </wire> + <wire> + <p1 x="780" y="-160"/> + <p2 x="800" y="-160"/> + </wire> + <wire> + <p1 x="360" y="160"/> + <p2 x="380" y="160"/> + </wire> + <wire> + <p1 x="40" y="160"/> + <p2 x="200" y="160"/> + </wire> + <wire> + <p1 x="-400" y="160"/> + <p2 x="-300" y="160"/> + </wire> + <wire> + <p1 x="-300" y="160"/> + <p2 x="-260" y="160"/> + </wire> + <wire> + <p1 x="-40" y="160"/> + <p2 x="0" y="160"/> + </wire> + <wire> + <p1 x="-260" y="160"/> + <p2 x="-40" y="160"/> + </wire> + <wire> + <p1 x="500" y="100"/> + <p2 x="520" y="100"/> + </wire> + <wire> + <p1 x="360" y="100"/> + <p2 x="440" y="100"/> + </wire> + <wire> + <p1 x="580" y="100"/> + <p2 x="600" y="100"/> + </wire> + <wire> + <p1 x="-140" y="-40"/> + <p2 x="-120" y="-40"/> + </wire> + <wire> + <p1 x="-20" y="-40"/> + <p2 x="0" y="-40"/> + </wire> + <wire> + <p1 x="700" y="-360"/> + <p2 x="760" y="-360"/> + </wire> + <wire> + <p1 x="-320" y="-360"/> + <p2 x="-300" y="-360"/> + </wire> + <wire> + <p1 x="580" y="360"/> + <p2 x="620" y="360"/> + </wire> + <wire> + <p1 x="500" y="-300"/> + <p2 x="540" y="-300"/> + </wire> + <wire> + <p1 x="560" y="-300"/> + <p2 x="580" y="-300"/> + </wire> + <wire> + <p1 x="280" y="300"/> + <p2 x="300" y="300"/> + </wire> + <wire> + <p1 x="-20" y="300"/> + <p2 x="40" y="300"/> + </wire> + <wire> + <p1 x="-260" y="300"/> + <p2 x="-200" y="300"/> + </wire> + <wire> + <p1 x="600" y="300"/> + <p2 x="620" y="300"/> + </wire> + <wire> + <p1 x="360" y="300"/> + <p2 x="400" y="300"/> + </wire> + <wire> + <p1 x="440" y="300"/> + <p2 x="540" y="300"/> + </wire> + <wire> + <p1 x="100" y="300"/> + <p2 x="220" y="300"/> + </wire> + <wire> + <p1 x="100" y="-240"/> + <p2 x="120" y="-240"/> + </wire> + <wire> + <p1 x="160" y="-240"/> + <p2 x="200" y="-240"/> + </wire> + <wire> + <p1 x="-40" y="-240"/> + <p2 x="20" y="-240"/> + </wire> + <wire> + <p1 x="200" y="-240"/> + <p2 x="400" y="-240"/> + </wire> + <wire> + <p1 x="-120" y="240"/> + <p2 x="-20" y="240"/> + </wire> + <wire> + <p1 x="-220" y="240"/> + <p2 x="-200" y="240"/> + </wire> + <wire> + <p1 x="0" y="-180"/> + <p2 x="20" y="-180"/> + </wire> + <wire> + <p1 x="20" y="180"/> + <p2 x="40" y="180"/> + </wire> + <wire> + <p1 x="360" y="120"/> + <p2 x="380" y="120"/> + </wire> + <wire> + <p1 x="440" y="120"/> + <p2 x="520" y="120"/> + </wire> + <wire> + <p1 x="-140" y="-60"/> + <p2 x="-120" y="-60"/> + </wire> + <wire> + <p1 x="60" y="-60"/> + <p2 x="80" y="-60"/> + </wire> + <wire> + <p1 x="80" y="-60"/> + <p2 x="120" y="-60"/> + </wire> + <wire> + <p1 x="600" y="-380"/> + <p2 x="620" y="-380"/> + </wire> + <wire> + <p1 x="-260" y="60"/> + <p2 x="-100" y="60"/> + </wire> + <wire> + <p1 x="-320" y="60"/> + <p2 x="-300" y="60"/> + </wire> + <wire> + <p1 x="-440" y="60"/> + <p2 x="-400" y="60"/> + </wire> + <wire> + <p1 x="-100" y="60"/> + <p2 x="80" y="60"/> + </wire> + <wire> + <p1 x="500" y="-320"/> + <p2 x="520" y="-320"/> + </wire> + <wire> + <p1 x="620" y="-320"/> + <p2 x="640" y="-320"/> + </wire> + <wire> + <p1 x="0" y="220"/> + <p2 x="0" y="280"/> + </wire> + <wire> + <p1 x="-260" y="-20"/> + <p2 x="-260" y="20"/> + </wire> + <wire> + <p1 x="-260" y="160"/> + <p2 x="-260" y="220"/> + </wire> + <wire> + <p1 x="-260" y="20"/> + <p2 x="-260" y="60"/> + </wire> + <wire> + <p1 x="580" y="-400"/> + <p2 x="580" y="-340"/> + </wire> + <wire> + <p1 x="580" y="-300"/> + <p2 x="580" y="-220"/> + </wire> + <wire> + <p1 x="200" y="-240"/> + <p2 x="200" y="-140"/> + </wire> + <wire> + <p1 x="200" y="200"/> + <p2 x="200" y="280"/> + </wire> + <wire> + <p1 x="200" y="-140"/> + <p2 x="200" y="160"/> + </wire> + <wire> + <p1 x="200" y="160"/> + <p2 x="200" y="200"/> + </wire> + <wire> + <p1 x="-460" y="80"/> + <p2 x="-460" y="100"/> + </wire> + <wire> + <p1 x="-460" y="20"/> + <p2 x="-460" y="60"/> + </wire> + <wire> + <p1 x="-400" y="60"/> + <p2 x="-400" y="120"/> + </wire> + <wire> + <p1 x="80" y="-60"/> + <p2 x="80" y="60"/> + </wire> + <wire> + <p1 x="-20" y="200"/> + <p2 x="-20" y="240"/> + </wire> + <wire> + <p1 x="-20" y="-220"/> + <p2 x="-20" y="-140"/> + </wire> + <wire> + <p1 x="-20" y="-40"/> + <p2 x="-20" y="-20"/> + </wire> + <wire> + <p1 x="-20" y="240"/> + <p2 x="-20" y="300"/> + </wire> + <wire> + <p1 x="-340" y="80"/> + <p2 x="-340" y="100"/> + </wire> + <wire> + <p1 x="-340" y="-20"/> + <p2 x="-340" y="60"/> + </wire> + <wire> + <p1 x="600" y="100"/> + <p2 x="600" y="220"/> + </wire> + <wire> + <p1 x="600" y="-380"/> + <p2 x="600" y="-280"/> + </wire> + <wire> + <p1 x="600" y="-280"/> + <p2 x="600" y="-260"/> + </wire> + <wire> + <p1 x="280" y="320"/> + <p2 x="280" y="340"/> + </wire> + <wire> + <p1 x="540" y="220"/> + <p2 x="540" y="280"/> + </wire> + <wire> + <p1 x="540" y="-300"/> + <p2 x="540" y="-280"/> + </wire> + <wire> + <p1 x="220" y="280"/> + <p2 x="220" y="300"/> + </wire> + <wire> + <p1 x="480" y="-200"/> + <p2 x="480" y="-140"/> + </wire> + <wire> + <p1 x="480" y="-320"/> + <p2 x="480" y="-220"/> + </wire> + <wire> + <p1 x="800" y="-280"/> + <p2 x="800" y="-160"/> + </wire> + <wire> + <p1 x="-100" y="20"/> + <p2 x="-100" y="60"/> + </wire> + <wire> + <p1 x="420" y="320"/> + <p2 x="420" y="340"/> + </wire> + <wire> + <p1 x="100" y="-280"/> + <p2 x="100" y="-240"/> + </wire> + <wire> + <p1 x="740" y="-260"/> + <p2 x="740" y="-220"/> + </wire> + <wire> + <p1 x="-40" y="160"/> + <p2 x="-40" y="220"/> + </wire> + <wire> + <p1 x="360" y="100"/> + <p2 x="360" y="120"/> + </wire> + <wire> + <p1 x="-300" y="60"/> + <p2 x="-300" y="80"/> + </wire> + <wire> + <p1 x="-300" y="120"/> + <p2 x="-300" y="160"/> + </wire> + <wire> + <p1 x="620" y="-320"/> + <p2 x="620" y="-280"/> + </wire> + <wire> + <p1 x="120" y="0"/> + <p2 x="120" y="20"/> + </wire> + <wire> + <p1 x="120" y="-60"/> + <p2 x="120" y="-40"/> + </wire> + <wire> + <p1 x="440" y="80"/> + <p2 x="440" y="100"/> + </wire> + <wire> + <p1 x="440" y="100"/> + <p2 x="440" y="120"/> + </wire> + <wire> + <p1 x="760" y="-360"/> + <p2 x="760" y="-180"/> + </wire> + <wire> + <p1 x="-60" y="-140"/> + <p2 x="-60" y="-80"/> + </wire> + <wire> + <p1 x="380" y="-200"/> + <p2 x="380" y="-180"/> + </wire> + </wires> + <measurementOrdering/> +</circuit>
\ No newline at end of file diff --git a/digital/atk16_alu.dig b/digital/atk16_alu.dig new file mode 100644 index 0000000..09e0e1b --- /dev/null +++ b/digital/atk16_alu.dig @@ -0,0 +1,2651 @@ +<?xml version="1.0" encoding="utf-8"?> +<circuit> + <version>2</version> + <attributes/> + <visualElements> + <visualElement> + <elementName>74382.dig</elementName> + <elementAttributes/> + <pos x="-100" y="160"/> + </visualElement> + <visualElement> + <elementName>74382.dig</elementName> + <elementAttributes/> + <pos x="220" y="160"/> + </visualElement> + <visualElement> + <elementName>74382.dig</elementName> + <elementAttributes/> + <pos x="560" y="160"/> + </visualElement> + <visualElement> + <elementName>74382.dig</elementName> + <elementAttributes/> + <pos x="920" y="160"/> + </visualElement> + <visualElement> + <elementName>VDD</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="3"/> + </entry> + </elementAttributes> + <pos x="60" y="160"/> + </visualElement> + <visualElement> + <elementName>VDD</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation reference="../../../../visualElement[5]/elementAttributes/entry/rotation"/> + </entry> + </elementAttributes> + <pos x="380" y="160"/> + </visualElement> + <visualElement> + <elementName>VDD</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation reference="../../../../visualElement[5]/elementAttributes/entry/rotation"/> + </entry> + </elementAttributes> + <pos x="720" y="160"/> + </visualElement> + <visualElement> + <elementName>VDD</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation reference="../../../../visualElement[5]/elementAttributes/entry/rotation"/> + </entry> + </elementAttributes> + <pos x="1080" y="160"/> + </visualElement> + <visualElement> + <elementName>Ground</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="1"/> + </entry> + </elementAttributes> + <pos x="-120" y="520"/> + </visualElement> + <visualElement> + <elementName>Ground</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation reference="../../../../visualElement[9]/elementAttributes/entry/rotation"/> + </entry> + </elementAttributes> + <pos x="200" y="520"/> + </visualElement> + <visualElement> + <elementName>Ground</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation reference="../../../../visualElement[9]/elementAttributes/entry/rotation"/> + </entry> + </elementAttributes> + <pos x="540" y="520"/> + </visualElement> + <visualElement> + <elementName>Ground</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation reference="../../../../visualElement[9]/elementAttributes/entry/rotation"/> + </entry> + </elementAttributes> + <pos x="900" y="520"/> + </visualElement> + <visualElement> + <elementName>Splitter</elementName> + <elementAttributes> + <entry> + <string>mirror</string> + <boolean>true</boolean> + </entry> + <entry> + <string>Input Splitting</string> + <string>16</string> + </entry> + <entry> + <string>Output Splitting</string> + <string>1*16</string> + </entry> + </elementAttributes> + <pos x="-440" y="220"/> + </visualElement> + <visualElement> + <elementName>In</elementName> + <elementAttributes> + <entry> + <string>Description</string> + <string>LHS of binary ALU operation</string> + </entry> + <entry> + <string>Label</string> + <string>A</string> + </entry> + <entry> + <string>Bits</string> + <int>16</int> + </entry> + </elementAttributes> + <pos x="-480" y="220"/> + </visualElement> + <visualElement> + <elementName>In</elementName> + <elementAttributes> + <entry> + <string>Description</string> + <string>RHS of binary ALU operation</string> + </entry> + <entry> + <string>Label</string> + <string>B</string> + </entry> + <entry> + <string>Bits</string> + <int>16</int> + </entry> + </elementAttributes> + <pos x="-480" y="360"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>A0</string> + </entry> + </elementAttributes> + <pos x="-380" y="220"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>A1</string> + </entry> + </elementAttributes> + <pos x="-380" y="200"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>A2</string> + </entry> + </elementAttributes> + <pos x="-380" y="180"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>A3</string> + </entry> + </elementAttributes> + <pos x="-380" y="160"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>A4</string> + </entry> + </elementAttributes> + <pos x="-380" y="140"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>A5</string> + </entry> + </elementAttributes> + <pos x="-380" y="120"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>A6</string> + </entry> + </elementAttributes> + <pos x="-380" y="100"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>A7</string> + </entry> + </elementAttributes> + <pos x="-380" y="80"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>A8</string> + </entry> + </elementAttributes> + <pos x="-380" y="60"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>A9</string> + </entry> + </elementAttributes> + <pos x="-380" y="40"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>A10</string> + </entry> + </elementAttributes> + <pos x="-380" y="20"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>A11</string> + </entry> + </elementAttributes> + <pos x="-380" y="0"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>A12</string> + </entry> + </elementAttributes> + <pos x="-380" y="-20"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>A13</string> + </entry> + </elementAttributes> + <pos x="-380" y="-40"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>A14</string> + </entry> + </elementAttributes> + <pos x="-380" y="-60"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>A15</string> + </entry> + </elementAttributes> + <pos x="-380" y="-80"/> + </visualElement> + <visualElement> + <elementName>In</elementName> + <elementAttributes> + <entry> + <string>Description</string> + <string>ALU operation code</string> + </entry> + <entry> + <string>Label</string> + <string>S</string> + </entry> + <entry> + <string>Bits</string> + <int>4</int> + </entry> + </elementAttributes> + <pos x="-500" y="620"/> + </visualElement> + <visualElement> + <elementName>Splitter</elementName> + <elementAttributes> + <entry> + <string>Input Splitting</string> + <string>3</string> + </entry> + <entry> + <string>Output Splitting</string> + <string>1*3</string> + </entry> + </elementAttributes> + <pos x="-260" y="600"/> + </visualElement> + <visualElement> + <elementName>Splitter</elementName> + <elementAttributes> + <entry> + <string>mirror</string> + <boolean>true</boolean> + </entry> + <entry> + <string>Input Splitting</string> + <string>16</string> + </entry> + <entry> + <string>Output Splitting</string> + <string>1*16</string> + </entry> + </elementAttributes> + <pos x="-320" y="360"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>B0</string> + </entry> + </elementAttributes> + <pos x="-260" y="360"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>B1</string> + </entry> + </elementAttributes> + <pos x="-260" y="340"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>B2</string> + </entry> + </elementAttributes> + <pos x="-260" y="320"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>B3</string> + </entry> + </elementAttributes> + <pos x="-260" y="300"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>B4</string> + </entry> + </elementAttributes> + <pos x="-260" y="280"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>B5</string> + </entry> + </elementAttributes> + <pos x="-260" y="260"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>B6</string> + </entry> + </elementAttributes> + <pos x="-260" y="240"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>B7</string> + </entry> + </elementAttributes> + <pos x="-260" y="220"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>B8</string> + </entry> + </elementAttributes> + <pos x="-260" y="200"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>B9</string> + </entry> + </elementAttributes> + <pos x="-260" y="180"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>B10</string> + </entry> + </elementAttributes> + <pos x="-260" y="160"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>B11</string> + </entry> + </elementAttributes> + <pos x="-260" y="140"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>B12</string> + </entry> + </elementAttributes> + <pos x="-260" y="120"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>B13</string> + </entry> + </elementAttributes> + <pos x="-260" y="100"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>B14</string> + </entry> + </elementAttributes> + <pos x="-260" y="80"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>B15</string> + </entry> + </elementAttributes> + <pos x="-260" y="60"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>A0</string> + </entry> + </elementAttributes> + <pos x="-100" y="240"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>A1</string> + </entry> + </elementAttributes> + <pos x="-100" y="160"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>A2</string> + </entry> + </elementAttributes> + <pos x="40" y="200"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>A3</string> + </entry> + </elementAttributes> + <pos x="40" y="280"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>B0</string> + </entry> + </elementAttributes> + <pos x="-100" y="280"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>B1</string> + </entry> + </elementAttributes> + <pos x="-100" y="200"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>B2</string> + </entry> + </elementAttributes> + <pos x="40" y="240"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>B3</string> + </entry> + </elementAttributes> + <pos x="40" y="320"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>Y0</string> + </entry> + </elementAttributes> + <pos x="-100" y="440"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>Y1</string> + </entry> + </elementAttributes> + <pos x="-100" y="480"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>Y2</string> + </entry> + </elementAttributes> + <pos x="40" y="520"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>Y3</string> + </entry> + </elementAttributes> + <pos x="40" y="480"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>Y4</string> + </entry> + </elementAttributes> + <pos x="220" y="440"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>Y5</string> + </entry> + </elementAttributes> + <pos x="220" y="480"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>Y6</string> + </entry> + </elementAttributes> + <pos x="360" y="520"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>Y7</string> + </entry> + </elementAttributes> + <pos x="360" y="480"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>Y8</string> + </entry> + </elementAttributes> + <pos x="560" y="440"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>Y9</string> + </entry> + </elementAttributes> + <pos x="560" y="480"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>Y10</string> + </entry> + </elementAttributes> + <pos x="700" y="520"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>Y11</string> + </entry> + </elementAttributes> + <pos x="700" y="480"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>Y12</string> + </entry> + </elementAttributes> + <pos x="920" y="440"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>Y13</string> + </entry> + </elementAttributes> + <pos x="920" y="480"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>Y14</string> + </entry> + </elementAttributes> + <pos x="1060" y="520"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>Y15</string> + </entry> + </elementAttributes> + <pos x="1060" y="480"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>A4</string> + </entry> + </elementAttributes> + <pos x="220" y="240"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>A5</string> + </entry> + </elementAttributes> + <pos x="220" y="160"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>A6</string> + </entry> + </elementAttributes> + <pos x="360" y="200"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>A7</string> + </entry> + </elementAttributes> + <pos x="360" y="280"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>A8</string> + </entry> + </elementAttributes> + <pos x="560" y="240"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>A9</string> + </entry> + </elementAttributes> + <pos x="560" y="160"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>A10</string> + </entry> + </elementAttributes> + <pos x="700" y="200"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>A11</string> + </entry> + </elementAttributes> + <pos x="700" y="280"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>A12</string> + </entry> + </elementAttributes> + <pos x="920" y="240"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>A13</string> + </entry> + </elementAttributes> + <pos x="920" y="160"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>A14</string> + </entry> + </elementAttributes> + <pos x="1060" y="200"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>A15</string> + </entry> + </elementAttributes> + <pos x="1060" y="280"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>B4</string> + </entry> + </elementAttributes> + <pos x="220" y="280"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>B5</string> + </entry> + </elementAttributes> + <pos x="220" y="200"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>B6</string> + </entry> + </elementAttributes> + <pos x="360" y="240"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>B7</string> + </entry> + </elementAttributes> + <pos x="360" y="320"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>B8</string> + </entry> + </elementAttributes> + <pos x="560" y="280"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>B9</string> + </entry> + </elementAttributes> + <pos x="560" y="200"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>B10</string> + </entry> + </elementAttributes> + <pos x="700" y="240"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>B11</string> + </entry> + </elementAttributes> + <pos x="700" y="320"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>B12</string> + </entry> + </elementAttributes> + <pos x="920" y="280"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>B13</string> + </entry> + </elementAttributes> + <pos x="920" y="200"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>B14</string> + </entry> + </elementAttributes> + <pos x="1060" y="240"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>B15</string> + </entry> + </elementAttributes> + <pos x="1060" y="320"/> + </visualElement> + <visualElement> + <elementName>Out</elementName> + <elementAttributes> + <entry> + <string>Description</string> + <string>ALU output</string> + </entry> + <entry> + <string>Label</string> + <string>Y</string> + </entry> + <entry> + <string>Bits</string> + <int>16</int> + </entry> + </elementAttributes> + <pos x="960" y="720"/> + </visualElement> + <visualElement> + <elementName>Splitter</elementName> + <elementAttributes> + <entry> + <string>Input Splitting</string> + <string>1*16</string> + </entry> + <entry> + <string>Output Splitting</string> + <string>16</string> + </entry> + </elementAttributes> + <pos x="760" y="820"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>Y0</string> + </entry> + </elementAttributes> + <pos x="740" y="820"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>Y1</string> + </entry> + </elementAttributes> + <pos x="740" y="840"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>Y2</string> + </entry> + </elementAttributes> + <pos x="740" y="860"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>Y3</string> + </entry> + </elementAttributes> + <pos x="740" y="880"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>Y4</string> + </entry> + </elementAttributes> + <pos x="740" y="900"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>Y5</string> + </entry> + </elementAttributes> + <pos x="740" y="920"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>Y6</string> + </entry> + </elementAttributes> + <pos x="740" y="940"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>Y7</string> + </entry> + </elementAttributes> + <pos x="740" y="960"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>Y8</string> + </entry> + </elementAttributes> + <pos x="740" y="980"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>Y9</string> + </entry> + </elementAttributes> + <pos x="740" y="1000"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>Y10</string> + </entry> + </elementAttributes> + <pos x="740" y="1020"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>Y11</string> + </entry> + </elementAttributes> + <pos x="740" y="1040"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>Y12</string> + </entry> + </elementAttributes> + <pos x="740" y="1060"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>Y13</string> + </entry> + </elementAttributes> + <pos x="740" y="1080"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>Y14</string> + </entry> + </elementAttributes> + <pos x="740" y="1100"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>Y15</string> + </entry> + </elementAttributes> + <pos x="740" y="1120"/> + </visualElement> + <visualElement> + <elementName>BarrelShifter</elementName> + <elementAttributes> + <entry> + <string>Label</string> + <string>SRL</string> + </entry> + <entry> + <string>Bits</string> + <int>16</int> + </entry> + <entry> + <string>direction</string> + <direction>right</direction> + </entry> + </elementAttributes> + <pos x="20" y="780"/> + </visualElement> + <visualElement> + <elementName>Demultiplexer</elementName> + <elementAttributes> + <entry> + <string>Bits</string> + <int>3</int> + </entry> + </elementAttributes> + <pos x="-340" y="600"/> + </visualElement> + <visualElement> + <elementName>Splitter</elementName> + <elementAttributes> + <entry> + <string>Input Splitting</string> + <string>4</string> + </entry> + <entry> + <string>Output Splitting</string> + <string>3,1</string> + </entry> + </elementAttributes> + <pos x="-440" y="620"/> + </visualElement> + <visualElement> + <elementName>Demultiplexer</elementName> + <elementAttributes> + <entry> + <string>Selector Bits</string> + <int>3</int> + </entry> + <entry> + <string>Bits</string> + <int>16</int> + </entry> + </elementAttributes> + <pos x="-220" y="780"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="3"/> + </entry> + <entry> + <string>NetName</string> + <string>A</string> + </entry> + </elementAttributes> + <pos x="-460" y="260"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="3"/> + </entry> + <entry> + <string>NetName</string> + <string>B</string> + </entry> + </elementAttributes> + <pos x="-460" y="420"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>A</string> + </entry> + </elementAttributes> + <pos x="-220" y="860"/> + </visualElement> + <visualElement> + <elementName>Splitter</elementName> + <elementAttributes> + <entry> + <string>Input Splitting</string> + <string>16</string> + </entry> + <entry> + <string>Output Splitting</string> + <string>5,</string> + </entry> + </elementAttributes> + <pos x="-200" y="1040"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="2"/> + </entry> + <entry> + <string>NetName</string> + <string>B</string> + </entry> + </elementAttributes> + <pos x="-220" y="1040"/> + </visualElement> + <visualElement> + <elementName>Decoder</elementName> + <elementAttributes> + <entry> + <string>Selector Bits</string> + <int>3</int> + </entry> + </elementAttributes> + <pos x="-220" y="1180"/> + </visualElement> + <visualElement> + <elementName>Driver</elementName> + <elementAttributes> + <entry> + <string>Bits</string> + <int>16</int> + </entry> + <entry> + <string>flipSelPos</string> + <boolean>true</boolean> + </entry> + </elementAttributes> + <pos x="140" y="800"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="3"/> + </entry> + <entry> + <string>NetName</string> + <string>ALS_E</string> + </entry> + </elementAttributes> + <pos x="-400" y="700"/> + </visualElement> + <visualElement> + <elementName>Driver</elementName> + <elementAttributes> + <entry> + <string>Bits</string> + <int>16</int> + </entry> + <entry> + <string>flipSelPos</string> + <boolean>true</boolean> + </entry> + </elementAttributes> + <pos x="420" y="800"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation reference="../../../../visualElement[128]/elementAttributes/entry/rotation"/> + </entry> + <entry> + <string>NetName</string> + <string>ALS_E</string> + </entry> + </elementAttributes> + <pos x="420" y="820"/> + </visualElement> + <visualElement> + <elementName>DriverInvSel</elementName> + <elementAttributes> + <entry> + <string>Bits</string> + <int>16</int> + </entry> + </elementAttributes> + <pos x="840" y="820"/> + </visualElement> + <visualElement> + <elementName>BarrelShifter</elementName> + <elementAttributes> + <entry> + <string>Label</string> + <string>SRA</string> + </entry> + <entry> + <string>Bits</string> + <int>16</int> + </entry> + <entry> + <string>barrelShifterMode</string> + <barrelShifterMode>arithmetic</barrelShifterMode> + </entry> + <entry> + <string>direction</string> + <direction>right</direction> + </entry> + </elementAttributes> + <pos x="140" y="940"/> + </visualElement> + <visualElement> + <elementName>Driver</elementName> + <elementAttributes> + <entry> + <string>Bits</string> + <int>16</int> + </entry> + <entry> + <string>flipSelPos</string> + <boolean>true</boolean> + </entry> + </elementAttributes> + <pos x="260" y="960"/> + </visualElement> + <visualElement> + <elementName>BarrelShifter</elementName> + <elementAttributes> + <entry> + <string>Label</string> + <string>SLL</string> + </entry> + <entry> + <string>Bits</string> + <int>16</int> + </entry> + </elementAttributes> + <pos x="40" y="1120"/> + </visualElement> + <visualElement> + <elementName>Driver</elementName> + <elementAttributes> + <entry> + <string>Bits</string> + <int>16</int> + </entry> + <entry> + <string>flipSelPos</string> + <boolean>true</boolean> + </entry> + </elementAttributes> + <pos x="160" y="1140"/> + </visualElement> + <visualElement> + <elementName>Splitter</elementName> + <elementAttributes> + <entry> + <string>Input Splitting</string> + <string>1*4</string> + </entry> + <entry> + <string>Output Splitting</string> + <string>4</string> + </entry> + </elementAttributes> + <pos x="1220" y="400"/> + </visualElement> + <visualElement> + <elementName>Out</elementName> + <elementAttributes> + <entry> + <string>Label</string> + <string>FLAGS</string> + </entry> + <entry> + <string>Bits</string> + <int>4</int> + </entry> + </elementAttributes> + <pos x="1300" y="400"/> + </visualElement> + <visualElement> + <elementName>Tunnel</elementName> + <elementAttributes> + <entry> + <string>NetName</string> + <string>ALS_E</string> + </entry> + </elementAttributes> + <pos x="880" y="780"/> + </visualElement> + <visualElement> + <elementName>Splitter</elementName> + <elementAttributes> + <entry> + <string>splitterSpreading</string> + <int>2</int> + </entry> + <entry> + <string>Input Splitting</string> + <string>16</string> + </entry> + <entry> + <string>Output Splitting</string> + <string>8*2</string> + </entry> + </elementAttributes> + <pos x="960" y="820"/> + </visualElement> + <visualElement> + <elementName>BitSelector</elementName> + <elementAttributes> + <entry> + <string>Selector Bits</string> + <int>4</int> + </entry> + </elementAttributes> + <pos x="1000" y="960"/> + </visualElement> + <visualElement> + <elementName>Const</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="1"/> + </entry> + <entry> + <string>Value</string> + <long>15</long> + </entry> + <entry> + <string>Bits</string> + <int>4</int> + </entry> + </elementAttributes> + <pos x="1020" y="980"/> + </visualElement> + <visualElement> + <elementName>Splitter</elementName> + <elementAttributes> + <entry> + <string>splitterSpreading</string> + <int>2</int> + </entry> + <entry> + <string>Input Splitting</string> + <string>8</string> + </entry> + <entry> + <string>Output Splitting</string> + <string>4*2</string> + </entry> + </elementAttributes> + <pos x="1040" y="820"/> + </visualElement> + <visualElement> + <elementName>Testcase</elementName> + <elementAttributes> + <entry> + <string>Label</string> + <string>Add test 1</string> + </entry> + <entry> + <string>Testdata</string> + <testData> + <dataString>A B S FLAGS Y +0x1 0x2 3 0b0000 0x3 +0xff 0x1 3 0b0000 0x100 +0x1 0xffff 3 0b0101 0x0</dataString> + </testData> + </entry> + </elementAttributes> + <pos x="480" y="1260"/> + </visualElement> + <visualElement> + <elementName>Or</elementName> + <elementAttributes> + <entry> + <string>Bits</string> + <int>8</int> + </entry> + </elementAttributes> + <pos x="980" y="820"/> + </visualElement> + <visualElement> + <elementName>Or</elementName> + <elementAttributes> + <entry> + <string>Bits</string> + <int>4</int> + </entry> + </elementAttributes> + <pos x="1060" y="820"/> + </visualElement> + <visualElement> + <elementName>Splitter</elementName> + <elementAttributes> + <entry> + <string>splitterSpreading</string> + <int>2</int> + </entry> + <entry> + <string>Input Splitting</string> + <string>2</string> + </entry> + <entry> + <string>Output Splitting</string> + <string>1*2</string> + </entry> + </elementAttributes> + <pos x="1200" y="820"/> + </visualElement> + <visualElement> + <elementName>Splitter</elementName> + <elementAttributes> + <entry> + <string>splitterSpreading</string> + <int>2</int> + </entry> + <entry> + <string>Input Splitting</string> + <string>4</string> + </entry> + <entry> + <string>Output Splitting</string> + <string>2*2</string> + </entry> + </elementAttributes> + <pos x="1120" y="820"/> + </visualElement> + <visualElement> + <elementName>Or</elementName> + <elementAttributes> + <entry> + <string>Bits</string> + <int>2</int> + </entry> + </elementAttributes> + <pos x="1140" y="820"/> + </visualElement> + <visualElement> + <elementName>NOr</elementName> + <elementAttributes/> + <pos x="1220" y="820"/> + </visualElement> + <visualElement> + <elementName>Testcase</elementName> + <elementAttributes> + <entry> + <string>Label</string> + <string>Sub test 1</string> + </entry> + <entry> + <string>Testdata</string> + <testData> + <dataString>A B S FLAGS Y +0x10 0x1 2 0b0001 0xF +0x1 0x0 1 0b1000 0xFFFF</dataString> + </testData> + </entry> + </elementAttributes> + <pos x="660" y="1260"/> + </visualElement> + <visualElement> + <elementName>atk16_alu_carryfix.dig</elementName> + <elementAttributes/> + <pos x="-60" y="-40"/> + </visualElement> + </visualElements> + <wires> + <wire> + <p1 x="-420" y="0"/> + <p2 x="-380" y="0"/> + </wire> + <wire> + <p1 x="-200" y="0"/> + <p2 x="-60" y="0"/> + </wire> + <wire> + <p1 x="-300" y="640"/> + <p2 x="-260" y="640"/> + </wire> + <wire> + <p1 x="-240" y="640"/> + <p2 x="-160" y="640"/> + </wire> + <wire> + <p1 x="500" y="640"/> + <p2 x="860" y="640"/> + </wire> + <wire> + <p1 x="-160" y="640"/> + <p2 x="160" y="640"/> + </wire> + <wire> + <p1 x="160" y="640"/> + <p2 x="500" y="640"/> + </wire> + <wire> + <p1 x="-300" y="260"/> + <p2 x="-260" y="260"/> + </wire> + <wire> + <p1 x="740" y="900"/> + <p2 x="760" y="900"/> + </wire> + <wire> + <p1 x="-120" y="520"/> + <p2 x="-100" y="520"/> + </wire> + <wire> + <p1 x="200" y="520"/> + <p2 x="220" y="520"/> + </wire> + <wire> + <p1 x="540" y="520"/> + <p2 x="560" y="520"/> + </wire> + <wire> + <p1 x="900" y="520"/> + <p2 x="920" y="520"/> + </wire> + <wire> + <p1 x="1140" y="520"/> + <p2 x="1380" y="520"/> + </wire> + <wire> + <p1 x="-60" y="1160"/> + <p2 x="40" y="1160"/> + </wire> + <wire> + <p1 x="-420" y="140"/> + <p2 x="-380" y="140"/> + </wire> + <wire> + <p1 x="-300" y="140"/> + <p2 x="-260" y="140"/> + </wire> + <wire> + <p1 x="-180" y="780"/> + <p2 x="20" y="780"/> + </wire> + <wire> + <p1 x="840" y="780"/> + <p2 x="880" y="780"/> + </wire> + <wire> + <p1 x="40" y="400"/> + <p2 x="100" y="400"/> + </wire> + <wire> + <p1 x="360" y="400"/> + <p2 x="440" y="400"/> + </wire> + <wire> + <p1 x="700" y="400"/> + <p2 x="800" y="400"/> + </wire> + <wire> + <p1 x="-160" y="400"/> + <p2 x="-100" y="400"/> + </wire> + <wire> + <p1 x="160" y="400"/> + <p2 x="220" y="400"/> + </wire> + <wire> + <p1 x="500" y="400"/> + <p2 x="560" y="400"/> + </wire> + <wire> + <p1 x="860" y="400"/> + <p2 x="920" y="400"/> + </wire> + <wire> + <p1 x="1060" y="400"/> + <p2 x="1220" y="400"/> + </wire> + <wire> + <p1 x="1240" y="400"/> + <p2 x="1300" y="400"/> + </wire> + <wire> + <p1 x="-220" y="1040"/> + <p2 x="-200" y="1040"/> + </wire> + <wire> + <p1 x="-180" y="1040"/> + <p2 x="-60" y="1040"/> + </wire> + <wire> + <p1 x="740" y="1040"/> + <p2 x="760" y="1040"/> + </wire> + <wire> + <p1 x="-420" y="-20"/> + <p2 x="-380" y="-20"/> + </wire> + <wire> + <p1 x="0" y="-20"/> + <p2 x="80" y="-20"/> + </wire> + <wire> + <p1 x="-180" y="-20"/> + <p2 x="-60" y="-20"/> + </wire> + <wire> + <p1 x="-420" y="20"/> + <p2 x="-380" y="20"/> + </wire> + <wire> + <p1 x="-300" y="280"/> + <p2 x="-260" y="280"/> + </wire> + <wire> + <p1 x="740" y="920"/> + <p2 x="760" y="920"/> + </wire> + <wire> + <p1 x="-180" y="1180"/> + <p2 x="-40" y="1180"/> + </wire> + <wire> + <p1 x="40" y="160"/> + <p2 x="60" y="160"/> + </wire> + <wire> + <p1 x="360" y="160"/> + <p2 x="380" y="160"/> + </wire> + <wire> + <p1 x="700" y="160"/> + <p2 x="720" y="160"/> + </wire> + <wire> + <p1 x="1060" y="160"/> + <p2 x="1080" y="160"/> + </wire> + <wire> + <p1 x="-420" y="160"/> + <p2 x="-380" y="160"/> + </wire> + <wire> + <p1 x="-300" y="160"/> + <p2 x="-260" y="160"/> + </wire> + <wire> + <p1 x="80" y="800"/> + <p2 x="120" y="800"/> + </wire> + <wire> + <p1 x="160" y="800"/> + <p2 x="360" y="800"/> + </wire> + <wire> + <p1 x="-180" y="800"/> + <p2 x="-80" y="800"/> + </wire> + <wire> + <p1 x="440" y="800"/> + <p2 x="660" y="800"/> + </wire> + <wire> + <p1 x="360" y="800"/> + <p2 x="400" y="800"/> + </wire> + <wire> + <p1 x="1100" y="420"/> + <p2 x="1220" y="420"/> + </wire> + <wire> + <p1 x="740" y="1060"/> + <p2 x="760" y="1060"/> + </wire> + <wire> + <p1 x="-420" y="-40"/> + <p2 x="-380" y="-40"/> + </wire> + <wire> + <p1 x="-160" y="-40"/> + <p2 x="-60" y="-40"/> + </wire> + <wire> + <p1 x="-420" y="40"/> + <p2 x="-380" y="40"/> + </wire> + <wire> + <p1 x="-420" y="680"/> + <p2 x="-400" y="680"/> + </wire> + <wire> + <p1 x="-400" y="680"/> + <p2 x="-320" y="680"/> + </wire> + <wire> + <p1 x="-300" y="300"/> + <p2 x="-260" y="300"/> + </wire> + <wire> + <p1 x="-80" y="940"/> + <p2 x="140" y="940"/> + </wire> + <wire> + <p1 x="740" y="940"/> + <p2 x="760" y="940"/> + </wire> + <wire> + <p1 x="-180" y="1200"/> + <p2 x="-20" y="1200"/> + </wire> + <wire> + <p1 x="780" y="820"/> + <p2 x="820" y="820"/> + </wire> + <wire> + <p1 x="-60" y="820"/> + <p2 x="20" y="820"/> + </wire> + <wire> + <p1 x="-180" y="820"/> + <p2 x="-100" y="820"/> + </wire> + <wire> + <p1 x="860" y="820"/> + <p2 x="940" y="820"/> + </wire> + <wire> + <p1 x="740" y="820"/> + <p2 x="760" y="820"/> + </wire> + <wire> + <p1 x="940" y="820"/> + <p2 x="960" y="820"/> + </wire> + <wire> + <p1 x="-420" y="180"/> + <p2 x="-380" y="180"/> + </wire> + <wire> + <p1 x="-300" y="180"/> + <p2 x="-260" y="180"/> + </wire> + <wire> + <p1 x="1060" y="440"/> + <p2 x="1100" y="440"/> + </wire> + <wire> + <p1 x="1140" y="440"/> + <p2 x="1220" y="440"/> + </wire> + <wire> + <p1 x="740" y="1080"/> + <p2 x="760" y="1080"/> + </wire> + <wire> + <p1 x="-420" y="-60"/> + <p2 x="-380" y="-60"/> + </wire> + <wire> + <p1 x="-420" y="60"/> + <p2 x="-380" y="60"/> + </wire> + <wire> + <p1 x="-300" y="60"/> + <p2 x="-260" y="60"/> + </wire> + <wire> + <p1 x="-200" y="320"/> + <p2 x="-100" y="320"/> + </wire> + <wire> + <p1 x="120" y="320"/> + <p2 x="220" y="320"/> + </wire> + <wire> + <p1 x="460" y="320"/> + <p2 x="560" y="320"/> + </wire> + <wire> + <p1 x="820" y="320"/> + <p2 x="920" y="320"/> + </wire> + <wire> + <p1 x="-300" y="320"/> + <p2 x="-260" y="320"/> + </wire> + <wire> + <p1 x="-260" y="960"/> + <p2 x="-200" y="960"/> + </wire> + <wire> + <p1 x="200" y="960"/> + <p2 x="240" y="960"/> + </wire> + <wire> + <p1 x="280" y="960"/> + <p2 x="360" y="960"/> + </wire> + <wire> + <p1 x="940" y="960"/> + <p2 x="1000" y="960"/> + </wire> + <wire> + <p1 x="1040" y="960"/> + <p2 x="1400" y="960"/> + </wire> + <wire> + <p1 x="740" y="960"/> + <p2 x="760" y="960"/> + </wire> + <wire> + <p1 x="-180" y="1220"/> + <p2 x="160" y="1220"/> + </wire> + <wire> + <p1 x="-420" y="200"/> + <p2 x="-380" y="200"/> + </wire> + <wire> + <p1 x="-300" y="200"/> + <p2 x="-260" y="200"/> + </wire> + <wire> + <p1 x="740" y="840"/> + <p2 x="760" y="840"/> + </wire> + <wire> + <p1 x="1300" y="840"/> + <p2 x="1380" y="840"/> + </wire> + <wire> + <p1 x="1200" y="460"/> + <p2 x="1220" y="460"/> + </wire> + <wire> + <p1 x="740" y="1100"/> + <p2 x="760" y="1100"/> + </wire> + <wire> + <p1 x="-420" y="-80"/> + <p2 x="-380" y="-80"/> + </wire> + <wire> + <p1 x="660" y="720"/> + <p2 x="940" y="720"/> + </wire> + <wire> + <p1 x="940" y="720"/> + <p2 x="960" y="720"/> + </wire> + <wire> + <p1 x="-420" y="80"/> + <p2 x="-380" y="80"/> + </wire> + <wire> + <p1 x="-300" y="80"/> + <p2 x="-260" y="80"/> + </wire> + <wire> + <p1 x="-260" y="1360"/> + <p2 x="-200" y="1360"/> + </wire> + <wire> + <p1 x="-300" y="340"/> + <p2 x="-260" y="340"/> + </wire> + <wire> + <p1 x="-60" y="980"/> + <p2 x="140" y="980"/> + </wire> + <wire> + <p1 x="740" y="980"/> + <p2 x="760" y="980"/> + </wire> + <wire> + <p1 x="-300" y="600"/> + <p2 x="-260" y="600"/> + </wire> + <wire> + <p1 x="-240" y="600"/> + <p2 x="-200" y="600"/> + </wire> + <wire> + <p1 x="460" y="600"/> + <p2 x="820" y="600"/> + </wire> + <wire> + <p1 x="-200" y="600"/> + <p2 x="120" y="600"/> + </wire> + <wire> + <p1 x="120" y="600"/> + <p2 x="460" y="600"/> + </wire> + <wire> + <p1 x="-420" y="220"/> + <p2 x="-380" y="220"/> + </wire> + <wire> + <p1 x="-480" y="220"/> + <p2 x="-460" y="220"/> + </wire> + <wire> + <p1 x="-300" y="220"/> + <p2 x="-260" y="220"/> + </wire> + <wire> + <p1 x="-460" y="220"/> + <p2 x="-440" y="220"/> + </wire> + <wire> + <p1 x="-40" y="860"/> + <p2 x="140" y="860"/> + </wire> + <wire> + <p1 x="740" y="860"/> + <p2 x="760" y="860"/> + </wire> + <wire> + <p1 x="-100" y="1120"/> + <p2 x="40" y="1120"/> + </wire> + <wire> + <p1 x="740" y="1120"/> + <p2 x="760" y="1120"/> + </wire> + <wire> + <p1 x="100" y="100"/> + <p2 x="420" y="100"/> + </wire> + <wire> + <p1 x="440" y="100"/> + <p2 x="780" y="100"/> + </wire> + <wire> + <p1 x="800" y="100"/> + <p2 x="1140" y="100"/> + </wire> + <wire> + <p1 x="-420" y="100"/> + <p2 x="-380" y="100"/> + </wire> + <wire> + <p1 x="-300" y="100"/> + <p2 x="-260" y="100"/> + </wire> + <wire> + <p1 x="360" y="360"/> + <p2 x="420" y="360"/> + </wire> + <wire> + <p1 x="700" y="360"/> + <p2 x="780" y="360"/> + </wire> + <wire> + <p1 x="1060" y="360"/> + <p2 x="1140" y="360"/> + </wire> + <wire> + <p1 x="-180" y="360"/> + <p2 x="-100" y="360"/> + </wire> + <wire> + <p1 x="140" y="360"/> + <p2 x="220" y="360"/> + </wire> + <wire> + <p1 x="480" y="360"/> + <p2 x="560" y="360"/> + </wire> + <wire> + <p1 x="840" y="360"/> + <p2 x="920" y="360"/> + </wire> + <wire> + <p1 x="-300" y="360"/> + <p2 x="-260" y="360"/> + </wire> + <wire> + <p1 x="-480" y="360"/> + <p2 x="-460" y="360"/> + </wire> + <wire> + <p1 x="40" y="360"/> + <p2 x="80" y="360"/> + </wire> + <wire> + <p1 x="-460" y="360"/> + <p2 x="-320" y="360"/> + </wire> + <wire> + <p1 x="740" y="1000"/> + <p2 x="760" y="1000"/> + </wire> + <wire> + <p1 x="-500" y="620"/> + <p2 x="-440" y="620"/> + </wire> + <wire> + <p1 x="-420" y="620"/> + <p2 x="-340" y="620"/> + </wire> + <wire> + <p1 x="-240" y="620"/> + <p2 x="-180" y="620"/> + </wire> + <wire> + <p1 x="-180" y="620"/> + <p2 x="140" y="620"/> + </wire> + <wire> + <p1 x="140" y="620"/> + <p2 x="480" y="620"/> + </wire> + <wire> + <p1 x="480" y="620"/> + <p2 x="840" y="620"/> + </wire> + <wire> + <p1 x="-300" y="240"/> + <p2 x="-260" y="240"/> + </wire> + <wire> + <p1 x="740" y="880"/> + <p2 x="760" y="880"/> + </wire> + <wire> + <p1 x="100" y="1140"/> + <p2 x="140" y="1140"/> + </wire> + <wire> + <p1 x="180" y="1140"/> + <p2 x="360" y="1140"/> + </wire> + <wire> + <p1 x="1200" y="500"/> + <p2 x="1400" y="500"/> + </wire> + <wire> + <p1 x="-420" y="120"/> + <p2 x="-380" y="120"/> + </wire> + <wire> + <p1 x="-300" y="120"/> + <p2 x="-260" y="120"/> + </wire> + <wire> + <p1 x="-20" y="1020"/> + <p2 x="260" y="1020"/> + </wire> + <wire> + <p1 x="740" y="1020"/> + <p2 x="760" y="1020"/> + </wire> + <wire> + <p1 x="-260" y="640"/> + <p2 x="-260" y="960"/> + </wire> + <wire> + <p1 x="-260" y="960"/> + <p2 x="-260" y="1360"/> + </wire> + <wire> + <p1 x="260" y="980"/> + <p2 x="260" y="1020"/> + </wire> + <wire> + <p1 x="-200" y="0"/> + <p2 x="-200" y="320"/> + </wire> + <wire> + <p1 x="-200" y="940"/> + <p2 x="-200" y="960"/> + </wire> + <wire> + <p1 x="-200" y="1320"/> + <p2 x="-200" y="1360"/> + </wire> + <wire> + <p1 x="-200" y="320"/> + <p2 x="-200" y="600"/> + </wire> + <wire> + <p1 x="840" y="360"/> + <p2 x="840" y="620"/> + </wire> + <wire> + <p1 x="840" y="780"/> + <p2 x="840" y="800"/> + </wire> + <wire> + <p1 x="-460" y="220"/> + <p2 x="-460" y="260"/> + </wire> + <wire> + <p1 x="-460" y="360"/> + <p2 x="-460" y="420"/> + </wire> + <wire> + <p1 x="140" y="360"/> + <p2 x="140" y="620"/> + </wire> + <wire> + <p1 x="140" y="820"/> + <p2 x="140" y="860"/> + </wire> + <wire> + <p1 x="780" y="100"/> + <p2 x="780" y="360"/> + </wire> + <wire> + <p1 x="460" y="320"/> + <p2 x="460" y="600"/> + </wire> + <wire> + <p1 x="1100" y="420"/> + <p2 x="1100" y="440"/> + </wire> + <wire> + <p1 x="-400" y="680"/> + <p2 x="-400" y="700"/> + </wire> + <wire> + <p1 x="-80" y="800"/> + <p2 x="-80" y="940"/> + </wire> + <wire> + <p1 x="1040" y="820"/> + <p2 x="1040" y="840"/> + </wire> + <wire> + <p1 x="80" y="-20"/> + <p2 x="80" y="360"/> + </wire> + <wire> + <p1 x="-20" y="1020"/> + <p2 x="-20" y="1200"/> + </wire> + <wire> + <p1 x="660" y="720"/> + <p2 x="660" y="800"/> + </wire> + <wire> + <p1 x="860" y="400"/> + <p2 x="860" y="640"/> + </wire> + <wire> + <p1 x="-160" y="-40"/> + <p2 x="-160" y="400"/> + </wire> + <wire> + <p1 x="-160" y="400"/> + <p2 x="-160" y="640"/> + </wire> + <wire> + <p1 x="160" y="400"/> + <p2 x="160" y="640"/> + </wire> + <wire> + <p1 x="160" y="1160"/> + <p2 x="160" y="1220"/> + </wire> + <wire> + <p1 x="800" y="100"/> + <p2 x="800" y="400"/> + </wire> + <wire> + <p1 x="480" y="360"/> + <p2 x="480" y="620"/> + </wire> + <wire> + <p1 x="1120" y="820"/> + <p2 x="1120" y="840"/> + </wire> + <wire> + <p1 x="-420" y="640"/> + <p2 x="-420" y="680"/> + </wire> + <wire> + <p1 x="-100" y="820"/> + <p2 x="-100" y="1120"/> + </wire> + <wire> + <p1 x="100" y="100"/> + <p2 x="100" y="400"/> + </wire> + <wire> + <p1 x="420" y="100"/> + <p2 x="420" y="360"/> + </wire> + <wire> + <p1 x="1380" y="520"/> + <p2 x="1380" y="840"/> + </wire> + <wire> + <p1 x="-40" y="860"/> + <p2 x="-40" y="1180"/> + </wire> + <wire> + <p1 x="360" y="800"/> + <p2 x="360" y="960"/> + </wire> + <wire> + <p1 x="360" y="960"/> + <p2 x="360" y="1140"/> + </wire> + <wire> + <p1 x="940" y="720"/> + <p2 x="940" y="820"/> + </wire> + <wire> + <p1 x="940" y="820"/> + <p2 x="940" y="960"/> + </wire> + <wire> + <p1 x="1200" y="820"/> + <p2 x="1200" y="840"/> + </wire> + <wire> + <p1 x="1200" y="460"/> + <p2 x="1200" y="500"/> + </wire> + <wire> + <p1 x="-180" y="-20"/> + <p2 x="-180" y="360"/> + </wire> + <wire> + <p1 x="-180" y="360"/> + <p2 x="-180" y="620"/> + </wire> + <wire> + <p1 x="1140" y="100"/> + <p2 x="1140" y="360"/> + </wire> + <wire> + <p1 x="1140" y="440"/> + <p2 x="1140" y="520"/> + </wire> + <wire> + <p1 x="500" y="400"/> + <p2 x="500" y="640"/> + </wire> + <wire> + <p1 x="820" y="320"/> + <p2 x="820" y="600"/> + </wire> + <wire> + <p1 x="440" y="100"/> + <p2 x="440" y="400"/> + </wire> + <wire> + <p1 x="120" y="320"/> + <p2 x="120" y="600"/> + </wire> + <wire> + <p1 x="1400" y="500"/> + <p2 x="1400" y="960"/> + </wire> + <wire> + <p1 x="-60" y="820"/> + <p2 x="-60" y="980"/> + </wire> + <wire> + <p1 x="-60" y="1040"/> + <p2 x="-60" y="1160"/> + </wire> + <wire> + <p1 x="-60" y="980"/> + <p2 x="-60" y="1040"/> + </wire> + <wire> + <p1 x="-320" y="640"/> + <p2 x="-320" y="680"/> + </wire> + </wires> + <measurementOrdering/> +</circuit>
\ No newline at end of file diff --git a/digital/atk16_alu_carryfix.dig b/digital/atk16_alu_carryfix.dig new file mode 100644 index 0000000..1c22602 --- /dev/null +++ b/digital/atk16_alu_carryfix.dig @@ -0,0 +1,270 @@ +<?xml version="1.0" encoding="utf-8"?> +<circuit> + <version>2</version> + <attributes/> + <visualElements> + <visualElement> + <elementName>Out</elementName> + <elementAttributes> + <entry> + <string>Label</string> + <string>Y</string> + </entry> + <entry> + <string>Inputs</string> + <int>1</int> + </entry> + </elementAttributes> + <pos x="240" y="60"/> + </visualElement> + <visualElement> + <elementName>Or</elementName> + <elementAttributes> + <entry> + <string>wideShape</string> + <boolean>true</boolean> + </entry> + </elementAttributes> + <pos x="140" y="40"/> + </visualElement> + <visualElement> + <elementName>And</elementName> + <elementAttributes> + <entry> + <string>wideShape</string> + <boolean>true</boolean> + </entry> + <entry> + <string>Inputs</string> + <int>3</int> + </entry> + </elementAttributes> + <pos x="20" y="0"/> + </visualElement> + <visualElement> + <elementName>And</elementName> + <elementAttributes> + <entry> + <string>wideShape</string> + <boolean>true</boolean> + </entry> + <entry> + <string>Inputs</string> + <int>3</int> + </entry> + </elementAttributes> + <pos x="20" y="80"/> + </visualElement> + <visualElement> + <elementName>In</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="3"/> + </entry> + <entry> + <string>Label</string> + <string>S2</string> + </entry> + </elementAttributes> + <pos x="-160" y="-100"/> + </visualElement> + <visualElement> + <elementName>Not</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="3"/> + </entry> + </elementAttributes> + <pos x="-140" y="-60"/> + </visualElement> + <visualElement> + <elementName>In</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="3"/> + </entry> + <entry> + <string>Label</string> + <string>S1</string> + </entry> + </elementAttributes> + <pos x="-100" y="-100"/> + </visualElement> + <visualElement> + <elementName>Not</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="3"/> + </entry> + </elementAttributes> + <pos x="-80" y="-60"/> + </visualElement> + <visualElement> + <elementName>In</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="3"/> + </entry> + <entry> + <string>Label</string> + <string>S0</string> + </entry> + </elementAttributes> + <pos x="-40" y="-100"/> + </visualElement> + <visualElement> + <elementName>Not</elementName> + <elementAttributes> + <entry> + <string>rotation</string> + <rotation rotation="3"/> + </entry> + </elementAttributes> + <pos x="-20" y="-60"/> + </visualElement> + </visualElements> + <wires> + <wire> + <p1 x="-140" y="0"/> + <p2 x="20" y="0"/> + </wire> + <wire> + <p1 x="-140" y="80"/> + <p2 x="20" y="80"/> + </wire> + <wire> + <p1 x="120" y="80"/> + <p2 x="140" y="80"/> + </wire> + <wire> + <p1 x="-80" y="20"/> + <p2 x="20" y="20"/> + </wire> + <wire> + <p1 x="100" y="20"/> + <p2 x="120" y="20"/> + </wire> + <wire> + <p1 x="-100" y="100"/> + <p2 x="20" y="100"/> + </wire> + <wire> + <p1 x="100" y="100"/> + <p2 x="120" y="100"/> + </wire> + <wire> + <p1 x="-40" y="40"/> + <p2 x="20" y="40"/> + </wire> + <wire> + <p1 x="120" y="40"/> + <p2 x="140" y="40"/> + </wire> + <wire> + <p1 x="-20" y="120"/> + <p2 x="20" y="120"/> + </wire> + <wire> + <p1 x="220" y="60"/> + <p2 x="240" y="60"/> + </wire> + <wire> + <p1 x="-160" y="-80"/> + <p2 x="-140" y="-80"/> + </wire> + <wire> + <p1 x="-100" y="-80"/> + <p2 x="-80" y="-80"/> + </wire> + <wire> + <p1 x="-40" y="-80"/> + <p2 x="-20" y="-80"/> + </wire> + <wire> + <p1 x="-100" y="-100"/> + <p2 x="-100" y="-80"/> + </wire> + <wire> + <p1 x="-100" y="-80"/> + <p2 x="-100" y="100"/> + </wire> + <wire> + <p1 x="-100" y="100"/> + <p2 x="-100" y="140"/> + </wire> + <wire> + <p1 x="-20" y="-80"/> + <p2 x="-20" y="-60"/> + </wire> + <wire> + <p1 x="-20" y="-20"/> + <p2 x="-20" y="120"/> + </wire> + <wire> + <p1 x="-20" y="120"/> + <p2 x="-20" y="140"/> + </wire> + <wire> + <p1 x="-40" y="-100"/> + <p2 x="-40" y="-80"/> + </wire> + <wire> + <p1 x="-40" y="-80"/> + <p2 x="-40" y="40"/> + </wire> + <wire> + <p1 x="-40" y="40"/> + <p2 x="-40" y="140"/> + </wire> + <wire> + <p1 x="120" y="20"/> + <p2 x="120" y="40"/> + </wire> + <wire> + <p1 x="120" y="80"/> + <p2 x="120" y="100"/> + </wire> + <wire> + <p1 x="-140" y="-80"/> + <p2 x="-140" y="-60"/> + </wire> + <wire> + <p1 x="-140" y="-20"/> + <p2 x="-140" y="0"/> + </wire> + <wire> + <p1 x="-140" y="80"/> + <p2 x="-140" y="140"/> + </wire> + <wire> + <p1 x="-140" y="0"/> + <p2 x="-140" y="80"/> + </wire> + <wire> + <p1 x="-160" y="-100"/> + <p2 x="-160" y="-80"/> + </wire> + <wire> + <p1 x="-160" y="-80"/> + <p2 x="-160" y="140"/> + </wire> + <wire> + <p1 x="-80" y="-80"/> + <p2 x="-80" y="-60"/> + </wire> + <wire> + <p1 x="-80" y="-20"/> + <p2 x="-80" y="20"/> + </wire> + <wire> + <p1 x="-80" y="20"/> + <p2 x="-80" y="140"/> + </wire> + </wires> + <measurementOrdering/> +</circuit>
\ No newline at end of file diff --git a/digital/tests_alu.dig b/digital/tests_alu.dig new file mode 100644 index 0000000..9390503 --- /dev/null +++ b/digital/tests_alu.dig @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<circuit> + <version>2</version> + <attributes/> + <visualElements> + <visualElement> + <elementName>Testcase</elementName> + <elementAttributes> + <entry> + <string>Label</string> + <string>test01</string> + </entry> + <entry> + <string>Testdata</string> + <testData> + <dataString>A B Y +0 0 1</dataString> + </testData> + </entry> + </elementAttributes> + <pos x="200" y="200"/> + </visualElement> + </visualElements> + <wires/> + <measurementOrdering/> +</circuit>
\ No newline at end of file diff --git a/logisim/CPU16.circ b/logisim/CPU16.circ new file mode 100644 index 0000000..6f1610b --- /dev/null +++ b/logisim/CPU16.circ @@ -0,0 +1,4344 @@ +<?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 new file mode 100755 index 0000000..9e2d92f --- /dev/null +++ b/src/assembler.py @@ -0,0 +1,263 @@ +#!/usr/bin/env python3 +# Assemble ATK16 assembly to bytecode + +import sys + +if len(sys.argv) != 3: + print("usage: assembler.py <infile> <outfile> # read from file") + print(" assembler.py - <outfile> # read from stdin") + sys.exit(1) + +infile_path = sys.argv[1] +outfile_path = sys.argv[2] + +src = "" +if (infile_path == "-"): + for line in sys.stdin: + src += line +else: + with open(infile_path, "r") as f: + src = f.read() + +src_lines = src.splitlines() + +### Utils + +def parse(line: str) -> list[str]: + depth = 0 + result = [] + acc = "" + for c in line: + if c.isspace() and depth == 0: + result.append(acc) + acc = "" + elif c == "(": + depth += 1 + acc += "(" + elif c == ")": + depth -= 1 + acc += ")" + else: + acc += c + + 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) # eval as Python expr + +def eval_symbol(c: str): + if c in labels: + return str(labels[c]) + + match c: + # Registers + case "rz": return "0" + case "ra": return "1" + case "rb": return "2" + case "rc": return "3" + case "rd": return "4" + case "pa": return "5" + case "pb": return "6" + # ALU instructions + case "al_clear": return "0" + case "al_b_minus_a": return "1" + case "al_a_minus_b": return "2" + case "al_a_plus_b": return "3" + case "al_a_xor_b": return "4" + case "al_a_or_b": return "5" + case "al_a_and_b": return "6" + case "al_preset": return "7" + case "al_logical_shift_right": return "8" + case "al_arithmetic_shift_right": return "9" + case "al_logical_shift_left": return "10" + # ALU flags + case "f_carry": return "0" + case "f_overflow": return "1" + case "f_zero": return "2" + case "f_sign": return "3" + case _: return c + +# 1st pass, gather labels + +labels: dict[str, int] = {} +address = 0 + +for (lineNo, line) in enumerate(src_lines): + line = line.strip() + if line == "": continue + keyword, *args = line.lower().split() + match keyword: + case "@address": + address = eval(args[0]) + continue + case "@label": + labels[args[0]] = address + continue + + address += 1 + +print("labels:", labels) + +# 2nd pass + +address = 0 +nop = bytearray([0b1000_0000, 0]) +result = bytearray() +# initially one nop +result.extend(nop) + +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": + continue + + # Instructions + case "alu": + word = (0b0000 << 12) + \ + (eval_expr(args[0]) << 9) + \ + (eval_expr(args[1]) << 6) + \ + (eval_expr(args[2]) << 3) + \ + (eval_expr(args[3]) << 0) + case "als": + word = (0b0001 << 12) + \ + (eval_expr(args[0]) << 9) + \ + (eval_expr(args[1]) << 6) + \ + (eval_expr(args[2]) << 3) + \ + (eval_expr(args[3]) << 0) + case "ldr": + word = (0b0010 << 12) + \ + (eval_expr(args[0]) << 9) + \ + (eval_expr(args[1]) << 6) + case "str": + word = (0b0011 << 12) + \ + (eval_expr(args[0]) << 9) + \ + (eval_expr(args[1]) << 6) + case "ldi": + word = (0b0100 << 12) + \ + (eval_expr(args[0]) << 9) + \ + (eval_expr(args[1]) << 0) + case "jmp": + word = (0b0101 << 12) + \ + (eval_expr(args[0]) << 9) + case "br": + word = (0b0110 << 12) + \ + (eval_expr(args[0]) << 9) + \ + (eval_expr(args[1]) << 6) + case "hlt": + word = 0b1111 << 12 + + # Pseudoinstructions + case "add": + word = (0b0000 << 12) + \ + (eval_expr(args[0]) << 9) + \ + (eval_expr(args[1]) << 6) + \ + (eval_expr(args[2]) << 3) + \ + (eval_expr("al_a_plus_b") << 0) + case "sub": + word = (0b0000 << 12) + \ + (eval_expr(args[0]) << 9) + \ + (eval_expr(args[1]) << 6) + \ + (eval_expr(args[2]) << 3) + \ + (eval_expr("al_a_minus_b") << 0) + case "mov": + word = (0b0000 << 12) + \ + (eval_expr("rz") << 9) + \ + (eval_expr(args[0]) << 6) + \ + (eval_expr(args[1]) << 3) + \ + (eval_expr("al_a_plus_b") << 0) + + # Default case: evaluate as is (e.g. data word) + case _: + try: + word = 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) + + print(f"{address:>08x} 0x{word:>04x} {line}") + result[2 * address + 0] = ((word >> 8) & 0xff) + result[2 * address + 1] = ((word >> 0) & 0xff) + address += 1 + +with open(outfile_path, "wb") as f: + f.write(result) + +print(f"Wrote {len(result)} bytes to {outfile_path}") + +with open(f"{outfile_path}.logisim.txt", "w") as f: + f.write("v2.0 raw\n") + run_length = 0 + run_last = "" + for i in range(len(result) // 2): + b0 = result[2 * i + 0] + b1 = result[2 * i + 1] + word = f"{b0:>02x}{b1:>02x}\n" + + if word != run_last and run_length <= 1: + f.write(f"{run_last}") + run_length = 1 + run_last = word + elif word != run_last and run_length > 1: + f.write(f"{run_length}*{run_last}") + run_length = 1 + run_last = word + else: + run_length += 1 + + if run_length <= 1: + f.write(f"{run_last}") + else: + f.write(f"{run_length}*{run_last}") + +print(f"Wrote Logisim image format to {outfile_path}.logisim.txt") + +with open(f"{outfile_path}.ver.txt", "w") as f: + f.write("addr/data: 15 16") + run_length = 0 + run_last = "" + written = -1 + + def update_layout(): + if run_last == "": return + if written % 8 == 0: + f.write("\n") + else: + f.write(" ") + + for i in range(len(result) // 2): + b0 = result[2 * i + 0] + b1 = result[2 * i + 1] + word = f"{b0:>02x}{b1:>02x}" + + if word != run_last and run_length <= 1: + f.write(f"{run_last}") + run_length = 1 + run_last = word + written += 1 + update_layout() + elif word != run_last and run_length > 1: + f.write(f"{run_length}*{run_last}") + run_length = 1 + run_last = word + written += 1 + update_layout() + else: + run_length += 1 + + if run_length <= 1: + f.write(f"{run_last}") + else: + f.write(f"{run_length}*{run_last}") + +print(f"Wrote verification test format to {outfile_path}.ver.txt") diff --git a/src/test.atk16 b/src/test.atk16 new file mode 100644 index 0000000..399bd7e --- /dev/null +++ b/src/test.atk16 @@ -0,0 +1,33 @@ +; Program: sum two values and store the result in RAM + +; ROM (and program execution) starts at offset 0x0 +@address 0x0 + ldi RA program + jmp RA + +@label ram_offset + 0x8000 ; store ram offset for later memory access + +@label program + ldi RA 10 ; RA := 10 + ldi RB 20 ; RB := 10 + add RA RB RC ; RC := RA + RB + ldi RD ram_offset ; store address of ram_offset in RD + ldr RD RD ; dereference ram_offset address +@label debug + str RD RC ; store RC in RAM + +; Check that 10 + 20 = 30 + mov RC RA ; RA := result of sum + ldi RB 30 ; RB := 30 + ldi RD success + sub RA RB RC ; RC := RA - RB + br f_zero RD ; if result is zero, jump to success + + ldi RA 2 ; RA := 2 to signal failure + hlt + +; Else +@label success + ldi RA 1 ; RA := 1 to signal success + hlt diff --git a/src/test_alu.py b/src/test_alu.py new file mode 100755 index 0000000..af30443 --- /dev/null +++ b/src/test_alu.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python3 + +from test_utils import * + +def make_alu_table() -> str: + alu = ALU() + n = 10000 + alu.generate_cases(n) + alu.process() + print(f"[test] running {n} ALU test cases") + return alu.to_table().strip() + +class ALU(TestGroup): + def __init__(self): + TestGroup.__init__(self, [ + Param("A", 0x0, 0xffff), + Param("B", 0x0, 0xffff), + Param("S", 0, 7), + ], [ + "Y", + "FLAGS", + ]) + + def process(self): + new_cases = [] + for kase in self.cases: + S = kase["S"] + A = kase["A"] + B = kase["B"] + kase["FLAGS"] = "x" + + match S: + case 0: Y = 0 + case 1: Y = (B - A) & 0xFFFF + case 2: Y = (A - B) & 0xFFFF + case 3: Y = (A + B) & 0xFFFF + case 4: Y = (A ^ B) & 0xFFFF + case 5: Y = (A | B) & 0xFFFF + case 6: Y = (A & B) & 0xFFFF + case 7: Y = 0xffff + + kase["Y"] = Y + new_cases.append(kase) + + self.cases = new_cases + +table = make_alu_table() +run_test("ALU", table) diff --git a/src/test_utils.py b/src/test_utils.py new file mode 100644 index 0000000..1db23b2 --- /dev/null +++ b/src/test_utils.py @@ -0,0 +1,93 @@ +import random +from dataclasses import dataclass +import tempfile +import sys +import os + +def make_test_file(name: str, table: str) -> str: + return f"""<?xml version="1.0" encoding="utf-8"?> +<circuit> + <version>2</version> + <attributes/> + <visualElements> + <visualElement> + <elementName>Testcase</elementName> + <elementAttributes> + <entry> + <string>Label</string> + <string>{name}</string> + </entry> + <entry> + <string>Testdata</string> + <testData> + <dataString>{table}</dataString> + </testData> + </entry> + </elementAttributes> + <pos x="200" y="200"/> + </visualElement> + </visualElements> + <wires/> + <measurementOrdering/> +</circuit> + """ + +@dataclass +class Param: + name: str + min: int + max: int + +class TestGroup: + def __init__(self, inputs: list[Param], outputs: list[str]): + self.inputs = inputs + self.outputs = outputs + self.cases = [] + + def generate_cases(self, n = 1000): + for _ in range(n): + result = {} + for param in self.inputs: + val = random.randrange(param.min, param.max + 1) + result[param.name] = val + + self.cases.append(result) + + def process(self): + raise NotImplemented() + + def to_table(self) -> str: + names: list[str] = [] + for param in self.inputs: + names.append(param.name) + for output in self.outputs: + names.append(output) + + ret = " ".join(names) + ret += "\n" + + for case in self.cases: + row_vals = [] + for param_name in names: + row_vals.append(str(case[param_name])) + + ret += " ".join(row_vals) + ret += "\n" + + return ret + +def run_test(name: str, table: str): + if len(sys.argv) != 2: + print(f"usage: {sys.argv[0]} <circuit.dig>") + sys.exit(1) + + circuit_path = sys.argv[1] + _, test_path = tempfile.mkstemp(".dig") + + fc = make_test_file(name, table) + with open(test_path, "w") as f: + f.write(fc) + + stream = os.popen(f"make run-single-test circ={circuit_path} tests={test_path}") + output = stream.read() + print(output) diff --git a/src/ucode.py b/src/ucode.py new file mode 100755 index 0000000..ea5c040 --- /dev/null +++ b/src/ucode.py @@ -0,0 +1,103 @@ +#!/usr/bin/env python3 +# Generate .bin file with ATK16 CPU microcode + +# Addressed by OOOO BUUU +# where O = opcode, B = branch flag, U = microsequencer value + +import sys + +if len(sys.argv) != 2: + print("usage: ucode.py <outfile.bin>") + sys.exit(1) + +outfile_path = sys.argv[1] + +PC_CO = 0b0000_0000_0000_0001 +PC_IE = 0b0000_0000_0000_0010 +PC_OE = 0b0000_0000_0000_0100 +MAR_IE = 0b0000_0000_0000_1000 +RAM_IE = 0b0000_0000_0001_0000 +RAM_OE = 0b0000_0000_0010_0000 +R1_IE = 0b0000_0000_0100_0000 +R1_OE = 0b0000_0000_1000_0000 +R2_IE = 0b0000_0001_0000_0000 +R2_OE = 0b0000_0010_0000_0000 +IR_IE = 0b0000_0100_0000_0000 +L9_OE = 0b0000_1000_0000_0000 +L12_OE = 0b0001_0000_0000_0000 +ALU_OE = 0b0010_0000_0000_0000 +HALT = 0b0100_0000_0000_0000 +US_RS = 0b1000_0000_0000_0000 + +BRANCH_FLAG_STATES_N = 2 +UCODE_N = 2**3 +CONTROL_WORD_SIZE = 2 + +def not_branch(bs): + return BRANCH_FLAG_STATES_N * [bs] + +def branch(false_branch, true_branch): + return [false_branch, true_branch] + +fetch = [PC_OE|MAR_IE, RAM_OE|IR_IE|PC_CO] + +def nop(): + return not_branch([*fetch, US_RS, 0, 0, 0, 0, 0]) + +ucode = [ + # ALU 0000 LLLR RRTT TSSS + not_branch([*fetch, ALU_OE, US_RS, 0, 0, 0, 0]), + # ALS 0001 LLLR RRTT TSSS + not_branch([*fetch, ALU_OE, US_RS, 0, 0, 0, 0]), + # LDR 0010 RRRT TTXX XXXX + not_branch([*fetch, R1_OE|MAR_IE, RAM_OE|R2_IE, US_RS, 0, 0, 0]), + # STR 0011 RRRT TTXX XXXX + not_branch([*fetch, R1_OE|MAR_IE, R2_OE|RAM_IE, US_RS, 0, 0, 0]), + # LDI 0100 RRRI IIII IIII + not_branch([*fetch, L9_OE|R1_IE, US_RS, 0, 0, 0, 0]), + # JMP 0101 RRRX XXXX XXXX + not_branch([*fetch, R1_OE|PC_IE, US_RS, 0, 0, 0, 0]), + # BR 0110 XFFR RRXX XXXX + branch([*fetch, US_RS, 0, 0, 0, 0, 0], + [*fetch, R2_OE|PC_IE, US_RS, 0, 0, 0, 0]), + # NOP 0111 XXXX XXXX XXXX + nop(), + # NOP 1000 XXXX XXXX XXXX + nop(), + # NOP 1001 XXXX XXXX XXXX + nop(), + # NOP 1010 XXXX XXXX XXXX + nop(), + # NOP 1011 XXXX XXXX XXXX + nop(), + # NOP 1100 XXXX XXXX XXXX + nop(), + # NOP 1101 XXXX XXXX XXXX + nop(), + # NOP 1110 XXXX XXXX XXXX + nop(), + # HLT 1111 XXXX XXXX XXXX + not_branch([*fetch, HALT, 0, 0, 0, 0, 0]), +] + +INST_N = len(ucode) +TOTAL_BYTEARRAY_SIZE = INST_N * BRANCH_FLAG_STATES_N * UCODE_N * CONTROL_WORD_SIZE + +res_b = bytearray(TOTAL_BYTEARRAY_SIZE) + +for i in range(INST_N): + for j in range(BRANCH_FLAG_STATES_N): + for k in range(UCODE_N): + for l in range(CONTROL_WORD_SIZE): + idx = l + \ + k * CONTROL_WORD_SIZE + \ + j * CONTROL_WORD_SIZE * UCODE_N + \ + i * CONTROL_WORD_SIZE * UCODE_N * BRANCH_FLAG_STATES_N + cword = ucode[i][j][k] + assert len(ucode[i][j]) == 8 + cbyte = (cword >> (8 * (CONTROL_WORD_SIZE - l - 1))) & 0xff + print(f"inst: {i:>04b}, idx: {idx:>04x}, cbyte: {cbyte:>08b}") + res_b[idx] = cbyte + +with open(outfile_path, "wb") as f: + f.write(res_b) |
