adds the new auto generated processor test

This commit is contained in:
hneemann 2020-11-28 20:23:55 +01:00
parent ccf4f58127
commit 51ba9034b7
5 changed files with 996 additions and 157 deletions

View File

@ -542,11 +542,6 @@ Single-Cycle CPU.}}</string>
<elementAttributes/>
<pos x="1060" y="140"/>
</visualElement>
<visualElement>
<elementName>RegisterOpt.dig</elementName>
<elementAttributes/>
<pos x="660" y="120"/>
</visualElement>
<visualElement>
<elementName>Out</elementName>
<elementAttributes>
@ -928,6 +923,11 @@ Single-Cycle CPU.}}</string>
</elementAttributes>
<pos x="640" y="400"/>
</visualElement>
<visualElement>
<elementName>Register.dig</elementName>
<elementAttributes/>
<pos x="660" y="120"/>
</visualElement>
</visualElements>
<wires>
<wire>

View File

@ -0,0 +1,780 @@
<?xml version="1.0" encoding="utf-8"?>
<circuit>
<version>1</version>
<attributes/>
<visualElements>
<visualElement>
<elementName>Clock</elementName>
<elementAttributes>
<entry>
<string>runRealTime</string>
<boolean>true</boolean>
</entry>
<entry>
<string>Label</string>
<string>Clk</string>
</entry>
<entry>
<string>Frequency</string>
<int>200</int>
</entry>
</elementAttributes>
<pos x="-180" y="20"/>
</visualElement>
<visualElement>
<elementName>Processor.dig</elementName>
<elementAttributes/>
<pos x="-160" y="20"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>MOV</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk R1 R2
init R1=3;
init R2=4;
# mov r2,r1
program(0x121)
C X X
0 3 3
# R1=3
# R2=3
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="0" y="0"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>ADD no carry</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk Carry R2
init R1=3;
init R2=4;
# add r2,r1
program(0x221)
C X X
0 0 7
# Carry=0
# R2=7
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="0" y="80"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>ADD carry</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk Carry R2
init R1=-1;
init R2=-1;
# add r2,r1
program(0x221)
C X X
0 1 65534
# Carry=1
# R2=65534
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="0" y="160"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>ADC no carry</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk Carry R2
init R1=3;
init R2=4;
# adc r2,r1
program(0x321)
C X X
0 0 7
# Carry=0
# R2=7
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="0" y="240"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>ADC carry</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk Carry R2
init R1=3;
init R2=4;
init Carry=1;
# adc r2,r1
program(0x321)
C X X
0 0 8
# Carry=0
# R2=8
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="0" y="320"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>ADC carry out</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk Carry R2
init R1=-1;
init R2=-1;
# adc r2,r1
program(0x321)
C X X
0 1 65534
# Carry=1
# R2=65534
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="0" y="400"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>ADDI small</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk R1
init R1=3;
# addi r1,4
program(0xc14)
C X
0 7
# R1=7
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="0" y="480"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>ADDI large</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk R1
init R1=3;
# addi r1,20
program(0x8014,0xb10)
repeat (2) C X
0 23
# R1=23
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="0" y="560"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>ADCI small</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk R1
init R1=3;
# adci r1,4
program(0xe14)
C X
0 7
# R1=7
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="0" y="640"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>ADCI large</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk R1
init R1=3;
# adci r1,20
program(0x8014,0xd10)
repeat (2) C X
0 23
# R1=23
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="0" y="720"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>ADCI small, carry</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk R1
init R1=3;
init Carry=1;
# adci r1,4
program(0xe14)
C X
0 8
# R1=8
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="260" y="0"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>ADCI large, carry</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk R1
init R1=3;
init Carry=1;
# adci r1,20
program(0x8014,0xd10)
repeat (2) C X
0 24
# R1=24
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="260" y="80"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>SUB</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk Carry R2
init R1=3;
init R2=4;
# sub r2,r1
program(0x421)
C X X
0 0 1
# Carry=0
# R2=1
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="260" y="160"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>SUB carry out</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk Carry R2
init R1=4;
init R2=3;
# sub r2,r1
program(0x421)
C X X
0 1 65535
# Carry=1
# R2=65535
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="260" y="240"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>SBC</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk Carry R2
init R1=3;
init R2=4;
# sbc r2,r1
program(0x521)
C X X
0 0 1
# Carry=0
# R2=1
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="260" y="320"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>SBC carry in</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk Carry R2
init R1=3;
init R2=5;
init Carry=1;
# sbc r2,r1
program(0x521)
C X X
0 0 1
# Carry=0
# R2=1
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="260" y="400"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>SUBI small</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk R1
init R1=4;
# subi r1,2
program(0x1012)
C X
0 2
# R1=2
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="260" y="480"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>SUBI large</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk R1
init R1=30;
# subi r1,20
program(0x8014,0xf10)
repeat (2) C X
0 10
# R1=10
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="260" y="560"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>SBCI no carry, small</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk R1
init R1=6;
# sbci r1,4
program(0x1214)
C X
0 2
# R1=2
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="260" y="640"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>SBCI no carry, large</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk R1
init R1=30;
# sbci r1,20
program(0x8014,0x1110)
repeat (2) C X
0 10
# R1=10
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="260" y="720"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>SBCI carry in, small</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk R1
init R1=6;
init Carry=1;
# sbci r1,4
program(0x1214)
C X
0 1
# R1=1
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="520" y="0"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>SBCI carry in, large</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk R1
init R1=30;
init Carry=1;
# sbci r1,20
program(0x8014,0x1110)
repeat (2) C X
0 9
# R1=9
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="520" y="80"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>NOT</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk R1
init R1=0;
# not r1
program(0x1a10)
C X
0 65535
# R1=65535
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="520" y="160"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>NEG</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk R1
init R1=1;
# neg r1
program(0x1310)
C X
0 65535
# R1=65535
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="520" y="240"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>SWAP</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk R1
init R1=4660;
# swap r1
# brk
program(0x2910,0x4400)
repeat (2) C X
0 13330
# R1=13330
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="520" y="320"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>SWAPN</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk R1
init R1=4660;
# swapn r1
program(0x2a10)
C X
0 8515
# R1=8515
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="520" y="400"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>LDI small</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk R1
# ldi r1,5
program(0xa15)
C X
0 5
# R1=5
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="520" y="480"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>LDI small</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk R1
# ldi r1,15
program(0xa1f)
C X
0 15
# R1=15
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="520" y="560"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>LDI large</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk R1
# ldi r1,16
program(0x8010,0x910)
repeat (2) C X
0 16
# R1=16
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="520" y="640"/>
</visualElement>
<visualElement>
<elementName>Testcase</elementName>
<elementAttributes>
<entry>
<string>Label</string>
<string>LDI large</string>
</entry>
<entry>
<string>Testdata</string>
<testData>
<dataString># auto generated, do not modify
Clk R1
# ldi r1,0x8000
program(0x8000,0x911)
repeat (2) C X
0 32768
# R1=32768
</dataString>
</testData>
</entry>
</elementAttributes>
<pos x="520" y="720"/>
</visualElement>
</visualElements>
<wires>
<wire>
<p1 x="-180" y="20"/>
<p2 x="-160" y="20"/>
</wire>
</wires>
<measurementOrdering/>
</circuit>

View File

@ -555,6 +555,7 @@
<string name="elem_Register_pin_C">Clock input. A rising edge stores the value at the D pin.</string>
<string name="elem_Register_pin_en">Enable pin. Storing a value works only if this pin is set high.</string>
<string name="elem_Register_pin_Q">Returns the stored value.</string>
<string name="elem_ROM">ROM</string>
<string name="elem_ROM_tt">A non-volatile memory component.
The stored data can be edited in the attributes dialog.
@ -563,6 +564,18 @@
<string name="elem_ROM_pin_D">The selected data word if the sel input is high.</string>
<string name="elem_ROM_pin_sel">If the input is high, the output is activated. If it is low, the data output is in high Z state.</string>
<string name="elem_ROMDualPort">ROM dual port</string>
<string name="elem_ROMDualPort_short">ROM</string>
<string name="elem_ROMDualPort_tt">A non-volatile memory component.
The stored data can be edited in the attributes dialog.
</string>
<string name="elem_ROMDualPort_pin_A1">This pin defines the address of data word to be output on D1.</string>
<string name="elem_ROMDualPort_pin_D1">The selected data word if the s1 input is high.</string>
<string name="elem_ROMDualPort_pin_s1">If the input is high, the output D1 is activated. If it is low, the data output is in high Z state.</string>
<string name="elem_ROMDualPort_pin_A2">This pin defines the address of data word to be output on D2.</string>
<string name="elem_ROMDualPort_pin_D2">The selected data word if the s2 input is high.</string>
<string name="elem_ROMDualPort_pin_s2">If the input is high, the output D2 is activated. If it is low, the data output is in high Z state.</string>
<string name="elem_RAMDualPort">RAM, separated Ports</string>
<string name="elem_RAMDualPort_short">RAM</string>
<string name="elem_RAMDualPort_tt">A RAM module with separate inputs for storing and output for reading the stored data.</string>

View File

@ -39,8 +39,8 @@ public class TestExamples extends TestCase {
*/
public void testDistExamples() throws Exception {
File examples = new File(Resources.getRoot().getParentFile().getParentFile(), "/main/dig");
assertEquals(302, new FileScanner(this::check).scan(examples));
assertEquals(203, testCasesInFiles);
assertEquals(301, new FileScanner(this::check).scan(examples));
assertEquals(233, testCasesInFiles);
}
/**

View File

@ -315,12 +315,12 @@
<visualElement>
<elementName>D_FF</elementName>
<elementAttributes/>
<pos x="800" y="300"/>
<pos x="800" y="280"/>
</visualElement>
<visualElement>
<elementName>T_FF</elementName>
<elementAttributes/>
<pos x="800" y="380"/>
<pos x="800" y="340"/>
</visualElement>
<visualElement>
<elementName>ROM</elementName>
@ -334,7 +334,7 @@
<int>8</int>
</entry>
</elementAttributes>
<pos x="800" y="460"/>
<pos x="800" y="400"/>
</visualElement>
<visualElement>
<elementName>GraphicCard</elementName>
@ -352,7 +352,7 @@
<int>8</int>
</entry>
</elementAttributes>
<pos x="800" y="560"/>
<pos x="800" y="600"/>
</visualElement>
<visualElement>
<elementName>Add</elementName>
@ -522,7 +522,7 @@
<visualElement>
<elementName>SixteenSeg</elementName>
<elementAttributes/>
<pos x="820" y="700"/>
<pos x="820" y="740"/>
</visualElement>
<visualElement>
<elementName>In</elementName>
@ -532,7 +532,7 @@
<int>16</int>
</entry>
</elementAttributes>
<pos x="800" y="860"/>
<pos x="800" y="900"/>
</visualElement>
<visualElement>
<elementName>PolarityAwareLED</elementName>
@ -612,7 +612,7 @@
<visualElement>
<elementName>VGA</elementName>
<elementAttributes/>
<pos x="600" y="920"/>
<pos x="600" y="960"/>
</visualElement>
<visualElement>
<elementName>PinControl</elementName>
@ -622,7 +622,7 @@
<int>8</int>
</entry>
</elementAttributes>
<pos x="780" y="960"/>
<pos x="780" y="1000"/>
</visualElement>
<visualElement>
<elementName>Tunnel</elementName>
@ -636,7 +636,7 @@
<string>zz</string>
</entry>
</elementAttributes>
<pos x="740" y="1020"/>
<pos x="740" y="1060"/>
</visualElement>
<visualElement>
<elementName>StepperMotorUnipolar</elementName>
@ -668,12 +668,22 @@
<elementAttributes/>
<pos x="120" y="620"/>
</visualElement>
<visualElement>
<elementName>ROMDualPort</elementName>
<elementAttributes>
<entry>
<string>AddrBits</string>
<int>8</int>
</entry>
<entry>
<string>Bits</string>
<int>8</int>
</entry>
</elementAttributes>
<pos x="800" y="480"/>
</visualElement>
</visualElements>
<wires>
<wire>
<p1 x="760" y="640"/>
<p2 x="780" y="640"/>
</wire>
<wire>
<p1 x="1080" y="640"/>
<p2 x="1100" y="640"/>
@ -683,9 +693,13 @@
<p2 x="1160" y="640"/>
</wire>
<wire>
<p1 x="780" y="640"/>
<p1 x="760" y="640"/>
<p2 x="800" y="640"/>
</wire>
<wire>
<p1 x="860" y="640"/>
<p2 x="880" y="640"/>
</wire>
<wire>
<p1 x="240" y="260"/>
<p2 x="260" y="260"/>
@ -698,14 +712,14 @@
<p1 x="1080" y="900"/>
<p2 x="1120" y="900"/>
</wire>
<wire>
<p1 x="580" y="900"/>
<p2 x="800" y="900"/>
</wire>
<wire>
<p1 x="280" y="900"/>
<p2 x="300" y="900"/>
</wire>
<wire>
<p1 x="800" y="900"/>
<p2 x="860" y="900"/>
</wire>
<wire>
<p1 x="580" y="520"/>
<p2 x="640" y="520"/>
@ -714,6 +728,10 @@
<p1 x="1160" y="520"/>
<p2 x="1200" y="520"/>
</wire>
<wire>
<p1 x="700" y="520"/>
<p2 x="800" y="520"/>
</wire>
<wire>
<p1 x="240" y="780"/>
<p2 x="260" y="780"/>
@ -742,10 +760,6 @@
<p1 x="380" y="140"/>
<p2 x="440" y="140"/>
</wire>
<wire>
<p1 x="760" y="400"/>
<p2 x="800" y="400"/>
</wire>
<wire>
<p1 x="600" y="400"/>
<p2 x="620" y="400"/>
@ -762,6 +776,10 @@
<p1 x="400" y="400"/>
<p2 x="440" y="400"/>
</wire>
<wire>
<p1 x="700" y="400"/>
<p2 x="800" y="400"/>
</wire>
<wire>
<p1 x="440" y="400"/>
<p2 x="460" y="400"/>
@ -782,6 +800,10 @@
<p1 x="220" y="1040"/>
<p2 x="240" y="1040"/>
</wire>
<wire>
<p1 x="580" y="1040"/>
<p2 x="600" y="1040"/>
</wire>
<wire>
<p1 x="240" y="1040"/>
<p2 x="260" y="1040"/>
@ -790,6 +812,10 @@
<p1 x="240" y="660"/>
<p2 x="260" y="660"/>
</wire>
<wire>
<p1 x="780" y="660"/>
<p2 x="800" y="660"/>
</wire>
<wire>
<p1 x="280" y="920"/>
<p2 x="300" y="920"/>
@ -799,8 +825,8 @@
<p2 x="420" y="920"/>
</wire>
<wire>
<p1 x="580" y="920"/>
<p2 x="600" y="920"/>
<p1 x="760" y="920"/>
<p2 x="880" y="920"/>
</wire>
<wire>
<p1 x="600" y="280"/>
@ -811,12 +837,12 @@
<p2 x="680" y="280"/>
</wire>
<wire>
<p1 x="220" y="540"/>
<p2 x="260" y="540"/>
<p1 x="780" y="280"/>
<p2 x="800" y="280"/>
</wire>
<wire>
<p1 x="700" y="540"/>
<p2 x="880" y="540"/>
<p1 x="220" y="540"/>
<p2 x="260" y="540"/>
</wire>
<wire>
<p1 x="1080" y="540"/>
@ -826,6 +852,10 @@
<p1 x="1140" y="540"/>
<p2 x="1160" y="540"/>
</wire>
<wire>
<p1 x="780" y="540"/>
<p2 x="800" y="540"/>
</wire>
<wire>
<p1 x="940" y="800"/>
<p2 x="960" y="800"/>
@ -854,10 +884,26 @@
<p1 x="220" y="1060"/>
<p2 x="240" y="1060"/>
</wire>
<wire>
<p1 x="740" y="1060"/>
<p2 x="760" y="1060"/>
</wire>
<wire>
<p1 x="580" y="1060"/>
<p2 x="600" y="1060"/>
</wire>
<wire>
<p1 x="760" y="1060"/>
<p2 x="840" y="1060"/>
</wire>
<wire>
<p1 x="240" y="1060"/>
<p2 x="260" y="1060"/>
</wire>
<wire>
<p1 x="760" y="680"/>
<p2 x="780" y="680"/>
</wire>
<wire>
<p1 x="940" y="680"/>
<p2 x="960" y="680"/>
@ -870,6 +916,10 @@
<p1 x="1120" y="680"/>
<p2 x="1160" y="680"/>
</wire>
<wire>
<p1 x="780" y="680"/>
<p2 x="800" y="680"/>
</wire>
<wire>
<p1 x="240" y="940"/>
<p2 x="280" y="940"/>
@ -888,16 +938,12 @@
</wire>
<wire>
<p1 x="580" y="940"/>
<p2 x="600" y="940"/>
<p2 x="800" y="940"/>
</wire>
<wire>
<p1 x="280" y="940"/>
<p2 x="300" y="940"/>
</wire>
<wire>
<p1 x="780" y="300"/>
<p2 x="800" y="300"/>
</wire>
<wire>
<p1 x="400" y="300"/>
<p2 x="420" y="300"/>
@ -918,6 +964,10 @@
<p1 x="660" y="300"/>
<p2 x="680" y="300"/>
</wire>
<wire>
<p1 x="760" y="300"/>
<p2 x="800" y="300"/>
</wire>
<wire>
<p1 x="220" y="300"/>
<p2 x="260" y="300"/>
@ -926,10 +976,6 @@
<p1 x="580" y="560"/>
<p2 x="620" y="560"/>
</wire>
<wire>
<p1 x="700" y="560"/>
<p2 x="800" y="560"/>
</wire>
<wire>
<p1 x="1120" y="820"/>
<p2 x="1160" y="820"/>
@ -986,6 +1032,10 @@
<p1 x="600" y="440"/>
<p2 x="620" y="440"/>
</wire>
<wire>
<p1 x="780" y="440"/>
<p2 x="800" y="440"/>
</wire>
<wire>
<p1 x="1160" y="440"/>
<p2 x="1200" y="440"/>
@ -1010,10 +1060,6 @@
<p1 x="400" y="320"/>
<p2 x="440" y="320"/>
</wire>
<wire>
<p1 x="760" y="320"/>
<p2 x="800" y="320"/>
</wire>
<wire>
<p1 x="940" y="320"/>
<p2 x="960" y="320"/>
@ -1034,29 +1080,21 @@
<p1 x="400" y="960"/>
<p2 x="420" y="960"/>
</wire>
<wire>
<p1 x="580" y="960"/>
<p2 x="600" y="960"/>
</wire>
<wire>
<p1 x="760" y="960"/>
<p2 x="780" y="960"/>
</wire>
<wire>
<p1 x="820" y="960"/>
<p2 x="840" y="960"/>
</wire>
<wire>
<p1 x="280" y="960"/>
<p2 x="300" y="960"/>
</wire>
<wire>
<p1 x="240" y="580"/>
<p2 x="260" y="580"/>
<p1 x="580" y="960"/>
<p2 x="600" y="960"/>
</wire>
<wire>
<p1 x="780" y="580"/>
<p2 x="800" y="580"/>
<p1 x="700" y="580"/>
<p2 x="880" y="580"/>
</wire>
<wire>
<p1 x="240" y="580"/>
<p2 x="260" y="580"/>
</wire>
<wire>
<p1 x="940" y="580"/>
@ -1114,10 +1152,6 @@
<p1 x="220" y="460"/>
<p2 x="260" y="460"/>
</wire>
<wire>
<p1 x="700" y="460"/>
<p2 x="800" y="460"/>
</wire>
<wire>
<p1 x="600" y="460"/>
<p2 x="620" y="460"/>
@ -1134,6 +1168,14 @@
<p1 x="1120" y="720"/>
<p2 x="1160" y="720"/>
</wire>
<wire>
<p1 x="280" y="980"/>
<p2 x="300" y="980"/>
</wire>
<wire>
<p1 x="580" y="980"/>
<p2 x="600" y="980"/>
</wire>
<wire>
<p1 x="240" y="340"/>
<p2 x="260" y="340"/>
@ -1147,25 +1189,13 @@
<p2 x="680" y="340"/>
</wire>
<wire>
<p1 x="580" y="980"/>
<p2 x="600" y="980"/>
<p1 x="780" y="340"/>
<p2 x="800" y="340"/>
</wire>
<wire>
<p1 x="760" y="980"/>
<p2 x="820" y="980"/>
</wire>
<wire>
<p1 x="280" y="980"/>
<p2 x="300" y="980"/>
</wire>
<wire>
<p1 x="760" y="600"/>
<p1 x="700" y="600"/>
<p2 x="800" y="600"/>
</wire>
<wire>
<p1 x="860" y="600"/>
<p2 x="880" y="600"/>
</wire>
<wire>
<p1 x="580" y="600"/>
<p2 x="640" y="600"/>
@ -1182,10 +1212,6 @@
<p1 x="580" y="860"/>
<p2 x="620" y="860"/>
</wire>
<wire>
<p1 x="800" y="860"/>
<p2 x="860" y="860"/>
</wire>
<wire>
<p1 x="240" y="860"/>
<p2 x="260" y="860"/>
@ -1226,6 +1252,10 @@
<p1 x="940" y="480"/>
<p2 x="960" y="480"/>
</wire>
<wire>
<p1 x="700" y="480"/>
<p2 x="800" y="480"/>
</wire>
<wire>
<p1 x="1160" y="480"/>
<p2 x="1200" y="480"/>
@ -1250,6 +1280,22 @@
<p1 x="360" y="100"/>
<p2 x="600" y="100"/>
</wire>
<wire>
<p1 x="580" y="1000"/>
<p2 x="600" y="1000"/>
</wire>
<wire>
<p1 x="760" y="1000"/>
<p2 x="780" y="1000"/>
</wire>
<wire>
<p1 x="820" y="1000"/>
<p2 x="840" y="1000"/>
</wire>
<wire>
<p1 x="760" y="360"/>
<p2 x="800" y="360"/>
</wire>
<wire>
<p1 x="400" y="360"/>
<p2 x="440" y="360"/>
@ -1267,8 +1313,8 @@
<p2 x="1160" y="360"/>
</wire>
<wire>
<p1 x="580" y="1000"/>
<p2 x="600" y="1000"/>
<p1 x="780" y="620"/>
<p2 x="800" y="620"/>
</wire>
<wire>
<p1 x="1080" y="620"/>
@ -1282,10 +1328,6 @@
<p1 x="920" y="620"/>
<p2 x="960" y="620"/>
</wire>
<wire>
<p1 x="780" y="620"/>
<p2 x="800" y="620"/>
</wire>
<wire>
<p1 x="220" y="620"/>
<p2 x="260" y="620"/>
@ -1298,10 +1340,6 @@
<p1 x="1120" y="880"/>
<p2 x="1160" y="880"/>
</wire>
<wire>
<p1 x="760" y="880"/>
<p2 x="880" y="880"/>
</wire>
<wire>
<p1 x="400" y="880"/>
<p2 x="420" y="880"/>
@ -1322,10 +1360,6 @@
<p1 x="600" y="500"/>
<p2 x="620" y="500"/>
</wire>
<wire>
<p1 x="780" y="500"/>
<p2 x="800" y="500"/>
</wire>
<wire>
<p1 x="240" y="500"/>
<p2 x="260" y="500"/>
@ -1334,6 +1368,10 @@
<p1 x="940" y="500"/>
<p2 x="960" y="500"/>
</wire>
<wire>
<p1 x="780" y="500"/>
<p2 x="800" y="500"/>
</wire>
<wire>
<p1 x="1160" y="500"/>
<p2 x="1200" y="500"/>
@ -1358,14 +1396,14 @@
<p1 x="120" y="760"/>
<p2 x="140" y="760"/>
</wire>
<wire>
<p1 x="740" y="1020"/>
<p2 x="760" y="1020"/>
</wire>
<wire>
<p1 x="580" y="1020"/>
<p2 x="600" y="1020"/>
</wire>
<wire>
<p1 x="760" y="1020"/>
<p2 x="820" y="1020"/>
</wire>
<wire>
<p1 x="220" y="1020"/>
<p2 x="240" y="1020"/>
@ -1374,10 +1412,6 @@
<p1 x="400" y="1020"/>
<p2 x="420" y="1020"/>
</wire>
<wire>
<p1 x="760" y="1020"/>
<p2 x="840" y="1020"/>
</wire>
<wire>
<p1 x="240" y="1020"/>
<p2 x="260" y="1020"/>
@ -1386,10 +1420,6 @@
<p1 x="580" y="380"/>
<p2 x="640" y="380"/>
</wire>
<wire>
<p1 x="780" y="380"/>
<p2 x="800" y="380"/>
</wire>
<wire>
<p1 x="220" y="380"/>
<p2 x="260" y="380"/>
@ -1422,10 +1452,18 @@
<p1 x="580" y="1000"/>
<p2 x="580" y="1020"/>
</wire>
<wire>
<p1 x="580" y="1020"/>
<p2 x="580" y="1040"/>
</wire>
<wire>
<p1 x="580" y="520"/>
<p2 x="580" y="560"/>
</wire>
<wire>
<p1 x="580" y="1040"/>
<p2 x="580" y="1060"/>
</wire>
<wire>
<p1 x="580" y="560"/>
<p2 x="580" y="600"/>
@ -1448,7 +1486,7 @@
</wire>
<wire>
<p1 x="580" y="860"/>
<p2 x="580" y="900"/>
<p2 x="580" y="940"/>
</wire>
<wire>
<p1 x="580" y="360"/>
@ -1458,14 +1496,6 @@
<p1 x="580" y="380"/>
<p2 x="580" y="420"/>
</wire>
<wire>
<p1 x="580" y="900"/>
<p2 x="580" y="920"/>
</wire>
<wire>
<p1 x="580" y="920"/>
<p2 x="580" y="940"/>
</wire>
<wire>
<p1 x="580" y="420"/>
<p2 x="580" y="520"/>
@ -1575,8 +1605,8 @@
<p2 x="520" y="780"/>
</wire>
<wire>
<p1 x="840" y="960"/>
<p2 x="840" y="1020"/>
<p1 x="840" y="1000"/>
<p2 x="840" y="1060"/>
</wire>
<wire>
<p1 x="460" y="560"/>
@ -1591,16 +1621,24 @@
<p2 x="780" y="200"/>
</wire>
<wire>
<p1 x="780" y="500"/>
<p2 x="780" y="580"/>
<p1 x="780" y="440"/>
<p2 x="780" y="500"/>
</wire>
<wire>
<p1 x="780" y="580"/>
<p1 x="780" y="500"/>
<p2 x="780" y="540"/>
</wire>
<wire>
<p1 x="780" y="540"/>
<p2 x="780" y="620"/>
</wire>
<wire>
<p1 x="780" y="620"/>
<p2 x="780" y="640"/>
<p2 x="780" y="660"/>
</wire>
<wire>
<p1 x="780" y="660"/>
<p2 x="780" y="680"/>
</wire>
<wire>
<p1 x="780" y="200"/>
@ -1608,15 +1646,15 @@
</wire>
<wire>
<p1 x="780" y="240"/>
<p2 x="780" y="300"/>
<p2 x="780" y="280"/>
</wire>
<wire>
<p1 x="780" y="300"/>
<p2 x="780" y="380"/>
<p1 x="780" y="280"/>
<p2 x="780" y="340"/>
</wire>
<wire>
<p1 x="780" y="380"/>
<p2 x="780" y="500"/>
<p1 x="780" y="340"/>
<p2 x="780" y="440"/>
</wire>
<wire>
<p1 x="400" y="180"/>
@ -1739,8 +1777,8 @@
<p2 x="220" y="380"/>
</wire>
<wire>
<p1 x="860" y="840"/>
<p2 x="860" y="860"/>
<p1 x="860" y="880"/>
<p2 x="860" y="900"/>
</wire>
<wire>
<p1 x="480" y="560"/>
@ -1771,8 +1809,8 @@
<p2 x="1120" y="980"/>
</wire>
<wire>
<p1 x="800" y="900"/>
<p2 x="800" y="940"/>
<p1 x="800" y="940"/>
<p2 x="800" y="980"/>
</wire>
<wire>
<p1 x="360" y="100"/>
@ -1911,12 +1949,12 @@
<p2 x="240" y="780"/>
</wire>
<wire>
<p1 x="880" y="540"/>
<p2 x="880" y="600"/>
<p1 x="880" y="580"/>
<p2 x="880" y="640"/>
</wire>
<wire>
<p1 x="880" y="840"/>
<p2 x="880" y="880"/>
<p1 x="880" y="880"/>
<p2 x="880" y="920"/>
</wire>
<wire>
<p1 x="1200" y="320"/>
@ -1943,28 +1981,28 @@
<p2 x="500" y="840"/>
</wire>
<wire>
<p1 x="760" y="960"/>
<p2 x="760" y="980"/>
<p1 x="760" y="1000"/>
<p2 x="760" y="1020"/>
</wire>
<wire>
<p1 x="760" y="220"/>
<p2 x="760" y="320"/>
<p2 x="760" y="300"/>
</wire>
<wire>
<p1 x="760" y="640"/>
<p2 x="760" y="880"/>
<p1 x="760" y="680"/>
<p2 x="760" y="920"/>
</wire>
<wire>
<p1 x="760" y="320"/>
<p2 x="760" y="400"/>
<p1 x="760" y="1020"/>
<p2 x="760" y="1060"/>
</wire>
<wire>
<p1 x="760" y="400"/>
<p2 x="760" y="600"/>
<p1 x="760" y="300"/>
<p2 x="760" y="360"/>
</wire>
<wire>
<p1 x="760" y="980"/>
<p2 x="760" y="1020"/>
<p1 x="760" y="360"/>
<p2 x="760" y="640"/>
</wire>
<wire>
<p1 x="440" y="560"/>
@ -2048,15 +2086,23 @@
</wire>
<wire>
<p1 x="700" y="160"/>
<p2 x="700" y="460"/>
<p2 x="700" y="400"/>
</wire>
<wire>
<p1 x="700" y="460"/>
<p2 x="700" y="540"/>
<p1 x="700" y="400"/>
<p2 x="700" y="480"/>
</wire>
<wire>
<p1 x="700" y="540"/>
<p2 x="700" y="560"/>
<p1 x="700" y="480"/>
<p2 x="700" y="520"/>
</wire>
<wire>
<p1 x="700" y="520"/>
<p2 x="700" y="580"/>
</wire>
<wire>
<p1 x="700" y="580"/>
<p2 x="700" y="600"/>
</wire>
<wire>
<p1 x="380" y="140"/>